比特幣用戶什么時候才能用上Graftroot技術(shù)
如果在比特幣上部署了Taproot之后,很多智能合約結(jié)構(gòu)看起來就跟其他常規(guī)交易一樣。只要所有參與者都同意合約的結(jié)果(比如“合作結(jié)算合約”),將Schnorr簽名和MAST巧妙結(jié)合起來既提供了數(shù)據(jù)傳輸效率,還能提供隱私性。
但是,如果Taproot智能合約非常復(fù)雜,在沒有合作結(jié)算合約的情況下,需要揭示的默克爾路徑的數(shù)據(jù)量仍然很大。
比特幣核心開發(fā)者Gregory Maxwell的后續(xù)提案“Graftroot”可以提供與Taproot類似的好處,但沒有上面所說的那種缺點,為智能合約提供更高的靈活性。
Graftroot
在使用Taproot時,智能合約的所有參與者組合他們的公鑰來生成一個“閾值公鑰”,就能使用他們的“閾值簽名”來花費資金。而使用Graftroot時,所有參與者也會生成類似的閾值公鑰,但不會去微調(diào)閾值公鑰。
參與者確實創(chuàng)建了不同的腳本:可供花費資金的各種條件。但是,使用Graftroot,參與者會對不同的腳本都進(jìn)行簽名,以生成與這些腳本相對應(yīng)的閾值簽名。所有希望通過特定腳本作為后路的參與者接受并存儲該腳本和相應(yīng)的閾值簽名。這種簽名可以后續(xù)向全世界證明其對應(yīng)腳本是一種有效的替代方案,是所有參與者都同意的一種“授權(quán)”。
假設(shè)Alice和Bob建立了一個智能合約,他們可以一起花錢,或者讓Alice在一周后單獨花錢,或者讓Bob使用一個密碼就能單獨花錢。在這種情況下,Alice和Bob組合他們的公鑰來創(chuàng)建一個閾值公鑰,如果他們能夠提供閾值簽名,那他們就可以使用這筆資金。(只有當(dāng)他們要花錢的時候,他們才會生成閾值簽名。)
然后,Alice和Bob還會創(chuàng)建并立即為替代腳本簽名。 Alice用閾值簽名給允許她在一周后花費比特幣的腳本簽名,而Bob用閾值簽名給允許他使用一個密碼就能單獨花錢的腳本簽名。(注意,僅憑閾值簽名和相應(yīng)的腳本是不夠的;它們只是證明腳本是Alice和Bob都同意的,但仍需滿足腳本中指定的條件才能使用這筆資金。)
等到合約到期時,Alice和Bob可能會同意簽名結(jié)算交易。他們一起創(chuàng)建一個閾值簽名,就可以花費閾值公鑰對應(yīng)的比特幣,而且其他人并不知道其他可以滿足的條件,甚至不會涉及多個人,看起來就跟一筆常規(guī)交易一樣。
但是,如果由于某種原因無法合作結(jié)算合約,那么誰能滿足替代條件,誰就可以獨自花費這筆資金。如果Bob知道那個密碼,他就能將“他的”替代腳本與對應(yīng)的閾值簽名結(jié)合起來。其他網(wǎng)絡(luò)參與者可以根據(jù)閾值公鑰來檢查閾值簽名并得出結(jié)果,因為這個替代腳本是智能合約的所有參與者都同意的。因此,Bob可以順利使用這些帶有密碼的比特幣?;蛘?,如果一周過去以后,Alice就可以利用“她的”替代腳本與閾值簽名結(jié)合起來使用這些比特幣。在這兩種情況下,其他人都不知道另外的替代方案。
Graftroot的主要好處在于,它不需要關(guān)心智能合約有多么復(fù)雜,或者更準(zhǔn)確地講,不再需要關(guān)心有多少種可能的結(jié)算結(jié)果。雖然上面的例子只包含了兩個可選腳本,但實際上Graftroot結(jié)構(gòu)可以包含幾百個可選腳本,并且不會對可選腳本產(chǎn)生任何影響。甚至當(dāng)最初的智能合約構(gòu)建完成后,Alice和Bob還可以添加更多條件!
不過,Graftroot也有缺點,其中一個就是它是交互式的。參與者必須相互交流才能為替代腳本簽名,甚至是在花錢之前。此外,參與者需要存儲替代腳本的閾值簽名;如果他們丟失了這個簽名,他們就沒有其他解決辦法了。
Graftroot的發(fā)展
那么,比特幣用戶什么時候才能用上這種技術(shù)呢?
好消息是,通過隔離驗證,利用被稱為“腳本版本控制”的功能允許以向后兼容的方式相對容易地推出一些技術(shù)升級,包括Schnorr簽名、Taproot 和 Graftroot。
不過,理想情況下,那些致力于上述升級的比特幣核心開發(fā)者更希望能立即推出所有這些改進(jìn)方案,包括Pieter Wuille、Anthony Towns、Johnson Lau、Jonas Nick、Andrew Poelstra、Tim Ruffing、Rusty Russell和Gregory Maxwell。雖然腳本版本控制使升級變得容易,但它也要求交易中顯示正在使用哪種協(xié)議升級。因此,雖然Graftroot可以完全隱藏可用的替代腳本,但腳本版本會暴露出該交易正在使用Graftroot。因此,一次部署多種協(xié)議升級可以在一定程度上避免這種問題,因為它們都使用相同的腳本版本。但最重要的是,一次部署多種升級有利于軟件兼容性。
另一方面,當(dāng)涉及到全天候運(yùn)行的安全關(guān)鍵協(xié)議的共識更改時,“相對容易推出”仍然是一項艱巨的任務(wù),因為在升級時會有不同的利益方和偏好方。每個潛在的新功能都有其自身的優(yōu)缺點,所以一次組合多種升級也可能導(dǎo)致更多的反對意見。當(dāng)然,將更多功能組合到單次升級中并不會降低開發(fā)難度。
因此,就目前而言,Schnorr簽名和Taproot是優(yōu)先考慮的,大部分人都建議包含在一次升級里。至于Graftroot可能就要放到后續(xù)的升級中了。