fatcat
15p11 comments posted · 406 followers · following 0
4 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +3 points
4 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +2 points
4 years ago @ yangzhe.me - 以太坊源码解析... · 2 replies · +3 points
从代码的逻辑上看,不管有几个签名者,这里的判断语句和对 Recents 字段的填充逻辑是一样的,所以我才觉得是重复判断。
从注释上看: // Signer is among recents, only wait if the current block doesn't shift it out,我理解这个注释的意思是有些本该从 Recents 中移除的签名者,还没来得及移除,所以这里再判断一下。但始终没找着什么情况下应该移除但没移除.......
4 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +2 points
5 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +2 points
5 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +2 points
我发现那篇 wiki 里 diff 的更新计算和代码里的任何一个版本都不一样,并且从创建这篇 wiki 开始,这里就是这么写的(你也可以看一下这篇 wiki 的编辑历史)。所以我觉得这篇资料没有及时更新,且是在以太坊设计之初写上去的。所以这里的 「 switch 」是什么意思,可能只存在于当时设计的人的心里了...... 因为我们查不到他们 「 plan to switch 」之前的想法。
我也会关注你的这篇问答,希望会有牛人给一个好的答案。
5 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +2 points
「 1 if block_timestamp - parent_timestamp < 13 else -1 」这个版本(版本一) 难度的变化是一步一步变的,而「 max(1 - (block_timestamp - parent_timestamp) // 10, -99) 」这个版本(版本二)可以一下子变化很多步。比如,版本一中,一个恶意矿工将出块时间设为 1s,那么块的难度将 +1;一个正常的矿工设置正常的出块时间,可能会让难度 -1。如果超过半数的矿工将出块时间设置为 1s,那么难度总体上肯定会一直 +1,减不下来了。版本二中恶意矿工将出块时间设置为 1s 仍然会使难度 +1,但只要遇到一个诚实的矿工,它用了好长时间出了一个块,因此会使难度一下子减少很多(最多 -99)。这样可以理解一个正常矿工就「干掉」了 99 个恶意矿工,想要做恶需要控制的算力大增,可能会使恶意矿工作罢。
我猜原文说的「阻止」矿工设置 1s 的出块时间,应该是这个意思吧。但对于将时间设置成 1s 对矿工来说有什么好处,我仍然一点线索都没有。可能纯粹是为了捣乱?哈哈
5 years ago @ yangzhe.me - 以太坊源码解析... · 1 reply · +3 points
5 years ago @ yangzhe.me - 认识以太坊智能... · 0 replies · +3 points
5 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +2 points