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

区块链

576人已加入

描述

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


来源: 区块链研习社 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分