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.
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:
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
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.