Scalability
什麼是“隔離見證”,它如何提高網路可擴展性?
剛剛聽說,據說是區塊大小爭論的一個“轉折點”。
什麼是“隔離見證”?它是如何工作的?
它如何用於提高網路可擴展性?
這是解決所有網路可擴展性問題的答案嗎?
這不是一個靈丹妙藥的解決方案,但它是一個非常好的開始。
正如Gavin Andresen所說,隔離見證是一個糟糕的名字。名稱的“隔離”部分錶示正在進行分離。名稱的“見證人”部分來自於數字簽名通常被稱為見證人這一事實。
隔離見證將事務拆分為可以單獨處理的不同部分,而不是像現在這樣的單個數據塊。具體來說,它將數字簽名從交易中取出,並將它們放在與交易默克爾樹具有相同結構的單獨默克爾樹中。因此,如果完全實現,要檢查輸入是否合法地花費其先前的輸出,您將從簽名樹而不是標準
scriptSig
欄位中獲取簽名。這些是這個想法的一些好處:
- 由於簽名數據(見證數據)儲存在交易之外(以及標準塊之外),這意味著該數據不必計入塊大小。Pieter Wuille 提議對簽名數據佔用的空間進行 75% 的折扣,這意味著您可以將 4 倍的簽名數據放入塊中。這有效地導致了塊大小的軟分叉增加。
- 徹底解決延展性問題。在交易之外使用帶有簽名數據的交易意味著 TXID 不會散列簽名數據,這意味著它們不可延展(假設您使用的是標準 SIGHASH 標誌)。從技術上講,簽名仍然具有延展性,只是修改它們不會使交易鏈失效,因為簽名不會對可修改的部分進行簽名。
- 允許緩慢升級。軟體在完全部署到網路後必須選擇使用隔離見證,但與此同時(和之後)交易仍然可以在沒有隔離見證的情況下照常進行。
- 所有未來的腳本更新都成為軟分叉。當隔離見證被完全實現時,它將在輸出中包含一個版本字節,用於它正在使用的腳本版本。對於看到具有不可辨識版本號的腳本的客戶的行為是,他們將其視為“任何人都可以消費”的輸出。
- 簽名僅證明交易是經過授權的,並沒有描述資金的去向或來源。所以,在他們被檢查之後,他們可以被丟棄。將簽名放在單獨的資料結構中可以更容易地修剪數據,從而減少需要儲存在硬碟上的區塊鏈數據。
但是,這並沒有完全增加塊的大小,它只是增加了一個塊可以儲存的簽名數據量。由於交易大約 60% 由簽名數據組成,這仍然是一個相當大的收益。
不利的一面是,開始使用隔離見證對網路來說是一次重要的升級。交易序列化格式不同,需要更新進行比特幣交易的所有程式碼。但是,由於這是一個選擇加入的過程,升級可以隨著時間的推移慢慢完成。
您可以在以下位置觀看 Pieter Wuille 關於隔離見證的精彩演講:
<https://www.youtube.com/watch?v=fst1IK_mrng&feature=youtu.be&t=37m12s> .