fatcat

fatcat

15p

11 comments posted · 9 followers · following 0

2 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +3 points

谢谢鼓励,有用就好

2 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +2 points

嗯那应该就是我记错了

3 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 中移除的签名者,还没来得及移除,所以这里再判断一下。但始终没找着什么情况下应该移除但没移除.......

3 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +2 points

thanks

3 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +2 points

突然想到出块时间设置成 1s 也可能是为了快?因为不需进行系统调用获得时间戳,只需执行简单的 +1 指令就行了。

3 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +2 points

我觉得你问得应该不是原文的翻译吧,我搜到了这个提问: https://ethereum.stackexchange.com/questions/7405... ,我猜也是你问的哈哈。

我发现那篇 wiki 里 diff 的更新计算和代码里的任何一个版本都不一样,并且从创建这篇 wiki 开始,这里就是这么写的(你也可以看一下这篇 wiki 的编辑历史)。所以我觉得这篇资料没有及时更新,且是在以太坊设计之初写上去的。所以这里的 「 switch 」是什么意思,可能只存在于当时设计的人的心里了...... 因为我们查不到他们 「 plan to switch 」之前的想法。

我也会关注你的这篇问答,希望会有牛人给一个好的答案。

3 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 对矿工来说有什么好处,我仍然一点线索都没有。可能纯粹是为了捣乱?哈哈

3 years ago @ yangzhe.me - 以太坊源码解析... · 1 reply · +3 points

新改了一版,加了主要工作流程的梳理。如果还在关注的话欢迎提提意见。

3 years ago @ yangzhe.me - 认识以太坊智能... · 0 replies · +3 points

你好,我用邮件交流更习惯一些:yangzhe.me@foxmail.com。期待^_^

3 years ago @ yangzhe.me - 以太坊源码解析... · 0 replies · +2 points

reply test