Tact language
Tact is a programming language for TON Blockchain, focused on efficiency and ease of development. It is a good fit for complex smart contracts, quick onboarding, and rapid prototyping.
Developed by TON Studio, powered by the community — by the end of 2024, the number of unique code1 contracts deployed on the Mainnet reached almost 28,000, of which about 33% were written in Tact. You can view some selected projects here: Tact in production.
Tact has undergone a comprehensive security audit by Trail of Bits, a leading Web3 security firm.
Try it online!
Tact documentation
Awesome Tact
Features
The most prominent and distinctive features of Tact are:
- Familiar and user-friendly TypeScript-like syntax.
- Strong static type system with built-in Structs, Messages, and maps, among others.
- First-class maps support, with many methods and a convenient
foreach
statement for traversing. - Automatic (de)serialization of incoming messages and data structures.
- Automatic routing of internal, external, and bounced messages.
- Automatic handling of message types, including binary, text, and fallback slices.
- No boilerplate required for sending messages and deploying child contracts.
- Reusable behaviors through traits.
- Support for low-level programming with
asm
functions. - Generation of single-file TypeScript wrappers for convenient interactions with compiled contracts, which include:
- Type definitions for Structs and Messages as shown in the compilation report.
- Corresponding
storeStructureName()
andloadStructureName()
functions for (de)serialization. - All global and contract-level constants.
- Bidirectional records of exit codes: from their names to numbers and vice versa.
- Opcodes of all Messages.
- A contract wrapper class with various helper functions for initialization, deployment, and message exchange.
- Rich standard library.
- Extensive documentation.
- Robust tooling.
- ...and there's much more to come!
Security
Tact in production
Some selected software and applications based on contracts written in Tact, deployed in production, and consumed by end users: