区块广播:

ETC首次系统性硬分叉--Atlantis里有什么? EIP-161(State-trie clearing)技术升级

ETC亚太社区版主发布在 ETC/以太坊原链
 7068  0

以太经典将进行Atlantis (ECIP - 1054) 硬分叉。Atlantis包含一系列升级,包括EIP-161,它在以太经典社区中受到特别关注,因为它提出了不规则的状态变化。有些人不知道它是什么,有些人不清楚其目的,我希望在本文中简化EIP-161的含义。




以太坊平台有一个DoS攻击漏洞,有人可以创建空帐户来增加区块链的体积。

EIP-161可以低成本删除空账户。删除空帐户会减少区块链状态的体积,从而提高网络性能。例如,区块链状态的减少将减少客户端的同步时间。

EIP-161只删除系统空帐户而不会侵犯用户的资产或代码。EIP-161的背景和结果不像紧急状态下的DAO分叉那样激进和无序。Dao改变了用户的实际余额以拯救特殊利益,而EIP-161则没有。EIP-161只与存储相关。

2016年9月下旬,ETH经历了阻碍网络性能的DoS攻击。结果,攻击者创造了大量的账户空置状态;缺乏代码,余额,存储状态且nounce== 0. EIP-161旨在清理这些空帐户,并于2016年11月22日,区块2675000实施。但是,在接下来的几天,出现了共识错误,这是由于在恢复和改进状态(以用来澄清状态被恢复时空账户的删除也被恢复)的情况下两个实现具有不同的行为。


详细说明

a.帐户创建和CREATE操作应在初始化代码执行之前,在正常初始值上每次将nounce递增1(对于正常的网络来说将是简单地增加1,然而对于不是从0开始计数的默认启动nonce是不同的)。

b.原来CALL和SUICIDE在目的地址不存在时将收取25,000 gas,现在只有在转移金额大于且目的帐户已经死亡时才收取费用。

c.没有帐户可以将状态从non-existent更改为existent-but-empty。如果执行此操作,帐户应依旧保持non-existent状态。

d.在交易结束时,当前任何触及那个交易的空帐户应该成为non-existent(即删除)。


条件:

当涉及任何可能发生状态变化的操作时,会认为该帐户被触及。这包括但不限于是零价值转移的接收者。

如果帐户没有代码nounce为零余额为零,则该帐户被视为空。

如果帐户状态是non-existent或empty,则该帐户被视为已死亡。

交易执行完后,在为交易接受对象确定要填充的状体树根(trie树——种特殊的二叉树)信息之前,立即执行自毁列表。


帐户在以下情况更改状态:

- 它是为了零或更多值的SUICIDE操作的目标或退款;

- 它是CALL操作的源头或目标,或者消息调用交易将零或更多值转移

- 它是CREAT操作的源头或目标,或合约创建交易赋予零或更多值;

- 作为产块者(“矿工”),它是出块奖励的接收者或零或更多值的交易费的接收者。


引入EIP-161,将能够以更低成本删除ETC网络中的空账户,清除状体树中冗余的状态信息,减少区块体积,增加每个区块中打包交易的条数,防止区块拥堵现象产生,使整个ETC区块链网络的功能和性能都能够得到大幅提升! 

本主题由 walterF 于 2019-06-05 17:29:59 审核通过
  • 正序
  • 最新
帖子暂无回复,回帖抢沙发
登录 账号发表你的看法,还没有账号?立即免费 注册