比特大陆蚂蚁矿机S7

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

山寨币资讯 发布在 比特币 3 8058

第三大比特币交易平台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世界依然很牢固,不必恐慌。算法万岁!

版权声明: by nc" sa 作者保留权利。文章为作者独立观点,不代表巴比特立场。

评论:3

您需要登录后才可以回复 登录|注册
    tcc
    tcc 1033 天前

    奶奶的,被这个消息吓着了,亏了20个ltc

    +1
    +1
    我要点评
    比特币三六零
    比特币三六零 1032 天前

    文章《MtGox将提款问题归罪于比特币协议纯属污蔑》@长铗 http://t.cn/8FCMg32

    +1
    +1
    我要点评
    James-比特币360
    James-比特币360 1033 天前

    哦,就是希望找到反驳的意见多参考参考,赞!

    +1
    +1
    我要点评