回退扩展模式

  • RareSkills
  • 发布于 2023-12-30 20:17
  • 阅读 163

这篇文章介绍了一种名为 fallback-extension 的模式,该模式可以解决 Solidity 智能合约 24kb 大小限制的问题。通过将某些函数放置在扩展合约中,并利用回调函数将调用转发至扩展合约,开发者可以增添更多的功能。此外,文中还讨论了存储布局一致性、函数选择器碰撞的风险及其对应的气体成本等重要注意事项。

回退扩展模式是一种绕过 24kb 智能合约大小限制的简单方法。

假设我们在合约中有函数 foo()bar(),并且希望添加 baz(),但由于空间不足无法添加。

我们在智能合约中添加一个回退函数,将未知函数调用委托给一个扩展合约,类似于代理的工作方式。

我们将 baz() 放在扩展合约中。当我们在主合约上调用 baz() 时,它将无法匹配合约中的任何函数选择器,从而触发回退函数。然后,baz() 将在扩展合约中被委托调用

确保存储布局一致

为了使此模式正常工作,主合约和扩展合约需要具有相同的存储布局。实现这一点的简单方法是将所有存储变量(无例外!)放入单个合约中。然后,主合约和扩展合约都继承自该合约。以下是一个示例:

![模式图像](https://img.learnblockchain.cn/2025/02/26/935a00_a7da77bd1f83444d97d233e0b8de36a5~m...

剩余50%的内容订阅专栏后可查看

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
RareSkills
RareSkills
https://www.rareskills.io/