区块链技术博客
www.b2bchain.cn

区块链技术状态保质期是解决以太坊状态问题的重要方法。如何恢复过期状态?

第21069篇区块链技术文章区块链技术状态保质期是解决以太坊状态问题的重要方法。如何恢复过期状态?

在状态保质期方案中,遗忘状态可以通过清除、带周期标记的地址和周期元数据等机制恢复

原标题:干货和过期货恢复方法的比较
作者:Matt
翻译&Min&校对;阿健

保质期是解决国家增长问题的推荐方案。在本文中,我们认为国家货架寿命作为一种机制,定期失效完整的状态树。本文将讨论如何保存前一个时期,因为我们的重点是如何恢复被遗忘的状态,无论是n=0还是n=1,一些机制建议总结如下:

顾名思义,“空”意味着什么都没有留下:超过保质期的状态将立即失效。如果用户需要使用某些处于过期状态的数据,则必须提供相应的见证数据。请注意,要在有效状态下读取或写入尚未初始化的部分,用户必须提供证明:要么提供排除证明以表明此部分数据在以前任何时候都未初始化,要么提供特定时间点,然后提供一个例外来证明这部分数据在这个时间点之后没有改变,这个例外证明的大小在任何时候都随着段的数目线性增加,这使得初始化状态数据的成本非常高

清空

避免了地址冲突的问题

清除元数据的主要问题是初始化新的状态元素会产生很高的成本。通过在地址上添加周期性标签,以太坊协议可以创建一种机制,在初始化新的状态数据时避免地址冲突。鉴别器将设置帐户可以生存的最短期限。目前,实现PWA的方法有两种:

  • 非常简单

vitalik的文章

  • ipsilon的文章

  • 太长,无法阅读:传统的20字节地址和32字节ASE前缀地址允许同时存在。在以太坊虚拟机中创建一个环境变量,以修改涉及地址的操作码的行为,根据相关地址是传统地址还是ASE地址,新状态可以在无需证明的情况下初始化,也可以扩展以容纳其他元数据,解决地址冲突的缺点需要对EVM进行大量修改要创建,包括传统模式和扩展模式

带周期标记的地址(PWA)

转换映射将无限增长(与传统环境中使用的长地址数成线性关系),并且不能被过期机制丢弃。似乎可以有过期机制,但是(丢弃数据后)要承担一些地址冲突的风险

地址空间扩展(ASE)

  • 用户体验很差,因为用户可以将资产存储在三种地址(短地址、长地址、,压缩地址)

  • 并非所有实体编译协定的掩码地址都有160位,因此某些协定的地址可能有脏的高位(单击此处查看ipsilon的完整分析)。

不要看得太长:查找未使用的4字节前缀,并禁止使用此前缀根据旧规则创建新合同/地址。旧合同按传统方式执行,新地址只能按旧规则创建。新类型的合同在PWA模式下执行,只能创建新的合同(前四个字节是预选的前缀,第五到第六个字节代表当前时间段,第七到二十个字节表示地址。)

EVM的修改相对较少

  • 不需要转换表,用户只需考虑一种地址< /P> < P>不破坏现有的工具(但它们可以显示XOR地址而不是原始图像)

  • 这个想法本不应该被正式定义(即使有,也只是@aditerichs的想法),但它的总体思想是在状态树中的account对象中添加一个新字段来指示创建时间。这可以解决由于排除证据而导致新存储项的初始化成本过高的问题(特别是在假设编写合同以在每个周期中部署新的分包合同的情况下),但是,如果是新合同的话,它并不能改善创建新帐户的问题,一个新的存储项可以初始化而无需证明

  • 非常简单

可以扩展来保存其他元数据

  • 不会由于外部映射而导致无限状态增长

  • 不会打破现有工具的缺点

  • 避免地址冲突问题

  • 的代价创建一个新的帐户是非常高的,并且需要一个异常证明来证明该帐户从第0周期开始就不存在这个想法还没有正式定义,一般的想法是引入一个新的注册表树来存储状态保质期的元数据。此注册表不会过期并存储合同创建期间。此外,它还可以存储其他信息,例如存储项目的总数。只要有效库容等于合同总库容,合同期就可以升级到当期。类似的方案也可以应用于EWA方案,但状态树需要修改

  • 可以扩展以保存其他元数据

无需转换表,用户只需考虑一种地址< /P> < P>不破坏现有的工具

免扩展的 PWA

  • Vitalik 的文章

无限增长(与使用地址数的线性关系)

来源链接:ethereum-machers.org

  • 新的状态无需证明即可初始化。

  • 对 EVM 的修改相对较少。

  • 不需要转换表,用户只需要考虑一种地址。

  • 不会破坏现有工具(不过它们显示的可能是异或地址(xor’d address)而非原像?)

  • 发生地址冲突的概率较高,不再有反事实合约。

  • 不是一个很有吸引力的解决方案,可能会让地址扩展变得越来越难。

周期元数据

状态树元数据

这个想法应该还没有被正式定义(就算有也只是在 @adietrichs 的脑中),但它的大体思路是在状态树中的账户对象处增加一个新的字段来表示创建时间。这样可以解决因除外证明而导致新的存储项初始化成本过高的问题(尤其是在假设合约是为了在每个周期部署新的子合约而编写的情况下),但是不会改善为创建新账户而创建新账户的问题。

  • 如果是新合约,无需证明即可初始化新的存储项。

  • 非常简单。

  • 可扩展以保存其它元数据。

  • 不会因为外部映射而导致状态无限增长。

  • 不会破环现有工具。

  • 逃避了地址冲突问题。

  • 创建新账户的成本很高,需要除外证明来表明该账户自周期 0 以来就不存在。

外部时段注册表

这个想法也没有被正式定义,大体思路是引入一个新的注册表树来存储状态保质期的元数据。这个注册表不会过期,并且会存储合约的创建时段。另外,它还可以存储其它信息,如存储项的总数量。只要有效存储量等于合约的总存储量,合约时段就可以升级成当前时段。类似方案也可以应用于 EWA 提案,但是需要修改状态树。

  • 新的状态无需证明即可初始化。

  • 可扩展以保存其它元数据。

  • 不需要转换表,用户只需要考虑一种地址。

  • 不会破坏现有工具。

  • 新的状态树结构。

  • 无限增长(与使用中的地址数量呈线性关系)。

  • 逃避了地址冲突问题。

感谢 @adietrichs 对本文的审阅。

来源链接:ethereum-magicians.org

区块链技术状态保质期是解决以太坊状态问题的重要方法。如何恢复过期状态? 由www.b2bchain.cn 提供
文章整理自网络,只为个人学习与分享使用
链接地址https://www.b2bchain.cn/21069.html

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 区块链技术状态保质期是解决以太坊状态问题的重要方法。如何恢复过期状态?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们