这篇文章介绍了一种名为 fallback-extension 的模式,该模式可以解决 Solidity 智能合约 24kb 大小限制的问题。通过将某些函数放置在扩展合约中,并利用回调函数将调用转发至扩展合约,开发者可以增添更多的功能。此外,文中还讨论了存储布局一致性、函数选择器碰撞的风险及其对应的气体成本等重要注意事项。
回退扩展模式是一种绕过 24kb 智能合约大小限制的简单方法。
假设我们在主合约中有函数 foo()
和 bar()
,并且希望添加 baz()
,但由于空间不足无法添加。
我们在主智能合约中添加一个回退函数,将未知函数调用委托给一个扩展合约,类似于代理的工作方式。
我们将 baz()
放在扩展合约中。当我们在主合约上调用 baz()
时,它将无法匹配主合约中的任何函数选择器,从而触发回退函数。然后,baz()
将在扩展合约中被委托调用。
为了使此模式正常工作,主合约和扩展合约需要具有相同的存储布局。实现这一点的简单方法是将所有存储变量(无例外!)放入单个合约中。然后,主合约和扩展合约都继承自该合约。以下是一个示例:
![模式图像](https://img.learnblockchain.cn/2025/02/26/935a00_a7da77bd1f83444d97d233e0b8de36a5~m...
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!