自從2021年Taproot升級以來,比特幣的開發一直缺乏方向。各種提案僅僅解決了特定的問題,未能全面提升比特幣的可擴展性和自我主權服務能力。然而,「偉大的程式碼恢復」可能是推動比特幣發展的前進之路。
儘管有許多廣泛的提案,但Rusty Russell的「偉大的程式碼恢復」可能是比特幣發展的前進之路的原因是什麼呢?
比特幣最初的設計具備完整的程式碼語言,旨在涵蓋和支援使用者未來可能提出的任何潛在安全用例。正如中本聰在消失之前所說的那樣:他的整個目的是給使用者一個通用到足以讓他們按照自己的意願組織自己的交易型別的語言。也就是,給使用者設計和實驗如何編寫他們自己的貨幣的空間。
然而,在中本聰消失之前,他刪除了其中的15個操作碼,完全禁用了它們,並且在指令碼引擎堆疊上添加了一個硬限制,限制了可以操作的資料塊大小(520位元組)。這是因為他實際上搞砸了,留下了大量使得複雜指令碼可能被用來對整個網路進行DOS攻擊(傳送大量垃圾請求,導致網路癱瘓)的方式,建立了巨大且成本高昂的交易,會導致節點崩潰。
這些指令碼並不是因為中本聰認為這些功能是危險的,或者人們不應該利用它們構建能夠實現的東西而被移除的,而僅僅是因為它們在沒有資源限制的情況下對整個網路構成的風險,這樣它們可能在不受限制的情況下對網路施加的最壞的驗證成本。
從那時起,比特幣的每次升級最終都是對剩餘功能的功能優化,糾正中本聰留給我們的其他不那麼嚴重的缺陷,並擴展套件我們剩下的指令碼子集的功能。
在五月初的奧斯汀比特幣++大會上,核心閃電網路開發者拉斯蒂・拉塞爾在會議的第一場演講中提出了一個非常激進的提案,他基本上提出了重新啟用中本聰在2010年消失之前禁用的大多數程式碼的想法。
自從Taproot啟用以來的幾年裡,比特幣的開發領域實際上無所適從。我們都知道,比特幣並不具備足夠的可擴展性,無法真正為世界上任何可觀規模的人口提供自我主權的服務,甚至可能無法以最小化信任或託管的方式為能夠超越非常大的託管機構和服務提供商、無法真正擺脫政府長臂約束的服務提供商提供可擴展性。
這篇文章指出了比特幣技術層面上的認識,這不是一個需要爭論的問題。值得爭論的問題是如何解決這個缺陷,這是一個非常有爭議的話題。自從Taproot提出以來,每個人都在提出非常狹窄的提案,旨在解決只有特定使用案例才能實現的問題。
例如,ANYPREVOUT(APO)是一個提案,允許簽名在不同的交易中重複使用,只要輸入的指令碼和金額相同,這個提案是專門為了優化閃電網路和其多方版本而設計的。
CHECKTEMPLATEVERIFY(CTV)是一個提案,要求硬幣只能由與預定義交易完全匹配的交易來支出,這個提案是為了通過使它們完全無信任來擴展套件預簽名交易鏈的功能而設計的。OP_VAULT 是專門設計用來為冷儲存方案設定「超時期」,這樣使用者就可以通過將其傳送到更冷的多籤設定來「取消」從冷儲存中提取,以防止其金鑰被洩露。
還有很多其他提案,但我想你已經明白了要點。過去幾年來,每個提案都是為了要麼稍微增加可擴展套件性,要麼改進單一的小功能,因為這被認為是可取的。這是為什麼這些討論沒有取得進展的根源。沒有人對其他提案感到滿意,因為它們沒有滿足他們想要看到的使用案例。
除了提案發起者之外,沒有人認為任何提案是足夠全面的,可以被視為合理的下一步行動。
這就是「偉大的指令碼恢復」背後的邏輯。通過推動並分析對指令碼的全面恢復,就像中本聰最初設計的那樣,我們實際上可以嘗試探索我們需要的整個功能空間,而不是爭論和內訌關於現在哪種小型功能擴展套件足夠好的問題。
以下是一些要恢復的操作碼:
– OP_CAT:從堆疊中獲取兩個資料並將它們相加形成一個數據。
– OP_SUBSTR:接受一個長度引數(以位元組為單位),從堆疊中獲取一段資料,將該長度的位元組移除並放回堆疊。
– OP_LEFT和OP_RIGHT:接受一個長度引數,從堆疊中獲取一段資料,並從其一側或另一側移除指定長度的位元組。
– OP_INVERT、OP_AND、OP_OR、OP_XOR、OP_UPSHIFT和OP_DOWNSHIFT:接受一個數據元素,對其執行相應的位運算。
– OP_2MUL、OP_2DIV、OP_MUL、OP_DIV和OP_MOD:數學操作符,用於乘法、除法和取模運算(返回除法的餘數)。
除了以上列出的要恢復的操作碼,Rusty Russell還提出了另外三個操作碼,旨在簡化不同操作碼的組合:
– OP_CTV(或TXHASH/等效操作碼):允許對交易的某些部分進行精細化的強制執行,要求這些部分必須與預定義的內容完全一致。
– CSFS:允許對簽名進行驗證,不僅限於整個交易,這樣可以要求指令碼的某些部分或使用的資料必須符合特定條件。
通過恢復這些操作碼,我們可以重新探索比特幣的功能空間,而不僅僅局限於小型的功能優化。這可能是比特幣發展的前進之路。料必須進行簽名才能執行!
OP_TWEAKVERIFY:
這是一個基於Schnorr的操作,涉及公鑰的驗證。通過在聚合公鑰中新增或減去單個公鑰,我們可以確保當某個參與方單方面離開共享的未使用交易輸出(UTXO)時,其他參與方的資金能夠被髮送到一個不需要離開的參與方簽名就能進行合作支出的聚合公鑰。
第二層網路是比特幣基礎層的延伸,但它們的功能受到基礎層功能的限制。閃電網路在實現之前需要三個單獨的軟分叉:CHECKLOCKTIMEVERIFY (CLTV)、CHECKSEQUENCEVERIFY (CSV)和隔離見證(Segregated Witness)。
如果基礎層不夠靈活,我們就無法建構更靈活的第二層網路。唯一的解決方案就是信任第三方,但我們都希望儘可能地從比特幣規模化的每個方面中移除對第三方的依賴。
我們需要能夠做到一些目前無法實現的事情,例如安全地將兩個或更多的人合並到一個單一的未使用交易輸出(UTXO)中,並在基礎層上無需信任地執行。比特幣指令碼目前的靈活性還不足以滿足我們的需求。在基本層面上,我們需要契約,我們需要指令碼能夠實際強制執行有關交易執行的更精細細節,以確保使用者安全地退出自己的UTXO,而不會將其他使用者的資金置於風險之中。
從更高的角度來看,這就是我們需要的功能:
我們需要能夠實際檢查堆疊上與支出交易本身相關的特定細節,例如“這筆錢的這部分金額將流向某個輸出的這個公鑰”。這使得我可以使用我自己的特定Taproot分支提取我的資金,同時確保我無法取走其他任何人的資金。執行的指令碼將確保其他所有者的資金被髮送回其他使用者的公鑰組成的地址,以防其他參與者造成資金損失。
假設我們進一步發展了一個具有大量參與者的單個UTXO的概念,任何人都可以自由進入和退出。在這種情況下,我們需要一種方式來追蹤誰擁有多少錢,通常使用默克爾樹及其根來實現。這意味著當有人離開時,我們必須確保“記錄”誰有權獲得作為其他所有人資金的找零UTXO的一部分。這基本上是內省的一個特定用途。
我們需要確保可以在堆疊上驗證對聚合公鑰的修改。在未使用交易輸出(UTXO)共享方案中,我們的目標是通過一個包含所有參與者的聚合公鑰來促進資金的合作和高效流動。當有人單方面離開共享的UTXO時,我們需要從聚合公鑰中刪除他們的個人公鑰。如果事先沒有計算所有可能的組合,那麼唯一的選擇就是驗證從聚合公鑰中減去一個公鑰是否會生成由其餘個人公鑰組成的有效公鑰。
VAROPS:
正如我之前所提到的,禁用所有這些操作碼是為了解決DOS攻擊(通過傳送大量垃圾請求導致網路崩潰)的問題,這種攻擊可能導致組成網路的節點崩潰。有一種方法可以解決這個問題,就是限制任何這些操作碼可以使用的資源量。
在涉及簽名驗證時,比特幣指令碼中最昂貴的部分,我們已經有了一個解決方案,稱為簽名操作(sigops)預算。每次使用簽名檢查操作碼都會消耗一定的“預算”,即每個區塊允許的簽名操作次數,這對於交易可以對使用者產生的驗證成本設定了一個硬限制。
Taproot改變了這種工作方式,不再使用單一的全域性區塊限制,而是為每個交易都設定自己的sigops(簽名操作)限制,與交易的大小成比例。這基本上相當於相同的全域限制,但更容易理解每個交易可以使用多少sigops。
Taproot在處理每個交易的sigops(簽名操作)限制方面帶來了變化,為一種泛化方法提供了可能性,這也是Rusty Russell在varops限制方面提出的建議。這個想法是為每個重新啟用的操作碼分配一個成本,以考慮到每個操作碼可能產生的最壞情況,即驗證時產生的最昂貴的計算成本。這樣,每個操作碼都會有自己的“sigops”限制,限制它在驗證過程中可以消耗的資源量。這也將根據使用這些操作碼的任何交易的大小進行調整,從而方便進行推理,同時仍然累積到每個區塊的隱式全域限制。
這將解決DOS攻擊的問題,因為這些垃圾交易正是導致中本聰最初禁用所有這些操作碼的原因。
我相信你們中的許多人會想,“這個改變太大了。”我理解這種想法,但我認為作為一個提案,我們不必完全恢復所有這些功能,而是應該全面審視一個龐大的基礎元件套件,並問自己我們在功能方面真正想要的是什麼。
這將是對過去三年爭吵和辯論的完全轉變,過去三年我們只是在爭論微小的狹隘變化,這些變化只涉及某些功能。這就像一個大家都能聚集在一起的廣場,共同審視未來的方向。也許我們最終會恢復所有這些功能,也許我們最終只會啟用一些功能,因為共識是這些功能是我們所有人都同意需要開啟的功能。
無論最終結果如何,這都可以對我們未來方向的整個對話產生積極影響。我們可以實際繪製並全面瞭解情況,而不是在爭論下一步該走哪條未知的路線時摸索前行。
這絕不是我們必須走的前進之路,但我認為這是我們決定要採取哪條路線的最佳機會。是時候再次以實際而有成效的方式合作了。
相關報導
科普 | 想了解BRC-20,先學比特幣的「UTXO模型」是什麼?
比特幣符文交易數較高點大降99%,手續費低於3美元,市場恢復冷靜了?
抓住爆擊》符文Runes上線倒數:參與方式、錢包註冊與UTXO拆分全面指南