hao86下載站:值得大家信賴的游戲下載站!

首頁 > 區(qū)塊鏈 > BTC 生態(tài)擴(kuò)容方案巡禮:BitVM,蝕刻的藝術(shù)

BTC 生態(tài)擴(kuò)容方案巡禮:BitVM,蝕刻的藝術(shù)

時(shí)間:2023-12-28 22:11:07
來源:hao86下載
區(qū)塊鏈

【#區(qū)塊鏈# #BTC 生態(tài)擴(kuò)容方案巡禮:BitVM,蝕刻的藝術(shù)#】

比特幣網(wǎng)絡(luò)上智能合約是如何實(shí)現(xiàn)的?


撰文:Simon shieh


前言回顧


上一篇《BTC 生態(tài)擴(kuò)容方案巡禮:銘文何去何從》中,我們討論了熱門的銘文生態(tài)的技術(shù)原理和可能存在的安全問題,并且提到了用遞歸銘文來實(shí)現(xiàn)智能合約的可能性。但是因?yàn)?Luke 對(duì) Taproot 腳本的限制,遞歸銘文似乎有了一些障礙,那在比特幣網(wǎng)絡(luò)上實(shí)現(xiàn)智能合約有沒有其他的可能性呢?


區(qū)塊鏈開發(fā)商 ZeroSync 的聯(lián)合創(chuàng)始人 Robin Linus,在 2023 年 10 月 9 日發(fā)表了一篇名為「BitVM:在比特幣上進(jìn)行所有運(yùn)算(BitVM:Compute Anything on Bitcoin)」的論文,其中提出了一個(gè)計(jì)劃,旨在將智能合約引入比特幣區(qū)塊鏈。

該論文提出了一個(gè)非常有趣的思路,可以用 taproot 完成幾乎所有的任意計(jì)算,并使用這些計(jì)算來驗(yàn)證在比特幣鏈下發(fā)生的事情。其中的訣竅是,將所有的邏輯都放在鏈下,并在其他人斷言了不誠實(shí)的結(jié)果時(shí),在鏈上用少數(shù)幾步計(jì)算來挑戰(zhàn)這些結(jié)果。


換句話說,就是將一個(gè) Verifier 的邏輯放在比特幣網(wǎng)絡(luò)中,利用比特幣的強(qiáng)共識(shí)安全,成為任何圖靈完備運(yùn)算層的可信第三方,再用 Optimistic Rollups 的原理,來實(shí)現(xiàn)鏈外計(jì)算結(jié)果的驗(yàn)證。


那么怎么實(shí)現(xiàn)將一段 Verifier 的邏輯放在比特幣網(wǎng)絡(luò)中呢?為了和上一節(jié)的「銘刻」相呼應(yīng),我愿稱之為在比特幣網(wǎng)絡(luò)上進(jìn)行電路「蝕刻」的技術(shù)。


邏輯門電路


在你的電腦或手機(jī)內(nèi)部,電流通過傳遞一系列的 1 和 0 來實(shí)現(xiàn)計(jì)算機(jī)的所有功能。這是通過數(shù)以百萬計(jì)的微小組件——邏輯門(logic gates)——來實(shí)現(xiàn)的。這些邏輯門是構(gòu)成計(jì)算機(jī)芯片的基本元素。


每個(gè)邏輯門都會(huì)接收一個(gè)或兩個(gè)「比特(bit)」的信息,每個(gè)比特要么是 1,要么是 0。然后,邏輯門根據(jù)設(shè)定的規(guī)則執(zhí)行一個(gè)簡單的邏輯運(yùn)算,如「與(AND)」、「或(OR)」或「非(NOT)」等操作。這些運(yùn)算產(chǎn)生的結(jié)果同樣是一個(gè)比特,也是 1 或 0。完成運(yùn)算后,這個(gè)結(jié)果又被傳遞到下一個(gè)邏輯門。


這種基于簡單邏輯運(yùn)算的系統(tǒng)產(chǎn)生了啟示:即使是最復(fù)雜的計(jì)算和功能,也都可以通過組合大量簡單的邏輯運(yùn)算來實(shí)現(xiàn)。這種邏輯門的組合和協(xié)作是現(xiàn)代計(jì)算機(jī)和電子設(shè)備能夠執(zhí)行復(fù)雜任務(wù)的基礎(chǔ)。通過這些基本的邏輯操作,電腦能夠處理復(fù)雜的算術(shù)運(yùn)算、數(shù)據(jù)存儲(chǔ)、圖像渲染等功能。


下圖是一個(gè)非常特殊的邏輯門,叫做「與非門」(NAND gate),它可以構(gòu)造任意類型邏輯門電路,當(dāng)然,它不可能有其它專用類型的門那么高效,但還是能做到的。BitVM 的邏輯門電路就由與非門組成。



比特幣上如何蝕刻與非門


在現(xiàn)有的比特幣腳本上構(gòu)造與非門(NAND gate)可以通過結(jié)合哈希鎖和兩個(gè)可能不太為人所熟知的操作碼:OP_BOOLAND 和 OP_NOT 來實(shí)現(xiàn)。


首先,哈希鎖可以用來創(chuàng)建一個(gè)分支腳本,這個(gè)腳本可以通過兩種方式中的一種來花費(fèi):要么滿足哈希鎖,要么滿足哈希鎖 B。這樣,路徑 A 將 1 輸出到堆棧,而路徑 B 將 0 輸出到堆棧。


通過滿足特定哈希鎖,你可以「解鎖」一個(gè)比特,這個(gè)比特作為我們要構(gòu)造的 NAND 門的輸入之一。由于你只能滿足其中一個(gè)路徑的要求,所以這種方法只允許用戶一次提交一個(gè)比特。


與非門的邏輯是接收兩個(gè)比特作為輸入,輸出一個(gè)比特。如果兩個(gè)輸入比特都是 1,則輸出 0;如果輸入是其他組合,則輸出 1。使用兩個(gè)哈希鎖技巧,可以提交這兩個(gè)輸入,并驗(yàn)證輸出是否正確,這就是 OP_BOOLAND 和 OP_NOT 的用途所在。


OP_BOOLAND 的操作與與非門相反:如果兩個(gè)輸入都是 1,則輸出 1;任何其他輸入組合都會(huì)產(chǎn)生 0。OP_NOT 則輸出與輸入相反的值。因此,通過結(jié)合使用這兩個(gè)操作碼,可以在腳本堆棧中取兩個(gè)輸入并進(jìn)行反和操作。最后,可以使用 OP_EQUALVERIFY 以及哈希鎖技巧來驗(yàn)證斷言的輸出。如果堆棧中實(shí)際的與非操作結(jié)果與用戶斷言的輸出不一致,腳本就無法通過驗(yàn)證。


這樣,就在比特幣腳本中「蝕刻」了與非門電路,實(shí)際上是通過比特幣腳本來強(qiáng)制執(zhí)行虛擬的與非門操作。



如何蝕刻大規(guī)模電路


雖然這個(gè)利用 Taproot 腳本實(shí)現(xiàn)電路蝕刻的想法很酷,但是別說像 PC 那種超大規(guī)模電路了,就是要實(shí)現(xiàn)任意一組計(jì)算,都需要成千上萬的與非門電路,那在比特幣有限的 Taproot 腳本空間里,如何覆蓋復(fù)雜計(jì)算呢?


BitVM 提出了 Taproot 腳本樹(Taproot Tree)的方法。為了在比特幣腳本中實(shí)現(xiàn)復(fù)雜的計(jì)算過程,人們可以通過串聯(lián)邏輯門來構(gòu)建計(jì)算電路。在這個(gè)方案中,哈希鎖被用來綁定各個(gè)門,從而實(shí)現(xiàn)順序執(zhí)行的邏輯操作。具體來說,如果一個(gè)門的腳本根據(jù)不同的哈希原像(哈希明文值)輸入產(chǎn)生不同的輸出結(jié)果 C1 或 C2,那么下一個(gè)門會(huì)使用與之相匹配的哈希鎖值作為其輸入。


這種方法可以實(shí)現(xiàn)一種懲罰機(jī)制,即如果試圖謊報(bào)前一個(gè)門的結(jié)果,就只能揭曉另一個(gè)哈希鎖的原像。這種機(jī)制可以用于兩個(gè)用戶之間的交互式計(jì)算,其中他們預(yù)先同意參與特定的計(jì)算任務(wù),然后將計(jì)算過程分解成只由與非門組成的電路。他們需要為電路中的每個(gè)門選擇合適的哈希鎖,并將其編碼進(jìn)鎖定 UTXO 的腳本樹中。


然后通過多個(gè)地址組成一個(gè) Taproot 地址矩陣,再通過 Taproot Tree 的方式將邏輯電路蝕刻到一系列樹狀結(jié)構(gòu)相連的 UTXO 交易的 Taproot 腳本中,最終形成一個(gè)可以處理一定計(jì)算任務(wù)的「類合約」邏輯電路。


欺詐挑戰(zhàn)


欺詐挑戰(zhàn)是 OP(Optimism Rollup)技術(shù)的核心(雖然至今都沒有真的實(shí)現(xiàn)~),思想是在一個(gè) batch 的交易被批量提交之前,挑戰(zhàn)者對(duì)認(rèn)為有錯(cuò)的交易發(fā)起欺詐挑戰(zhàn)(質(zhì)押對(duì)賭),主網(wǎng)上的 Verifier 合約會(huì)根據(jù)狀態(tài)根在執(zhí)行后的變化來判斷提交者是否作惡,然后分配雙方質(zhì)押的資產(chǎn)。


而在 bitVM 中,腳本樹被設(shè)計(jì)成兩個(gè)電路,除了允許證明者提交到一個(gè)電路之外,還需要挑戰(zhàn)者能夠挑戰(zhàn)證明者的聲明。這可以通過預(yù)簽名一系列的交易來實(shí)現(xiàn)。這些預(yù)簽名交易通過「挑戰(zhàn) ->應(yīng)答 ->挑戰(zhàn) ->…」的方式連接。如果某一方停止一段時(shí)間后,另外一方就會(huì)贏得挑戰(zhàn)并回收雙方的存款。



上圖展示了一系列預(yù)先簽名的交易:


  • 挑戰(zhàn):Vicky (挑戰(zhàn)者 / 驗(yàn)證者)在腳本路徑中釋放一個(gè)原像(這些原像只有挑戰(zhàn)者知道),用作對(duì)證明的挑戰(zhàn);
  • 應(yīng)答:Paul (證明者)執(zhí)行對(duì)應(yīng)的邏輯門,將資金發(fā)回初始的腳本中;


在幾輪的查詢后可以迅速駁斥任何一個(gè)不一致的聲明。如果證明者停止在鏈下與挑戰(zhàn)者合作,挑戰(zhàn)者就會(huì)強(qiáng)制證明者在鏈上合作:挑戰(zhàn)者每解鎖一個(gè)哈希鎖,使得證明者的 UTXO 中的每個(gè) NAND 門對(duì)應(yīng)的 Taproot 葉子節(jié)點(diǎn)只有在證明者知道挑戰(zhàn)者持有的一個(gè)原像時(shí)才可以被花費(fèi)。證明者可以通過揭示其輸入和輸出來證明給定的 Taproot 葉子節(jié)點(diǎn)執(zhí)行正確。其前提是挑戰(zhàn)者通過揭露對(duì)應(yīng) Tapleaf 的哈希的原像來解鎖它,通過二分查找的方式,挑戰(zhàn)者可以在經(jīng)過有限輪 (O(logn))的挑戰(zhàn)和應(yīng)答后鎖定證明者的錯(cuò)誤。


整個(gè)過程涉及到多輪交互,以確保合約能夠正確結(jié)算。挑戰(zhàn)者可以不斷挑戰(zhàn)證明者,直到證明者證實(shí)了每個(gè)門的正確結(jié)果,或者在證明者無法響應(yīng)挑戰(zhàn)的情況下,挑戰(zhàn)者可以在特定時(shí)間后提取資金。在理想情況下,所有操作都在鏈下進(jìn)行,雙方協(xié)作完成結(jié)算,但如果合作破裂,雙方可以通過鏈上的挑戰(zhàn)游戲來確保合約得到正確的解決。


落地障礙與安全性問題


這項(xiàng)提議涉及處理和生成的數(shù)據(jù)量極其龐大。使用的 Taproot 腳本樹可能包含數(shù)十億個(gè)葉子節(jié)點(diǎn),而相關(guān)的預(yù)先簽名交易的處理時(shí)間可能至少需要幾個(gè)小時(shí),以確保準(zhǔn)確的結(jié)算。每個(gè) Taproot 地址的預(yù)設(shè)解鎖條件執(zhí)行都需支付礦工費(fèi),因此地址組合越多,成本也越大。


這種方案的一個(gè)主要限制在于,它只適用于兩個(gè)參與者之間的交互:一個(gè)作為證明者,證明其執(zhí)行的準(zhǔn)確性;另一個(gè)作為驗(yàn)證者,挑戰(zhàn)前者的聲明。雖然未來的研究可能會(huì)找到方法讓更多參與者加入,但目前看來還沒有明確的解決方案。


在合作結(jié)算的場(chǎng)景中,所有參與者必須在線,這對(duì)于協(xié)議的實(shí)用性和便利性構(gòu)成了一定的限制。


在安全性方面,主要有以下幾點(diǎn)安全風(fēng)險(xiǎn):


1、由于成本的限制,必然大量的計(jì)算工作要放在鏈下進(jìn)行,鏈下計(jì)算就存在中心化服務(wù)的一些常見安全風(fēng)險(xiǎn)。

2、大量數(shù)據(jù)保存在鏈下,數(shù)據(jù)可用性和數(shù)據(jù)安全性也是必須要考慮的風(fēng)險(xiǎn)點(diǎn)

3、對(duì)于所蝕刻的電路本身是否存在邏輯漏洞也是一個(gè)安全風(fēng)險(xiǎn)點(diǎn),由于電路的不易讀性,需要付出更多的審計(jì)成本或形式化驗(yàn)證成本。


Metatrust 曾經(jīng)協(xié)助 Uniswap 進(jìn)行了全面的形式化驗(yàn)證工作,并在 ZK 電路審計(jì)和形式化驗(yàn)證方面有非常豐富的經(jīng)驗(yàn),可以為 BitVM 生態(tài)的安全落地,提供保障。


上兩篇的方案都是今年剛火熱起來的技術(shù)方案,下一篇,我們將介紹一個(gè)更加古老,更加具備「正統(tǒng)性」的方案,閃電網(wǎng)絡(luò)的升級(jí)版本——Taproott Assets。

小編推薦下載

相關(guān)文章

更多>>

資訊排行

同類軟件下載