安全智能合约编程
在本节中,我们将介绍 TON 区块链最有趣的几个功能,然后介绍开发人员在 FunC 上编写智能合约的最佳实践清单。
合约分片
在为 EVM 开发合约时,为了方便起见,通常会将项目拆分为多个合约。在某些情况下,可以在一份合约中实现所有功能,即使在有必要拆分合约的情况下(例如,自动做市商中的流动性对),也不会造成任何特殊困难。交易全部执行:要么全部成功,要么全部失败。
在 TON 中,强烈建议避免 "无界数据结构 (unbounded data structures)" 和将单个逻辑合约分割成小块,每个小块管理少量数据。基本的例子是 TON Jettons 的实现。这是 TON 版本的以太坊 ERC-20 代币标准。简而言之,我们有
- 一个
jetton-minter
,用于存储total_supply
、minter_address
和几个引用:令牌描述(元数据)和jetton_wallet_code
。 - 还有大量的 jetton 钱包,每个 jetton 的所有者都有一个。每个钱包只存储所有者的地址、余额、jetton-minter 地址和 jetton_wallet_code 的链接。
这样做是必要的,因为这样可以在钱包之间直接传输 Jettons,而不会影响任何高负载地址,这对并行处理交易至关重要。
也就是说,做好准备,让你的合约变成 "一组合约",而且它们之间会积极互动。