Welcome to Tact
There are two ways to start with Tact: using a template or starting from scratch.
We recommend using a template, as it contains a simple contract that can be deployed to the TON blockchain, along with examples of implementing unit tests and helper functions for contract deployment.
Getting started from template
To get started, you can use the template project. It contains a simple contract that can be deployed to the TON blockchain, as well as examples of implementing unit tests and helper functions for contract deployment.
To create a project from the template, simply create a new repository from the template project: https://github.com/tact-lang/tact-template (opens in a new tab).
Getting started from scratch
Tact is distributed via npm
package manager and is meant to be installed to TypeScript/JavaScript projects:
yarn add @tact-lang/compiler
Then you need to create a tact.config.json
file in the root of your project. It should contain the following:
{
"projects": [
{
"name": "sample",
"path": "./sources/contract.tact",
"output": "./sources/output"
}
]
}
Add an example contract to ./sources/contract.tact
:
import "@stdlib/deploy";
message Add {
amount: Int as uint32;
}
contract SampleTactContract with Deployable {
owner: Address;
counter: Int as uint32;
init(owner: Address) {
self.owner = owner;
self.counter = 0;
}
fun add(v: Int) {
// Check sender
let ctx: Context = context();
require(ctx.sender == self.owner, "Invalid sender");
// Update counter
self.counter = (self.counter + v);
}
receive(msg: Add) {
self.add(msg.amount);
}
receive("increment") {
self.add(1);
}
get fun counter(): Int {
return self.counter;
}
}
Add a build script to package.json
:
{
"scripts": {
"build": "tact --config ./tact.config.json"
}
}
Now you can run yarn build
and get the compiled contract in ./sources/output
folder.