隔離見證起初的目標(biāo),是為了解決比特幣的交易延展性(transaction malleability)攻擊問題。
什么是交易延展性?
交易延展性(transacTIon malleability)源于比特幣源代碼中的一個錯誤。
這個錯誤,可以在不改變交易輸出或交易內(nèi)容的情況下,更改交易ID。這個錯誤意味著,在交易被礦工寫入?yún)^(qū)塊之前,交易簽名可以被更改。
換句話說,也就是一筆未被確認(rèn)的比特幣交易,有可能被黑客造出兩筆合法的交易。
誰會受影響?
雖然,礦機最終只會確認(rèn)一筆交易,而且交易的輸出保持不變,你的比特幣,還是會轉(zhuǎn)入給預(yù)期的收款人。
但是,確認(rèn)了假的交易ID,會改變哈希值,由于哈希函數(shù)的特性,后面的交易,取決于前面交易ID中包含的哈希值。交易ID變動,后續(xù)的哈希值都會完全改變。
在這種情況下,任何未確認(rèn)的交易,都是不安全的。
交易延展性(transacTIon malleability)攻擊,會給那些追求確認(rèn)快速到賬的交易所,造成巨大損失。
2014年,有人利用這個漏洞,大規(guī)模攻擊比特幣網(wǎng)絡(luò),內(nèi)存池(MemPool)中充滿了假交易,造成比特幣網(wǎng)絡(luò)堵塞,導(dǎo)致部分全節(jié)點宕機,導(dǎo)致比特幣網(wǎng)絡(luò)極其不穩(wěn)定。
曾經(jīng)最大的比特幣交易所——Mt.Gox宣布倒閉的部分原因,就是延展性攻擊(transacTIon malleability)。
而要使用閃電網(wǎng)絡(luò),必須修復(fù)交易延展性。隔離見證(SegWit)解決了這個問題。
Segwit(隔離見證)如何解決?
Core開發(fā)員Pieter Wuille 于2015年12月,在香港提出了隔離見證 (Segregated Witness) 。
Segwit將簽名從交易中移除,生成區(qū)塊頭的交易哈希值,完全由交易信息決定。
即使簽名被改變,而交易的內(nèi)容沒有改變,交易的哈希仍然是相同噠。
換句話說,黑客沒有私鑰,就改不了交易hash。非常完美的解決了交易延展性攻擊。
來源: 區(qū)塊鏈研習(xí)社?