什麼是隔離見證?


隔離見證這個詞語翻譯的不好,所以一般人都迷糊了。隔離見證是為了讓區塊鏈承載更多的交易量而設計的。

區塊上的信息分為交易信息和見證信息。

交易信息就是誰給誰在什麼時間轉了多少錢。

見證信息就是哪個節點在什麼時間驗證交易信息的可靠性。

中本聰在設計比特幣的時候直接把這兩個信息直接放在了區塊內,所以一個區塊就承載不了更多的交易信息,如果隔離了「見證信息」,那麼區塊鏈只記錄交易信息,那麼一個區塊可承載的交易更多交易。

不過暫時也沒什麼好的翻譯。


可能我的理解比較片面,先簡單說下,好久沒關注了,過兩天再研究一番再對該答案進行修改:

區塊裡面包含的是交易信息,交易信息包括:交易的雙方(輸入、輸出)、交易的金額、交易的簽名。然後比特幣有區塊的大小限制,導致了每個區塊只能打包一定數量的交易。但是現在交易越來越多了,打包區塊的速度又是平均十分鐘,導致擠壓了大量的交易沒法打包。

所以,如果每個區塊打包的交易更多了,一定程度上可以緩解現在的交易慢的問題。

隔離見證大概的意思是:每筆交易裡面,能否去掉一些數據,比如交易簽名?然後把交易簽名放到別的地方去?

如果可以的話,那麼交易數據就小了;簽名數據放到別的地方,礦工打包的時候會去檢測;因此,節點其實是有區別的。


部分開發者認為比特幣的設計有缺陷,在數據結構方面,它把必要的交易信息(輸入和輸出)和「沒那麼必要」的交易信息(見證)放在一起打包,這造成了一系列問題,比如「交易可塑性」、交易簽名過程複雜、還有存儲空間「浪費」。

隔離見證是對整個設計缺陷的一個修改方案,原理說起來挺簡單,它允許交易把沒那麼必要的「見證」部分「隔離」在區塊外面,這就是隔離見證的意思了。

目前人們主要關注的是存儲空間浪費,因為現在比特幣交易量太大,區塊空間不夠用,大量交易堆積。隔離見證的設計減少了每個交易腳本在區塊內的體積,這相當於區塊空間擴容,同時降低了數據傳輸和驗證造成的內存、帶寬、CPU成本。儘管大家都在關注這個好處,但其實這不是隔離見證主要想解決的問題。

技術細節可以請 @文浩 老師來回答。


按照比特幣交易規則:每一個比特幣交易,其實可以分為兩部份。

第一部份是說明結餘的進出,第二部份是用來證明這個交易的合法性 (主要是簽署)。第一部份可稱為「交易狀態」,第二部份就是所謂的「見證」(witness)。如果你只關心每個賬戶的結餘,其實交易狀態資料就已經足夠。只有部份人(主要是礦工)才有必要取得交易見證。

一、中本聰比特幣

中本聰設計比特幣系統時,並沒有把兩部份資料分開處理,導致交易ID的計算混合了交易狀態和見證。

因為見證本身包括簽署,而簽署不可能對其自身進行簽署,因此見證是可以由任何人在沒有交易雙方同意下可以改變的,造成所謂交易可變性 (malleability)。

在交易發出後,確認前的交易ID可以被任意更改,因此基於未確認交易的交易是絕對不安全的。

在2014年就曾有人利用這漏洞大規模攻擊比特幣網路,然而這問題一直至今沒有解決。

二、隔離見證

隔離見證 (Segregated Witness,以下簡稱SW) ,是由比特幣核心開發員Pieter Wuille 在2015年12月於香港提出的軟分叉非常巧妙地徹底解決了這個問題(在交易發出後,確認前的交易ID可以被任意更改)。

SW用戶在交易時,會把比特幣傳送到有別於傳統的地址。當要使用這些比特幣的時候,其簽署 (即見證)並不會記錄為交易ID的一部份,而是另外處理。

也就是說,交易ID完全是由交易狀態 (即結餘的進出) 決定,不受見證部份影響。

這做法有幾個重要的結果:

1、可以用軟分叉增加最大區塊容量:

因為舊有節點根本看不到這些被隔離的見證,即使真實的區塊已超過1MB,它們仍會以為沒有超過限制而會接受區塊。在整場有關區塊容量的辯論中,最大的難點就是硬分叉。

SW可以提供約2MB的有效區塊空間而沒有任何硬分叉風險。

2、從此以後,只有發出交易的人才可以改變交易ID,沒有任何第三方可以做到。

如果是多重簽名交易,就只有多名簽署人同意才能改變交易ID。這可以保證一連串的未確認交易的有效性,是雙向支付通道或閃電網路所必須的功能。有了雙向支付通道或閃電網路,二人或多人之間就可以實際上進行無限次交易,而無需把大量零碎交易放在區塊鏈,大為減低區塊空間壓力。

3、輕量錢包可以變得更輕量,因為它們無需再接收見證數據。

4、可以大幅改善簽署結構。在區塊鏈上,曾經有一個超過5000個輸入的交易,因為簽署設計缺憾,需要半分鐘才能完成檢查。在建議中的SW軟分叉會把這個問題解決掉。


其實就是區塊的解耦,我就不懂那些人能用這個概念,把萊特幣炒成這樣。。。


推薦閱讀:

以太坊最近為什麼一直在跌?7月1日問?

TAG:比特幣Bitcoin | 區塊鏈Blockchain | 數字化貨幣 |