主链
在 TON 区块链中,一条名为”主链” 的特殊链用于同步消息路由和交易执行,因此网络中的节点可以固定多链状态中的某个特定点,并就该状态达成共识。
主链存储 网络配置 和所有 [工作链] 的最终状态(https://docs.ton.org/learn/overviews/ton-blockchain#workchain-blockchain-with-your-own-rules)。 它承载着基本的协议信息,包括当前设置、活动验证器及其赌注列表、活动工作链以及相关的分块链。 最重要的是,它为所有工作链和分块链维护最新的区块哈希值记录,从而在整个网络中达成共识。
主链如何保护合约
Tact 强制所有合约使用 basechain,即 ID 为 的默认工作链。这样做是为了防止在合约中使用主链地址。
在未启用主链支持的情况下,任何指向主链或以其他方式与之交互的尝试都会产生异常,并显示退出代码 137: 此合约未启用 “主链支持”。
也就是说,意外部署到主链、从主链账户接收消息、向此类账户发送消息以及使用主链地址或其链 ID () 都是默认禁止的。
在编译选项中启用主链支持
如果您确实需要主链支持,最简单也是最推荐的方法是修改项目根目录下的 tact.config.json
文件(如果还不存在,则创建该文件),并 将 masterchain
属性设置为 true
。
如果您正在开发基于 Blueprint 的项目,可以在合约的编译配置中启用主链支持,这些配置位于名为 wrappers/
的目录中:
不过,蓝图 项目中仍可使用 tact.config.json
。 在这种情况下,除非在 wrappers/
中修改,否则 tact.config.json
中指定的值将作为默认值。