加密領(lǐng)域的許多人都聽說過“交易延展性”,并且它是“不好的”。但是,什么是“交易延展性”,為什么不好?讓我們快速了解一下。
在像比特幣這樣的加密貨幣中,交易是在用戶之間轉(zhuǎn)移價值的原子操作。用戶創(chuàng)建事務(wù)并將其發(fā)布到網(wǎng)絡(luò)。這些交易傳播網(wǎng)絡(luò)并最終被挖掘到區(qū)塊鏈中。接收者使用區(qū)塊鏈來確定交易是否得到確認(rèn)。
在隨著成千上萬筆交易的進(jìn)行,用戶如何快速識別它們以便能夠區(qū)分它們?如何在不使用某些緩慢的全局注冊表系統(tǒng)的情況下,以一整套相同的方式快速地,唯一地標(biāo)識全球范圍內(nèi)的所有斷開連接的用戶的交易?答案很簡單,您可以使用交易的加密hash作為標(biāo)識符。
加密散列允許任何人僅使用數(shù)據(jù)本身派生任何數(shù)據(jù)的指紋。指紋是唯一的,每次計算都是一樣的。即使更改1位數(shù)據(jù),指紋哈希也會完全更改。
在比特幣中,事務(wù)的散列稱為事務(wù)的txid,并充當(dāng)該事務(wù)的通用唯一標(biāo)識符。
很好,那么什么是延展性?
交易可延展性
可延展性是指在不使事務(wù)失效的情況下更改事務(wù)(TXID)標(biāo)識符的能力。根據(jù)加密貨幣的不同,有很多方法可以做到這一點(diǎn)??缢屑用茇泿诺耐ㄓ梅绞绞峭ㄟ^簽名延展性,這是本文的重點(diǎn)。
ECDSA數(shù)字簽名的數(shù)學(xué)原理,可以更改簽名,但不會使其失效。雖然這不允許偽造這些簽名,但允許攻擊者更改包含這些簽名的事務(wù)的txid,這可能會導(dǎo)致嚴(yán)重后果。
可延展性攻擊
假設(shè)bob通過一個帶有標(biāo)識符x的事務(wù)向alice支付了一些比特幣,假設(shè)在挖掘之前,x被擴(kuò)展為一個新的標(biāo)識符x’。alice收到了付款,但bob不知道。既然alice知道bob不知道,她就騙bob再次付款。她重復(fù)這一過程,直到bob最終意識到發(fā)生了什么,但這可能為時已晚。在現(xiàn)實(shí)世界中,這種攻擊是按以下方式在交易所執(zhí)行的:
在這種情況下,攻擊者:
1.紅色圓圈一女巫Sybil節(jié)點(diǎn)
2.使用女巫Sybil節(jié)點(diǎn)包圍交換節(jié)點(diǎn)(黃色圈)。
3.從交易所提款。
4.提款X離開交易所后,Sybil節(jié)點(diǎn)將提款延展至X‘。
5.X’會傳播到網(wǎng)絡(luò)中。
當(dāng)X‘被挖掘到下一個區(qū)塊時,攻擊者已收到提款X’,但是交易所后端尚未確認(rèn)收到提款,因?yàn)樗趨^(qū)塊鏈中尋找X。知道這一點(diǎn),攻擊者將繼續(xù):
6.要求交易所重復(fù)提款,因?yàn)椤斑€沒有通過”。
7.沖洗結(jié)果并重復(fù)提款。
取決于交易所的規(guī)模大小,攻擊者可以采用“寄生策略”,通過這種方式,只需不斷少量體現(xiàn)就可以耗盡交易所。這使攻擊者可以在未發(fā)現(xiàn)的情況下,重復(fù)體現(xiàn)直到交易所管理人員發(fā)現(xiàn)為止?;蛘吖粽咭部梢圆捎谩拔聿呗浴?,從而在系統(tǒng)管理員做出響應(yīng)之前,以高頻率的大筆撤資消耗掉交易所。
無論采用哪種策略,這都是一個問題,加密貨幣架構(gòu)師都需要去解決可延展性問題。
注意:實(shí)際上對于步驟(2)攻擊者無需完全包圍交易所節(jié)點(diǎn)。盡管攻擊成功的可能性較低,但僅需要幾個連接即可執(zhí)行攻擊。包圍得越多,概率越高。
解決可延展性問題
比特幣(BTC)通過引入隔離見證(Segwit)而“解決了”延展性,隔離見證將簽名與TXID計算隔離開來,并用對該簽名的不可更改的哈希承諾來代替它。該散列用作指向簽名的指針,該簽名存儲在另一個數(shù)據(jù)結(jié)構(gòu)中。為了驗(yàn)證交易簽名,驗(yàn)證者使用哈希在其他數(shù)據(jù)結(jié)構(gòu)中查找簽名,然后執(zhí)行常規(guī)的ECDSA驗(yàn)證。這消除了簽名作為交易可延展性的來源,因?yàn)樗鼈兇鎯υ诮灰字猓⑶也荒軐⒅赶蚝灻墓V羔樳M(jìn)行延展。但是它引入了對包含簽名的其他數(shù)據(jù)結(jié)構(gòu)的依賴性。比特幣的一個小折衷,但意義重大。
雖然Segwit本身并不是一個壞主意,但部署和由此產(chǎn)生的部署政治在比特幣社區(qū)內(nèi)部引起了分裂。這導(dǎo)致社區(qū)分為比特幣(BTC)和比特幣現(xiàn)金(BCH)。盡管將隔離見證(Segwit)吹捧為主要原因,但潛在的問題更多是與隔離見證的部署有關(guān),而不是技術(shù)問題。另外,“永遠(yuǎn)不要軟叉,永遠(yuǎn)不要硬叉”的政策暗示著1MB塊大小實(shí)際上是鎖定的,這對于許多人來說是不可接受的。
反對隔離見證(Segwit)的技術(shù)論點(diǎn)更多地與它作為軟叉的無用復(fù)雜性有關(guān),而與它作為硬叉的健全性無關(guān)。作者認(rèn)為,Segwit作為軟叉是使比特幣破裂的源頭。然而作為硬叉的Segwit是(并且仍然是)技術(shù)上合理的延展性解決方案。
來源: 區(qū)塊鏈研究實(shí)驗(yàn)室?