Cover image
Blog iconboger.eth
May 6

OpenZeppelin - Proxy Upgrade Pattern

什么是代理模式以太坊已经部署的合约是无法修改的, 如果出现漏洞会出现被盗的风险, Openzeppelin给出了一种可以变相修改及升级合约的方式-代理模式. 我们在部署自己逻辑合约的时候同时部署一份代理合约, 所有用户消息通过代理合约重新定向到已部署的逻辑合约. 如果需要升级已部署的逻辑合约, 只要部署最新版的逻辑合约, 然后修改代理合约中引用逻辑合约的合约地址即可.Openzeppelin提供了三种代理模式Inherited StorageEternal StorageUnstructured Storage所有三种模式都依赖于低级委托调用. Solidity虽然提供了delegatecall函数, 但是它只返回true/false是否调用成功, 并且不允许你管理返回的数据. 在深入代理模式前, 首先要理解下面两个重要的概念:当调用了合约不支持的函数时, 回调函数会被调用. 你可以编写自定义回调函数来处理这种情况. 代理合约使用自定义回调函数将调用重定向到其他合约实现.每当合约A将调用委托给合约B时, 它会在合约A的上下文中执行合约B的代码. 这意味着 msg.value 和 ...

boger.eth

Written by
bogerv
Subscribe

2025 Paragraph Technologies Inc

PopularTrendingPrivacyTermsHome
Search...Ctrl+K

boger.eth

Subscribe