蚂蚁矿机

MtGox将提款问题归罪于比特币协议纯属污蔑

第三大比特币交易平台MtGox上周五宣布暂停比特币提款,导致币值一度出现暴跌。比特币提款是指用户从一个MtGox钱包向外部钱包转移比特币。本周一,MtGox再次发表 新闻稿 ,辩解称它遭遇到的比特币提款问题与比特币协议有关,影响整个比特币社区。消息一出, 比特币币值 再次暴跌约200美元(如图,单位是 USD /mBTC)。MtGox声称问题与比特币协议中的交易有关,称一个人可以向交易平台请求比特币交易,在交易记录到块链中前修改其哈希值,然后联系平台声称交易没有进行。MtGox表示已经与比特币核心开发者讨论了它提出的解决方案。在解决方案批准和标准化之后将会继续允许比特币提款。

0071

据网友王博Oxyful研究,mtgox的声明所言技术原因为:

本质上源于比特币转账函数的返回值,即交易序号tx。简单来说是这样,在btc世界中,假设A用户(地址)发送给B用户(地址)n个比特币,改行为需要A用自己的私钥签名认证才能有效,这个行为无法伪造。但有个问题,就是为了跟踪该交易是否被整个btc世界确认,需要有个交易序号tx来描述这件事情。但注意,这个交易序号tx是可以伪造的。为什么tx在设计的时候不做成无法伪造的呢,部分原因是如果tx仅仅由交易本身+确定的算法来生成,那么相同的转账行为会生成同一个交易序号。所以tx就没这么严格,而btc网络只会验证交易行为的真伪而不会去验证tx号的真伪。(PS:不过可以用签名过的hash数来做tx啊,大概中本聪认为没必要吧)

一旦欺诈者可以伪造交易号tx,那么他就可以做这件事:1.到mtgox申请提现;2.mtgox会显示提现账户A和目标账户B以及tx;3.到btc网络找到这个交易的全部数据,替换tx为另外一个数,同时用一定的手段快速广播。由于该交易本身是经过签名的,而tx的真伪是无法验证的,所以只要欺诈者的网络足够快,运气足够好,他就可以把这个伪造的交易让全网确认(注意,交易本身是真实的,只是交易号是伪造的。你永远无法用这个方式从一个0余额的钱包里面提出来钱)

然后就是MTGOX愚蠢的地方了,它只跟踪tx。当伪造的tx被全网确认后,MTGOX发现自己的tx并没有被接受,所以他会认为没有给用户B成功支付BTC。于是B用户可以重新要求MTGOX提现,于是MTGOX就损失了这部分钱。

那么,这是不是漏洞?

首先,所有的交易必须由发起人确认,全网来确认发起人是否有足够余额。这个btc基础的生存法则没有任何漏洞。如果这个有问题,我建议大家100RMB/BTC赶紧抛了吧。其次,tx可伪造这件事情,确实是btc设计本身的“问题”,但是否可解呢?其实非常简单,那就是不要依赖tx做验证,而是用交易行为验证就行了。mtgox只需要把自己从A钱包到B钱包转账这件事情在blockchain里面检索一遍即可。等等,重复交易怎么排重的?更简单了,每次用不同的A给B打钱就行啦啊。那MTGOX怎么至今搞不定的,我还真不知道。。。

最后,这个“漏洞”到底对btc世界有什么影响?

第一,这个事儿只对中心化服务的交易网站、钱包托管网站有影响,对分布式的个人没有任何影响。第二,即便对于交易网站,这个问题也早就有人提出来了,大家也都纷纷提出解决方案了,比如刚刚我提的那个可能就行(估计有很多东西没考虑,真实情况肯定更复杂)。第三,其他网站都没遇到这个问题,估计别人也知道tx不靠谱,都自己过了一遍交易数据,只有门头沟……

btc世界依然很牢固,不必恐慌。算法万岁!

No tips yet.
Be the first to tip!

喜欢这篇文章?捐助我们吧!

16yZUwAGr3AVG1EQriUY4XP6eUNadA8VTW

如果您喜欢这篇文章,可以考虑付作者小费。每篇文章都有一个独有的比特币地址,您的赞助不仅激励作者去创作或翻译更好的文章,也让我们知道您喜欢什么样的文章。

About 8btc@

巴比特编辑,欢迎给本站投稿,邮箱:bitcoin8btc@gmail.com;欢迎作者、译者加入巴比特官方群102209854交流。

3 thoughts on “MtGox将提款问题归罪于比特币协议纯属污蔑

  1. Pingback: 比特币新闻汇总 2014年2月10日 | 比特币.de

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>