Acton does not have a dedicatedDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ton-blockchain/acton/llms.txt
Use this file to discover all available pages before exploring further.
acton deploy command. Instead, contracts are deployed through Tolk scripts — the same acton script mechanism used for any blockchain interaction. This design keeps deployment logic explicit, version-controlled, and testable: you can run the exact same deployment script against a local emulator, testnet, or mainnet simply by changing a flag. The local emulator matches the Acton test environment, so deployment scripts are fully debuggable before touching any public network.
How deployment works
A deployment script is a regular Tolk script that:- Loads a deployer wallet via
scripts.wallet(). - Constructs the contract’s initial state using the generated wrapper’s
fromStorage(). - Sends the deployment transaction via the wrapper’s
.deploy()method. - Waits for confirmation using
.waitForFirstTransaction()or.waitForTrace().
Prerequisites
- A built Acton project with a Tolk contract wrapper (
acton wrapper <CONTRACT>) and a deployment script underscripts/. - A configured deployer wallet with sufficient TON for testnet or mainnet deployments.
- Alternatively, pass
--tonconnectto connect an external wallet via TON Connect.
Deployment script pattern
Minimal Counter deployment
scripts/deploy.tolk
Jetton minter deployment
More complex deployments prepare additional data — metadata cells, child contract code — before calling the wrapper:scripts/deploy.tolk
Waiting for confirmation
waitForFirstTransaction()
Polls until the first transaction from the result list is confirmed on-chain. Returns
null if Acton cannot find it within the retry budget.waitForTrace()
Waits for the complete descendant transaction chain to form. Returns
null on timeout. Use this when post-deploy getters depend on child transactions completing.Running the deployment
Test locally
Deploy to testnet
scripts.wallet() resolves the named wallet from wallets.toml or global.wallets.toml. Select the funded testnet wallet when promptWallet() prompts.TON Connect
Pass--tonconnect to use an external wallet via the TON Connect protocol instead of a locally configured wallet:
--tonconnect is active, promptWallet() returns "tonconnect", and scripts.wallet("tonconnect") resolves to the connected wallet address. Acton displays a QR code or deep link for the wallet app to scan.
Emulator vs live broadcast comparison
| Aspect | Local (no --net) | Testnet / Mainnet (--net) |
|---|---|---|
| Blockchain | Local TVM emulator | Real TON network |
| Wallets | Virtual treasury (10,000 TON) | Configured real wallets or TON Connect |
| TON spent | None | Real Toncoin |
| Transaction speed | Instant | Real network timing (seconds) |
| State persistence | Lost after script ends | Permanent on blockchain |
| API calls | None | TON Center API (set key in .env) |
API rate limits
Testnet and mainnet deployments call the TON Center API to send external messages, poll transaction status, and read chain state. Without an API key, access is limited to 1 RPS.@toncenter Telegram bot.
Post-deploy getter calls
After a successful deployment, call wrapper getter methods directly to verify on-chain state. In broadcast mode, getters automatically read from the broadcast network — no separate--fork-net flag is needed: