Skip to main content

Documentation Index

Fetch the complete documentation index at: https://www.dynamic.xyz/docs/llms.txt

Use this file to discover all available pages before exploring further.

Overview

TonModule provides native TON blockchain operations including message signing, TON and Jetton transfers, balance queries, and network details. Access it via DynamicSDK.instance().ton.

Prerequisites

Get a TON Wallet

If TON is enabled in the dashboard, the user gets a TON wallet on signup. Find it via userWallets, or create one explicitly with EmbeddedWalletChain.ton:
let sdk = DynamicSDK.instance()

// Filter existing
let tonWallet = sdk.wallets.userWallets.first(where: { $0.chain == "TON" })

// Or create
let wallet = try await sdk.wallets.embedded.createWallet(chain: .ton)

Get Balance

Query the TON balance for a wallet. Returned as a string (nanotons) to preserve precision.
let balance = try await sdk.ton.getBalance(walletId: wallet.id)
print("Balance: \(balance) nanotons")

Sign a Message

Sign a message using the connected TON wallet:
let signature = try await sdk.ton.signMessage(
  walletId: wallet.id,
  message: "Hello, TON!"
)
print("Signature: \(signature)")

Send TON

Send TON tokens to a recipient address. Returns a TonTransactionResult containing the BOC and transaction hash.
let result = try await sdk.ton.sendTon(
  walletId: wallet.id,
  to: "EQBYLTm4nsvoqJRxs2525chuMyfNIS0Tg98TYSLttqzK5YDv",
  amount: "1000000000", // 1 TON in nanotons
  comment: nil          // optional
)
print("BOC: \(result.boc)")
print("Hash: \(result.hash)")
ParameterTypeDescription
walletIdStringThe wallet ID to send from
toStringRecipient TON address
amountStringAmount in nanotons (1 TON = 10⁹ nanotons)
commentString?Optional comment to attach to the transaction

Send Jettons

Send Jetton tokens (TON’s fungible token standard, similar to ERC-20):
let result = try await sdk.ton.sendJetton(
  walletId: wallet.id,
  to: "EQBYLTm4nsvoqJRxs2525chuMyfNIS0Tg98TYSLttqzK5YDv",
  amount: "1000000",
  jettonMasterAddress: "EQBlqsm144Dq6SjbPI4jjZvA1hqTIP3CvHovbIfW_t-SCALE",
  comment: nil
)
print("Hash: \(result.hash)")
ParameterTypeDescription
walletIdStringThe wallet ID to send from
toStringRecipient TON address
amountStringAmount in the Jetton’s smallest unit
jettonMasterAddressStringJetton master (contract) address
commentString?Optional comment

Get Network Details

Query the chain ID and network name for the connected wallet:
let details = try await sdk.ton.getNetworkDetails(walletId: wallet.id)
print("Chain ID: \(details.chainId)")
print("Network:  \(details.name)")
Returned struct:
  • chainId-239 for mainnet, -3 for testnet
  • name"mainnet" or "testnet"

API Reference

MethodReturnsDescription
getBalanceStringGet wallet balance (nanotons)
signMessageStringSign a message
sendTonTonTransactionResultSend TON, returns {boc, hash}
sendJettonTonTransactionResultSend Jettons, returns {boc, hash}
getNetworkDetailsTonNetworkDetailsGet {chainId, name}

Next Steps