從銘文到智能合約,比特幣生態技術演進全剖析
作者:Cynic,CGV Research
比特幣,作為第一個成功的去中心化數位貨幣,自2009年問世以來,一直是數位貨幣領域的核心。作為一種創新的支付方式和價值儲存手段,比特幣引發了全球範圍內對加密貨幣和區塊鏈技術的廣泛關注。然而,隨著比特幣生態的持續成熟和擴展,它也面臨著多種挑戰,包括交易速度、擴展性、安全性以及監管問題。近期,以BRC20為首的銘文生態率先引爆市場,多款銘文實現超百倍漲幅,比特幣鏈上交易嚴重堵塞,平均Gas最高超過300sat/vB。於此同时,Nostr Assets的空投進一步吸引市場關注,BitVM、BitStream等協議設計白皮書被提出,比特幣生態方興未艾,暗藏爆發之勢。CGV research團隊通過全面盤點比特幣生態的當前狀態,涵蓋技術進展、市場動態、法律法規等,對比特幣技術進行深入分析和審視市場趨勢,我們希望提供一個關於比特幣發展的全景視角。文章首先回顧了比特幣的基本原理和發展歷程,隨後深入探討了比特幣網絡的技術創新,如閃電網絡、隔離見證等,同時對其未來的發展趨勢進行預測。
資產發行:從染色幣說起
銘文之火,本質在於其為普通人提供了一種低門檻發行資產的權利,同時享有簡單性、公平性與便利性。比特幣上銘文協議的產生在2023年,但是早在2012年,就存在利用比特幣實現資產發行的設想,稱之為染色幣(Colored Coin)。
染色幣:早期嘗試
染色幣是指一組使用比特幣系統來記錄除比特幣以外資產的創建、所有權和轉讓的類似技術,可以用於追蹤數位資產以及第三方持有的有形資產,並通過染色幣進行所有權交易。所謂染色,指的是對比特幣UTXO中添加特定的信息,使其與其他比特幣UTXO進行區分,這樣就為同質化的比特幣之間帶來了異質性。通過染色幣技術,發行的資產具備眾多和比特幣相同的特性,包括防止雙花、隱私性、安全性、透明性與抗審查性,保證交易的可靠。值得注意的是,染色幣所定義的協議,並不會被一般的比特幣軟體所實現,因此需要使用特定的軟體才能夠對染色幣相關交易進行識別。很顯然,只有在認同染色幣協議的群體中,染色幣才具備價值,否則,異質化的染色幣將失去其上色的屬性,回退到純粹的satoshi。一方面,小規模社區所共同認可的染色幣可以借助比特幣的眾多優點進行資產發行與流通;另一方面,染色幣協議想要通過軟分叉合併進最大共識的Bitcoin-Core軟體幾乎是不可能的。Open Assets2013年底,Flavien Charlon提出Open Assets Protocol,作為染色幣的一種實現。資產發行者利用非對稱密碼學計算資產ID,保證只有持有資產ID私鑰的用戶才能發行相同的資產。對於資產的元數據,利用OP_RETURN操作碼存儲到腳本中,稱元數據為marker output,在不污染UTXO的前提下存儲了染色信息。由於利用了比特幣的公私鑰密碼學工具,資產發行可以由多簽進行。
EPOBC2014年,ChromaWay提出EPOBC(enhanced, padded, order-based coloring)協議,協議包含兩類操作,genesis與transfer,genesis用於資產的發行,transfer用於資產的轉移。資產的類型無法顯示編碼區分,每一次genesis交易就發行一個新的資產,發行時就確定總量。EPOBC資產必須通過transfer操作轉移,如果EPOBC資產作為非transfer操作交易的輸入,資產會發生丟失。關於EPOBC資產的額外信息,是通過比特幣交易中的nSequence字段進行存儲的。nSequence是比特幣交易中的保留字段,由32bit組成,其最低六位用於確定交易類型,低6-12位用於確定padding(用於滿足比特幣協議的抗粉塵攻擊要求)。使用nSequence存儲元數據信息的優勢在於其不增加額外的存儲。由於沒有資產ID進行標識,每個EPOBC資產的交易必須追溯到genesis交易以確定其類別及合法性。
Mastercoin/Omni Layer
和上述協議相比,Mastercoin的商業落地更加成功。2013年,Mastercoin進行了歷史上第一個ICO,籌集5000BTC,開啟了新的時代。現在人們所熟知的USDT,最初是通過Omni Layer發行在比特幣上的。Mastercoin對比特幣的依賴程度更低,更多地選擇在鏈下維護狀態,鏈上只保存最小化的信息。可以認為,Mastercoin將比特幣視為一個去中心化的日誌系統,通過任意的比特幣交易發布資產的變動操作。而對於交易有效性的驗證,是通過持續掃描比特幣區塊,維護一個鏈下的資產數據庫來進行的,該數據庫保存著地址與資產的映射關係,其中地址復用了比特幣的地址體系。
早期的染色幣,基本使用腳本的OP_RETURN操作碼來存儲關於資產的元數據,在SegWit與Taproot升級後,新的衍生協議有了更多的選擇。SegWit是Segregated Witness的縮寫,簡單而言,就是將Witness(交易中的input scipt)從交易中分離。分離的主要原因在於防止節點通過修改input script來進行攻擊,但同時也附帶了一個好處,變相增大了區塊的容量,可以存放更多的witness數據。Taproot的一個重要特性是MAST,讓開發者能夠利用Merkle Tree在輸出中包含任意資產的metadata,用Schnorr簽名提升間接性、可拓展性,並且能夠通過閃電網絡進行多跳交易。
Ordinals\&BRC20及仿盤:盛大的社會實驗
從廣義的角度來說,Ordinals包含四個組成:
- 一個BIP,為sats定序
- 一個indexer,利用Bitcoin Core Node來追蹤所有satoshi的位置(序號)
- 一個錢包,進行ordinal相關交易
- 一個block explorer,識別ordinal相關交易
當然,核心還是BIP/協議。
Ordinals通過定義一套排序方案(根據被挖出的順序從0開始排序),為Bitcoin中的最小單位Satoshi賦予了序號,令原本同質化的Satoshi擁有了異質屬性,帶來了稀缺性。
可以復用BTC的基礎設施,單簽、多錢、時間鎖、高度鎖等,並且無需顯式創建ordinal numbers,匿名性好,沒有顯式的鏈上足跡。缺點同樣明顯,大量的小額且不使用的UTXO會增加UTXO集合的大小,更嚴重的說法可以稱之為粉塵攻擊。此外,索引所占的空間很大,每次花費特定sat需要提供
- 區塊鏈頭
- 到創建該sat的coinbase交易的Merkle path
- 創建該sat的coinbase交易
以證明特定的sat被包含在特定的output中。銘文,就是對sats銘刻任意內容,具體方式是將內容放到taproot script-path spend scripts中,完全上鏈。銘刻內容根據http response格式序列化,被OPPUSH放進spend scripts的無法執行的腳本中,被稱為"envelopes"信封。具體而言,銘刻是在條件語句前添加OPFALSE,將銘刻內容以json格式放進無法進入的條件語句中。銘刻內容的大小被taproot腳本所限制,總共不能超過520bytes。由於taproot支付腳本要求現存的taproot輸出才能使用,銘文需要commit\&reveal兩步操作才能完成。第一步,創建一個承諾銘文內容的taproot輸出;第二步,利用銘文內容和對應Merkle Path來花費上一步的taproot輸出,在鏈上reveal銘文內容。銘文最初的目的是為BTC引入非同質化代幣NFT,然而新的開發者在其基礎上模仿ERC20創造了BRC20,為Ordinals帶來了發行同質化資產的能力。BRC20具備Deploy、Mint、Transfer等操作,而每次操作都需要commit\&reveal兩步執行,交易流程更繁瑣,成本更高。使用真實數據進行舉例:選中的部分為銘刻內容,進行解序列化後結果如下:Atomicals協議衍生的ARC20從設計上降低了交易的複雜度,將每單位的ARC20代幣與satoshi進行綁定,復用比特幣的交易體系。通過commit\&reveal兩步發行資產後,ARC20代幣之間的轉移可以直接通過轉移對應的satoshi完成。ARC20的設計可能更符合染色幣的字面定義,在原有的代幣上添加新的內容,使其具備成為新的代幣,新代幣的價值不會低於原有代幣,類似於金銀首飾。
客戶端驗證與下一代資產協議
客戶端驗證(client-side validation,CSV)是Peter Todd在2017年提出的概念,與其同時提出的還有一次性密封條(single-use-seals)的概念。簡單來講,CSV機制就是鏈下數據存儲、鏈上承諾、客戶端驗證。其中的思想,在之前的資產協議中也有部分體現。當前客戶端驗證的資產協議有RGB與Taproot Assets(Taro)。RGB除了客戶端驗證的特點之外,RGB採用Perdersen哈希作為承諾機制,還支持輸出盲化,發送支付請求的時候無需公開接收代幣的UTXO,而是發送一條哈希值,提供更強的隱私性與抗審查行。當然,在代幣被花費時,盲化的密值需要向接收方公開,以便其驗證交易歷史。此外,RGB添加了AluVM來實現更強的可編程性。當用戶進行客戶端驗證時,除了驗證發來的支付信息,還需要從支付者處接收該代幣所有交易歷史,一直追溯到該資產發行的創世交易,才能確保交易的終局性。驗證所有的交易歷史,才能夠保證所收到資產的有效性。Taproot AssetsTaproot Assets是閃電網絡的開發團隊Lightning Labs開發的又一項目,發行的資產可以在閃電網絡上即時、大量、低成本轉移。Taproot Asset完全以Taproot協議為中心進行設計,提升了隱私/拓展性。witness數據鏈下存儲,鏈上驗證,鏈下存儲可以存在本地,或者在信息倉庫中(稱為"Universes",類似git倉庫)。對witness的驗證需要從資產發行起的所有歷史數據,該數據通過Taproot Assets gossip層進行傳播。客戶端可以通過本地區塊鏈的拷貝進行交叉驗證。Taproot Assets採用Sparse Merkle Sum Tree來存儲資產的全局狀態,存儲開銷大,但是驗證效率高,通過proof of inclusion/non-inclusion能夠驗證交易,而無需回溯資產的交易歷史。
擴容:比特幣的永恆命題
儘管比特幣擁有著最高的市值,最高的安全性與最高的穩定性,但是其離最初的設想"一種點對點的電子現金系統"卻越來越遠。由於區塊的容量有限,交易的TPS、費用以及確認時間使得比特幣無法處理大量且頻繁的交易,十餘年來有多種協議試圖解決該問題。
支付通道與閃電網絡:比特幣原教旨主義方案
閃電網絡的工作原理是通過建立支付通道來實現的。任意兩個用戶之間可以建立支付通道,支付通道之間可以彼此連接,構成連通性更強的支付通道網絡,不直接具備通道的兩個用戶之間也可以通過多次跳轉來進行支付。例如,如果 Alice 和 Bob 想要進行多次交易,而不是每次都在比特幣區塊鏈上記錄,他們可以在他們之間打開一個支付通道。他們可以在這個通道中進行無數次交易,而整個過程只需要在區塊鏈上記錄兩次:一次是在打開通道時,另一次是在關閉通道時。這大大減少了等待區塊鏈確認的時間,也減輕了區塊鏈的負擔。當前閃電網絡節點超14000,通道數超60000,網絡中總容量超過5000BTC。
側鏈:比特幣中的以太坊路線
StacksStacks對自己的定位是比特幣的智能合約層,使用自己發行的token作為Gas token。Stacks使用微塊機制,比特幣和Stacks以同步的方式發展,它們的區塊同時被確認。在Stacks中,這被稱為"錨定塊"。整個Stacks交易塊對應於一個單獨的比特幣交易,實現了更高的交易吞吐量。由於同時產生區塊,比特幣充當了創建Stacks區塊的速率限制器,從而防止其對等網絡遭受拒絕服務攻擊。Stacks通過PoX的雙重螺旋機制實現共識,礦工發送BTC給STX質押者以競爭出塊資格,成功贏得出塊資格的礦工在順利完成出塊後能夠獲得STX獎勵。在這個過程中STX的質押者能夠按照比例獲得礦工發送的BTC。Stacks希望通過發行原生token來激勵礦工維護歷史賬本,但實際上沒有原生token也能實現激勵(見RSK)。
對於Stacks區塊鏈中的交易數據,通過OP_RETURN字節碼將交易數據的哈希保存至比特幣交易的腳本中,Stacks節點可以通過Clarity的內置功能讀取比特幣中存儲的Stacks交易數據哈希。Stacks幾乎可以算得上是一條比特幣的Layer2鏈,然而,資產的跨入跨出還存在一些瑕疵。在Nakamoto升級之後,Stacks支持發送Bitcoin交易完成資產的跨出,但是交易的複雜性導致比特幣鏈上無法進行驗證,只能通過多簽委員會來進行資產跨出的驗證。RSKRSK採用融合挖礦(Merge-Mine)算法,比特幣礦工可以幾乎無成本地幫助RSK進行出塊,獲取額外獎勵。RSK中沒有原生的token,仍採用BTC(RBTC)作為Gas Token。RSK有自己的執行引擎,對EVM兼容。
LiquidLiquid是比特幣的一條聯盟側鏈,節點準入為許可制,由十五個成員負責出塊。資產採取lock\&mint的方式,通過發送資產到BTC上Liquid的多簽地址,資產跨入Liquid側鏈;跨出時將L-BTC發送到Liquid鏈上的多簽地址即可。多簽地址的安全性為11/15。Liquid專注於金融應用,為開發者提供了與金融服務相關的SDK。當前Liquid網絡TVL為約3000BTC。
Nostr Assets:中心化的進一步加強
Nostr Assets最初項目名為NostrSwap,是一個BRC20的交易平台。2023-08-03,升級為Nostr Assets Protocol,支持Nostr生態系統中的所有資產轉移,資產的結算和安全性由Lightning Network處理。Nostr Assets使得Nostr用戶可以用Nostr公私鑰來發送和接受閃電網絡資產,除了deposit和withdrawl,Nostr Assets協議上的交易都是0 gas且加密的,交易細節保存在Nostr Protocol的relay上,用IPFS進行快速和高效的存取,同時支持自然語言交互,不需要複雜頁面。Nostr Assets為用戶提供了一種簡單、便捷的資產轉移、交易方式,結合Nostr社交協議的流量效應,未來可能有很大的應用場景。然而,從本質上來看,只是一種用 Nostr 消息來控制(托管)錢包的方法。用戶通過在閃電網絡中轉賬將資產存入Nostr Assets的Relay,相當於將資產存入了中心化交易所。當用戶間想要在Nostr Assets中進行資產的轉移和交易時,將使用Nostr密鑰對簽名的消息發送至服務端,服務端通過驗證後只需在內部賬本上進行記錄,不需要在閃電網絡或是主網真正執行,所以能夠實現零Gas與高TPS。
BitVM:可編程性與無限擴容
"Any computable function can be verified on Bitcoin"------Robin Linus, creator of BitVM
BitVM由ZeroSync創始人Robin Linus提出,運用Bitcoin現有的OP Code(OPBOOLEAN, OPNOT)組成與非門電路,把程序分解成原始的與非門電路組合,將複雜程序的spend script root放進Taproot交易中,以較低成本鏈上存儲。根據計算理論,所有計算邏輯都能使用與非門電路構建,所以理論上BitVM能夠在Bitcoin實現圖靈完備,進行所有計算,但是在實際中還有許多限制。BitVM仍然採取P2P的運行模式,借鑒OP Rollup的思路,存在兩個角色,prover和verifier,每次prover和verifier之間共同構建一個交易,存入保證金,prover給出結果,verifier如果計算得出不同結果,向鏈上提交fraud proof,以罰沒prover的資金。"The real killer app is scaling Bitcoin. [Robin Linus isn't] a big fan of smart contracts. He's not a big fan of increasing Bitcoin's expressivity. He really is interested in making it so that Bitcoin can process millions of transactions per second."------ Super Testnet, BitVM developer
BitVM提供了更好地可編程性,但是怎麼與擴容聯繫起來?實際上,BitVM從一開始就是為了鏈下計算、鏈上驗證的擴容而服務的,從prover、verifier這些命名也能夠看出端倪。BitVM的最佳用例,實際上是最小化信任的橋與ZKP擴容(ZK Rollup)。BitVM的提出其實也是無奈之舉,想在比特幣社區中獲得支持,通過提案增加OPCODE的難度太高,所以只能退而求其次利用現有的OPCODE實現新的功能。BitVM提出了擴容的新範式,但是在現實中存在許多挑戰。• 過於早期:EVM有一整套VM架構,BitVM卻只有一個能驗證字符串是0還是1的函數。• 存儲開銷:用NAND門構建程序需要也許幾百MB的數據,十億級的taptree leaves• P2P:當前仍是兩方交互,prover-challenger架構存在激勵問題,正在考慮擴展到1-N或者N-N,像理想中的OP Rollup一樣(單個誠實假設)。
結語
通過全文的盤點不難看出,由於主網處理能力的限制與計算能力的缺乏,比特幣如果想要培育更加繁榮多樣的生態,必須將計算轉移到鏈下。一方面,鏈下計算、鏈下驗證的客戶端驗證方案,利用比特幣交易中的某些字段存儲關鍵信息,將比特幣主網視為分佈式的日誌系統,利用其抗審查性與可靠性確保關鍵數據的可用,從某種意義上說類似於主權Rollup。這種方案不需要修改比特幣的協議層,可以自由構建自己所需的協議,在當前可行性更高,但是不能完全繼承比特幣的安全性。另一方面,也有人在推進鏈上驗證的工作,嘗試著利用現有的工具,實現在比特幣上的任意計算,進而利用零知識證明技術實現高效的擴容。但是當前方案仍然非常早期,計算成本過高,預計短期無法落地。當然有人會問,以太坊為首的一眾區塊鏈都擁有高速的計算能力,為什麼不轉向以太坊,而一定要在比特幣上把事情重新做一遍?Because It's Bitcoin.因為這是比特幣。