Overview
What is Tact?
Tact is a high-level programming language for TON blockchain that is focused on efficiency and simplicity. It is designed to be easy to learn and use, and to be a good fit for smart contracts. Tact is a statically typed language with a simple syntax and a powerful type system.
Tact needs contributors!
Tact is in the rapid development stage and offers a wide range of tasks for participants to work on. Noticed some issue? Report this with issue (opens in a new tab). Have any suggest how to improve Tact? Just create pull request (opens in a new tab) with your updates. Have directly Tact-lang questions? Ask community in chat (opens in a new tab).
Tact concept
Strong type system
Tact offers algebraic data types compatible with TL-B scheme. Arithmetic is always safe because integers have precise bounds. Tact compiler helps you perform necessary checks and does not produce silent failures or unexpected truncation.
Actor-oriented
Tact is designed specifically for the TON actor model. Strongly typed messages enforce communication contracts between actors.
Tact and FunC
FunC is a lower-level language aimed at developers who are deeply familiar with TON architecture. FunC liberates developers from writing raw Fift code, while providing the same level of control. Unfortunately, the precision of FunC makes it harder to write complex multi-contract systems. Tact enables developers to go even further: you can write the entire suites of smart contracts with strongly typed interfaces and statically verified execution costs. With Tact you can focus on your problem and worry less about blockchain idiosyncrasies.
Typescript Libraries
Tact language has built-in support for ton
and ton-core
typescript libraries. Compiler generates code for these libraries automatically and you can use libraries like ton-emulator (opens in a new tab), @ton-community/sandbox (opens in a new tab).
Tact contract in Typescript
Compiler generates files named {project}_{contract}.ts
for each contract in your project that contains ready-to use strongly typed wrappers to work with a contract in any environment: for testing, deployments, etc.
Tact is just getting started
Tact is a very new project. Currently work in progress, check last version Tact (opens in a new tab).