如何解决比特币交易延展性攻击的问题
扫描二维码
随时随地手机看文章
隔离见证起初的目标,是为了解决比特币的交易延展性(transaction malleability)攻击问题。
什么是交易延展性?
交易延展性(transacTIon malleability)源于比特币源代码中的一个错误。
这个错误,可以在不改变交易输出或交易内容的情况下,更改交易ID。这个错误意味着,在交易被矿工写入区块之前,交易签名可以被更改。
换句话说,也就是一笔未被确认的比特币交易,有可能被黑客造出两笔合法的交易。
谁会受影响?
虽然,矿机最终只会确认一笔交易,而且交易的输出保持不变,你的比特币,还是会转入给预期的收款人。
但是,确认了假的交易ID,会改变哈希值,由于哈希函数的特性,后面的交易,取决于前面交易ID中包含的哈希值。交易ID变动,后续的哈希值都会完全改变。
在这种情况下,任何未确认的交易,都是不安全的。
交易延展性(transacTIon malleability)攻击,会给那些追求确认快速到账的交易所,造成巨大损失。
2014年,有人利用这个漏洞,大规模攻击比特币网络,内存池(MemPool)中充满了假交易,造成比特币网络堵塞,导致部分全节点宕机,导致比特币网络极其不稳定。
曾经最大的比特币交易所——Mt.Gox宣布倒闭的部分原因,就是延展性攻击(transacTIon malleability)。
而要使用闪电网络,必须修复交易延展性。隔离见证(SegWit)解决了这个问题。
Segwit(隔离见证)如何解决?
Core开发员Pieter Wuille 于2015年12月,在香港提出了隔离见证 (Segregated Witness) 。
Segwit将签名从交易中移除,生成区块头的交易哈希值,完全由交易信息决定。
即使签名被改变,而交易的内容没有改变,交易的哈希仍然是相同哒。
换句话说,黑客没有私钥,就改不了交易hash。非常完美的解决了交易延展性攻击。
来源: 区块链研习社