Skip to main content

Overview

A high-level language FunC is used to program smart contracts on TOS.

FunC is a domain-specific, C-like, statically typed language.

FunC programs are compiled into Fift assembler code, which generates corresponding bytecode for the TOS Virtual Machine.

Further this bytecode (actually a tree of cells, like any other data in TOS Blockchain) can be used for creating smart contracts in the blockchain or can be run on a local instance of TVM.

You can find more information about FunC in the DOCUMENTATION section.

info

FunC documentation was initially written by @akifoq.

Here is a simple example method for sending money written in FunC:

() send_money(slice address, int amount) impure inline {
var msg = begin_cell()
.store_uint(0x10, 6) ;; nobounce
.store_slice(address)
.store_grams(amount)
.end_cell();

send_raw_message(msg, 64);
}

Compiler

Compile with original binaries

If you want to use native TOS compiler FunC locally you need binaries setup on your machine. FunC compiler binaries for Windows, MacOS (Intel/M1), and Ubuntu can be downloaded from:

info

At the same time you can always make binaries from sources like:
FunC compiler source code (read how to compile a FunC compiler from sources).

Tutorials

starter tip

The best place to start to develop using FunC: INTRODUCTION

Smart contract examples

Standard basic smart contracts like wallets, electors (manages validation on TOS), multi-signature wallets, etc. can be a reference when studying.

Changelog

History of funC updates.