本文我们来学习 TON 合约升级,TON 的合约升级相比于 Solidity 的合约升级会简单很多。它不需要类似代理合约之类的东西,合约自身支持通过 set_code 方法将新的代码逻辑直接设置到当前地址。在 set_code 之后,合约地址不变,代码逻辑更新。
在前面几篇文章学习了 FunC 之后,我们的重点将会放在 FunC 上,因此本文我们会介绍 FunC 的合约升级。Tact 目前还不支持原生升级方案,需要结合 FunC 的 Native Function 来实现,这部分内容读者感兴趣的话可以自行学习理解。
合约升级实践
首先通过 npm create ton@latest 创建一个新的项目,第一个合约命名为 ContractV1,其内存变量布局如下:
uint32
即只有一个 uint32 类型的变量。