署理模式使得所有动静挪用都通过署理合约,署理合约会将挪用请求重定向到最新陈设的合约中。如要进级时,将进级后新合约地点更新到署理合约中即可。
进一步阅读calldatacopy(ptr, 0, calldatasize)
然后,我们利用returndatacopy操纵码将返回的数据拷贝到ptr变量中。
利用非布局化存储实现可进级
参数:
署理模式的观念已经存在了一段时间,但由于其巨大性,担忧引入安详裂痕以及绕过不行改动而引起争论,尚未获得遍及回收。已往的办理方案也相当僵化,使得方针合约可以修改和添加的内容受到严格限制。可是,从开拓人员的角度来看,很显然需要进级合约的成果。Zeppelin为他们摸索的三种署理模式提供了代码和测试,以辅佐开拓人员设计在其项目中引入合约的可进级性。
由于常量[9]不会占用存储插槽,因此不必担忧implementationPosition被方针合约意外包围。由于Solidity状态变量存储[10]的划定,方针合约中界说的其他内容利用此存储插槽斗嘴的大概性极小。
switch result
Zeppelin在实现这种存储署理模式时,引入了署理所有权的观念。只有署理所有者有权将新版本合约写入署理合约中,可能将所有权举办移交。 default { return(ptr, size) }
最后,switch语句返回的数据可能抛出异常。重要要点
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。