• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    比特币之家手机版
  • 关注官方公众号
    微信扫一扫关注
    比特币之家公众号

错误的交易记录给不定期的比特币客户端用户带来麻烦

2
回复
1131
查看
[复制链接]

1530

主题

1669

帖子

6732

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6732
发表于 2013-9-12 08:59:19 | 显示全部楼层 |阅读模式
这周开始,多个版本的比特币客户端开始失效,因为一个有错误的交易记录导致用户不能重新启动客户端软件。
这个问题最开始是美国时间周一上午,在BitcoinTalk论坛上被曝出来的。
我刚刚打开我的笔记本并打开运行Bitcoin-QT客户端,然后收到一条消息说区块链错误,我点击了OK然后界面上显示“重新索引区块,还有204周未同步”。于此同时,我的比特币也成了未确认的状态,发生了什么事?为什么会有这个消息呢?
很快也就有其他人在多台电脑上发现了同样的错误报告,这些电脑都运行着不同版本的Bitcoin-QT,Bitcoin-QT是带有标准图形用户界面的比特币客户端。重新索引所有区块并没有成功解决这个问题。同时,这个问题也影响到了Bitcoind,这是另外一个没有用户图形界面的客户端。
引起这个问题的bug,是今年2月释出第一版的0.8.0版本比特币客户端所引入的。0.8.0是一个大版本更新,这个版本中,为了解决一个安全性的问题,用来存贮区块链数据的数据库从Berkeley DB变成了LevelDB。
“这是一个我们在0.8.0版本里面,因为把数据库转换成了LevelDB,为防止数据库不一致而加入的检查代码而引入的bug,同时还有一个检查交易记录里面版本号的bug,”Gavin Andresen(他是首席开发者)说到,“一个带有错误版本号的交易记录引发了这个问题。”
Gregory Maxwell,另一名核心开发团队成员,昨天早上的时候贴出了一份针对这个问题的临时解决方案。他向CoinDesk解释道,从0.8.0版本开始,客户端会错误的存储一些带有负值版本号的交易记录在本地版本的区块链中。
这个异常举动本身是无害的,并且直到昨天为止,还没有发现任何带有负值版本号的交易出现。
然而在周一的时候,这样的交易出现了并被存储在客户端里面。因为客户端本身强制在软件开启的时候执行严格的数据库一致性检查,当发现这些(版本号为负值)的交易出现在区块链中时,它就会拒绝启动。他说到。
Andresen和Maxwell都表示他们没有发现任何明显的网络中断。Andresen指出这个问题并不会影响最大最关键的网络基础架构,比如说矿池、商户、或者兑换交易所,因为他们通常会保持比特币客户端在多个节点的持续运行。
“因为这个问题很容易被绕过(一旦你找到了指导教程),我认为这意味着这个事件主要是引起一些沮丧的情绪,而不是实际上的网络中断。”Maxwell说。
那么,那几个导致问题的交易记录是从哪里来的呢?Maxwell回溯到了几个重复使用的地址。他指向一名比特币钱包的开发者,这名开发者的软件在发送出一个交易之前初始化版本号失败了。“这个问题是很难出现的,特别是在C语言代码里面”,他补充说到那个钱包的Github页面已经下线了,“可能因为这个bug,那名开发者把钱包软件下线了”。
这个bug可能仅仅会带来一些沮丧的情绪,但它同时也说明通过简单的制造一个因为一个老bug而引起并能够搞乱系统的交易记录,就能对比特币网络发起攻击,就算这个交易记录并不是故意的或者恶意生成的。在这个事件里面,它只是一个简单的,包括了一点点不怎么被比特币客户端主动使用的错误的数据的交易记录。
“如果这个错误的数据出现在某些被客户端主动使用的位置,那么它将导致一次严重的分岔”,Maxwell说。尽管这还需要代码里面有相对应的漏洞。
核心开发团队现在正在着手解决这个问题。“一旦我们有足够的信心我们把这个bug修补好了,同时这个bug也不会通过其他方式再次出现,我们就将放出0.8.5版本的客户端,”Andresen总结到。
作者:Danny Bradbury
来自 :巴比特

比特币之家——国内比特币最新资讯门户,华人社区高端比特币交流平台!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

比特币之家官方②群
我们更懂你。 立即登录 立即注册

扫描微信二维码

随时了解更新最新资讯

kent@btc798.com

电邮:kent@btc798.com

Powered by 比特币之家! X3.1 Licensed  © 2001-2013 Comsenz Inc.( 豫ICP备13024532号-1