解決這個問題的一個方式是使用默克爾化的抽象語法樹(MAST)。這個提議基於默克爾樹,這是一種歷史久遠的緊湊的資料結構,能夠允許轉賬的所有不同限制條件被單獨雜湊。所有這些條件將被存在一個默克爾樹裡,產生一個稱為默克爾根的單獨雜湊值用來鎖定這些幣。
如果默克爾樹裡的任何資料被揭示到區塊鏈上,這些資料都可以透過默克爾根和樹上的其他成為默克爾路徑的資料輕鬆驗證。但是,默克爾樹上的大多數其他資料將保持加密隱藏的狀態。
MAST在保護資料隱私和有效性方面更進了一步,因為它僅僅揭示轉賬達成的條件。
Schnorr軟分叉協議升級可以實現Taproot
Pieter Wuille,Blockstream的CEO,同時也是著名的區塊鏈開發者,解釋說Taproot直接建立在MAST與默克爾分支之上。在它的GitHub提議中,它解釋道Taproot將允許幾乎所有智慧合約結構中包含一個條件,從而能讓所有參與者對一個結果進行表決。參與者能共同合作,對一項清算轉賬表示同意。Wuille表示,這會節省更多空間,並增加花費時的指令碼隱私性。
雖然Taproot自己已經有巨大的潛力,但只有與Schnorr結合起來,它才能發揮它真正的威力。這種新型的簽名方式目前正在開發當中,將透過一次軟分叉部署到區塊鏈上。這將是比特幣網路中最受期待的一次升級之一。
這種簽名方式以其發明者Claus-Peter Schnorr命名,它是一套將私鑰、公鑰和轉賬簽名連線在一起的數學規則。Schnorr被廣泛認為是加密貨幣領域最好的簽名形式。Wuille知道它可以在提供很好的正確性的同時又不損失延展性。
除此之外,Schnorr簽名驗證起來很快,這意味著更快的轉賬確認,以及飛快的轉賬時間。但是,最獨特的一點是它整合了對多重簽名的支援。
Schnorr簽名不僅能將同一轉賬的幾個簽名合併成一個,而且公鑰和簽名都能合併成閾值公鑰與閾值簽名。這在區塊鏈隱私方面意味著巨大的進步,因為多籤轉賬將與常規轉賬幾乎一樣。
複雜的部分
大多數開發者對簽名機制更復雜的實施過程感興趣。Schnorr可以使用資料來改變私鑰和公鑰。這個改變可以像將這兩把金鑰乘以2一樣簡單。
“私鑰乘以2”與“公鑰乘以2”是相對應的,“私鑰乘以2”可以對資訊簽名,供“公鑰乘以2”驗證。
新生成的金鑰與其他金鑰對看起來一樣,無法分辨原先金鑰是不是被改過。
Taproot永遠包含一個條件,稱為“聯合關閉”,一項轉賬中的所有參與者可以合作來花費這些資金。透過使用Schnorr簽名,“聯合關閉”可以看起來與正常的點對點轉賬無異。這是透過將轉帳中所有參與者的公鑰加在一起來生成閾值公鑰而實現的。所有參與者的簽名結合起來生成的與閾值公鑰相對應的閾值簽名可以允許花費相應資金。
但是,Schnorr簽名也允許轉賬內的資金以非合作的方式進行花費。花費資金的替代方法被組合成一個不同的指令碼。這個指令碼被雜湊加密過,並被用來修改閾值公鑰。閾值公鑰與指令碼的結合同樣對應閾值簽名與指令碼的結合。
這種智慧合約的複雜結構提供了最大程度的隱私性,閾值公鑰與指令碼的結合看上去與常規公鑰一樣。在某些罕見情況下,當區塊鏈得知公鑰實際上被更改過之後,轉賬的“聯合關閉”就會失效。
這次協議升級可能對整個比特幣網路造成深刻影響。減少區塊體積意味著更快的轉賬和更少的轉賬費。這會使Schnorr簽名成為區塊鏈上人人都會用的方式。