Skip to main content

Overview

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

FunC is a domain-specific, C-like, statically typed language. 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_coins(amount)
.end_cell();

send_raw_message(msg, 64);
}

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

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

FunC CookbookFunC Documentation

Compiler

Compile with JS

Most convenient and quick way to begin develop and compile smart contracts is using Blueprint framework. Read more in Blueprint section.

npm create ton@latest

Compile with original binaries

If you want to use native TON 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).

TON Course: FunC

The TON Blockchain Course is a comprehensive guide to TON Blockchain development.

Module 4 completely covers FunC language and smart contracts development.

Check TON Blockchain Course

Tutorials

starter tip

The best place to start to develop using FunC: INTRODUCTION

Other materials gracefully provided by the experts from the community:

Contests

Participating in contests is a great way to learn FunC.

You can also study previous competitions for learning purposes.

Contests Legacy

Contest DescrTasksSolutions
TSC #5 (December, 2023)Tasks
TSC #4 (September, 2023)TasksSolutions
TSC #3 (December, 2022)TasksSolutions
TSC #2 (July, 2022)TasksSolutions
TSC #1 (March, 2022)TasksSolutions

Smart contract examples

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

Changelog

History of funC updates.