以太坊安全警告[11/24/2016]: geth v1.4.19与v1.5.2的共识问题

jan   |     |   1206 次阅读

原文链接: https://blog.ethereum.org/2016/11/25/security-alert-11242016-consensus-bug-geth-v1-4-19-v1-5-2/

by Vitalik Buterin

受影响的部分

Geth

严重程度

概要:

Geth的存储日志机制存在问题,这导致了网络在高度#2686351上(时间Nov-24-2016 14:12:07 UTC)的分叉。Geth新版本1.5.3解决了该日志问题并修复了这次分叉。

详细说明:

在能导致空账户被清除的交易产生gas费用不足的异常时,Geth实现没有正常的进行回滚。在一个涉及对precompile合约进行调用产生的gas费用不足异常的更少见的情况中,我们发现只在Parity中存在的另一处问题. 新版本的Geth与Parity的行为保持了一致.在大约一周之后,随着状态数据清理工作的进行和结束,空帐号带来的问题的可能性将逐渐消失.

由老的Geth客户端在高度#2686351上被制造出来的分叉链,已经被大多数客户端在高度#2686516左右放弃,这条链在Parity和新的Geth客户端中都会被认为是无效的.在分叉链上大约有165个区块被矿工挖了出来.由于交易是被全网广播,因此这些块中的大部分交易在分叉链和当前链上都存在,但是分叉链上的挖矿奖励和交易费会丢失.两个客户端现在共同接受的当前链上的交易和区块不会回滚.

最新发布的Geth将会从分叉点开始更新本地区块链数据,即使节点同步之前已经越过了分差点.

解决方案:

如果你使用Geth客户端: 在这里下载最新的版本https://github.com/ethereum/go-ethereum/releases/tag/v1.5.3

如果你使用Mist客户端: 重启Mist, 自动更新特性将提示你更新Mist使用的Geth客户端到1.5.3.

如果你不做更新,请注意你可能留在没有技术支持的无效的分叉链上.

我们建议交易所以及任何高价值用户运行多个版本的客户端,并且在它们失去同步超过10个块的时候触发系统停机或者进入安全模式.

允许用户保存以太币和发出交易的以太坊网站和手机应用由第三方服务商提供, 他们运行了自己的以太坊客户端基础设施来提供服务. 如果你使用的是类似MetaMask, Jaxx以及MyEtherWallet之类的第三方应用, 一般来说你不需要进行任何操作, 但是请以服务商的指示为准. 如果有疑问请联系相应的服务提供商, 获取他们的操作建议.

声明:

这是一个新兴的快速进化的强技术领域. 如果你选择参与, 你应该清楚了解这里涉及的风险, 包括但不限于没有预料到的软件错误以及其它可能导致以太币丢失及严重后果的问题. 此外, 如果你运行Geth客户端但没有更新到1.5.3, 你将会停留在一个不被支持的网络上. 使用以太坊即代表你了解该新兴技术的风险.

 
2 人喜欢