比特幣智能合約時代揭开帷幕——AVM原子虛擬機白皮書(WIZZ官方翻譯版)

2024-05-29 00:05:30

通過模擬比特幣虛擬機在比特幣上實現智能合約。

原文鏈接:https://github.com/atomicals/avm-whitepaper/blob/main/avm.md

摘要

到目前為止,比特幣上所有的疊加數字資產協議均依照固定規則來創建和轉移數字資產。通過允許程序員定義狀態機邏輯來創建和管理這些規則,我們可以為疊加數字資產制定完全靈活的(圖靈完備的)智能合約。我們提出了一種解決方案,將比特幣作為全球數據庫使用,將智能合約代碼存儲在交易中,並在沙盒環境中通過疊加數字資產索引器執行這些代碼。原始比特幣腳本操作碼指令集被採用作為編程語言,因其具備在資源有限的環境中高效執行的所有必要屬性。狀態哈希用來追蹤疊加交易,並為參與者提供一種方便的方式來驗證他們的同步狀態。我們提出的這個解決方案是比特幣疊加數字資產協議自然演進的一步,同時也是測試原始比特幣操作碼的平臺,展示其靈活性和安全性。

1. 引言

比特幣點對點電子現金系統[1]最初主要被用作價值存儲,因此被稱為“數字黃金”,而作為交換媒介的功能則較為次要。在中本聰離开之前,他出於安全考慮,特別是為了避免潛在的拒絕服務攻擊,禁用了許多用於高級腳本編寫的原始操作碼(Op Codes)。這些被禁用的操作碼主要包括算術和二進制操作,這些都是开發人員在最基本的編程環境中所依賴的基礎操作。沒有這些關鍵操作碼的支持,比特幣的應用开發人員和最終用戶的可用功能非常有限。特別是“OP_CAT”(數據連接)操作碼,它本可以用來創建自定義的消費和轉移約束,即所謂的契約。因此,由於這些歷史性的決策,比特幣未能成為中本聰最初設想的強大智能合約平臺,而只能作為一種數字黃金存在。簡而言之,由於這些關鍵操作碼的禁用,比特幣不得不僅僅作為數字黃金存在,無法發展成完整的智能合約系統,以此來保護這個新興的電子現金系統。

“比特幣的本質在於,一旦0.1版本被發布,其核心設計便在其生命周期內被固定下來。正因如此,我打算設計它能夠支持我能想到的所有交易類型。問題是,每一種交易類型都需要特別的支持代碼和數據字段,不管這些是否被使用,每次只能處理一種特定情形。這就可能導致特殊情形的過多膨脹。腳本提供了一種解決方案,它將問題進行泛化,使得交易雙方可以將他們的交易描述為一個由節點網絡來評估的謂詞。” ——中本聰[2]

自從比特幣首次禁用部分操作碼以來,已引入了多種保護措施。其中一個重要的限制是 MAX_SIGOPS,它限制了任何特定交易中允許的最大籤名操作次數。通過回顧歷史,我們可以觀察到這些原始操作碼在比特幣的分叉版本如BSC和BSV中的表現;這些分叉幾年前重新激活了大多數原始操作碼。到目前為止,這些操作碼並未引發任何安全問題或拒絕服務攻擊,也幾乎沒有引起任何爭議。相反,它們極大地拓展了這些比特幣分叉的开發潛力。

盡管比特幣智能合約目前存在限制,但已經出現了一些允許在比特幣本身上創建和轉移數字資產的疊加協議。第一個主流的非同質化代幣標准是稱為Ordinals的協議,緊接着推出了一種同質化代幣標准BRC20。此後不久,湧現出了更多其他數字資產協議,例如Atomicals數字對象和ARC20,後者利用satoshi單位作為账戶單位,以及Bitcoin Stamp和最近的Runes同質化代幣協議(2024年4月發布)。這一代疊加協議基本上通過比特幣交易來創建和管理數字資產,而疊加協議索引器則通過直接從特殊的比特幣交易中讀取數據來追蹤和管理數字資產的生命周期。這些協議中缺少的是开發人員自定義數字資產行為的能力——直到現在,還沒有一種方法能為這些疊加協議創造高級智能合約。

我們提出了一種通過模擬比特幣虛擬機及其腳本解釋器來為各類疊加數字資產創建和執行智能合約的方法。在這種方法中,比特幣區塊鏈不僅為鏈上存儲的智能合約程序提供時間戳和數據,同時,這些程序的執行也通過各種疊加協議索引器在一個沙盒環境中進行。疊加協議索引器節點由應用程序开發者、服務提供者和用戶共同管理,共同形成了一種自發的共識。這一概念及其技術可廣泛適用於所有疊加協議,只需要針對各自的疊加協議索引器作適當調整即可。

我們展示了原始比特幣設計的力量與優雅。這種新的範式可作為測試各種操作碼的平臺——盡管它是針對數字資產疊加協議的——我們希望比特幣最終能夠重新啓用所有原始操作碼,從而釋放中本聰創造的最大潛力。

2. 比特幣作為全球數據庫

比特幣網絡本質上是為解決雙重支付問題而設計的分布式時間戳服務器。系統的設計不僅適用於貨幣交易的傳輸和存儲,還可以用於存儲發票、大型文件等數據。中本聰包括了各種操作碼,如OP_RETURN,允許附加任意數據,以及OP_PUSHDATA4,允許數據推送高達4GB。甚至第一筆比特幣交易——創世幣基交易——也包括了任意文本數據:“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”。

多年來,人們一再嘗試通過將最大推送大小限制為520字節,並將OP_RETURN的使用限制在40字節(後來擴展到80字節)來阻止比特幣被用作數據存儲介質。確實,這曾被視為一種可能導致“區塊鏈膨脹”失控、擠佔純貨幣用途的攻擊向量。這在當時看似是一種合理的保護措施。

近年來,比特幣开發者通過引入隔離見證(SegWit)和Taproot升級,有效地重新引入了早期比特幣版本類似的大量任意數據存儲能力。應用开發者迅速利用這一機會,利用比特幣作為不可變的全球账本來存儲有價值的數據。比特幣上的數字資產市場呈現出指數級增長,市值達到數十億美元,並在相對較短的時間內為礦工創造了數億美元的網絡費用。

3. 疊加協議

哈爾·芬尼(Hal Finney)提出並預測了利用比特幣作為全球化、去中心化、一致性數據庫來支持“疊加其他協議”的概念。這一基本思想涉及到通過信號傳遞來創建疊加資產,並將這些資產與特定的交易歷史相關聯。這一機制為比特幣作為貨幣系統增添了新的維度,即交易輸出本身可以代表任何其他類型的數字資產,如代幣、積分、數字媒體,甚至是物理資產的代理權。

“在BitDNS线程的討論中,我提出了一個將其他協議疊加到比特幣上的想法。從某種角度來看,比特幣是一個全球性的、去中心化的、但又保持一致性的數據庫。

這個數據庫主要用於記錄硬幣的轉移,但它也可以用於更多其他用途。許多應用程序可以從一個全球一致的數據庫中受益。根據我對BitDNS的描述,這一機制將通過使用一種神祕且復雜的“腳本”系統向常規比特幣交易中添加額外的數據來實現。這些數據對當前的客戶端而言會顯示為NOP(無操作指令)並被忽略,但是疊加協議感知的客戶端會檢查這些NOP塊內的額外數據,並根據疊加協議進行解釋。

具體來說,我可以想象使用OP_NOP1來標記疊加數據,然後使用OP_PUSHDATA來推送特定數據,接着使用OP_DROP將數據從棧中移除,最後執行常規的交易操作碼。這對常規客戶端沒有任何影響,看起來就像是一筆普通的交易(可以是一筆虛擬交易,例如自己轉給自己0.01比特幣),但是能夠識別疊加協議的代碼會識別出這是一筆協議交易。

例如,比特幣可以用作一種廉價的時間戳服務,允許您證明某個文檔在某個特定日期之前已經存在。您需要做的只是創建一筆虛擬交易給自己,並修改客戶端來執行一個OP_PUSHDATA操作,將文檔的哈希值推送進去,然後用OP_DROP將其從棧中移除。這個哈希值將永久存在於區塊鏈中,並作為該文檔在那個日期存在的證據。” ——哈爾·芬尼[3]

首個獲得廣泛應用的疊加協議是Ordinals理論。根據Ordinals手冊的描述,單個satoshi可以刻錄任意內容,創建出獨特的比特幣原生數字工件。這些工件既耐用、不可變、安全,又去中心化,可以保存在比特幣錢包中,並通過比特幣交易進行轉移。

緊隨其後的2023年,开發者們認識到比特幣上需要一個同質化代幣標准,於是便开發出了BRC20。BRC20借助Ordinals理論建立了一個與錢包地址相關聯的疊加账戶模型,使其能夠發送和接收代幣單位,實際上是在Ordinals的基礎上創建了一個分層的疊加協議,而Ordinals本身就是一種基於比特幣的疊加協議。

到了2024年初,又出現了一個名為Atomicals協議數字對象的新協議,以應對代幣標准和索引技術市場的持續增長。如Atomicals指南所述,Atomicals協議是一個簡單但靈活的協議,適用於在使用未花費交易輸出(UTXO)的區塊鏈(如比特幣)上鑄造、轉移和更新數字對象(通常稱為非同質化代幣)。Atomical(或“原子”)是按照一些簡單規則組織數字所有權鏈的方式。Atomicals協議還包括了一個名為ARC20的同質化代幣標准,每個代幣單位至少由一個satoshi單位支持,並且使用與比特幣本身同樣的UTXO架構操作。

2024年初,另一個名為Runes的疊加協議被發布,它直接在Ordinals索引器中實施,以完善Ordinals理論的功能,最終也包括了一個同質化代幣標准。

4. 狀態機

到目前為止,比特幣上所有的疊加協議都是基於固定或預定義的狀態機運行的。這些疊加協議共有兩個主要組成部分:一是負責信號傳遞以創建數字資產,二是管理這些數字資產轉移的規則。這些狀態機規則被硬編碼在各自的疊加協議索引器中,开發者無法自定義創建或轉移規則。

我們提出了一種動態的狀態機編程模型,允許开發者完全自主地定義其數字資產的創建和轉移規則。這本質上使开發者能夠定義自己的元疊加協議規則,而無需創建新的協議索引器,而是可以利用現有的疊加協議索引器。

基本思想是允許开發者將其智能合約代碼存儲在區塊鏈上,使所有參與方都可以讀取和解釋。通過將代碼存儲在鏈上,可以確保在分布式且不相連的各方中以相同的方式執行邏輯,從而方便狀態的同步。智能合約編程語言應具備以下幾個重要屬性:

  • 確定性和可預測的運行時間。

  • 允許任意的靈活性(圖靈完備性)[4]。

  • 以及能在資源受限的系統上高效運行。

從這些要求可以看出,比特幣腳本非常適合用作定義數字資產創建和轉移規則的指令集。關鍵在於它需要支持任何類型的狀態轉換,同時限制執行時間以防止服務拒絕攻擊和程序無限循環。比特幣腳本是圖靈完備的,它是一個雙棧下推自動機(2-Stack PDA),由於使用了循環展开技術,不允許循環,因此具有運行時間可預測且與程序長度成线性關系的特點。

智能合約程序代碼被存儲在比特幣交易中,疊加協議索引器將代碼加載到內存中並一致地執行。所有相關方可以執行相同的邏輯,並達到相同的狀態轉換。

5. 狀態共識

狀態的同步可以通過狀態哈希(statehash)實現,這一機制將疊加協議索引器的內部狀態傳遞給外部觀察者。通過公开狀態哈希,分布式的各方可以輕松判斷他們是否遵循相同的規則並且是否彼此同步。

由於所有數據都存儲在鏈上並按時間順序加上時間戳,因此不需要復雜的狀態承諾同步機制。這使得任何人都可以在遵循相同規則的前提下,得出一致的狀態結果。

6. 虛擬數字資產

任何疊加協議都可以採用這種動態狀態機編程技術,允許數字資產在智能合約中進行虛擬化和實體化。本質上,這意味着我們可以將存款和提款的概念視為一種約定,因為其他所有事物都是基於區塊鏈上完整的交易歷史記錄來構建索引器狀態的約定。

在BRC20中,代幣余額是账戶的抽象表示,可以被描述為一種虛擬數字資產——即在另一種數字資產(比特幣)之上的數字資產。Atomicals ARC20代幣是保持與底層satoshi單位的親和力的抽象,但它們同樣也是一種虛擬數字資產。更准確地說,它們被稱為“虛擬數字資產”,因為它們的存在是在另一種數字資產(比特幣)之上的一個抽象。

進一步擴展這個類比,我們可以定義一個狀態機,它允許接受任何類型的代幣存入合約,並且之後可以取出,類似於以太坊區塊鏈的Solidity編程語言允許方法被標注為可支付(payable),表示可以向該方法支付以太幣,並根據智能合約程序的規則之後取回。這些數字資產的跟蹤和管理可以通過特殊的操作碼,如OP_FT_WITHDRAW和OP_NFT_WITHDRAW,以及一個允許智能合約狀態中的可支付方法接受代幣的機制來完成。

7. 系統架構

為確保腳本的一致性執行,腳本解釋器被設置在一個具有靜態或動態綁定、邊界明確的沙盒環境中。這種設置使得不同的編程語言和環境能夠調用沙盒並獲得一致的結果,從而確保執行的一致性。

沙盒解釋器是一個簡化版的比特幣腳本解釋器,它在一些關鍵方面有所不同,例如它可以直接接受執行鎖定腳本(scriptPubKey)和解鎖腳本參數(scriptSig),以及其他一些有助於虛擬數字資產管理的有用參數。這些設計的目的是簡化和加強虛擬數字資產的處理和管理,使得它們可以更高效、更安全地在比特幣網絡上操作。

8. 結論

我們提出了一種系統,通過模擬比特幣虛擬機來在比特幣上實現疊加數字資產的智能合約。迄今為止,比特幣上的疊加數字資產完全受制於預定義的狀態轉換規則,這些規則只允許這些資產的創建和轉移。為了解決這個局限性,我們开發了一種通用技術,將比特幣作為全球數據庫,將智能合約代碼存儲在交易中,並在疊加數字資產索引器的沙盒運行時環境中執行這些代碼。

原始的比特幣腳本指令集非常強大,因為它實現了一個雙棧下推自動機(2-Stack PDA),已被證明具有圖靈完備性。我們的系統使用狀態哈希,使得所有參與者都可以輕松地驗證他們的索引器狀態是否正確地同步。這個系統的設計非常靈活,不僅是現有疊加協議的自然擴展,還展示了原始比特幣腳本語言的巨大潛力。這種方法為比特幣生態系統內的疊加協議提供了更高級的功能,使其能夠支持更復雜的智能合約應用。

參考文獻

[1] Satoshi Nakamoto, "Bitcoin: A Peer-to-Peer Electronic Cash System" https://bitcoin.org/bitcoin.pdf, 2008.

[2] Satoshi Nakamoto, "The nature of Bitcoin is such that once version 0.1 was released, the core design was set in stone for the rest of its lifetime...", https://satoshi.nakamotoinstitute.org/posts/bitcointalk/126/, 2010.

[3] Hal Finney, "In discussion on the BitDNS thread I came up with an idea for overlaying other protocols onto Bitcoin...", https://bitcointalk.org/index.php?topic=2077.msg26888, 2010.

[4] Wikipedia contributors. "Turing completeness." Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, https://en.wikipedia.org/wiki/Turing_completeness, 2024

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

Layer2 格局劇變:Base 生態有哪些關鍵亮點?

在激烈競爭的 L2 賽道中,原本穩坐釣魚臺的 Arbitrum 和 Optimism 似乎面臨着前...

加密泡泡啊
120 3個月前

XRP 漲至 7.5 美元?分析師告訴 XRP 大軍為純粹的煙火做好准備!

加密貨幣分析師 EGRAG 表示,XRP 即將迎來關鍵時刻,價格可能大幅上漲,這取決於能否突破關鍵...

加密泡泡啊
128 3個月前

以太坊ETF通過後 將推動山寨幣和整個加密生態大爆發

比特幣ETF通過後市場動蕩,以太坊ETF交易前景分析 比特幣ETF通過後,市場出現了先跌後漲的走勢...

加密泡泡啊
145 3個月前

ZRO為啥這么能漲?

ZRO概述 ZRO代幣,全稱為LayerZero,是LayerZero協議的本地代幣,旨在作為治理...

加密泡泡啊
105 3個月前

今晚ETH迎來暴漲時代 op、arb、metis等以太坊二層項目能否跑出百倍幣?

北京時間7月23日晚上美股开盤後 ETH 的ETF开始交易。ETH的裏程碑啊,新的時代开啓。突破前...

BNBCCC
125 3個月前

Mt Gox 轉移 28 億美元比特幣 加密貨幣下跌 ETH ETF 提前發行

2014 年倒閉的臭名昭著的比特幣交易所 Mt Gox 已向債權人轉移了大量比特幣 (BTC),作...

加密圈探長
113 3個月前