V神发布ETH2.0信标链首个硬分叉提案HF1,引入更公平的节点惩罚机制
“以太坊创始人 V神 在推特上介绍了以太坊信标链第一个硬分叉(暂定名为“HF1”)升级提案。 V神 称,HF1添加了轻客户端支持,简化了规范,提高了效率,并引入了惩罚性较小的不活跃惩罚机制。根据文件,硬分叉将使开发人员可以对最近发布的信标链进行一些关键的升级,也将成为将来进行更深层更改的有用测试。其中轻客户端支持对资源的要求最低,并且可以在移动设备上运行的节点。这将允许“最小化信任的钱包”能够自己验证区块链,而不是依赖于外部服务提供者。”
HF1是以太坊信标链的第一个硬分叉升级的暂定代码名称(有关该硬分叉的长期命名思路,请参见此处)。 HF1的主要目标是:
- 添加轻客户端支持
- 修复信标链中的一些脆弱点。这些脆弱点被发现时已经太晚而没能在信标链创世启动时修复。
- 在较小的更改升级环境下对信标链的硬分叉升级机制进行测试,以便以后进行更大的更改。
HF1中提出的共识更改内容包括:
同步委员会
我们向信标链添加一个随机抽取的“同步委员会”。 这样做的目的是允许轻客户端使用很少的overhead(每天最少仅需大约20千字节,验证单个区块仅需大约500字节)来确定链head。 这将使轻客户端实际上可在移动设备、内置浏览器之类的使用案例中使用信标链,从而为实现更加信任最小化的钱包生态系统铺平道路。
在每个时间段(约27小时)内,随机选择1024位验证者作为同步委员会的成员。 同步委员会中的验证者节点将发布签名以向当前的head进行证明。 这些签名将作为LightClientUpdate对象的一部分进行广播,该对象可以帮助轻客户端找到这个head,并将被包含在信标链中以得到奖励。
更多内容: https://github.com/ethereum/eth2.0-specs/pull/2130
记账改革(第一级)
我们替换了证明者奖励的计算方式。 不同于存储PendingAttestation对象并且最后处理它们,我们选择添加了一个位域,用于存储每个验证者的状态,从而可以实时累积有关谁参与的数据。 位域按“改组顺序”排序,以确保同一委员会中验证者的记录一起显示。 这种更改的目的是简化客户端实现,并使更新Merkle树更加便宜。
具体参考: https://github.com/ethereum/eth2.0-specs/pull/2176
记账改革(第二级)
我们对验证者集进行更改,并且惩罚记账仅每64个时期(epoch)发生一次,而不是每个单一时期。 这样做的目的是大大降低处理“空白时期过渡”的复杂性——例如,有一条链的参与度非常低,其中两个连续的区块相隔一千个slot,它们之间只有一个空白时期。 为了处理这样的链,目前客户端需要每个时期重新计算每个验证者的余额一次,以此对验证者进行不活跃惩罚; 而在新的提案中,他们只需要每64个时期执行一次。
此外,我们对不活跃惩罚的工作方式进行了两项更改:
- 不活跃惩罚将变为每个验证者的二次方。 也就是说,如果存在不活跃惩罚,在此期间完全离线的验证者会损失约10%的余额,那么在此期间90%的时间在线的验证者现在只会损失约0.1%的余额(相对于〜 1%)。 这试图将处罚重点放在真正行为不当的节点上,减少对由于网络连接问题而离线的诚实节点。
更多的讨论可以参考此处: https://github.com/ethereum/eth2.0-specs/issues/2098
- 验证者不活跃惩罚在确定后逐渐减慢而不是停止。 这样可确保一旦达到最终状态,离线节点将继续失去余额一段时间,从而确保验证者在线时间百分比显着高于2/3,而不是仅稍高于该阈值。
具体参考: https://github.com/ethereum/eth2.0-specs/pull/2192
https://github.com/ethereum/eth2.0-specs/pull/2194
值得庆祝的一点是,通过削弱验证者罚款,我们可能稍微(尽管尚未完全)走出困境。 我们将对常数进行更改:
- INACTIVITY_PENALTY_QUOTIENT: reduced from 2**26 (= 67,108,864) to 3 * 2**24 (= 50,331,648)
- PROPORTIONAL_SLASHING_MULTIPLIER: increased from 1 to 2
- MIN_SLASHING_PENALTY_QUOTIENT: reduced from 2**7 (= 128) to 2**6 (= 64)
与HF1(接近)同时部署的分叉选择更改
(区块,slot)对(pair)的分叉选择
当前,如果在最近的slot中没有发布任何块,则出于该slot期间的LMD GHOST证明的目的,视为证明者正在支持的链中的最新区块。 例如,在下面的这张图中,BLANK上的证明算作A上的证明:
但是,这为34%攻击打开了大门。 假设为每个slot分配了m个验证者,其中恶意攻击者控制了0.34 * m。 攻击者也有权为slot n + 1发布区块B。 攻击进行如下:攻击者不发布B,也不发布其任何证明。 所有诚实的证明人都会投票支持声称他们在第n个slot中看到区块A而在第n + 1个slot中什么都没有看到的说法,当前该计数被视为对A的投票。在第n + 2个slot中,一个诚实的提议者会在A上面构建一个区块C, 此时,恶意提议者会向slot n + 1和n + 2公布B及其对B的证明。 上面的分叉有0.68 * m个验证者支持它,但顶部分叉只有0.66 * m的支持,因此下面的分叉获胜。
这种攻击在该论文的 3.1章节中进行了更加详细的描述: https://econcs.pku.edu.cn/wine2020/wine2020/Workshop/GTiB20_paper_8.pdf
拟议的解决方案是更改分叉选择的工作方式,从而使其对(区块,slot)对的树进行操作,而不是对区块树进行操作。 因此,在上图中,slot n + 1中的诚实投票将计为对(BLANK,n + 1)的投票,因此它们将正确地计为支持上面的分叉,因此上面的分叉获得的支持为1.32 * m,从而击败攻击。
更多内容: https://github.com/ethereum/eth2.0-specs/pull/2197
修复分叉选择余额攻击
在分叉选择中存在一种“余额攻击”,拥有2%验证者的攻击者会在一个slot结束之前的正确时间发布少量证明,说服网络中超过49%的人认为某个区块A获胜,而超过49%的网络则认为B区块获胜。 如果他们正确地安排了广播的时间,则每一组验证者都会按时看到针对他们的消息,但是没有时间在这个slot结束之前将消息重新广播到另一组验证者。 如果网络环境对于攻击者而言是最佳的,则它们可以无限期地重复。
提议的解决方案是通过授权下一个slot的提议者对分叉选择产生暂时但重大的影响,从而将所有验证者的支持方向决定性地转移到一侧或另一侧,从而“打破了对称性”。
更多内容: https://notes.ethereum.org/@vbuterin/lmd_ghost_mitigation
原文:https://notes.ethereum.org/@vbuterin/HF1_proposal
Pi Network Rally Soon? BitMart Resumes Pi Coin Trading, Banxa Creates Thousands of New Accounts
The post Pi Network Rally Soon? BitMart Resumes Pi Coin Trading, Banxa Creates Thousands of New Acco...
New Cboe Bitcoin Futures (XBTF) Offer More Flexibility for Crypto Traders
The post New Cboe Bitcoin Futures (XBTF) Offer More Flexibility for Crypto Traders appeared first on...
Ripple News: SEC’s Paul Atkins Could Still Object ProShares’ XRP ETF Filing
The post Ripple News: SEC’s Paul Atkins Could Still Object ProShares’ XRP ETF Filing appeared first ...