答案 0 :(得分:10)
很好的回答here。
来自axic网站的Ethereum Stack Exchange:
合同代码是不可变的,存储是可变的,但你不能 执行放入存储的代码,至少目前是这样。
合同错误修正
至于错误修正,常见的模式是代理或查找 合同成为真实的门户,如果发生变化 或者bugfix将被替换。更换它也意味着失去旧的 存储内容。
保存
如果您希望能够升级代码,同时保留存储空间,那么就是您 可以想到分离存储和逻辑。有专门的存储空间 contract,接受来自可信地址的写入调用(例如 逻辑合同)。所有重要的存储都应与此相关联 之一。
自行修改后访问存储空间
截至今天,即使在这种情况下也没有实施真正的修剪 自我毁灭,但这肯定会在未来出现。有 几个EIP正在讨论这个问题。
即使实施了修剪,也不应该立即进行修剪 你应该能够从上一个状态读取存储空间。也是 计划让归档节点无限期地保持状态 - 不确定 这是可行的,不受限制只是通过判断增长 区块链。
在同一地址重新部署
简而言之:实际上这是不可能的。合同地址是 根据发件人和现时计算。随机数是连续的, 没有任何差距,也不会有重复。
理论上,可以使用不同的哈希值来获得相同的哈希值 nonce和地址组合,但可能性很小。