在过去的几年中,比特币网络一直被交易延展性攻击所困扰着。这些攻击在Mt. Gox被盗期间一举成名,是停止提现的唯一原因。从那以后,许多数字货币公司都受到了损害,其中包括高交易量的BitStamp和BTC-E交流所。
什么是交易延展性?
虽然交易延展性不是用简单的英语就能解释清楚的,但是我们可以把它看成是一种攻击,能够在网络矿工确认之前篡改特有的比特币交易ID。为了进一步了解它,让我们先看看比特币交易是如何工作的。
与传统的电汇不同,比特币交易是在区块链上创建的,并证明了这是正确可行的。比特币的公开总账–区块链存储着每笔网络交易的记录信息。这些记录信息包括发送方和接收方的地址,以及参与者之间交易的比特币数量。
每条信息与数学上的“散列函数”混杂在一起,创建出一个独一无二的交易ID(或TX ID)。这个散列的TX ID还包括发送方的数字签名,证明该交易起源于一个合法的比特币地址。最后,创建独特的交易散列隐藏原来的信息,并且由于“数学”的卷入,输入的任何改变都将以不可预料的方式调整整个交易散列。
尽管被称之为“不可能欺骗”,但通过利用比特币本身的缺陷–数字签名格式,仍可以轻易的调整交易ID。用于散列交易的用户数字签名,其格式并不总是正确的,并且也缺乏相应的机构去检查它的格式。攻击者就是在某种程度上瞄准了这一漏洞,并用它来调整整个交易散列的。
例如:“0100”和“100”通常表示相同的数字“100”,但对散列法而言,他们是由两个不同的数字产生的两种不同ID。
因此,交易延展性攻击最终是为一个交易创建了两个独立的交易散列。并且在网络矿工确认一个交易ID之后,另一个就会被忽略。还有一种可能性就是,块链上的虚假交易ID在原有的ID之前被确认,尽管后者才是在现实中被处理的交易。
找不到解决方案
处理交易延展性的解决方案已经提出很多次了,但离实施还差的很远。最近提出的最著名的解决方案是比特币改进建议62( Bitcoin Improvement Proposal 62 (或BIP62))。它改变了比特币生效规则,并且为了全面禁止延展性的发生提出了一些新建议。但是后来发现,BIP62也有一些不足,这有可能会给比特币网络带来一些麻烦。
在2013年,华沙大学的学者们就提议单独改进比特币,并且改进过的交易与原始交易的一样也产生了散列。学者们没有修改比特币协议,就进一步更新了他们的方法,同时保持了交易散列。这种方法被称为“基于比特币的限时提交方案”。
并且,有足够的先决条件证明上述做法的有效性。
其他权威人士提出的解决方案,同时要求核心开发人员改变整个比特币协议,在这个时间点,这是绝对不可能的。人们也可以开一个全体研讨会,致力于解决此交易延展性问题,但解决方案的每条路线都会改变原本的比特币源代码。
如何避免呢?
交易延展性是一个令人困扰的事,但并不会将比特币用户置于重大风险之下。它虽不能完全解决,但只要有关交易所,钱包企业和开发人员保证仔细核查他们的交易,这个问题是可以忽略不计的。有关部门建议要等到区块链上的交易得到确认为止。此外,他们还应该调整代码,以便从容的应付突发交易。
手动验证也可以帮助企业在后台管理他们的交易记录。
参考文献:
1- 比特币维基;交易延展性。
https://en.bitcoin.it/wiki/Transaction_Malleability2 – 比特币维基;交易。
https://en.bitcoin.it/wiki/Transaction3- 华沙大学。
http://arxiv.org/pdf/1312.3230v1.pdf作者:Gola Yashu
编译:cici@比特币中文网
网址:
http://www.newsbtc.com/2015/11/03/bitcoins-transaction-malleability-issue-remains-far-resolved/