本周开始,多个版本的比特币客户端将失效,一个错误的交易将导致用户不能重新启动客户端软件。
这个问题第一时间发现是在星期一早上,在比特币论坛上爆出来的。 “刚刚打开我的笔记本开始运行Bitcoin-QT客户端,然后就收到一条blockchain的错误消息,我点击了确定,然而界面上显示“重新索引区块--204周”。同时,我的比特币也成了未确认的状态,到底发生了什么事?为什么有这个消息?” 其他人在多台计算机上也被爆出同样的错误问题报告,这些电脑上运行着Bitcoin QT的不同版本,也有着标准的图形用户界面(GUI)功能的版本的Bitcoin客户端。重新索引块使用Bitcoin客户端无法解决的问题。受影响的bitcoind同样的问题,这是基于非GUI版客户端。 这个问题是由于一个错误的最初版本0.8.0的Bitcoin客户端,这是在二月首次发布。这个版本是一个主要版本,该开关用于存储从伯克利DB LevelDB块链数据库,解决安全问题。 “这是在我们的代码中的错误,未了防止LevelDB数据库不一致而我们加入检查代码,同时还有一个检查交易的版本号错误”,加文安德森,首席开发者这样解释,“是一个错误的版本号码交易引发的问题。” Gregory Maxwell是核心开发团队的另一个成员,昨天上午的时候他公布了对这个问题的解决方法。他解释说,由于coindesk 0.8.0 版本开始,客户端会错误的存储一些带有负值版本号的交易记录在本地版本的区块链中。 “这个异常举动本身是无害的,并且直到昨天为止,还没有发现任何带有负值版本号的交易出现。” 然而,在星期一,这样的交易出现了并存储在客户端。由于软件开始的时候执行严格的数据库一致性检查,当发现有负值版本号的交易记录在本地版本的区块链中,它就会拒绝开始,他说。 Gregory Maxwell表示他们未发现明显的网络中断。安德森指出,这并不影响最大的,关键的网络基础设施,如采矿池,商人,或交流,因为他们倾向于保持其Bitcoin软件运行,通常有多个节点。 “因为这个问题很容易解决(一旦你找到指令),这意味着这个事件只能引起一些使用者的挫折感,并非会引起实际上所说的网络中断,“Gregory Maxwell说。 那么这几个导致交易记录的问题是从哪里来的呢?Gregory Maxwell追溯到了几个重复使用的地址。Gregory Maxwell指向一名比特币钱包的开发者,这名开发者的软件在发送出一个交易之前初始化版本号失败了。“这个问题是很难出现的,特别是在C语言代码里面”,他补充说到那个钱包的Github页面现在已经处于脱机状态,“可能因为这个错误导致他的脱机状态”。 这个错误可能仅仅会带来一些沮丧的情绪,但它同时也说明通过简单的制造一个因为一个老bug而引起并能够搞乱系统的交易记录,就能对比特币网络发起攻击,就算这个交易记录并不是故意的或者恶意生成的。在这个事件里面,它只是一个简单的,包括了一点点不怎么被比特币客户端主动使用的错误的数据的交易记录。 “如果这个错误的数据出现在某些被客户端主动使用的位置,那么它将导致一次严重的分岔”,Gregory Maxwell说。尽管这些还需要代码里面有相对应的漏洞。 核心开发团队成员现在已经着手在解决这个问题了。“我们有足够的信心把这个错误修补好了,同时这个错误也不会通过其他方式再出现,我们就将升级到0.8.5版本的客户端,”Gregory Maxwell总结到。 翻译:比特币资讯网 / 转自:http://www.bitcoin86.com/news/1050.html |