DELEGATECALL升级机制最简单的标准是https://gist.github.com/Arachnid/4ca9da48d51e23e5cfe0f0e14dd6318f。
我不完全明白它是如何工作的,尤其是以下几个方面:
Dispatcher,而不是实施/升级合同,这是正确的吗?Dispatcher呢?发布于 2017-07-18 21:39:24
delegatecall的语义,当通过dispatcher协议调用可升级的契约时,dispatcher状态将被存储并在dispatcher契约上进行更改。dispatcher的存储。这并不意味着您不能在可升级的合同上定义变量。这意味着它们将存储在dispatcher存储空间中。在升级合同时,必须遵守对允许更改存储变量集的限制。可以添加新变量,但不能删除或替换现有变量。更改变量名是可以接受的。数组中的结构可能不会被修改,但是映射中的结构可以按照上面描述的相同规则进行修改。
Upgradable合同是非常通用的。这意味着可以使用许多不同的存储布局。这是一个很高的抽象级别,初学者可能很难使用。当定义用于访问数据存储的显式api时,蚁群方法定义了一个严格的接口。它不那么抽象,也更容易使用,但它限制了您的可能性。https://ethereum.stackexchange.com/questions/21541
复制相似问题