付费视频,请购买课程( ¥2,000.00 )后再观看
合约地址推导、确定性部署与最小代理模式
19次播放
1天前
视频 AI 总结:
视频深入探讨了以太坊虚拟机(EVM)上的合约部署策略。首先指出 CREATE 操作码因依赖 nonce 导致多链部署地址不一致的问题。接着介绍了 CREATE2,它通过引入 salt 参数实现可预测的合约地址,便于多链地址统一。视频还讲解了 CREATE3 库,它能确保即使合约字节码在不同链上存在差异,也能获得一致的合约地址。最后,讨论了利用最小代理合约(delegatecall)实现大规模、低成本地部署相同合约,通过复用单一实现合约来节省Gas。
关键信息:
- CREATE 操作码的局限性: 合约地址由创建者地址和
nonce决定,导致在不同链上部署相同合约时,因nonce不同而产生不同的合约地址,可能出现地址错位问题。 - CREATE2 操作码的优势: 合约地址由创建者地址、
salt(盐)和合约字节码决定。salt可控,实现可预测的合约地址,便于多链地址统一,并允许预先计算或“挖”出靓号地址。 - CREATE3 库: 解决
CREATE2在合约字节码因 EVM 版本差异或链特定值而无法保持一致时的问题。其原理是先用CREATE2部署一个简单的、字节码一致的“部署器”合约,再由该部署器用CREATE部署目标合约,从而实现与目标合约字节码无关的多链确定性地址。 - 最小代理合约 (Minimal Proxy) /
delegatecall: 用于大规模部署相同合约,通过部署一个极小的代理合约,其代码通过delegatecall调用一个已部署的“实现合约”中的逻辑。实现合约只需部署一次,多个代理合约可复用其代码,大幅节省 Gas 成本。 - 应用场景: CREATE2 适用于 Permit2、合约钱包;最小代理合约适用于 ERC-20 代币工厂、Meme 币部署等需要大量部署相同合约的场景。