This will definitely be a stable version of Jettons, but not for now. Please, do not use this code in production. It might have some bugs.
This project includes a complete setup for working with Tact-based Jetton smart contracts. It provides:
- A pre-configured Tact compiler.
- Smart contracts written in the Tact language.
- TypeScript + Jest testing environment with
@ton/sandbox
.
This implementation is fully compatible with the following TON standards:
You can use this implementation as an alternative to the reference Jetton contracts available in the TON Blockchain repository.
Run the following command to install all required dependencies:
yarn install
Compile the smart contracts with:
yarn build
Customize your Jetton by editing the contract.deploy.ts
file. This file also includes a detailed deployment guide. Deploy the contracts with:
yarn deploy
Run tests in the @ton/sandbox
environment:
yarn test
If you’re new to Jettons, read the TON Jettons Processing.
Smart contracts, their tests and the deployment script are located in the sources/
directory:
sources/
│
│ # Contracts and auxiliary Tact code
├── jetton_minter.tact
├── jetton_wallet.tact
├── messages.tact
│
│ # Tests
├── contract.spec.ts
│
│ # Deployment script
├── contract.deploy.ts
│
│ # Miscellaneous utility things
│ # used for tests and deployments
├── contract.read.ts
└── utils/
Note, that tests and the deployment script require the compiled contracts to be present in the sources/output/
directory.
The configuration for the Tact compiler is in tact.config.json
in the root of the repository. In most cases you won't need to change this file.
The main smart contract is jetton_minter.tact
, it imports messages.tact
and jetton_wallet.tact
. With the default configuration of tact.config.json
targeting jetton_minter.tact
, they're all compiled automatically.
Jetton Minter uses only OwnableTransferable, which is inherited from the Ownable trait. Jetton Wallet only uses the Ownable trait. All these traits come from the Tact's standard libraries.
Schemes of inheritance and imports:
graph LR
B[jetton_minter.tact] -->|import| A[messages.tact]
C[jetton_wallet.tact] -->|import| A[messages.tact]
B[jetton_minter.tact] -->|import| C[jetton_wallet.tact]
C[jetton_wallet.tact] -->|uses| E[ownable]
B[jetton_minter.tact] -->|uses| F[ownableTransferable]
F[ownableTransferable] -->|inherits| E[ownable]
class E,F ownableStyle;
classDef ownableStyle stroke-width:2,rx:25,ry:25;
Read more about those traits in the Tact standard library.
- For guidance on interacting with Jettons using Tact, read the Jetton cookbook.
- Be cautious of fake messages sent by scammers. Read security best practices to protect yourself from fraudulent activities.
- Always consult the official Tact documentation for additional resources and support.
This project is licensed under the MIT License.