相比以(By)太坊等圖靈完備的(Of)區塊鏈,比特币腳本被認爲(For)限制性極強,僅能進行基本運算,甚至不(No)支持乘法和(And)除法。更重要(Want)的(Of)是(Yes),區塊鏈自身的(Of)數據幾乎無法被腳本訪問,導緻靈活性和(And)可編程性嚴重不(No)足。因此,人(People)們一(One)直在(Exist)努力讓比特币腳本實現内省(introspection)。
内省是(Yes)指比特币腳本檢查和(And)約束交易數據的(Of)能力。這(This)允許腳本根據特定的(Of)交易細節控制資金的(Of)使用(Use),從而實現更複雜的(Of)功能。目前,大(Big)多數比特币操作(Do)碼要(Want)麽将用(Use)戶提供的(Of)數據推送到堆棧上(Superior),要(Want)麽操縱堆棧上(Superior)的(Of)現有數據。然而,内省操作(Do)碼可以(By)将當前交易的(Of)數據(例如時(Hour)間戳、金額、txid 等)推送到堆棧上(Superior),從而可以(By)更精細地控制 UTXO 支出(Out)。
截至目前,比特币腳本中隻有三個(Indivual)主要(Want)操作(Do)碼支持内省:CHECKLOCKTIMEVERIFY、CHECKSEQUENCEVERIFY 和(And) CHECKSIG,以(By)及其變體 CHECKSIGVERIFY、CHECKSIGADD、CHECKMULTISIG 和(And) CHECKMULTISIGVERIFY。
契約(Covenant,也可譯作(Do)“限制條款”),簡單地說,是(Yes)指對貨币轉移方式的(Of)限制,允許用(Use)戶指定 UTXO 的(Of)分配方式。許多契約都是(Yes)通過内省操作(Do)碼實現的(Of),關于(At)内省的(Of)讨論現在(Exist)已經被歸類到比特币 Optech契約主題下。
比特币目前有兩個(Indivual)契約,CSV(CheckSequenceVerify)和(And) CLTV(CheckLockTimeVerify),這(This)兩個(Indivual)契約都是(Yes)基于(At)時(Hour)間的(Of)契約,是(Yes)許多擴容解決方案(如閃電網絡)的(Of)基礎。這(This)說明了(Got it)比特币的(Of)擴容解決方案嚴重依賴于(At)内省和(And)契約。
我們如何爲(For)代币的(Of)轉移添加條件?在(Exist)加密貨币領域,我們最常用(Use)的(Of)方法是(Yes)通過承諾,通常通過哈希來實現。爲(For)了(Got it)證明轉移要(Want)求得到滿足,還需要(Want)簽名機制進行驗證。因此,契約中存在(Exist)許多對哈希和(And)簽名的(Of)調整。
下面,我們将描述被廣泛讨論的(Of)Covenant操作(Do)碼提案。
CTV(CheckTemplateVerify)是(Yes)BIP-119中的(Of)一(One)個(Indivual)比特币升級提案,引起了(Got it)社區的(Of)廣泛關注。CTV允許輸出(Out)腳本指定交易中資金支出(Out)的(Of)模闆,包括nVersion、nLockTime、scriptSig哈希、輸入計數、序列哈希、輸出(Out)計數、輸出(Out)哈希、輸入索引等字段。這(This)些模闆限制是(Yes)通過哈希承諾實現的(Of),當資金被花費時(Hour),腳本會檢查支出(Out)交易中指定字段的(Of)哈希值是(Yes)否與輸入腳本中的(Of)哈希值匹配。這(This)有效地限制了(Got it)該UTXO未來交易的(Of)時(Hour)間、方法和(And)數量。
值得注意的(Of)是(Yes),輸入的(Of) TXID 被排除在(Exist)此哈希之外。這(This)種排除是(Yes)必要(Want)的(Of),因爲(For)在(Exist)傳統和(And)隔離見證交易中,當使用(Use)默認的(Of) SIGHASH_ALL 簽名類型時(Hour),TXID 取決于(At) scriptPubKey 中的(Of)值。包括 TXID 會導緻哈希承諾中的(Of)循環依賴,從而無法構建。
CTV 的(Of)内省方式是(Yes)直接拉取指定的(Of)交易信息進行哈希運算,然後與堆棧上(Superior)的(Of)承諾進行比較。這(This)種内省方式對鏈空間要(Want)求較低,但缺乏一(One)定的(Of)靈活性。
比特币二層解決方案(如閃電網絡)的(Of)基礎是(Yes)預簽名交易。預簽名通常是(Yes)指提前生成和(And)簽署交易,但在(Exist)滿足某些條件之前不(No)廣播它們。本質上(Superior),CTV 實現了(Got it)一(One)種更嚴格的(Of)預簽名形式,将預簽名的(Of)承諾發布在(Exist)鏈上(Superior),并限制在(Exist)預定義的(Of)模闆内。
CTV 最初是(Yes)爲(For)了(Got it)緩解比特币的(Of)擁堵而提出(Out)的(Of),這(This)也可以(By)稱爲(For)擁堵控制。在(Exist)擁堵嚴重時(Hour),CTV 可以(By)在(Exist)單筆交易中承諾多筆未來交易,避免在(Exist)高峰時(Hour)段廣播多筆交易,并在(Exist)擁堵緩解後完成實際交易。這(This)在(Exist)交易所擠兌期間可能特别有用(Use)。此外,該模闆還可用(Use)于(At)實施 Vault 以(By)防止黑客攻擊。由于(At)資金流向是(Yes)預先确定的(Of),黑客無法使用(Use) CTV 腳本将 UTXO 指向自己的(Of)地址。
CTV 可以(By)顯著增強二層網絡。例如,在(Exist)閃電網絡中,CTV 可以(By)通過将單個(Indivual) UTXO 擴展爲(For) CTV 樹來創建超時(Hour)樹和(And)通道工廠,隻需一(One)筆交易和(And)一(One)次确認即可打開多個(Indivual)狀态通道。此外,CTV 還通過 ATLC 支持 Ark 協議中的(Of)原子交易。
BIP-118 爲(For) tapscript 引入了(Got it)一(One)種新型簽名哈希标志,旨在(Exist)促進更靈活的(Of)支出(Out)邏輯,稱爲(For) SIGHASH_ANYPREVOUT。APO 和(And) CTV 有很多相似之處。在(Exist)解決 scriptPubKeys 和(And) TXID 之間的(Of)循環問題時(Hour),APO 的(Of)方法是(Yes)排除相關輸入信息并僅對輸出(Out)進行簽名,從而允許交易動态綁定到不(No)同的(Of) UTXO。
從邏輯上(Superior)講,簽名驗證操作(Do)OP_CHECKSIG(及其變體)執行三個(Indivual)功能:
1、組裝支出(Out)交易的(Of)各個(Indivual)部分。
2、對它們進行哈希處理。
3、驗證哈希是(Yes)否已由給定的(Of)密鑰簽名。
簽名的(Of)具體細節具有很大(Big)的(Of)靈活性,由SIGHASH标志決定對交易的(Of)哪些字段進行簽名。根據BIP 342中簽名操作(Do)碼的(Of)定義,SIGHASH标志分爲(For)SIGHASH_ALL,SIGHASH_NONE,SIGHASH_SINGLE和(And)SIGHASH_ANYONECANPAY。SIGHASH_ANYONECANPAY控制輸入,而其他(He)控制輸出(Out)。
SIGHASH_ALL 是(Yes)默認的(Of) SIGHASH 标志,對所有輸出(Out)進行簽名;SIGHASH_NONE 不(No)簽名任何輸出(Out);SIGHASH_SINGLE 簽名特定輸出(Out)。SIGHASH_ANYONECANPAY 可以(By)與前三個(Indivual) SIGHASH 标志一(One)起設置。如果設置了(Got it) SIGHASH_ANYONECANPAY,則隻對指定的(Of)輸入進行簽名;否則,必須對所有輸入進行簽名。
顯然,這(This)些 SIGHASH 标志并不(No)能消除輸入的(Of)影響,即使是(Yes) SIGHASH_ANYONECANPAY,它也需要(Want)承諾一(One)個(Indivual)輸入。
因此,BIP 118 提出(Out)了(Got it) SIGHASH_ANYPREVOUT。APO 簽名不(No)需要(Want)承諾已花費的(Of)輸入 UTXO(稱爲(For) PREVOUT),而隻需簽署輸出(Out),從而爲(For)比特币控制提供更大(Big)的(Of)靈活性。通過預先構建交易并創建相應的(Of)一(One)次性簽名和(And)公鑰,發送到該公鑰地址的(Of)資産必須通過預先構建的(Of)交易來使用(Use),從而實現契約。APO 的(Of)靈活性還可用(Use)于(At)交易修複;如果交易因費用(Use)過低而卡在(Exist)鏈上(Superior),則可以(By)輕松創建另一(One)筆交易來增加費用(Use),而無需新的(Of)簽名。此外,對于(At)多重簽名錢包來說,不(No)依賴于(At)已花費的(Of)輸入會使操作(Do)更加方便。
由于(At)消除了(Got it) scriptPubKeys 和(And)輸入 TXID 之間的(Of)循環,APO 可以(By)通過在(Exist) Witness 中添加輸出(Out)數據來執行内省,盡管這(This)仍然需要(Want)額外的(Of) Witness 空間消耗。
對于(At)閃電網絡和(And)金庫(Vaults)等鏈下協議,APO 減少了(Got it)保存中間狀态的(Of)需要(Want),大(Big)大(Big)降低了(Got it)存儲要(Want)求和(And)複雜性。APO 最直接的(Of)用(Use)例是(Yes) Eltoo,它簡化了(Got it)通道工廠,構建了(Got it)輕量級且廉價的(Of)瞭望塔,并允許單邊退出(Out)而不(No)留下錯誤狀态,從而在(Exist)許多方面增強了(Got it)閃電網絡的(Of)性能。APO 還可用(Use)于(At)模拟 CTV 功能,盡管它要(Want)求個(Indivual)人(People)存儲簽名和(And)預簽名交易,這(This)比 CTV 更昂貴且效率更低。
APO 的(Of)主要(Want)批評集中在(Exist)它需要(Want)一(One)個(Indivual)新的(Of)密鑰版本,而這(This)不(No)能通過簡單的(Of)向後兼容來實現。此外,新的(Of)簽名哈希類型可能會帶來雙重支付的(Of)潛在(Exist)風險。經過廣泛的(Of)社區讨論,APO 在(Exist)原有的(Of)簽名機制之上(Superior)增加了(Got it)常規簽名以(By)緩解安全擔憂,從而獲得了(Got it) BIP-118 代碼。
BIP-345 提議增加兩個(Indivual)新的(Of)操作(Do)碼,OP_VAULT 和(And) OP_VAULT_RECOVER,它們與 CTV 結合使用(Use)時(Hour),可實現專門的(Of)契約,允許用(Use)戶強制延遲使用(Use)特定貨币。在(Exist)此延遲期間,可以(By)通過恢複路徑“撤銷”之前進行的(Of)交易。
用(Use)戶可以(By)通過創建特定的(Of) Taproot 地址來創建 Vault,該地址必須在(Exist)其 MAST 中包含至少兩個(Indivual)腳本:一(One)個(Indivual)帶有 OP_VAULT 操作(Do)碼以(By)促進預期的(Of)提款過程,另一(One)個(Indivual)帶有 OP_VAULT_RECOVER 操作(Do)碼以(By)确保在(Exist)提款完成之前可以(By)随時(Hour)恢複代币。
OP_VAULT 如何實現可中斷的(Of)定時(Hour)鎖定提款?OP_VAULT 通過用(Use)指定腳本替換已使用(Use)的(Of) OP_VAULT 腳本來實現這(This)一(One)點,從而有效地更新 MAST 的(Of)單個(Indivual)葉子,同時(Hour)保持其餘 Taproot 葉子節點不(No)變。此設計類似于(At) TLUV,隻是(Yes) OP_VAULT 不(No)支持對内部密鑰的(Of)更新。
通過在(Exist)腳本更新過程中引入模闆,可以(By)限制付款。時(Hour)間鎖參數由OP_VAULT指定,CTV操作(Do)碼的(Of)模闆限制了(Got it)可以(By)通過此腳本路徑使用(Use)的(Of)輸出(Out)集。
BIP-345 專爲(For)Vaults設計,利用(Use) OP_VAULT 和(And) OP_VAULT_RECOVER 爲(For)用(Use)戶提供安全的(Of)托管方法,使用(Use)高度安全的(Of)密鑰(例如紙錢包或分布式多重簽名)作(Do)爲(For)恢複路徑,同時(Hour)爲(For)定期付款配置一(One)定的(Of)延遲。用(Use)戶的(Of)設備會持續監控保險庫的(Of)支出(Out),如果發生意外轉賬,用(Use)戶可以(By)啓動恢複。
通過 BIP-345 實現 Vault 需要(Want)考慮成本問題,尤其是(Yes)對于(At)恢複交易。可能的(Of)解決方案包括 CPFP(子節點爲(For)父節點付費)、臨時(Hour)錨點和(And)新的(Of) SIGHASH_GROUP 簽名哈希标志。
TLUV 方案圍繞 Taproot 構建,旨在(Exist)有效解決共享 UTXO 退出(Out)問題。指導原則是(Yes),當 Taproot 輸出(Out)被使用(Use)時(Hour),可以(By)通過加密轉換和(And) Taproot 地址的(Of)内部結構對内部密鑰和(And) MAST(tapscript trie)進行部分更新,如 TLUV 腳本所述。這(This)使得 Covenant 功能的(Of)實現成爲(For)可能。
TLUV 方案的(Of)概念是(Yes)通過引入新的(Of)操作(Do)碼 TAPLEAF_UPDATE_VERIFY 根據當前支出(Out)輸入創建一(One)個(Indivual)新的(Of) Taproot 地址。這(This)可以(By)通過執行以(By)下一(One)項或多項操作(Do)來實現:
更新内部公鑰
修剪 Merkle 路徑
删除當前正在(Exist)執行的(Of)腳本
在(Exist) Merkle 路徑末尾添加新步驟
具體來說,TLUV 接受三種輸入:
指定如何更新内部公鑰。
爲(For) Merkle 路徑指定新步驟的(Of)一(One)種方法。
指定是(Yes)否删除當前腳本和(And)/或要(Want)修剪 Merkle 路徑的(Of)多少步。
TLUV操作(Do)碼計算更新的(Of)scriptPubKey,并驗證當前輸入對應的(Of)輸出(Out)是(Yes)否花在(Exist)這(This)個(Indivual)scriptPubKey上(Superior)。
TLUV 的(Of)靈感來源于(At) CoinPool 的(Of)概念。如今,聯合資金池僅需預先簽名的(Of)交易即可創建,但如果要(Want)實現無需許可的(Of)退出(Out),則需要(Want)創建數量成倍增長的(Of)簽名。而 TLUV 則允許無需許可的(Of)退出(Out),無需任何預先簽名。例如,一(One)組合作(Do)夥伴可以(By)使用(Use) Taproot 構建共享的(Of) UTXO,将他(He)們的(Of)資金彙集在(Exist)一(One)起 。他(He)們可以(By)使用(Use) Taproot 密鑰在(Exist)内部轉移資金,也可以(By)聯合簽名以(By)在(Exist)外部發起付款。個(Indivual)人(People)可以(By)随時(Hour)退出(Out)共享資金池,删除他(He)們的(Of)付款路徑,而其他(He)人(People)仍可以(By)通過原始路徑完成付款,并且個(Indivual)人(People)的(Of)退出(Out)不(No)會暴露有關内部其他(He)人(People)的(Of)其他(He)信息。與非池化交易相比,這(This)種模式更高效、更私密。
TLUV 操作(Do)碼通過更新原始 Taproot Trie 實現了(Got it)部分支出(Out)限制,但它沒有實現對輸出(Out)金額的(Of)自省。因此,還需要(Want)一(One)個(Indivual)新的(Of)操作(Do)碼 IN_OUT_AMOUNT。此操作(Do)碼将兩個(Indivual)項目推送到堆棧上(Superior):此輸入的(Of) UTXO 金額和(And)相應輸出(Out)的(Of)金額,然後使用(Use) TLUV 的(Of)人(People)需要(Want)使用(Use)數學運算符來驗證資金是(Yes)否适當地保留在(Exist)更新的(Of) scriptPubKey 中。
輸出(Out)金額的(Of)内省增加了(Got it)複雜性,因爲(For)以(By) satoshis 爲(For)單位的(Of)金額需要(Want)最多 51 位來表示,但腳本僅允許進行 32 位數學運算。這(This)需要(Want)重新定義操作(Do)碼行爲(For)以(By)升級腳本中的(Of)運算符或使用(Use) SIGHASH_GROUP 替換 IN_OUT_AMOUNT。
TLUV 有潛力成爲(For)去中心化第 2 層資金池的(Of)解決方案,但其調整 Taproot Trie 的(Of)可靠性仍需确認。
MATT(Merkleize All The Things)旨在(Exist)實現三個(Indivual)目标:Merkleizing the state、Merkleizing the script、Merkleizing the performing,從而實現通用(Use)智能合約。
對狀态進行 Merkle 化(Merkleizing the state):這(This)涉及構建 Merkle Trie,其中每個(Indivual)葉節點代表一(One)個(Indivual)狀态的(Of)哈希值,而 Merkle Root 則體現合約的(Of)整體狀态。
對腳本進行 Merkle 化(Merkleizing the script):這(This)指的(Of)是(Yes)使用(Use) Tapscript 形成 MAST,其中每個(Indivual)葉節點代表一(One)種可能的(Of)狀态轉換路徑。
Merkle 化執行(Merkleizing the performing):通過加密承諾和(And)欺詐挑戰機制對執行進行 Merkle 化。對于(At)任何計算函數,參與者可以(By)在(Exist)鏈下計算,然後發布承諾 f(x)=y。如果其他(He)參與者發現錯誤結果 f(x)=z,他(He)們可以(By)發起挑戰。仲裁通過二分搜索進行,類似于(At) Optimistic Rollup 的(Of)原理。
默克爾化執行
爲(For)了(Got it)實現 MATT,比特币腳本語言需要(Want)具備以(By)下功能:
強制輸出(Out)具有特定腳本(及其數量)
将一(One)段數據附加到輸出(Out)
從當前輸入(或另一(One)個(Indivual)輸入)讀取數據
第二點至關重要(Want):動态數據意味着可以(By)通過消費者提供的(Of)輸入數據來計算狀态,因爲(For)這(This)允許模拟狀态機,能夠确定下一(One)個(Indivual)狀态和(And)附加數據。MATT 方案通過 OP_CHECKCONTRACTVERIFY (OP_CCV) 操作(Do)碼實現這(This)一(One)點,該操作(Do)碼是(Yes)之前提出(Out)的(Of) OP_CHECKOUTPUTCONTRACTVERIFY 和(And) OP_CHECKINPUTCONTRACTVERIFY 操作(Do)碼的(Of)合并,使用(Use)附加标志參數來指定操作(Do)的(Of)目标。
控制輸出(Out)金額:最直接的(Of)方法是(Yes)直接内省;但是(Yes),輸出(Out)金額是(Yes) 64 位數字,需要(Want) 64 位算術,這(This)在(Exist)比特币腳本中帶來了(Got it)很大(Big)的(Of)複雜性。OP_CCV 采用(Use)延遲檢查方法,如 OP_VAULT,其中 CCV 中相同輸出(Out)的(Of)所有輸入的(Of)輸入金額相加,作(Do)爲(For)該輸出(Out)金額的(Of)下限。延遲是(Yes)因爲(For)此檢查發生在(Exist)交易過程中,而不(No)是(Yes)在(Exist)腳本評估輸入期間。
鑒于(At)欺詐證明的(Of)普遍性,MATT 合約的(Of)某些變體應該能夠實現所有類型的(Of)智能合約或 2 層構造,盡管需要(Want)準确評估額外要(Want)求(例如資金鎖定和(And)挑戰期延遲);需要(Want)進一(One)步研究以(By)評估哪些應用(Use)程序可以(By)接受交易。例如,使用(Use)加密承諾和(And)欺詐挑戰機制來模拟 OP_ZK_VERIFY 函數,在(Exist)比特币上(Superior)實現無需信任的(Of) Rollups。
實踐上(Superior),事情已經發生了(Got it)。Johan Torås Halseth 利用(Use) MATT 軟分叉提案中的(Of) OP_CHECKCONTRACTVERIFY 操作(Do)碼實現了(Got it)elftrace,這(This)使得任何支持 RISC-V 編譯的(Of)程序都可以(By)在(Exist)比特币區塊鏈上(Superior)進行驗證,從而使合約協議中的(Of)一(One)方能夠通過合約驗證來訪問資金,從而橋接比特币原生驗證。
從APO操作(Do)碼的(Of)介紹中我們了(Got it)解到OP_CHECKSIG(及其相關操作(Do))負責組裝交易、哈希計算和(And)驗證簽名。但是(Yes)這(This)些操作(Do)驗證的(Of)消息是(Yes)通過操作(Do)碼序列化交易而來的(Of),不(No)允許指定任何其他(He)消息。簡單來說,OP_CHECKSIG(及其相關操作(Do))的(Of)作(Do)用(Use)是(Yes)通過簽名機制來驗證作(Do)爲(For)交易輸入被花費的(Of)UTXO是(Yes)否被簽名持有者授權使用(Use),從而保護比特币的(Of)安全。
CSFS,顧名思義,就是(Yes)從堆棧中檢查簽名(Checks the Signature From Stack)。CSFS操作(Do)碼從堆棧中接收三個(Indivual)參數:簽名、消息和(And)公鑰,并驗證簽名的(Of)有效性。這(This)意味着人(People)們可以(By)通過見證人(People)将任何消息傳遞到堆棧,并通過 CSFS 進行驗證,從而實現比特币的(Of)一(One)些創新。
CSFS 的(Of)靈活性使其能夠實現諸如支付簽名、授權委托、預言機合約、雙重支付保護保證以(By)及更重要(Want)的(Of)交易自省等機制。使用(Use) CSFS 進行交易内省的(Of)原理非常簡單:如果 OP_CHECKSIG 使用(Use)的(Of)交易内容通過見證者推送到堆棧,并且使用(Use)相同的(Of)公鑰和(And)簽名對 OP_CSFS 和(And) OP_CHECKSIG 進行驗證,并且如果兩次驗證都成功通過,則傳遞給 OP_CSFS 的(Of)任意消息内容與 OP_CHECKSIG 隐式使用(Use)的(Of)序列化支出(Out)交易(和(And)其他(He)數據)相同。然後我們在(Exist)堆棧上(Superior)獲得經過驗證的(Of)交易數據,這(This)些數據可用(Use)于(At)對使用(Use)其他(He)操作(Do)碼的(Of)支出(Out)交易施加限制。
CSFS 經常與 OP_CAT 一(One)起出(Out)現,因爲(For) OP_CAT 可以(By)連接交易的(Of)不(No)同字段以(By)完成序列化,從而可以(By)更精确地選擇自省所需的(Of)交易字段。如果沒有 OP_CAT,腳本就無法從可以(By)單獨檢查的(Of)數據中重新計算哈希值,因此它真正能做的(Of)是(Yes)檢查哈希值是(Yes)否對應于(At)特定值,這(This)意味着隻能通過單個(Indivual)特定交易來使用(Use)代币。
CSFS 可以(By)實現 CLTV、CSV、CTV、APO 等操作(Do)碼,使其成爲(For)多功能内省操作(Do)碼。因此,它也有助于(At)比特币 2 層的(Of)可擴展性解決方案。缺點是(Yes)它需要(Want)在(Exist)堆棧上(Superior)添加已簽名交易的(Of)完整副本,這(This)可能會顯著增加使用(Use) CSFS 自省的(Of)交易的(Of)大(Big)小。相比之下,像 CLTV 和(And) CSV 這(This)樣的(Of)單一(One)用(Use)途内省操作(Do)碼的(Of)開銷很小,但添加每個(Indivual)新的(Of)特殊内省操作(Do)碼都需要(Want)進行共識更改。
OP_TXHASH 是(Yes)一(One)個(Indivual)簡單的(Of)内省操作(Do)碼,允許operator選擇特定字段的(Of)哈希并将其推送到堆棧上(Superior)。具體來說,OP_TXHASH 從堆棧中彈出(Out)一(One)個(Indivual) txhash 标志,并根據該标志計算(帶标簽的(Of))txhash,然後将生成的(Of)哈希推送回堆棧。
由于(At)TXHASH與CTV的(Of)相似性,社區内對兩者産生了(Got it)大(Big)量讨論。
TXHASH 可以(By)看作(Do)是(Yes) CTV 的(Of)通用(Use)升級,它提供了(Got it)更高級的(Of)交易模闆,允許用(Use)戶明确指定支出(Out)交易的(Of)各個(Indivual)部分,解決了(Got it)許多與交易費用(Use)相關的(Of)問題。與其他(He) Covenant 操作(Do)碼不(No)同,TXHASH 不(No)需要(Want)見證中必要(Want)數據的(Of)副本,從而進一(One)步降低了(Got it)存儲要(Want)求;與 CTV 不(No)同,TXHASH 不(No)兼容 NOP,隻能在(Exist) tapscript 中實現;TXHASH 和(And) CSFS 的(Of)組合可以(By)作(Do)爲(For) CTV 和(And) APO 的(Of)替代方案。
從構建契約的(Of)角度來看,TXHASH 更有利于(At)創建“加法契約”,其中你希望修複的(Of)所有交易數據部分都被推送到堆棧上(Superior),一(One)起進行哈希處理,并驗證生成的(Of)哈希是(Yes)否與固定值匹配;CTV 更适合創建“減法契約”,其中你希望保持自由的(Of)所有交易數據部分都被推送到堆棧上(Superior)。然後,使用(Use)滾動 SHA256 操作(Do)碼,哈希處理從固定的(Of)中間狀态開始,該狀态提交到交易哈希數據的(Of)前綴。自由部分被哈希到這(This)個(Indivual)中間狀态。
TXHASH規範中定義的(Of)TxFieldSelector字段預計會擴展到其他(He)操作(Do)碼,比如OP_TX。
與TXHASH相關的(Of)BIP目前在(Exist)GitHub上(Superior)處于(At)Draft狀态,尚未分配編号。
OP_CAT 是(Yes)一(One)個(Indivual)神秘的(Of)操作(Do)碼,最初被中本聰出(Out)于(At)安全考慮而放棄,但最近卻引發了(Got it)比特币核心開發者的(Of)激烈讨論,甚至在(Exist)網絡上(Superior)掀起了(Got it) Meme 文化。最終,OP_CAT 在(Exist) BIP-347 下獲得批準,被稱爲(For)近期最有可能通過的(Of) BIP 提案。
事實上(Superior),OP_CAT 的(Of)行爲(For)非常簡單:它将兩個(Indivual)來自堆棧的(Of)元素連接起來。它如何實現 Covenant 功能?
事實上(Superior),連接兩個(Indivual)元素的(Of)能力對應着一(One)個(Indivual)強大(Big)的(Of)加密數據結構:Merkle Trie。要(Want)構建 Merkle Trie,隻需要(Want)連接和(And)哈希運算,而比特币腳本中提供了(Got it)哈希函數。因此,使用(Use) OP_CAT,我們理論上(Superior)可以(By)在(Exist)比特币腳本中驗證 Merkle 證明,這(This)是(Yes)區塊鏈技術中最常見的(Of)輕量級驗證方法之一(One)。
前面提到,CSFS 借助 OP_CAT 可以(By)實現通用(Use)的(Of) Covenant 方案。實際上(Superior),即使沒有 CSFS,利用(Use) Schnorr 簽名的(Of)結構,OP_CAT 本身也可以(By)實現交易内省。
在(Exist)Schnorr簽名中,需要(Want)簽名的(Of)消息由以(By)下字段組成:
這(This)些字段包含交易的(Of)主要(Want)元素。通過将它們放在(Exist) scriptPubKey 或 Witness 中,并使用(Use) OP_CAT 結合 OP_SHA256,我們可以(By)構造 Schnorr 簽名并使用(Use) OP_CHECKSIG 進行驗證。如果驗證通過,堆棧将保留已驗證的(Of)交易數據,從而實現交易自省。這(This)使我們能夠提取和(And)“檢查”交易的(Of)各個(Indivual)部分,例如其輸入、輸出(Out)、目标地址或所涉及的(Of)比特币金額。
關于(At)具體的(Of)密碼學原理,可以(By)參考Andrew Poelstra的(Of)文章《CAT and Schnorr Tricks》。
總而言之,OP_CAT 的(Of)多功能性使其能夠模拟幾乎任何 Covenant 操作(Do)碼。許多 Covenant 操作(Do)碼都依賴于(At) OP_CAT 的(Of)功能,這(This)大(Big)大(Big)提升了(Got it)其在(Exist)合并列表中的(Of)位置。從理論上(Superior)講,僅依靠 OP_CAT 和(And)現有的(Of)比特币操作(Do)碼,我們就有希望構建一(One)個(Indivual)信任最小化的(Of) BTC ZK Rollup。Starknet、Chakra 和(And)其他(He)生态系統合作(Do)夥伴正在(Exist)積極推動這(This)一(One)目标的(Of)實現。
當我們探索擴展比特币和(And)增強其可編程性的(Of)各種策略時(Hour),很明顯,前進的(Of)道路涉及原生改進、鏈下計算和(And)複雜腳本功能的(Of)融合。
如果沒有靈活的(Of)基礎層,就不(No)可能構建更靈活的(Of)二層。
鏈下計算擴展是(Yes)未來的(Of)趨勢,但比特币的(Of)可編程性需要(Want)突破,才能更好地支持這(This)種擴展性并成爲(For)真正的(Of)全球貨币。
然而,比特币上(Superior)的(Of)計算性質與以(By)太坊上(Superior)的(Of)計算性質有着根本區别。比特币隻支持“驗證”作(Do)爲(For)一(One)種計算形式,無法執行一(One)般計算,而以(By)太坊本質上(Superior)是(Yes)計算性的(Of),驗證是(Yes)計算的(Of)副産品。從一(One)點可以(By)看出(Out)這(This)種區别:以(By)太坊對無法執行的(Of)交易收取 Gas Fee,而比特币則不(No)收取。
契約是(Yes)一(One)種基于(At)驗證而非計算的(Of)智能合約形式。除了(Got it)少數中本聰原教旨主義者外,似乎所有人(People)都認爲(For)契約是(Yes)改進比特币的(Of)好選擇。然而,社區仍在(Exist)激烈争論應該采用(Use)哪種方法來實現契約。
APO、OP_VAULT、TLUV 偏向直接應用(Use),選擇這(This)三種方式可以(By)更便宜更高效地實現特定應用(Use)。閃電網絡愛好者會選擇 APO 來實現 LN-Symmetry;想要(Want)實現 Vault 的(Of)用(Use)戶最好使用(Use) OP_VAULT;而對于(At)搭建 CoinPool,TLUV 可以(By)提供更好的(Of)隐私性和(And)效率。OP_CAT 和(And) TXHASH 功能更豐富,出(Out)現安全漏洞的(Of)概率更小,與其他(He)操作(Do)碼結合可以(By)實現更多用(Use)例,但代價可能是(Yes)腳本複雜度增加。CTV 和(And) CSFS 調整了(Got it)區塊鏈處理方式,CTV 實現延遲輸出(Out),CSFS 實現延遲簽名。MATT 以(By)樂觀執行和(And)欺詐證明的(Of)策略脫穎而出(Out),利用(Use) Merkle Trie 結構實現通用(Use)智能合約,但内省功能仍需要(Want)新的(Of)操作(Do)碼。
我們看到比特币社區正在(Exist)積極讨論通過軟分叉獲得 Covenants 的(Of)可能性。Starknet 已正式宣布加入比特币生态,計劃在(Exist) OP_CAT 合并後六個(Indivual)月内在(Exist)比特币網絡上(Superior)實現結算。Chakra 将繼續關注比特币生态的(Of)最新動态,推動 OP_CAT 軟分叉的(Of)合并,并利用(Use) Covenants 帶來的(Of)可編程性構建更安全、更高效的(Of)比特币結算層。
微信咨詢