Practical overview
When it fits
Use Tonutils Go when developing in Go and needing native TON protocol access or application-level blockchain functions. The README describes both public lite-server configuration files and connecting to a developer-operated full node.
Who it is for
- Go developers building applications or services that interact with TON.
- Teams implementing TON account, wallet or smart-contract functionality in Go.
- Developers working directly with TON protocols such as ADNL, DHT or RLDP.
Documented uses
- Connect a Go application to TON lite servers using a connection pool.
- Retrieve account balances and transactions or subscribe to account activity.
- Use wallet operations to transfer funds or send messages to contracts.
- Call contract get methods and work with TON data structures, NFTs, jettons or DNS.
Requirements & limits
The project is available as a public GitHub repository and specifies the MIT license.
- The SDK is written in Go and implements TON-specific protocols rather than providing a language-neutral interface.
- Connection pooling can balance requests across multiple lite servers; the README warns that differing block application state across nodes can cause errors.
- The README documents sticky contexts for keeping an operation’s requests on one node.
- Connection setup can use TON configuration files or a developer-operated full node.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Connect a Go client to TON testnet lite servers
Initialize a connection pool from TON’s testnet configuration and create a TON API client.
Before you start
- A Go project using tonutils-go.
- Access to the testnet configuration URL https://ton-blockchain.github.io/testnet-global.config.json.
Steps
Create a liteclient connection pool with liteclient.NewConnectionPool().
Call AddConnectionsFromConfigUrl with context.Background() and the testnet configuration URL; handle any returned error.
Create an API client from the pool with ton.NewAPIClient(client).WithRetryTimeout(0, 5*time.Second).
Expected outcome
A TON API client is initialized with connections from the testnet configuration, automatic retries, failover, and a per-attempt timeout.
Guide limitations
- The README notes that pooled servers may not have applied the same block yet, which can cause errors.
- To bind all requests in an operation to one node, create client.StickyContext(context.Background()) and pass that context to methods.
Read a TON smart contract GET method
Call a contract GET method and parse a single 64-bit integer result using an initialized TON API client.
Before you start
- An initialized ton.APIClient connected to TON, as described in the README’s Connection section.
- A contract address and GET method name with arguments.
Steps
Fetch fresh block information with api.CurrentMasterchainInfo(context.Background()).
Call api.RunGetMethod with the context, block information, contract address, method name, and arguments.
Parse the first returned cell with MustCell(0).BeginParse(), then read its value with LoadUInt(64).
Expected outcome
The GET method result is parsed as a 64-bit unsigned integer; the README’s example returns 56 for multiplying 7 by 8.
Guide limitations
- The example assumes the return value is one cell and that it can be parsed as a 64-bit integer.
- A nonzero contract exit code is treated as an error.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 10 October 2026
- Original website title
- xssnick/tonutils-go · Official homepage title · retained in its source language

