Learn all about programming in ⚡ Tact
Tact is a new 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.
Let's start!
Ensure that Node.js LTS is installed and available
To check it, run node --version
— it should show you the version 18.0.0 or later.
Run the following command
It will create a new project with the simple counter contract:
That's it!
Your first contract project is written and compiled already! Go check it out by moving into the relevant directory — cd simple-counter/contracts
.
Here's how it would look like:
import "@stdlib/deploy";
message Add {
queryId: Int as uint64;
amount: Int as uint32;
}
contract SimpleCounter with Deployable {
id: Int as uint32;
counter: Int as uint32;
init(id: Int) {
self.id = id;
self.counter = 0;
}
receive(msg: Add) {
self.counter += msg.amount;
// Notify the caller that the receiver was executed and forward remaining value back
self.notify("Cashback".asComment());
}
get fun counter(): Int {
return self.counter;
}
get fun id(): Int {
return self.id;
}
}
To re-compile or deploy, refer to the commands in the scripts section of package.json
in the root of this newly created project and to the documentation of Blueprint (opens in a new tab) — this is the tool we've used to create and compile your first simple counter contract in Tact. In fact, Blueprint can do much more than that: including tests, customizations and more.
Where to go next?
Have some blockchain knowledge already?
See the Tact Cookbook, which is a handy collection of everyday tasks (and solutions) every Tact developer faces during smart contract development. Use it to avoid re-inventing the wheel.
Alternatively, check the following cheatsheets to quickly get started:
Want to know more?
For further guidance on compilation, testing and deployment see the Getting started guide and respective pages:
- Testing and debugging page tells you everything about debugging Tact contracts
- Deployment page shows what deployment looks like and helps you harness the powers of Blueprint (opens in a new tab) for it.
For custom plugins for your favorite editor and other tooling see the Tools page.
Alternatively, take a look at the following broader sections:
- Book helps you learn the language step-by-step
- Cookbook gives you ready-made recipes of Tact code
- Reference provides a complete glossary of the standard library, grammar and evolution process
- Finally, Ecosystem describes "what's out there" in the Tacts' and TONs' ecosystems
Feeling a bit uncomfortable?
If you ever get stuck, try searching — the search box is right at the top of the documentation. There is also a handy Ctrl + K shortcut to quickly focus and start the search as you type.
If you can't find the answer in the docs, or you've tried to do some local testing and it still didn't help — don't hesitate to reach out to Tact's flourishing community:
Good luck on your coding adventure with ⚡ Tact!