Python SDK for TON <-> TAC cross-chain operations. Repository: https://github.com/TacBuild/python-tac-sdk
See the dedicated helper docs: helpers/README.md
pip install tac-sdk- Create
.envout of.env.exampleand populate it with necessary data; - Fund your TAC wallet (the one which corresponds to EVM_PRIVATE_KEY) on the TAC chain with WTAC to pay fees. You can use https://bridge.tac.build/; Addresses on TAC and ETH chains are equal for the same EVM_PRIVATE_KEY.
- Go to WTAC address
https://explorer.tac.build/token/0xB63B9f0eb4A6E6f191529D71d4D88cc8900Df2C9and connect your wallet EVM_PRIVATE_KEY. Navigate to Contract > Read/Write contract > Write > approve. Set spender to be composer address (currently0xC1313fD7ca98a85E8a0A3398739801f6653d456b) and your value. As of Feb 2026 bridge tx on TAC chain costs ~120-150 WTAC. If you happen to reach allowance limit, your bridge txs start to fail. You can increase allowance with higher value; - For cbBTC. Go to
https://etherscan.io/token/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bfand connect your wallet EVM_PRIVATE_KEY. Navigate to Contract > Write as Proxy. Set spender to be cbBTC OFT adapter on ETH chain (0x59Ea2825d8Ad7D60cC6Aa77FFbDD0E89c0fBF539) and the value of cbBTC you expect to bridge in upcoming future; - For WETH. Go to
https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2and connect your wallet EVM_PRIVATE_KEY. Navigate to Contract > Write as Proxy. Set spender to be WETH OFT adapter on ETH chain (0xf211D3B40A74632162F45F4d42A461b663694a9D) and the value of WETH you expect to bridge in upcoming future.
import asyncio
from sdk.tac_sdk import TacSdk
from structs.struct import Network, SDKParams
async def main() -> None:
sdk = await TacSdk.create(SDKParams(network=Network.TESTNET))
token = await sdk.getFT("EQBLi0v_y-KiLlT1VzQJmmMbaoZnLcMAHrIEmzur13dwOmM1")
print(token.address)
asyncio.run(main())