BitVM:在比特幣上計算任何東西
作者:Robin Linux 譯者:登鏈社區(qū)翻譯小組
摘要
BitVM 是一種計算范式,用于表達圖靈完備的比特幣合約。這不需要對比特幣網(wǎng)絡(luò)的共識規(guī)則進行任何更改。與在比特幣上執(zhí)行計算不同,它們僅僅是被驗證,類似于樂觀 Rollups。證明者聲明某個給定的函數(shù)對某些特定的輸入求值得到了特定的輸出。如果該聲明是錯誤的,那么驗證者可以進行簡明的欺詐證明并懲罰證明者。使用這種機制,任何可計算的函數(shù)都可以在比特幣上進行驗證。
在 Taproot 地址上承諾一個大型程序需要大量的鏈外計算和通信,然而其在鏈上的占用空間很小。只要雙方合作,他們可以進行任意復雜的、有狀態(tài)的鏈外計算,而不在鏈上留下任何痕跡。只有在爭議的情況下才需要在鏈上執(zhí)行。
簡介
按設(shè)計,比特幣的智能合約功能被限制為基本操作,如簽名、時間鎖和哈希鎖。BitVM 為更具表達力的比特幣合約和鏈外計算創(chuàng)造了一個新的設(shè)計空間。潛在的應(yīng)用包括象棋、圍棋或撲克等游戲,以及比特幣合約中有效性證明的驗證。此外,可能還可以將比特幣橋接到外部鏈、構(gòu)建預測市場或模擬新的操作碼。
這里提出的模型的主要缺點是它僅適用于有兩方的設(shè)定,即證明者和驗證者。另一個限制是,對于證明者和驗證者,需要大量的鏈外計算和通信來執(zhí)行程序。然而,這些問題似乎有望通過進一步的研究得到解決。在這項工作中,我們僅關(guān)注兩方 BitVM 的關(guān)鍵組成部分。
架構(gòu)
與樂觀 Rollups 1[2] 和 MATT 提案(Merkelize All The Things)2[3] 類似,我們的系統(tǒng)基于欺詐證明和挑戰(zhàn)-響應(yīng)協(xié)議。然而,BitVM 不需要對比特幣的共識規(guī)則進行任何更改。底層的原語相對簡單。它主要基于哈希鎖、時間鎖和大 Taproot 樹。
證明者逐位地將程序提交到鏈上,但是在鏈上驗證所有內(nèi)容將會消耗過多的計算資源,因此驗證者會執(zhí)行一系列精心設(shè)計的挑戰(zhàn)來簡潔地證偽證明者的錯誤主張。證明者和驗證者共同預簽名一系列挑戰(zhàn)-響應(yīng)交易,以便日后解決任何爭議。
該模型旨在簡單地說明這種方法允許在比特幣上進行通用計算。對于實際應(yīng)用,我們應(yīng)考慮更高效的模型。
協(xié)議很簡單:首先,證明者和驗證者將程序編譯成一個巨大的二進制電路。證明者將該電路提交到一個 Taproot 地址中,該地址的每個邏輯門都有一個葉子腳本。此外,他們預簽名一系列交易,為證明者和驗證者之間的挑戰(zhàn)-響應(yīng)游戲提供支持?,F(xiàn)在,他們已經(jīng)交換了所有所需的數(shù)據(jù),因此可以將他們的鏈上存款轉(zhuǎn)入生成的 Taproot 地址。
這將激活合約,他們可以開始交換鏈下數(shù)據(jù),以觸發(fā)電路中的狀態(tài)變化。如果證明者提出了任何錯誤的聲明,驗證者可以拿走他們的存款。這確保了攻擊者總是會損失他們的存款。
位值承諾(Bit Value Commitment)
位值承諾是該系統(tǒng)中最基本的組件。它允許證明者將特定位的值設(shè)置為“0”或“1”。特別地,它允許證明者在不同的腳本和 UTXO 之間設(shè)置變量的值。這是關(guān)鍵的,因為它通過將比特幣的虛擬機執(zhí)行時間分割成多個交易來擴展執(zhí)行運行時。
承諾包含兩個哈希值,hash0 和 hash1。在稍后的某個時刻,證明者通過揭示 preimage0(hash0 的原像)將位的值設(shè)置為“0”,或者通過揭示 preimage1(hash1 的原像)將位的值設(shè)置為“1”。如果在某個時刻,他們同時揭示了 preimage0 和 preimage1,那么驗證者可以將它們用作欺詐證明,并拿走證明者的存款。這被稱為矛盾陳述。能夠懲罰矛盾陳述是使承諾具有約束力的原因-它是一種“基于激勵的承諾”。
將位值承諾與時間鎖結(jié)合,使驗證者能夠強制證明者在給定的時間范圍內(nèi)決定特定位的值。
圖 1:位值承諾的具體實現(xiàn)
圖 1:1 位承諾的具體實現(xiàn)。為了解鎖此腳本,證明者必須揭示 hash0 或 hash1 的原像之一。在此示例執(zhí)行中,證明者揭示了 hash1,并將位的值設(shè)置為“1”。我們可以復制此承諾以在不同的腳本中強制執(zhí)行特定的值。
為了簡化起見,從這里開始,我們假設(shè)有一個名為 OP BITCOMMITMENT 的操作碼,它是上述腳本的簡寫。該操作碼消耗兩個哈希和一個哈希的原像。根據(jù)與原像匹配的哈希,它將一個位值放在堆棧上。
邏輯門承諾
任何可計算的函數(shù)都可以表示為布爾電路。NAND 門是一種通用邏輯門,因此任何布爾函數(shù)都可以由它們組成。為了保持我們的模型簡單,我們展示了我們的方法如何適用于簡單的 NAND 門。此外,我們還展示了如何任意組合門。這一切都證明了 BitVM 可以表示任何電路。
NAND 門承諾的實現(xiàn)很簡單。它包含兩個表示兩個輸入的位承諾和一個表示輸出的位承諾。腳本計算兩個輸入的 NAND 值,以確保它與承諾的輸出位匹配。
圖 2:NAND 操作的邏輯門承諾
圖 2:NAND 操作的邏輯門承諾。執(zhí)行此腳本需要揭示位承諾 A、B 和 C 的值,使得 A NAND B = C 成立。
(在這里,為了簡化起見,我們假設(shè)存在一個名為 OP NAND 的操作碼。實際上,它并不存在,但可以使用 OP BOOLAND 和 OP NOT 輕松實現(xiàn)。)
二進制電路承諾
在前一節(jié)中,我們定義了 NAND 門承諾。我們可以通過組合門承諾來表示任何電路。執(zhí)行的每一步都在 Tapleaf 中進行承諾。它們都被合并到同一個 Taproot 地址中,以便證明者可以執(zhí)行電路中的任何門。執(zhí)行門需要證明者打開相應(yīng)的門承諾,并為其輸入和輸出位設(shè)置值。
Taptree 可能會變得龐大,并且擁有十億個 Tapleaf 腳本,但其鏈上占用空間很小。
圖 3:一個隨機示例電路
圖 3:一個隨機示例電路,其中包含 8 個不同的 NAND 門和 4 個輸入 A、B、C 和 D。使用數(shù)十億個門可以定義基本上任何函數(shù)。
圖 4
圖 4:對于每個門,證明者的 Taproot 地址包含一個具有相應(yīng)門承諾的葉腳本。這使得證明者可以在任何時間點上設(shè)置電路的輸入值(這里是 A、B、C 和 D)。
挑戰(zhàn)與響應(yīng)
僅僅承諾一個電路是不夠的。為了反駁錯誤的聲明,驗證者必須能夠挑戰(zhàn)證明者的陳述。這可以通過在設(shè)置過程中預簽名一系列交易來實現(xiàn)。這些交易按照挑戰(zhàn)→響應(yīng)→挑戰(zhàn)→響應(yīng)→...的方式鏈接。如果其中一方停止參與,那么在一段超時時間后,另一方將贏得挑戰(zhàn)并可以拿走雙方的存款。只要雙方合作,他們可以通過 2-of-2 簽名共同解決任何合約。以下機制僅在存在欺詐行為時才需要。
圖 5:預簽名的一系列交易
圖 5:預簽名的一系列交易,用于執(zhí)行多輪挑戰(zhàn)和回應(yīng)。此序列在設(shè)置過程中生成。
Vicky 通過打開她的 Tapscript 葉子中的一個哈希鎖來選擇一個挑戰(zhàn)。這將為 Paul 解鎖一個特定的 Tapscript,并迫使他執(zhí)行它。該腳本強制 Paul 揭示 Vicky 挑戰(zhàn)的門承諾。通過對幾輪查詢重復此過程,可以快速反駁任何不一致的聲明。
如果證明者停止與驗證者進行鏈下合作,驗證者需要一種方法來迫使證明者在鏈上采取行動。驗證者通過解鎖哈希鎖來實現(xiàn)這一點:證明者的 UTXO 中的每個 NAND Tapleaf 只能在證明者知道驗證者持有的原像的情況下花費。因此,證明者可以通過揭示其輸入和輸出來證明給定的 Tapleaf 正確執(zhí)行,但前提是驗證者通過揭示保護該 Tapleaf 的哈希的原像來為其“解鎖”。通過應(yīng)用二分搜索,驗證者可以在僅經(jīng)過幾輪挑戰(zhàn)和回應(yīng)后快速確定證明者的錯誤。
圖 6:在每次響應(yīng)后,Vicky 可以懲罰模棱兩可的行為。如果 Paul 對一個變量公開了兩個沖突的值,那么 Vicky 立即贏得挑戰(zhàn),并被允許拿走他的押金。Vicky 通過揭示任何他的位承諾的兩個原像來證明 Paul 的模棱兩可。
輸入和輸出
證明者可以通過揭示相應(yīng)的位承諾來設(shè)置輸入。理想情況下,他們在鏈下揭示承諾以最小化鏈上的占用。在非合作情況下,驗證者可以強制證明者在鏈上揭示他們的輸入。
可以通過提前交換加密的方式來處理大量數(shù)據(jù)。這樣,證明者可以在以后的某個時間點上揭示解密密鑰。
多方輸入也是可能的。門可以有來自雙方的位承諾。
限制和展望
用簡單的 NAND 電路來表示函數(shù)是低效的。通過使用更高級的操作碼,可以更有效地表示程序。例如,比特幣腳本支持添加 32 位數(shù)字,因此我們不需要二進制電路。我們還可以有更大的位承諾,例如,可以在單個哈希中承諾 32 位。此外,腳本的大小可以達到約 4 MB。因此,我們可以在每個葉子腳本中實現(xiàn)遠遠超過一個 NAND 指令。
這里提出的模型僅限于兩方。然而,可能可以有雙向通道,并將它們鏈接起來形成類似閃電網(wǎng)絡(luò)的網(wǎng)絡(luò)。探索兩方設(shè)置可能會產(chǎn)生有趣的泛化可能性。例如,我們可以為網(wǎng)絡(luò)探索 1 對 n 的星形拓撲結(jié)構(gòu)。另一個研究問題是,我們是否可以將我們的模型應(yīng)用于 n 對 n 的設(shè)置,并創(chuàng)建更復雜的通道工廠。此外,我們可以將我們的系統(tǒng)與不同的鏈下協(xié)議(例如閃電網(wǎng)絡(luò)或 rollups)結(jié)合起來。
其他研究方向包括跨應(yīng)用內(nèi)存,如何對刻在鏈上的任意數(shù)據(jù)進行陳述,或者鏈下可編程電路,即鏈下虛擬機。還可能應(yīng)用更復雜的采樣技術(shù),類似于 STARKs,在單回合中檢查電路。
下一個重要的里程碑是完成一個具體的 BitVM 設(shè)計和實現(xiàn),以及 Tree++,一種用于編寫和調(diào)試比特幣合約的高級語言。
結(jié)論
比特幣在某種意義上是圖靈完備的,因為在大型 Taptrees 中編碼欺詐證明可以驗證任何程序的執(zhí)行。這個模型的一個主要限制是它僅適用于兩方的情況。希望在進一步的工作中可以進行泛化。
你可能感興趣的文章
-
為什么比特幣需要以太坊虛擬機才能發(fā)揮潛力?
為什么比特幣需要以太坊虛擬機才能發(fā)揮潛力?比特幣是技術(shù)上最安全、真正去中心化的協(xié)議,EVM已證明自己是全球金融系統(tǒng)的應(yīng)用層,EVM是獲勝的虛擬機,而比特幣是最好的貨幣…
2023-10-11 -
閃電網(wǎng)絡(luò)是什么意思?通俗介紹閃電網(wǎng)絡(luò)
在傳統(tǒng)的區(qū)塊鏈網(wǎng)絡(luò)中,每個交易都會被寫入?yún)^(qū)塊鏈并獲得確認,這導致交易速度受到限制還產(chǎn)生高昂的交易費用,閃電網(wǎng)絡(luò)出現(xiàn)解決了區(qū)塊鏈網(wǎng)絡(luò)面臨的擴容和交易延遲等問題,了…
2023-10-09 -
Stratum協(xié)議是什么?一種改進的比特幣挖礦協(xié)議
stratum協(xié)議是目前最常用的礦機和礦池之間的TCP通訊協(xié)議,最近有很多小伙伴咨詢stratum協(xié)議究竟是什么?小編結(jié)合多年的經(jīng)驗整理出來一些對應(yīng)的資料,分享給大家…
2023-10-03 -
在比特幣中區(qū)塊鏈是什么?比特幣和區(qū)塊鏈的關(guān)系是怎么樣的?
在比特幣中,區(qū)塊鏈是什么,這種情況是比特幣社區(qū)中最常見的問題之一,區(qū)塊鏈是比特幣的核心技術(shù),是一個去中心化的公共帳簿,記錄了比特幣網(wǎng)絡(luò)上發(fā)生的全部交易,那么,下面…
2023-08-24 -
比特幣提現(xiàn)流程是怎么樣的?比特幣在哪里提現(xiàn)?
比特幣是一種數(shù)字貨幣,它最初是用以在網(wǎng)絡(luò)上開展交易的,自打比特幣被開發(fā)出來后,它已經(jīng)成了全球范圍內(nèi)的一種熱門的投資工具和付款方式,那么,比特幣提現(xiàn)流程是怎么樣的呢…
2023-08-24 -
如何買賣比特幣算力?購買與出售算力收益如何?
算力就是礦機產(chǎn)出比特幣的速率/生產(chǎn)力,而它的單位轉(zhuǎn)換關(guān)系為1000G=1T、1000T=1P,而世界全網(wǎng)總算力約為2000P,1天的產(chǎn)量約能產(chǎn)出1800枚比特幣,約為1P=0.9枚比特幣,那么,…
2023-08-22 -
傳奇黑客Corben Leo查出KuCoin個資外泄!但白帽獎金僅5千美元
這篇文章主要介紹了傳奇黑客Corben Leo查出KuCoin個資外泄!但白帽獎金僅5千美元的相關(guān)資料,需要的朋友可以參考下…
2023-06-15 -
比特幣鉆石怎么挖?比特幣鉆石(BCD)挖礦教程步驟詳解
這篇文章主要介紹了比特幣鉆石怎么挖?比特幣鉆石(BCD)挖礦教程步驟詳解的相關(guān)資料,需要的朋友可以參考下本文詳細內(nèi)容介紹…
2023-06-06 -
一文詳解比特幣Layer2協(xié)議Ark:閃電網(wǎng)絡(luò)的替代方案?
這篇文章主要介紹了一文詳解比特幣Layer2協(xié)議Ark:閃電網(wǎng)絡(luò)的替代方案?的相關(guān)資料,需要的朋友可以參考下本文詳細內(nèi)容介紹…
2023-05-31 -
usdt與比特幣怎么提現(xiàn) 在交易所app中鏈上提現(xiàn)和內(nèi)部轉(zhuǎn)賬流程詳解
usdt和比特幣app怎么提現(xiàn)?提現(xiàn)主要分為兩種類型,一種是鏈上提現(xiàn),一種是內(nèi)部轉(zhuǎn)賬,此處以USDT為例為您演示操作過程…
2023-05-21