對於一個算法 f,兩個互不信任的參與者 Alice 和 Bob 可以通過以下方式建立信任:
對於上述2、3和4,讓x表示Layer2交易和初始狀態,f表示Layer2共識程序,y表示交易結束狀態,對應於區塊鏈Layer2擴容解決方案。其中:
表1:建立信任的方式
此外,值得注意的是:
目前,由於Solidity的圖靈完備智能合約的好處,欺詐證明和有效性證明技術在以太坊的Layer2擴展中被廣泛使用。然而,在比特幣範式下,受到比特幣的有限操作碼功能、1000個堆棧元素和其他限制的限制,這些技術的應用仍處於探索階段。本文總結了在比特幣範式下在比特幣Layer2擴展的背景下的限制和突破技術,研究了有效性證明和欺詐證明技術,並概述了比特幣範式下的獨特腳本分割技術。
比特幣範式下存在著許多限制,但可以使用各種巧妙的方法或技術來克服這些限制。例如,位元承諾可以突破UTXO無狀態限制,樹根可以突破腳本空間限制,連接器輸出可以突破UTXO的支付方式限制,而合約可以突破預簽名的限制。
比特幣採用UTXO模型,每個UTXO都鎖定在一個鎖定腳本中,該腳本定義了必須滿足的條件才能花費該UTXO。比特幣腳本具有以下限制:
目前,比特幣腳本是完全無狀態的。執行比特幣腳本時,其執行環境在每個腳本后重置。這導致比特幣腳本無法原生支援具有相同 x 值的約束腳本 1 和 2。但是,可以通過某些方法規避此問題,其核心思想是以某種方式對值進行簽名。如果可以為值創建簽名,則可以實現有狀態的比特幣腳本。也就是說,通過檢查腳本 1 和 2 中 x 值的簽名,可以強制在兩個腳本中使用相同的 x 值。如果存在衝突的簽名,這意味著對同一變數 x 進行了兩個不同的值簽名,則可以應用懲罰。此解決方案稱為位承諾。
比特承諾的原則相對簡單。 每個要簽名的訊息中的位元都設置了兩個不同的哈希值,hash0和hash1。 如果要簽名的位元值為0,則會公開hash0的preimage0;如果要簽名的位元值為1,則會公開hash1的preimage1。
以單比特訊息 m ∈{0,1} 為例,相應的比特承諾解鎖腳本僅僅是一些預影像:如果比特值為0,則對應的解鎖腳本是 preimage0—“0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140”;如果比特值為1,則對應的解鎋腳本是 preimage1—“0x47c31e611a3bd2f3a7a42207613046703fa27496”。因此,通過比特承諾,可以突破UTXO無狀態限制,實現有狀態的比特幣腳本,從而實現各種有趣的新功能。
OP_HASH160
OP_DUP
0xf592e757267b7f307324f1e78b34472f8b6f46f3> // 這是 hash1
OP_EQUAL
OP_DUP
OP_ROT
0x100b9f19ebd537fdc371fa1367d7ccc802dc2524> // 這是hash0
OP_EQUAL
OP_BOOLOR
OP_VERIFY
// 現在位元承諾的值在堆疊上。可以是“0”或“1”。
目前,存在2種比特承諾的實現方式:
目前,BitVM2庫實現了基於Blake3雜湊函數的Winternitz簽名。對應於單個位的簽名長度約為26字節。因此,可以看出通過位承諾引入狀態是昂貴的。因此,在BitVM2實現中,首先對消息進行雜湊以獲得256位雜湊值,然後在雜湊值上執行位承諾以節省開銷,而不是直接對原始較長消息的每個位進行承諾。
比特幣Taproot軟分叉升級於2021年11月啟動,包括三個提案:Schnorr簽名(BIP 340)、Taproot(BIP 341)和TapScript(BIP 342)。它引入了一種新的交易類型——Pay-to-Taproot(P2TR)交易。通過結合Taproot、MAST(Merkel Abstract Syntax Tree)和Schnorr簽名的優勢,P2TR交易可以創建更加私密、靈活和可擴展的交易格式。
P2TR 支援兩種消費方式:按鍵路徑或腳本路徑消費。
根據Taproot(BIP 341)中的規定,通過腳本路徑進行花費時,相應的Merkle路徑不能超過128的最大長度。這意味著taptree中的tapleaf數量不能超過2^128。自2017年SegWit升級以來,比特幣網絡以權重單位衡量區塊大小,最大支援4百萬權重單位(約4MB)。當通過腳本路徑花費P2TR輸出時,只需揭示單個tapleaf腳本,這意味著該區塊只包含一個tapleaf腳本。這意味著對於P2TR交易,每個tapleaf對應的腳本大小最多可以達到4MB左右。然而,在比特幣的默認策略下,許多節點僅轉發小於400K的交易,較大的交易需要與礦工合作進行打包。
Taproot 帶來的腳本空間溢價使得使用現有操作碼類比乘法和哈希等加密操作更有價值。
在基於P2TR的可驗證計算時,相應的腳本大小不再受4MB的限制,而可以分割成多個子功能分佈在多個tapleaf之間,從而突破了4MB腳本空間的限制。事實上,當前BitVM2中實現的Groth16驗證器算法大小可達2GB。然而,它可以分割並分佈在約1000個tapleaf之間,並通過與bit commitment結合,可以對每個子功能的輸入和輸出之間的一致性進行限制,確保整個計算的完整性和正確性。
目前,比特幣為單個UTXO提供了兩種本地消費方法:通過腳本或通過公鑰進行消費。因此,只要滿足正確的公鑰簽名或腳本條件,就可以消費UTXO。兩個UTXO可以獨立消費,並且不能對這兩個UTXO添加任何限制,這意味著它們必須滿足額外的條件才能被消費。
然而,方舟協議的創始人Burak巧妙地利用SIGHASH標誌來實現連接器輸出。具體來說,愛麗絲可以創建一個簽名,將她的BTC發送給鮑勃。但是,由於簽名可以提交到多個輸入,因此 Alice 可以將她的簽名設置為有條件的:當且僅當該事務使用第二個輸入時,簽名對 Taketx 事務有效。第二個輸入稱為連接器,連接UTXO A和UTXO B。換句話說,當且僅當UTXO B沒有被Challengetx花費時,Taketx交易才有效。因此,通過銷毀連接器輸出,可以阻止Taketx事務的有效性。
圖1:連接器輸出說明
在BitVM2協議中,連接器輸出充當if...else函數。一旦連接器輸出被交易消耗,就不能被另一個交易消耗,以確保其獨佔消耗。在實際部署中,為了允許挑戰-響應期間,引入了具有時間鎖定的額外UTXO。此外,相應的連接器輸出還可以根據需要設置不同的消耗策略,例如允許在挑戰交易的情況下任何一方都可以消耗,而僅允許操作者消耗或在響應交易的超時後允許任何人消耗。
目前,比特幣腳本主要限制解鎖條件,而不限制UTXO的進一步消費方式。這是因為比特幣腳本無法讀取交易本身的內容,也就是說它們無法實現交易內省。如果比特幣腳本可以檢查交易的任何內容(包括輸出),合約功能可以得到實現。
目前的合約實現可以分為兩類:
無論是有效性證明還是欺詐證明,都可以用於比特幣L2擴展,主要差異如表2所示。
表2:有效性證明 vs. 欺詐證明
基於比特承諾、taproot、預簽名和連接器輸出,可以構建基於比特幣的欺詐證明。基於taproot,基於比特幣的有效性證明也可以通過引入合約操作碼來構建,例如OP_CAT。此外,根據 Bob 是否有准入系統,欺詐證明可分為許可欺詐證明和無許可欺詐證明。在許可欺詐證明中,只有特定組可以充當 Bob 發起挑戰,而在未經許可的欺詐證明中,任何第三方都可以充當 Bob 發起挑戰。無需許可的欺詐證明的安全性優於許可的欺詐證明,降低了允許的參與者之間串通的風險。
根據Alice和Bob之間的挑戰-回應交互次數,欺詐證明可以分為單輪欺詐證明和多輪欺詐證明,如圖2所示。
圖2:單輪欺詐證明 vs. 多輪欺詐證明
如表3所示,欺詐證明可以通過不同的交互模型來實現,包括單輪交互模型和多輪交互模型。
表3:一輪互動 vs 多輪互動
在比特幣Layer2擴容範式中,BitVM1採用多輪欺詐證明機制,而BitVM2採用單輪欺詐證明機制,而bitcoin-circle stark則利用有效性證明。在這些中,BitVM1和BitVM2可以在不對比特幣協議進行任何修改的情況下實施,而bitcoin-circle stark則需要引入一個新的操作碼OP_CAT。
對於大多數計算任務來說,比特幣的簽章網、測試網和主網無法完全代表 4MB 腳本,因此需要使用腳本分割技術,即將完整的計算腳本分割成小於 4MB 的塊,分佈在各種 tapleafs 上。
如表3所示,多輪欺詐證明適用於希望減少鏈上仲裁計算和/或無法在一步中定位問題計算片段的場景。正如其名,多輪欺詐證明需要證明者和驗證者進行多輪交互來定位問題計算片段,然後基於識別的片段進行仲裁。
Robin Linus早期的BitVM白皮書(通常稱為BitVM1)使用了多輪欺詐證明。假設每個挑戰期持續一週,並使用二分搜索方法來找到問題計算片段,Groth16驗證程序的鏈上挑戰響應期最多可延長至30週,導致時效性不佳。儘管目前有團隊正在研究比二分搜索更高效的n元搜索方法,但其時效性仍明顯低於一輪欺詐證明的2週週期。
目前,比特幣範式中的多輪欺詐證明採用許可挑戰,而一輪欺詐證明已實現無許可挑戰方法,減少了參與者間的共謀風險,從而增強了安全性。為此,羅賓·林納斯充分利用了Taproot的優勢來優化BitVM1。不僅互動輪數減少到一輪,而且挑戰方法也擴展到無許可方法,盡管這導致了鏈上仲裁計算量的增加。
在這個模型中,欺詐證明的驗證可以通過證明者和驗證者之間的單次互動完成。驗證者只需要發起一個挑戰,證明者只需要回應一次。在這個回應中,證明者必須提供聲稱其計算正確的證據。如果驗證者能夠在這些證據中找到不一致之處,挑戰就成功;否則,它失敗。一輪互動式欺詐證明的特點如表3所示。
圖3:一輪欺詐證明
於2024年8月15日,Robin Linus發布了《BitVM2: 桥接比特币到第二层的技术白皮书》,该白皮书实现了一种类似于图3所示的一轮欺诈证明方法的跨链桥接。
OPCAT是比特幣發布時的原始腳本語言的一部分,但由於安全漏洞在2010年被禁用。然而,比特幣社區多年來一直在討論其重新啟用的問題。OPCAT現在已經被分配編號347,並已在比特幣的signet上啟用。
OP_CAT 的主要功能是將堆疊中的兩個元素結合並將合併結果推回堆疊。這個功能為比特幣上的合約和 STARK 驗證器開啟了可能性:
雖然在 SNARK/STARK 證明之後運行相應的驗證器算法所需的計算負載比直接運行原始計算 f 所需的計算負載要小得多,但在將其轉換為 Bitcoin script 實現驗證器算法時所需的腳本量仍然非常巨大。目前,基於現有的 Bitcoin opcodes,優化的 Groth16 驗證器腳本大小和 Fflonk 驗證器腳本大小仍然都大於 2GB。然而,單個 Bitcoin 區塊的大小僅為 4MB,因此無法在單個區塊內運行整個驗證器腳本。然而,自 Taproot 升級以來,Bitcoin 支持通過 tapleaf 執行腳本,允許將驗證器腳本分割為多個塊,每個塊都作為 tapleaf 來構建一個 taptree。通過位承諾可以確保塊之間的值的一致性。
在存在OP_CAT合約的情況下,STARK驗證器可以拆分為多個小於400KB的標準交易,從而無需與礦工合作即可完成整個STARK有效性證明驗證。
本節重點介紹比特幣腳本在現有條件下的相關分割技術,而不引入或啟用任何新的操作碼。
執行文稿拆分時,必須平衡以下資訊維度:
目前,腳本分割的方法可以分為以下三個主要類別:
例如,經過多輪優化後,Groth16驗證器的腳本大小從約7GB減少到約1.26GB。除了整體計算優化外,每個塊還可以進行個別優化,以充分利用堆疊空間。例如,通過引入更好的查找表算法並動態加載和卸載查找表,每個塊的腳本大小可以進一步減小。
Web2程式語言的計算成本和運行環境與比特幣腳本完全不同,因此單純將現有的各種演算法實現翻譯為比特幣腳本是不可行的。因此,需要考慮針對比特幣情景的優化。
本文首先介紹比特幣腳本的限制,並討論使用比特幣承諾來克服UTXO無狀態限制,使用Taproot來突破腳本空間限制,使用連接器輸出來繞過UTXO花費方法的限制,以及使用合約來克服預簽名的限制。然後對欺詐證明和有效性證明的特點進行了全面的概述和總結,介紹了許可和非許可欺詐證明的特點,一輪和多輪欺詐證明之間的區別,以及比特幣腳本拆分技術。
對於一個算法 f,兩個互不信任的參與者 Alice 和 Bob 可以通過以下方式建立信任:
對於上述2、3和4,讓x表示Layer2交易和初始狀態,f表示Layer2共識程序,y表示交易結束狀態,對應於區塊鏈Layer2擴容解決方案。其中:
表1:建立信任的方式
此外,值得注意的是:
目前,由於Solidity的圖靈完備智能合約的好處,欺詐證明和有效性證明技術在以太坊的Layer2擴展中被廣泛使用。然而,在比特幣範式下,受到比特幣的有限操作碼功能、1000個堆棧元素和其他限制的限制,這些技術的應用仍處於探索階段。本文總結了在比特幣範式下在比特幣Layer2擴展的背景下的限制和突破技術,研究了有效性證明和欺詐證明技術,並概述了比特幣範式下的獨特腳本分割技術。
比特幣範式下存在著許多限制,但可以使用各種巧妙的方法或技術來克服這些限制。例如,位元承諾可以突破UTXO無狀態限制,樹根可以突破腳本空間限制,連接器輸出可以突破UTXO的支付方式限制,而合約可以突破預簽名的限制。
比特幣採用UTXO模型,每個UTXO都鎖定在一個鎖定腳本中,該腳本定義了必須滿足的條件才能花費該UTXO。比特幣腳本具有以下限制:
目前,比特幣腳本是完全無狀態的。執行比特幣腳本時,其執行環境在每個腳本后重置。這導致比特幣腳本無法原生支援具有相同 x 值的約束腳本 1 和 2。但是,可以通過某些方法規避此問題,其核心思想是以某種方式對值進行簽名。如果可以為值創建簽名,則可以實現有狀態的比特幣腳本。也就是說,通過檢查腳本 1 和 2 中 x 值的簽名,可以強制在兩個腳本中使用相同的 x 值。如果存在衝突的簽名,這意味著對同一變數 x 進行了兩個不同的值簽名,則可以應用懲罰。此解決方案稱為位承諾。
比特承諾的原則相對簡單。 每個要簽名的訊息中的位元都設置了兩個不同的哈希值,hash0和hash1。 如果要簽名的位元值為0,則會公開hash0的preimage0;如果要簽名的位元值為1,則會公開hash1的preimage1。
以單比特訊息 m ∈{0,1} 為例,相應的比特承諾解鎖腳本僅僅是一些預影像:如果比特值為0,則對應的解鎖腳本是 preimage0—“0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140”;如果比特值為1,則對應的解鎋腳本是 preimage1—“0x47c31e611a3bd2f3a7a42207613046703fa27496”。因此,通過比特承諾,可以突破UTXO無狀態限制,實現有狀態的比特幣腳本,從而實現各種有趣的新功能。
OP_HASH160
OP_DUP
0xf592e757267b7f307324f1e78b34472f8b6f46f3> // 這是 hash1
OP_EQUAL
OP_DUP
OP_ROT
0x100b9f19ebd537fdc371fa1367d7ccc802dc2524> // 這是hash0
OP_EQUAL
OP_BOOLOR
OP_VERIFY
// 現在位元承諾的值在堆疊上。可以是“0”或“1”。
目前,存在2種比特承諾的實現方式:
目前,BitVM2庫實現了基於Blake3雜湊函數的Winternitz簽名。對應於單個位的簽名長度約為26字節。因此,可以看出通過位承諾引入狀態是昂貴的。因此,在BitVM2實現中,首先對消息進行雜湊以獲得256位雜湊值,然後在雜湊值上執行位承諾以節省開銷,而不是直接對原始較長消息的每個位進行承諾。
比特幣Taproot軟分叉升級於2021年11月啟動,包括三個提案:Schnorr簽名(BIP 340)、Taproot(BIP 341)和TapScript(BIP 342)。它引入了一種新的交易類型——Pay-to-Taproot(P2TR)交易。通過結合Taproot、MAST(Merkel Abstract Syntax Tree)和Schnorr簽名的優勢,P2TR交易可以創建更加私密、靈活和可擴展的交易格式。
P2TR 支援兩種消費方式:按鍵路徑或腳本路徑消費。
根據Taproot(BIP 341)中的規定,通過腳本路徑進行花費時,相應的Merkle路徑不能超過128的最大長度。這意味著taptree中的tapleaf數量不能超過2^128。自2017年SegWit升級以來,比特幣網絡以權重單位衡量區塊大小,最大支援4百萬權重單位(約4MB)。當通過腳本路徑花費P2TR輸出時,只需揭示單個tapleaf腳本,這意味著該區塊只包含一個tapleaf腳本。這意味著對於P2TR交易,每個tapleaf對應的腳本大小最多可以達到4MB左右。然而,在比特幣的默認策略下,許多節點僅轉發小於400K的交易,較大的交易需要與礦工合作進行打包。
Taproot 帶來的腳本空間溢價使得使用現有操作碼類比乘法和哈希等加密操作更有價值。
在基於P2TR的可驗證計算時,相應的腳本大小不再受4MB的限制,而可以分割成多個子功能分佈在多個tapleaf之間,從而突破了4MB腳本空間的限制。事實上,當前BitVM2中實現的Groth16驗證器算法大小可達2GB。然而,它可以分割並分佈在約1000個tapleaf之間,並通過與bit commitment結合,可以對每個子功能的輸入和輸出之間的一致性進行限制,確保整個計算的完整性和正確性。
目前,比特幣為單個UTXO提供了兩種本地消費方法:通過腳本或通過公鑰進行消費。因此,只要滿足正確的公鑰簽名或腳本條件,就可以消費UTXO。兩個UTXO可以獨立消費,並且不能對這兩個UTXO添加任何限制,這意味著它們必須滿足額外的條件才能被消費。
然而,方舟協議的創始人Burak巧妙地利用SIGHASH標誌來實現連接器輸出。具體來說,愛麗絲可以創建一個簽名,將她的BTC發送給鮑勃。但是,由於簽名可以提交到多個輸入,因此 Alice 可以將她的簽名設置為有條件的:當且僅當該事務使用第二個輸入時,簽名對 Taketx 事務有效。第二個輸入稱為連接器,連接UTXO A和UTXO B。換句話說,當且僅當UTXO B沒有被Challengetx花費時,Taketx交易才有效。因此,通過銷毀連接器輸出,可以阻止Taketx事務的有效性。
圖1:連接器輸出說明
在BitVM2協議中,連接器輸出充當if...else函數。一旦連接器輸出被交易消耗,就不能被另一個交易消耗,以確保其獨佔消耗。在實際部署中,為了允許挑戰-響應期間,引入了具有時間鎖定的額外UTXO。此外,相應的連接器輸出還可以根據需要設置不同的消耗策略,例如允許在挑戰交易的情況下任何一方都可以消耗,而僅允許操作者消耗或在響應交易的超時後允許任何人消耗。
目前,比特幣腳本主要限制解鎖條件,而不限制UTXO的進一步消費方式。這是因為比特幣腳本無法讀取交易本身的內容,也就是說它們無法實現交易內省。如果比特幣腳本可以檢查交易的任何內容(包括輸出),合約功能可以得到實現。
目前的合約實現可以分為兩類:
無論是有效性證明還是欺詐證明,都可以用於比特幣L2擴展,主要差異如表2所示。
表2:有效性證明 vs. 欺詐證明
基於比特承諾、taproot、預簽名和連接器輸出,可以構建基於比特幣的欺詐證明。基於taproot,基於比特幣的有效性證明也可以通過引入合約操作碼來構建,例如OP_CAT。此外,根據 Bob 是否有准入系統,欺詐證明可分為許可欺詐證明和無許可欺詐證明。在許可欺詐證明中,只有特定組可以充當 Bob 發起挑戰,而在未經許可的欺詐證明中,任何第三方都可以充當 Bob 發起挑戰。無需許可的欺詐證明的安全性優於許可的欺詐證明,降低了允許的參與者之間串通的風險。
根據Alice和Bob之間的挑戰-回應交互次數,欺詐證明可以分為單輪欺詐證明和多輪欺詐證明,如圖2所示。
圖2:單輪欺詐證明 vs. 多輪欺詐證明
如表3所示,欺詐證明可以通過不同的交互模型來實現,包括單輪交互模型和多輪交互模型。
表3:一輪互動 vs 多輪互動
在比特幣Layer2擴容範式中,BitVM1採用多輪欺詐證明機制,而BitVM2採用單輪欺詐證明機制,而bitcoin-circle stark則利用有效性證明。在這些中,BitVM1和BitVM2可以在不對比特幣協議進行任何修改的情況下實施,而bitcoin-circle stark則需要引入一個新的操作碼OP_CAT。
對於大多數計算任務來說,比特幣的簽章網、測試網和主網無法完全代表 4MB 腳本,因此需要使用腳本分割技術,即將完整的計算腳本分割成小於 4MB 的塊,分佈在各種 tapleafs 上。
如表3所示,多輪欺詐證明適用於希望減少鏈上仲裁計算和/或無法在一步中定位問題計算片段的場景。正如其名,多輪欺詐證明需要證明者和驗證者進行多輪交互來定位問題計算片段,然後基於識別的片段進行仲裁。
Robin Linus早期的BitVM白皮書(通常稱為BitVM1)使用了多輪欺詐證明。假設每個挑戰期持續一週,並使用二分搜索方法來找到問題計算片段,Groth16驗證程序的鏈上挑戰響應期最多可延長至30週,導致時效性不佳。儘管目前有團隊正在研究比二分搜索更高效的n元搜索方法,但其時效性仍明顯低於一輪欺詐證明的2週週期。
目前,比特幣範式中的多輪欺詐證明採用許可挑戰,而一輪欺詐證明已實現無許可挑戰方法,減少了參與者間的共謀風險,從而增強了安全性。為此,羅賓·林納斯充分利用了Taproot的優勢來優化BitVM1。不僅互動輪數減少到一輪,而且挑戰方法也擴展到無許可方法,盡管這導致了鏈上仲裁計算量的增加。
在這個模型中,欺詐證明的驗證可以通過證明者和驗證者之間的單次互動完成。驗證者只需要發起一個挑戰,證明者只需要回應一次。在這個回應中,證明者必須提供聲稱其計算正確的證據。如果驗證者能夠在這些證據中找到不一致之處,挑戰就成功;否則,它失敗。一輪互動式欺詐證明的特點如表3所示。
圖3:一輪欺詐證明
於2024年8月15日,Robin Linus發布了《BitVM2: 桥接比特币到第二层的技术白皮书》,该白皮书实现了一种类似于图3所示的一轮欺诈证明方法的跨链桥接。
OPCAT是比特幣發布時的原始腳本語言的一部分,但由於安全漏洞在2010年被禁用。然而,比特幣社區多年來一直在討論其重新啟用的問題。OPCAT現在已經被分配編號347,並已在比特幣的signet上啟用。
OP_CAT 的主要功能是將堆疊中的兩個元素結合並將合併結果推回堆疊。這個功能為比特幣上的合約和 STARK 驗證器開啟了可能性:
雖然在 SNARK/STARK 證明之後運行相應的驗證器算法所需的計算負載比直接運行原始計算 f 所需的計算負載要小得多,但在將其轉換為 Bitcoin script 實現驗證器算法時所需的腳本量仍然非常巨大。目前,基於現有的 Bitcoin opcodes,優化的 Groth16 驗證器腳本大小和 Fflonk 驗證器腳本大小仍然都大於 2GB。然而,單個 Bitcoin 區塊的大小僅為 4MB,因此無法在單個區塊內運行整個驗證器腳本。然而,自 Taproot 升級以來,Bitcoin 支持通過 tapleaf 執行腳本,允許將驗證器腳本分割為多個塊,每個塊都作為 tapleaf 來構建一個 taptree。通過位承諾可以確保塊之間的值的一致性。
在存在OP_CAT合約的情況下,STARK驗證器可以拆分為多個小於400KB的標準交易,從而無需與礦工合作即可完成整個STARK有效性證明驗證。
本節重點介紹比特幣腳本在現有條件下的相關分割技術,而不引入或啟用任何新的操作碼。
執行文稿拆分時,必須平衡以下資訊維度:
目前,腳本分割的方法可以分為以下三個主要類別:
例如,經過多輪優化後,Groth16驗證器的腳本大小從約7GB減少到約1.26GB。除了整體計算優化外,每個塊還可以進行個別優化,以充分利用堆疊空間。例如,通過引入更好的查找表算法並動態加載和卸載查找表,每個塊的腳本大小可以進一步減小。
Web2程式語言的計算成本和運行環境與比特幣腳本完全不同,因此單純將現有的各種演算法實現翻譯為比特幣腳本是不可行的。因此,需要考慮針對比特幣情景的優化。
本文首先介紹比特幣腳本的限制,並討論使用比特幣承諾來克服UTXO無狀態限制,使用Taproot來突破腳本空間限制,使用連接器輸出來繞過UTXO花費方法的限制,以及使用合約來克服預簽名的限制。然後對欺詐證明和有效性證明的特點進行了全面的概述和總結,介紹了許可和非許可欺詐證明的特點,一輪和多輪欺詐證明之間的區別,以及比特幣腳本拆分技術。