原文標題:《干貨|詳盡解釋隔離見證》
原文作者:MagomedAliev
原文編譯:阿劍,以太坊愛好者
比如說,有個設想是“閃電網絡”;但是,要在比特幣網絡中實現閃電網絡,條件似乎還不具備,因為比特幣自身的一些缺陷。另一個解決方案“隔離見證”也致力于提高可擴展性,但它同時也解決了許多問題,包括閃電網絡實現所需修補的一些缺陷。本文中我們會講解隔離見證的優勢及其工作原理。
隔離見證是一個由多個BIP描述的軟分叉,其主要用意是優化比特幣交易和區塊的結構,將交易的簽名”、“witness”或“解鎖腳本”)從交易中移到一個獨立的結構中。它不僅允許降低比特幣交易的數據量大小,也能解決“交易熔融性”問題,對支付通道和閃電網絡這樣基于比特幣交易結構的技術來說極為關鍵。
隔離見證如何工作
在開始之前
我們先要簡單回顧一下比特幣的支付系統。它并不像銀行那樣,是一套賬戶和余額的列表。相反,每個比特幣地址的余額都是由一系列發送給這個地址的交易來表示的;交易這一數據結構的主要部分就是輸入和輸出。輸入是我們想要花費的前序交易,而交易的輸出就是我們的資金發送的目的地址。下圖展示了比特幣交易的結構:
動態 | BafeEx解讀:歐洲央行對歐元穩定幣態度較為樂觀:1月3日,歐洲央行市場基礎設施和支付總監Ulrich Bindseil發布了央行歐元穩定幣CBDC工作總結。BafeEx交易所分析師Zoy表示,從文章來看,歐洲央行對歐元穩定幣CBDC持較為樂觀的態度,注意不是極度樂觀。歐洲央行主要擔心:1.金融脫媒(Disintermediation),儲戶和機構通過這種方式藏匿和轉移歐元資產,規避歐洲央行監管;2.無法應對危機時期的銀行的系統性建導(Facilitation)問題,即CBDC相對來說更難被央行調控。BafeEx分析師Zoy強調,CBDC的雙層利率系統也許可以應對上述兩個問題,CBDC得以順利發行的可能性在逐漸提高。[2020/1/4]
輸出中的PubKeyScript字段就是我們所說的“鎖定腳本”。它用來保證只有接受地址的所有者才能使用這個支出。SignatureScript字段也就是所謂的“解鎖腳本”,因為它是用來打開鎖定腳本的鑰匙,是用來證明地址所有權的。
有關比特幣交易和鎖定腳本、解鎖腳本功能的更多細節,可看此處。
后向兼容性
動態 | 西秀區干部大講堂專題解讀區塊鏈:12月3日,2019年第六期西秀干部大講堂在西秀文化中心開講,邀請中誠區塊鏈研究院副院長、中國金融培訓中心專家講師、國家信息工程研究院專家講師馬強,為全區廣大干部職工專題解讀了區塊鏈相關內容。
講座上,主講人從什么是區塊鏈、區塊鏈核心技術的突破與發展、區塊鏈在各個行業的典型應用、區塊鏈在政務服務和政務監管中的典型應用、探索使用區塊鏈賦能誠信建設、政府部門如何有效參與和監管企業區塊鏈應用等方面,給大家做了詳細的講解,詳細介紹區塊鏈的發展歷程及所帶來的經濟效益,并就區塊鏈的現狀和未來進行具體的分析展望,還與現場的參會人員進行了互動解答。
通過這次講座,大家對區塊鏈在建設網絡強國、發展數字經濟、助力經濟社會發展等方面的作用,有了較為全面的認識,也為今后西秀區在提高運用和管理區塊鏈技術能力、加速推進以信息技術帶動全區經濟高質量發展奠定了一定的基礎。(西秀區委宣傳部)[2019/12/6]
實際上,隔離見證不僅改變了交易的結構,也改變了交易的輸出。不過,這不是說傳統類型的UTXO和SegWit類型的UTXO無法在同一筆交易中花費:這種情況下,傳統類型的UTXO將在輸入內加載所有權證明,而隔離見證類型的UTXO將在交易輸入以外的結構中加載證明。
不管怎么說,隔離見證的定位是一個軟分叉,這個升級應該是可以忽略,無需強制的,而且,這也意味著,未升級的節點應該可以處理隔離見證類型的輸出。實際上,舊的節點和錢包將以為任何人都能花費這些UTXO,也即這些UTXO是空簽名也可花費的,因此即使在交易中沒有看到簽名,交易也仍然是有效的。而升級后的節點和錢包將在交易輸入以外的地方,一個專門的“witness”字段尋找簽名。
動態 | “Ripple取消OTC交易模式”疑似為解讀錯誤,官方尚未宣布此消息:金色此前報道,推特賬戶XRP Research Center今日發推稱:“Ripple將不再支持OTC模式的代幣買賣,即機構購買者想要購買XRP同樣需要在二級市場上購買XRP。經金色查詢,目前Ripple官方目前還未發出取消OTC交易模式的公告。Twitter中提到的交易很有可能是在9月25日Bittrex與UPbit的合作關系破裂之后,雙方之間進行的正常資金返還。[2019/10/30]
案例
Pay-to-Witness-Public-Key-Hash
我們用例子來說明一下隔離見證會如何改變交易的數據結構。從標準的Pay-to-Public-Key-Hash(P2PKH)交易類型開始。
我們感興趣的部分是輸出,尤其是其“scriptPubKey”字段。我們先考慮一種標準的鎖定腳本:
而隔離見證之后的鎖定腳本如下所示:
分析 | TokenGazer幣安中簽解讀:大陸用戶仍為主力 機構持有較多BNB:TokenGazer分析顯示:幣安此次簽數16666個,因為放開國內用戶準入,中簽率從上次MATIC的58.38%下降到30.82%;按照這次的中簽率,鎖定20天的BNB數量是540多萬個,約3-4%的比例,再次說明大部分bnb在機構手里;另,此次中簽率下降了一半,持有100個BNB以上地址大概率為活躍交易用戶,可能說明中國大陸用戶仍舊占到幣安活躍交易用戶的半壁江山。[2019/5/28]
如你所見,隔離見證的輸出比傳統類型的輸出要簡單很多:只有兩個值會被推入腳本執行棧中。如我們上面說得,舊版本的比特幣客戶端會以為這個輸出是掉在地上的錢——無需提供簽名就能花費這個輸出。不過,新的客戶端會將第一個數字解釋為版本號,而第二個則對應著一個鎖定腳本。在現實中,只有壓縮公鑰的哈希值可以用在這里。這一點我們后面再說。
再來看看這個輸出被花費時的情形。傳統交易的輸出在花費時的數據結構如下:
但是,在花費一個隔離見證輸出的時候,交易的scriptSig將為空,而所有的簽名都會放到一個專門的地方:
聲音 | 蟲洞姜家志:行業對51%攻擊過度解讀:據核財經報道,在MiiX區塊鏈私享會上,蟲洞項目負責人姜家志認為,行業對51%攻擊過度解讀了,就算是真正有51%攻擊,不會對主鏈發生太大影響。51%攻擊能做到是:利用算力優勢,撤銷已發生的交易;掌握51%以上的算力優勢;雙重支付、阻止區塊確認、阻止有效區塊,以及有可能導致熊市和交易所損失。但51%攻擊不能做到:修改交易、阻止交易發送、改變數量、生產幣、挪用別人的幣。[2018/12/2]
在P2SH中嵌入隔離見證
我們已經看到,使用隔離見證是有好處的。不過,上面的例子只對發送者和接收者都有升級軟件的情形才適用。但現實并不總是如此。考慮這樣一種情形:
Alice希望給Bob轉賬一些btc,Bob有支持隔離見證的錢包軟件而她沒有。他們顯然只能用標準形式的交易,但Bob希望使用SegWit來減少手續費。
這時候,Bob可以創建一個包含了SegWit腳本的P2SH地址、Alice會把這個地址當成一個普通的P2SH地址,因此可以直接向這個地址轉賬而沒有任何問題。但Bob可以使用SegWit交易來使用這個輸出,并獲得手續費折扣。
這就是SegWit交易的兩種類型P2WSH和P2WPKH在P2SH內實現的方式。
P2SH(P2WPKH)
想在P2SH交易中實現一筆P2WPKH交易,Bob需要使用其公鑰創建一個見證程序。然后把結果哈希、轉碼成一個地址:
在一開始,我們創建的贖回腳本會經過一次哈希計算,如果結果符合鎖定腳本中的哈希值,這個腳本就會得到執行,程序會驗證放在witness字段的簽名。
P2SH(P2WSH)
P2WSH腳本也可以用P2SH來實現。我們考慮上面所說的2-5多簽名錢包的例子。所有的步驟都跟P2SH(P2WPKH)沒什么區別:
首先,創建一個見證程序:
第一個數值是版本號,第二個數值是32位的SHA256哈希值,對應于我們的簽名腳本。然后我們拿這個見證程序的HASH160哈希值轉成一個普通的P2SH地址。要使用發往這個地址的輸出時,我們需在scriptSig字段公布這個見證程序,在witeness字段提供完整的多簽名腳本。
隔離見證的好處
梳理清楚技術的部分之后,我們就可以理解隔離見證的主要優點了。
交易熔融性漏洞
SegWit解決的一個關鍵問題就是比特幣交易的“熔融性”,也即比特幣交易的ID是哈希值這一點所帶來的問題。我們詳細說一下。
在以往的比特幣交易中,簽名是放在交易的輸入部分的,第三方可以更改簽名且不會讓交易失效。這使得第三方可以在完全不更改交易的“關鍵”字段的前提下更改交易的ID。這樣一來,交易還是有效的,含義也還是一樣的,但是有了另一個ID,這可以用來執行另一種攻擊,比如DoS攻擊。
SegWit解決了這個問題,因為所有的簽名都是放在交易外面的,因此簽名的變動不會導致交易的哈希值變動,也就不會影響交易的ID。隔離見證還引入了一個專門的標識符,叫做“wtxid”:它是交易和整個witness部分的哈希值,所以如果一筆交易在傳播時沒有附帶任何witness數據,交易ID就等于wtxid。
這個解決方案使得我們可以創建一系列前后相繼的未確認交易,而無需擔心任何風險,這對閃電網絡這樣的協議來說是非常重要的。。
網絡和存儲的擴展
Witness數據往往是交易數據中占比最大的一部分。在使用多簽名腳本的交易中,witness最多可能占據交易數據量的75%。感謝SegWit,簽名的傳輸變成了一個可選項:只有節點想要驗證交易時,才需要請求這些數據。而沒有支持SegWit的SPV客戶端和節點也無需下載額外的數據,可以節省硬盤空間。
可用的區塊空間擴大,降低交易手續費
SegWit類型的交易比以往的交易類型更便宜,因為它減少了需要存儲的witness數據。準確來說,“Size”的概念在SegWit類型的交易上略有不同。它引入了一個“虛擬大小”的概念:所有放在witness部分的數據都會乘以0.25來計算數據量大小,從而一個區塊中可以塞進更多的交易。來看一個例子。
假設我們有一筆傳統類型的交易,數據量大小為200字節。那么1MB的區塊里面可以放進5000筆這樣的交易。而一筆等效的SigWit交易有120字節是放在witness區域的,因此其虛擬大小為80+0.25*120=110字節,所以區塊可以放入9090筆這樣的交易。如果上鏈的手續費是每字節40聰,則交易費會從8000聰減低到4400聰,幾乎打了個對折。
腳本版本
你可能已經注意到了,每個鎖定腳本都會有1個字節來表示腳本的版本。使用不同的版本號就能以軟分叉的形式增加或變更功能。
簽名驗證的效率優化
隔離見證也優化了簽名算法的效率。在SegWit之前,哈希計算的次數與簽名數量的平方成正比,但有了隔離見證后,算法的計算復雜度就減低到了O(n)。
參考文獻
Lightningnetworkindepth,part1:paymentchannels“Masteringbitcoin”—AndreasM.AntonopoulosBitcoinCoreblogManysegwitresourcesGoodarticleabouttxnmalleability
巴比特訊,由HuobiXCenter孵化的鏈游項目MEGAHERO將于9月8日正式開啟內測,預計9月20日開啟公測。MEGAHERO是由玩家擁有、并共享收益的NFT卡牌戰斗游戲.
1900/1/1 0:00:00據TechWeb8月10日消息,騰訊音樂首批“TME數字藏品”即將上線。今天胡彥斌《和尚》20周年紀念黑膠NFT在QQ音樂平臺開啟購買資格的抽簽預約,限量發售2001張.
1900/1/1 0:00:00人們認識加密藝術是從Beeple天價NFT作品開始的,那幅數字藝術品是將傳統藝術品拼接上鏈而完成的。作為生成藝術的鼻祖,CryptoPunks的價值在這次JPEG熱潮中才真正爆發.
1900/1/1 0:00:00來源:財聯社 記者:姜樊 實習記者徐川 財聯社訊,數字人民幣業務發展已步入快車道。2021年半年報披露顯示,截止6月末,建設銀行開立的個人與對公錢包合計數量已突破800萬個,累計實現交易金額18.
1900/1/1 0:00:00Parcel是一家位于印度的加密初創公司,已籌集了250萬美元的種子資金,用于為去中心化自治組織(DAO)建立資金管理協議.
1900/1/1 0:00:00前言: 文本介紹了長期陷入經濟困境的韓國著名美術館澗松美術館,通過拍賣NFT作品起死回生的消息.
1900/1/1 0:00:00