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