如何解决比特币交易延展性攻击的问题

如何解决比特币交易延展性攻击的问题,第1张

隔离见证起初的目标,是为了解决比特币的交易延展性(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。非常完美的解决了交易延展性攻击。


来源: 区块链研习社 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2589865.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-08
下一篇 2022-08-08

发表评论

登录后才能评论

评论列表(0条)

保存