不久之後,比特幣用戶們可能會從一種名為 「Taproot」的技術中獲益,該技術首先是由Bitcoin Core貢獻者兼Blockstream前CTO Gregory Maxwell所提出的,它將擴展比特幣智能合約的靈活性,同時提供更多的隱私性。

雖然這是一項非常大的工程,但它不僅僅是理論,幾位最多產的比特幣代碼貢獻者,包括Pieter Wuille、Anthony Towns、Johnson Lau、Jonas Nick、Andrew Poelstra、Tim Ruffing、Rusty Russell以及Gregory Maxwell,他們正在研究一種稱為Schnorr簽名的方案,該方案將納入Taproot,據悉,這些升級內容都會在下一次協議更新中展現。

 

MAST

所有比特幣基本上都是鎖定在腳本當中的:其定義了幣在下一筆交易中的使用方式,花費條件通常提供一個簽名,以證明幣的所有權,而其他眾所周知的條件,包括時間鎖(幣只能在特定的區塊高度或日期後使用)或多重簽名(幣只能在一組私鑰中的一些私鑰提供簽名時才能使用)。

不同的條件可以進行混合和匹配,以創建複雜類型的智能合約。這種合約的一個例子是,如果艾麗絲(Alice)和鮑勃(Bob)都簽了字,或者艾麗絲一周後單獨簽了字,或者鮑勃單獨簽了字,同時還提供了一個秘密號碼,那麼幣就可以被使用。這三個條件中的哪一個先得到滿足,其使用的方式就會是相對應的那種。

自2012年以來,腳本(條件)一開始是不公開的,只有幣的新owner知道如何使用。這是通過一個稱為P2SH(支付到腳本哈希)的技巧來完成的,最初只有腳本哈希包含在區塊鏈當中。這個看似隨機的數字負責保管幣。當擁有者花費這些幣時,它會同時展示整個腳本以及腳本的解決方案。然後,任何人都可以使用初始哈希來檢查所提供的腳本,是否確實是鎖定幣的原始腳本,並可以立即得出滿足腳本要求的結論。

儘管如此,當幣用完時,目前有必要揭示所有可能的條件,包括不滿足的條件。這有兩個主要缺點。第一,它的數據量很大,特別是在有很多條件的情況下。第二,這不利於隱私。每個人都會學習各種不同的資金使用方法,例如,這些方法可以揭示使用了什麼樣的錢包,甚至更多的內容。

MAST(默克爾化抽象語法樹)是一種提議解決方案,其使用了默克爾樹(一種由密碼學家拉爾夫·默克爾發明的緊湊數據結構)來解決這些缺點。簡言之,所有可讓資金可使用的不同條件,都單獨進行了哈希(而不是組合成單個哈希),並包含在一棵默克爾樹當中,最終生成單個哈希:Merkle根,這個Merkle根鎖定了幣。

唯一的好處是,如果顯示了默克爾樹中的任何數據,則可使用Merkle根和一些附加數據(稱為Merkle路徑)來驗證特定數據是否包含在默克爾樹中。其餘的默克爾樹仍然是經哈希和隱藏的。

有了MAST,這意味著只有滿足的條件才需要被揭示。如果在上面的第一個例子中,愛麗絲在一周之後花費了這些資金,她只是揭示了這個條件(和默克爾路徑)。沒人知道這筆錢具體是怎樣花的,它可能是愛麗絲和鮑勃一起花的,如果鮑勃加上一個秘密號碼,在也可能是他一個人花的。這使得MAST比複雜的P2SH智能合約在數據處理上更具效率,同時增加了隱私性。

然而,使用 Schnorr簽名方案的情況下,Taproot能夠做得更好:因為交易可以隱藏MAST結構。

 

Schnorr簽名方案

Schnorr簽名方案一直是比特幣開發者的關注焦點,目前他們正在開發這一方案,根據計劃,該方案將通過軟分叉的方式進行部署。在很多密碼學家看來,Schnorr簽名方案在這一領域是最好的,因為它提供了很強的數學正確性,其不具交易延展性,它的驗證速度也相對較快。

在比特幣的背景下,Schnorr簽名方案的最顯著優點是允許簽名聚合:即同一筆交易中的幾個簽名可以組合成一個。類似的技巧也可以用於多簽交易。將公鑰和簽名組合成「閾值公鑰」和「閾值簽名」,這就可使多簽交易和任何常規交易變得無法區分。

這種簽名方案也可以有更多有趣的使用方式。例如,可以使用數據來調整私鑰和公鑰。作為一個簡化的例子,一個私鑰及其對應的公鑰可通過將兩者相乘來進行調整。 「私鑰x 2」和「公鑰x 2」仍然對應,「私鑰x 2」仍然可簽署可用「公鑰x 2」驗證的消息。任何對密鑰對發生調整不知情的人,都不會看出異常。而被調整過的密鑰,看起來和任何其他密鑰對沒有區別。

 

Taproot

TapRoot基於一個有趣的認識:無論多麼複雜,幾乎所有的MAST結構都可以(或應該)包含一個條件,其允許所有參與者就結果達成一致,並簡單地一起簽署一筆結算交易。在前面的例子中,如果鮑勃知道艾麗絲下周可以自己拿走所有的資金,他最好現在就與她一起簽字,在很多典型的智能合約設置中,如果他不這樣做,他甚至會受到懲罰。這種複雜性,目的就是讓每個人保持誠實。

Tabroot類似於MAST,它總是會包含一個條件,這使得所有參與者都可以合作來花費資金。

而通過使用Schnorr簽名,它會變得非常有趣。

首先,合作結算將利用Schnorr方案的閾值技巧,使它看起來像一筆正常的交易。因此,所有參與者的公鑰被疊加到一起,從而導致「閾值公鑰」。與這種閾值公鑰相對應的是,所有參與者簽名的組合(他們的「閾值簽名」)允許他們花費資金。

到目前為止還不錯,但把這些資金當作正常交易來花掉,是它們唯一能做的事(在沒有MAST結構的情況下)。這就是Schnorr簽名方案的另一個把戲。

所有可供選擇的資金使用方式(非合作輸出)被合併到不同的腳本。然後,這個腳本經哈希並用於調整閾值公鑰。與前面示例中使用的「公鑰x 2」不同,這將導致「閾值公鑰x腳本」(我們仍在簡化)。此「閾值公鑰x腳本」當然與「閾值簽名x腳本」對應。

現在,如果資金是合作使用的,所有參與者都將他們的簽名組合成「閾值簽名」,並用腳本對其進行調整。產生的「閾值簽名x腳本」允許他們花費資金。然而,重要的是,對於外部世界而言,所有的這些,看起來仍然像一個普通的公鑰和一個常規的簽名,即一筆常規的交易。

只有在合作結束(cooperative close)證明是不可能的情況下,才可以顯示閾值公鑰的實際情況:調整。

在這種情況下,將顯示原始閾值公鑰和腳本。這證明「閾值公鑰X腳本」是用這個特定腳本進行調整的。因此,就像P2SH中的哈希值一樣,這種調整向全世界證明了,如果滿足腳本中指定的其他條件,資金就應該是可花費的。

或者,可使用默克爾樹的Merkle根來調整閾值公鑰,而不是使用腳本來調整閾值公鑰,該Merkle根包含了可以使用資金的所有不同條件:即MAST結構。那麼,要花掉這些資金,只需要揭示已滿足的支出條件。

因此,Taproot提供了MAST的所有好處,而在正常情況下,沒有人會知道一筆常規交易隱藏瞭如此復雜的智能合約。

以上就是TapRoot概念的簡單介紹,其實施細節可能會有所不同。有關這種技術的更多詳細信息,請閱讀GregoryMaxwell的原始Tabroot提案,或者觀看Pieter Wuille的影片講解

 

https://bitcoinmagazine.com/articles/taproot-coming-what-it-and-how-it-will-benefit-bitcoin/

https://www.8btc.com/article/351969

Tags:
0 評論

發表回覆

忘記你的帳號?

Create Account