不久之后,比特幣用戶們可能會(huì)從一種名為 “Taproot”的技術(shù)中獲益。該技術(shù)首先是由Bitcoin Core貢獻(xiàn)者兼Blockstream前CTO Gregory Maxwell所提出的,它將擴(kuò)展比特幣智能合約的靈活性,同時(shí)提供更多的隱私性。
雖然這是一項(xiàng)非常大的工程,但它不僅僅是理論。幾位最多產(chǎn)的比特幣代碼貢獻(xiàn)者,包括Pieter Wuille、Anthony Towns、Johnson Lau、Jonas Nick、Andrew Poelstra、Tim Ruffing、Rusty Russell以及Gregory Maxwell,他們正在研究一種稱為Schnorr簽名的方案,該方案將納入Taproot,據(jù)悉,這些升級內(nèi)容都會(huì)在下一次協(xié)議更新中展現(xiàn)。
本文會(huì)簡單介紹一下 Taproot是什么,以及它的工作原理。
MAST
所有比特幣基本上都是“鎖定”在腳本當(dāng)中的:其定義了幣在下一筆交易中的使用方式?;ㄙM(fèi)條件通常提供一個(gè)簽名,以證明幣的所有權(quán)。而其他眾所周知的條件,包括時(shí)間鎖(幣只能在特定的區(qū)塊高度或日期后使用)或多重簽名(幣只能在一組私鑰中的一些私鑰提供簽名時(shí)才能使用)。
不同的條件可以進(jìn)行混合和匹配,以創(chuàng)建復(fù)雜類型的智能合約。這種合約的一個(gè)例子是,如果艾麗絲(Alice)和鮑勃(Bob)都簽了字,或者艾麗絲一周后單獨(dú)簽了字,或者鮑勃單獨(dú)簽了字,同時(shí)還提供了一個(gè)秘密號碼,那么幣就可以被使用。這三個(gè)條件中的哪一個(gè)先得到滿足,其使用的方式就會(huì)是相對應(yīng)的那種。
自2012年以來,腳本(條件)一開始是不公開的,只有幣的新owner知道如何使用。這是通過一個(gè)稱為P2SH(支付到腳本哈希)的技巧來完成的,最初只有腳本哈希包含在區(qū)塊鏈當(dāng)中。這個(gè)看似隨機(jī)的數(shù)字負(fù)責(zé)保管幣。當(dāng)擁有者花費(fèi)這些幣時(shí),它會(huì)同時(shí)展示整個(gè)腳本以及腳本的“解決方案”。然后,任何人都可以使用初始哈希來檢查所提供的腳本,是否確實(shí)是鎖定幣的原始腳本,并可以立即得出滿足腳本要求的結(jié)論。
盡管如此,當(dāng)幣用完時(shí),目前有必要揭示所有可能的條件,包括不滿足的條件。這有兩個(gè)主要缺點(diǎn)。第一,它的數(shù)據(jù)量很大,特別是在有很多條件的情況下。第二,這不利于隱私。每個(gè)人都會(huì)學(xué)習(xí)各種不同的資金使用方法,例如,這些方法可以揭示使用了什么樣的錢包,甚至更多的內(nèi)容。
MAST(默克爾化抽象語法樹)是一種提議解決方案,其使用了默克爾樹(一種由密碼學(xué)家拉爾夫·默克爾發(fā)明的緊湊數(shù)據(jù)結(jié)構(gòu))來解決這些缺點(diǎn)。簡言之,所有可讓資金可使用的不同條件,都單獨(dú)進(jìn)行了哈希(而不是組合成單個(gè)哈希),并包含在一棵默克爾樹當(dāng)中,最終生成單個(gè)哈希:Merkle根,這個(gè)Merkle根“鎖定”了幣。
唯一的好處是,如果顯示了默克爾樹中的任何數(shù)據(jù),則可使用Merkle根和一些附加數(shù)據(jù)(稱為Merkle路徑)來驗(yàn)證特定數(shù)據(jù)是否包含在默克爾樹中。其余的默克爾樹仍然是經(jīng)哈希和隱藏的。
有了MAST,這意味著只有滿足的條件才需要被揭示。如果在上面的第一個(gè)例子中,愛麗絲在一周之后花費(fèi)了這些資金,她只是揭示了這個(gè)條件(和默克爾路徑)。沒人知道這筆錢具體是怎樣花的,它可能是愛麗絲和鮑勃一起花的,如果鮑勃加上一個(gè)秘密號碼,在也可能是他一個(gè)人花的。這使得MAST比復(fù)雜的P2SH智能合約在數(shù)據(jù)處理上更具效率,同時(shí)增加了隱私性。
然而,使用 Schnorr簽名方案的情況下,Taproot能夠做得更好:因?yàn)榻灰卓梢噪[藏MAST結(jié)構(gòu)。
Schnorr簽名方案
Schnorr簽名方案一直是比特幣開發(fā)者的關(guān)注焦點(diǎn),目前他們正在開發(fā)這一方案,根據(jù)計(jì)劃,該方案將通過軟分叉的方式進(jìn)行部署。在很多密碼學(xué)家看來,Schnorr簽名方案在這一領(lǐng)域是最好的,因?yàn)樗峁┝撕軓?qiáng)的數(shù)學(xué)正確性,其不具交易延展性,它的驗(yàn)證速度也相對較快。
在比特幣的背景下,Schnorr簽名方案的最顯著優(yōu)點(diǎn)是允許簽名聚合:即同一筆交易中的幾個(gè)簽名可以組合成一個(gè)。類似的技巧也可以用于多簽交易。將公鑰和簽名組合成“閾值公鑰”和“閾值簽名”,這就可使多簽交易和任何常規(guī)交易變得無法區(qū)分。
這種簽名方案也可以有更多有趣的使用方式。例如,可以使用數(shù)據(jù)來“調(diào)整”私鑰和公鑰。作為一個(gè)簡化的例子,一個(gè)私鑰及其對應(yīng)的公鑰可通過將兩者相乘來進(jìn)行調(diào)整?!八借€x 2”和“公鑰x 2”仍然對應(yīng),“私鑰x 2”仍然可簽署可用“公鑰x 2”驗(yàn)證的消息。任何對密鑰對發(fā)生調(diào)整不知情的人,都不會(huì)看出異常。而被調(diào)整過的密鑰,看起來和任何其他密鑰對沒有區(qū)別。
這就是啟用TapRoot的原因。
Taproot
TapRoot基于一個(gè)有趣的認(rèn)識(shí):無論多么復(fù)雜,幾乎所有的MAST結(jié)構(gòu)都可以(或應(yīng)該)包含一個(gè)條件,其允許所有參與者就結(jié)果達(dá)成一致,并簡單地一起簽署一筆結(jié)算交易。在前面的例子中,如果鮑勃知道艾麗絲下周可以自己拿走所有的資金,他最好現(xiàn)在就與她一起簽字。(在很多典型的智能合約設(shè)置中,如果他不這樣做,他甚至?xí)艿綉土P。這種復(fù)雜性,目的就是讓每個(gè)人保持誠實(shí)。)
Tabroot類似于MAST,它總是會(huì)包含一個(gè)條件,這使得所有參與者都可以合作來花費(fèi)資金。
而通過使用Schnorr簽名,它會(huì)變得非常有趣。
首先,合作結(jié)算將利用Schnorr方案的閾值技巧,使它看起來像一筆正常的交易。因此,所有參與者的公鑰被疊加到一起,從而導(dǎo)致“閾值公鑰”。與這種閾值公鑰相對應(yīng)的是,所有參與者簽名的組合(他們的“閾值簽名”)允許他們花費(fèi)資金。
到目前為止還不錯(cuò),但把這些資金當(dāng)作正常交易來花掉,是它們唯一能做的事(在沒有MAST結(jié)構(gòu)的情況下)。這就是Schnorr簽名方案的另一個(gè)把戲。
所有可供選擇的資金使用方式(非合作輸出)被合并到不同的腳本。然后,這個(gè)腳本經(jīng)哈希并用于調(diào)整閾值公鑰。與前面示例中使用的“公鑰x 2”不同,這將導(dǎo)致“閾值公鑰x腳本”(我們?nèi)栽诤喕?。此“閾值公鑰x腳本”當(dāng)然與“閾值簽名x腳本”對應(yīng)。
現(xiàn)在,如果資金是合作使用的,所有參與者都將他們的簽名組合成“閾值簽名”,并用腳本對其進(jìn)行調(diào)整。產(chǎn)生的“閾值簽名x腳本”允許他們花費(fèi)資金。然而,重要的是,對于外部世界而言,所有的這些,看起來仍然像一個(gè)普通的公鑰和一個(gè)常規(guī)的簽名,即一筆常規(guī)的交易。
只有在合作結(jié)束(cooperative close)證明是不可能的情況下,才可以顯示閾值公鑰的實(shí)際情況:調(diào)整。
在這種情況下,將顯示原始閾值公鑰和腳本。這證明“閾值公鑰X腳本”是用這個(gè)特定腳本進(jìn)行調(diào)整的。因此,就像P2SH中的哈希值一樣,這種調(diào)整向全世界證明了,如果滿足腳本中指定的其他條件,資金就應(yīng)該是可花費(fèi)的。
或者,可使用默克爾樹的Merkle根來調(diào)整閾值公鑰,而不是使用腳本來調(diào)整閾值公鑰,該Merkle根包含了可以使用資金的所有不同條件:即MAST結(jié)構(gòu)。那么,要花掉這些資金,只需要揭示已滿足的支出條件。
因此,Taproot提供了MAST的所有好處,而在正常情況下,沒有人會(huì)知道一筆常規(guī)交易隱藏了如此復(fù)雜的智能合約。
以上就是TapRoot概念的簡單介紹,其實(shí)施細(xì)節(jié)可能會(huì)有所不同。
評論