比特幣的 NFT 協議自 2 月份面世以來,引發了一系列關注——從基於 Ordinals 的 NFT 到基於 Ordinals 的 BRC 20 代幣,但是對於 BRC 20 協議,一些比特幣研究人員認為,他們並不是最佳解決方案,類似於 RGB 這樣的比特幣二層,才是更好的選擇。
Mempool 播客在這一期節目請到了比特幣研究人員阿劍以及 Harshky Capital 的 Tech lead Jeffery Hu 來談論他們對包括 Brc 20 在內的比特幣二層的看法。
1. 比特幣為新的二層的做好了準備
Ordinals 由比特幣核心開發者 Casey Rodarmor 在 2022 年 2 月 2 日提出 BIP,到了 2023 年 1 月底上線,整個開發經過了差不多一年的時間,簡單來說,它用一種獨特的方式,把任意一段 4 MB 大小內容數據寫到比特幣上,每一段數據和比特幣的一個聰綁定。可以從兩個部分理解 Ordinals 這個協議,一個是 Ordinals 序數,一個是 Inscription 銘文:
-
Ordinals 序數:要 Ordinals 要先理解比特幣最小的貨幣單位 Satoshi 聰,一個比特幣等於1 億個聰,這些聰之間本來沒有差別,但是就像各國央行發行法幣時給法幣打上編號一樣。在比特幣 UTXO 記賬系統的基礎上,Casey 利用一套技術方案,給聰打上序號,並且追踪他們。
-
inscription 銘刻:當每個聰被打上編號之後,就可以將一段內容寫入見證隔離區,內容可以是圖片、文字、音視頻,甚至是代碼,只要大小在 4 MB 以下,這個過程也就是將藝術品和聰綁定,從而發行、流轉。
-
見證數據:包含腳本和簽名數據,每個字節計為 1 wu;
-
交易數據:包含發送方、接收方以及輸入和輸出的信息,每個字節為 4 wu;
比特幣實際上是一個去中心化的賬本系統,而這個賬本的核心是它的腳本系統——用來編寫交易規則的語言,這種語言不具備圖靈完備性,提供了執行交易和定制特定操作的功能。
Ordinals 在腳本中的邏輯實際上依賴比特幣腳本中的“op_if”的操作碼, 這個操作碼自比特幣誕生起就存在,由中本聰寫下。 “op_if”的意思是說,如果堆棧中出現了“ 0 ”和“op_if”,那麼“ 0 ”和“op_if”中間這一整段代碼都會被跳過,不會進入堆棧中去實際執行。
而 Ordinals 就是利用了這一點——當它需要附加銘文時,它先驗證一個簽名,然後向堆棧寫入“ 0 ”和“op_if”,而”0″和“op_if”中間的這段數據按照腳本設置被完整地跳過,而這段數據就是 Ordinals 銘文。
除了“op_if”,Ordinals 的存在還跟比特幣一次重大技術升級隔離見證有關。眾所周知,比特幣記賬是採用 UTXO 系統,而 UTXO 有自己的腳本公鑰,通常需要提供一些數據來完成腳本公鑰編程出來的驗證程序一筆錢才能被解鎖。原本,所有用於通過驗證程序的數據都會放在輸入腳本簽名的字段裡。 2017 年 8 月,比特幣採用了名為隔離見證(SegWit) 的軟分叉升級,通俗地說,通過把佔用大量存儲空間的簽名等數據,放置交易腳本末尾,在比特幣區塊大小不超過 4 MB 的限制下,區塊有更大空間,從而能進行更多的交易,以達到擴容的目的。
由於隔離見證是軟分叉,並非強制使用,開發者為了吸引大家使用隔離見證,便讓隔離見證上數據存儲價格更為低廉。而交易的大小是收取交比特幣的手續費的依據,因此,開發者採用對方法是對於見證隔離部分交易大小計算給予折扣——把交易數據結構分為交易數據和見證數據兩部分,在計算見證數據的大小時,使用的是 virtual Byte(vByte)為單位, 1 個 vByte 相當於 4 個權重單位(wu):
也就是說,見證部分的數據權重僅為交易部分的 25% ,交易費用也相應地為 25% ,同時,此前最大區塊大小由 1 MB 變更為 1 vMB,即 4 MB。
但是真正實現 Ordinals,還跟 Taproot 有關。在見證隔離的技術中,對每次輸入的數據大小做了專門的限制,但是到了 2021 年 11 月,比特幣再次發生重大升級 Taproot,移除對見證部分中數據量的限制,數據具體大小只受到隔離區域最大區塊 4 MB 的限制,同時,讓開發者可以在見證部分編寫更高級的腳本。
在一連串技術升級之後,讓之前沒有辦法放在比特幣鏈上對數據能夠存儲到鏈上,一步步為實現 Ordinals 打下基礎。
Ordinals 發布之後,社區先是用這個協議來發行 NFT,尤其是像 Yuga Labs 這樣知名的機構也發行了基於 BRC 20 的比特幣 NFT 之後,引起了行業廣泛關注,Mempool 也發布了專門的關於比特幣 NFT 的研究報告(https://mp.weixin.qq.com/s/AUnlV 5 R 6 jGsEXUD 3 BDVE 2 Q)。但是很快引起市場更大關注的是基於 Ordinals 發行代幣的 BRC 20 協議。
2. BRC 20 走 Omni Layer 的老路
在比特幣 NFT 熱潮之後,推特用戶@domodata 於 2023 年 3 月 8 日創建了比特幣上的 BRC-20 代幣標準。
BRC 20 一經面世,就引起了極大的關注,許多人希望藉著 Ordinals 風頭髮行代幣。首個在 BRC-20 上部署的代幣是“ordi”,致敬 BTC,Ordi 的總量也為 2100 萬個,每次鑄幣限制為 1000 個。 Ordi 引起市場極大追捧,如果按照 mint 價格計算,最高時漲幅超過 3000 倍,一度成為市場最熱的 meme 幣。但是在我們文章刊發的五月底,Ordi 的價格已經從最高時間 24 美元回落到 8 美元附近。
同時,就在 5 月 25 日,一家名為 Stably 的公司宣布,他們即將推出其美元(USD) 支持的穩定幣 Stably USD,作為本地發行的BRC 20 代幣,符號為#USD。
從技術上簡單解釋 BRC 20 ,它實際上就是利用了銘刻可以在區塊中寫入任意數據的特點,在其中寫入 JSON 形式的數據來發行代幣,這些 JSON 暑假定義代幣的一些標準,包括資產名字、發行量等等信息都以銘刻的形式寫到鏈上。
如果以如果用以太坊來打比方,相當於在 ERC 721 之上實現 ERC 20 發行代幣的功能。用比喻的方式就更能夠理解這種“套娃”的形式,如果比特幣是一張紙鈔,Ordinals 就像在這個紙鈔上面去寫了一些文字或者是畫一幅畫,甚至是嵌入一個大小合適的遊戲,在我們的嘉賓 Jeffery Hu 看來,BRC 20 就相當於在這張鈔票上寫了一張支票,通過這張鈔票上的支票,把錢轉移給另一個人。
在我們的嘉賓,阿劍和 Jeffery Hu 看來,BRC 20 和之前的Omni Layer協議非常類似,“而之前大家把這條路走了一遍,我們已經知道了是一條走不通的道路”。
Omni Layer 也是試圖在比特幣之上去發行額外的資產。真正讓Omnilayer大規模落地的是在 2014 年 Tether 公司基於它發行穩定幣 USDT,這些轉帳帳號地址開頭通常是“ 1 ”、“ 3 ”。雖然轉賬速度較慢,但是因為是基於比特幣區塊鏈,一開始還是受到用戶接受,尤其大筆金額的轉帳通常會用基於Omni Layer的 USDT。但到了 2018 年以太坊熱門起來,所以 Tether 公司在以太坊上面發行 USDT,轉帳速度大幅上升,這些地址通常是“0x”,基於Omni Layer 的用戶逐漸流失。
Omni Layer 和 Ordinals 的設計非常類似,實際上是利用的也是比特幣的 OP_RETURN 腳本,在交易中嵌入小段數據,從而把比特幣之外的代幣信息寫在比特幣鏈上。
在比特幣的UTXO 系統中,每一筆交易都有花費(spend)即輸入,然後產生一筆輸出(output),就是“未花費過的交易輸出”(Unspent Transaction Output)。輸出腳本負責在交易中編程,當一個交易試圖從一個賬戶中支出時,它必須提供一個輸入腳本,來“解決”輸出腳本提供的難題。
但是當輸出腳本中使用 OP_RETURN 操作碼時,它將輸出標記為不可消費,這意味著該交易不會影響餘額,但是這筆交易仍然被記錄在區塊鏈上:
-
OP_RETURN 在創建付費腳本哈希(P 2 SH)交易的第一步中使用,交易輸出的鎖定腳本包括 OP_RETURN 操作碼,後面是需要插入的數據(通常最多 40 字節)。
-
用戶向該交易添加輸入,例如想要用作交易輸入的未花費交易輸出(UTXO)。
-
在用戶創建交易後,使用自己的私鑰對交易進行簽名。
-
一旦交易被廣播,礦工會驗證它並將其包含在下一個區塊中。
-
由於 OP_RETURN 將交易輸出標記為可證明無法支出,因此不會創建新的代幣,也不會轉移資金。
-
與 OP_RETURN 相關的數據將永遠存儲在區塊鏈上。
-
第一層是比特幣,把交易數據寫入區塊,但是由於包含 OP_RETURN 的代碼,中間的數據不會被識別,但是這些數據會被另外一層識別;
-
第二層是額外的協議,用來去解析專門放在某一個位置當中的數據的內涵,幫助用戶在比特幣鏈上去使用比特幣以外的資產;
-
在Omni 時代,每一個 USDT 它是染色的,附帶了其他一些資產,所以我們稱之為染色的 USDT,當它被花費時,交易當中攜帶了一個 OP_RETURN,包含裡面有完整的 Omni 交易信息,這些信息告訴大家這筆資產被人完整地發到某一個 UTXO 裡面,因為一筆 UTXO 只能花費一次,所以也能夠保證 UTXO 裡攜帶的這筆資產沒有被雙花
-
Ordinals 跟踪聰,而聰也只會在一個確定的 UTXO 裡面,這個 UTXO 只能被花費一次,也保證了和聰綁定的 NFT 或者是 BRC 20 只能花費一次。
不難看出,Omini 協議和 Odinals 協議有一些差異:在 Omni 協議中,比特幣的鏈上資產和交易之間本身是沒有關係的,但是在 Ordinals 協議中,通過追踪聰的流動,去跟踪和決定 NFT 到底在誰手裡,也就是說 NFT 和比特幣資產本身是綁定的。
但非常相似:
首先,他們都是把數據寫在鏈上,思路都是把整個協議設計分為兩層:
其次,他們解決雙花問題的核心在於 UTXO 不能被花費兩次:
面對 BRC 20 ,值得思考的是,Omni Layer 已經被證明行不通了,BRC 20 與其高度相似,是不是能夠較好地發展下去?
在我們的嘉賓看來,RGB 或許是個更好的方法——在用 UTXO 保障資金安全的情況下,並不需要把所有數據都放到鏈上,只需要把數據承諾放到鏈上,通過這種方式來實現一個安全的智能合約系統。
3. RGB 是更好的資產發行協議
在很長一段時間裡,在 Vitalic 還在運營 Bitcoin Magazine 這個網站時候,包括他在內,社區許多人都嘗試去比特幣上發行額外的資產,Omnilayer 以及 Counterparty 都是這個嘗試的結果,(在我們第 4 期節目中,對這一類嘗試和努力做出了梳理)。
經過一段時間的努力之後,社區得出了一致得出的結論是:如果想使用比特幣的腳本去發行額外的資產,也就意味著需要所有節點去解析比特幣腳本里的額外資產的信息,在真正進入大規模應用,在速度、費用上缺陷十分明顯。
於是,Vitalic 放棄了在比特幣作為底層,另起爐灶,在 2013 年年底寫出了以太坊白皮書。與此同時,有另一些人,他們沒有放棄比特幣,但是放棄把所有數據寫到比特幣鏈上,而只把數據最重要的部分上鍊,也就是像 RGB 這樣的比特幣二層協議。
基於 Peter Todd 在 2017 年提出的客戶端驗證(client-side validation)和一次性密封條(single-use-seals)的概念,RGB 協議提出了一種更可擴展、更加隱私、更面向未來的解決方案,其核心的理念是,僅在必要的時候才使用比特幣區塊鏈,代幣轉移的驗證工作都從全鏈共識層中移除,放在鏈下,僅由接收支付的一方的客戶端來驗證,但是利用比特幣的去中心化網絡來防止雙花以及抗審查,展開來說,它有以下特徵:
一次性密封條和鏈下轉移:RGB 的基本設計是這樣的,代幣和一個比特幣UTXO 綁定,如果要轉移代幣,就需要花費這個UTXO,在花費這個 UTXO 的時候,比特幣交易必須包含一個數據承諾,即 RGB 的支付信息,包括輸入、代幣將被發送到哪個UTXO、資產的 id、數量、花費的交易等等。
(文獻參考:https://www.btcstudy.org/2022/04/24/understanding-rgb-protocol/)
-
如果你有一筆比特幣上的額外代幣要轉移,這些代幣和 UTXO 綁定;
-
要轉移這些代幣你就需要創建一筆RGB 交易以及一筆花費 UTXO 的比特幣交易,並且這筆比特幣交易承諾了RGB 交易。
-
RGB 交易是把代幣從比特幣交易輸出 1 轉移到比特幣交易 C 的輸出 2 。
-
最終交易 B 的輸出就是找零地址,減去礦工手續費後將剩餘資金發回給原來的所有者,同時也承諾了 RGB 交易。
在這種設計中,比特幣的 UTXO 的作用是裝載 RGB 資產的一次性容器,要轉移資產,你只需要打開舊的容器、關上新的容器就好。
也即是說,在 RGB 的交易當中,需要發起一筆交易時候,交易發起方在鏈下點對點地把沒有瑕疵的證明資產流轉順序的資料完整地發給交易對方,在鏈上,用戶花費攜帶的 UTXO,用 OP_RETURN 輸出去承載這筆交易的這個哈希值,值得注意的是,相比 Omni 協議會把完整的交易放上去,RGB 協議只放一個哈希值。
自主驗證:無論是 Omnilayer 還是 Ordinals,實際上都是通過 UTXO 不能雙花的特質去保證比特幣上的額外資產的安全性,實際上 RGB 也是基於這樣一個理念——讓用戶自主驗證特定 UTXO 上合約的狀態,並且驗證所有合約狀態轉換都是安全與否,然後,用比特幣的 UTXO 交易去激發一個智能合約系統。
舉個例子, Brutoshi 要給阿劍發送一筆資產時候,阿劍需要 Brutoshi 提供流轉過程詳細記錄,來驗證確實有一筆資產通過一筆一筆的比特幣交易路由或者說中轉到了他手上,而這些資料也能夠讓阿劍向下一個人證明,這些資產確確實實是從某一個地方一路流轉到他手上的,這個驗證方式被稱之為自主驗證——流轉鏈條是沒有瑕疵的,接受者可以放心地接收資產,並且能夠支付給其他人。
抗審查:除此之外,RGB 不需要接收方給出明確的 UTXO,而是給出 UTXO 加一個混淆值,這樣保證了接收方的隱私性。同時,在流轉過程的話,使用零知識證明技術保證整個流轉過程當中它的數額不會曝光,比比特幣上的 UTXO 更具有隱私性。
這也是基於 Peter Tolder 一個非常激進的觀念,他認為曠工不應該知道一筆交易裡面的具體內容,只要去挖礦就行了,因為如果知道交易的內容,就會帶來審查的這個可能性。 RGB 繼承了這個理念——所有的 RGB 資產只不過是被人為地附加到一個 UTXO 中,因此,它在鏈上的這個他的鏈上的痕跡就是一筆普通的比特幣交易,礦工不需要知道交易裡面到底有沒有 RGB 資產,礦工只需要挖比特幣交易就可以了。
一直以來,比特幣的隱私性是有限的,比如交易的轉賬金額是公開的,比特幣社區做出這樣的選擇,是認為貨幣量的可審計性會比交易的隱私性更加重要。
在我們 4 月份舉辦的 Ordinals 線下活動中,北美最大的礦池 Luxor Mining 向我們表示,作為一家身在美國的公司他們需要符合美國法律的要求,會基於一些 OFAC,對比如來自北朝鮮的創作者審查,因此,在一些極端情況下,完全的抗審查性也是必要的。
聽起來 RGB 是一個完美的技術方案,但是有時候生態的發展需要“天時地利人和”,以太坊的白皮書在 2013 年年底發布, 2015 年發布了主網,雖然 2016 年時還發生過針對以太坊的大規模攻擊攻擊,但是隨著 defi 的發展,越來越多的開發者去以太上搭建應用,擁抱與比特幣和 RGB 不一樣的這個技術範式。
RGB 在幾年備受冷落,團隊大約只有 5 個人,都是烏克蘭人,他們繼續維護著這個協議,但是我們兩位嘉賓都認為,假以時日,真正合適的方案是能夠發展起來的。
4. 比特幣的 Layer 2
在以太坊社區,大家對二層的形成了比較強的共識。在布拉格的 DevCon,社區認為,之前許多 Layer 2 概念,包括 Plasma 等等在技術上都有一些缺陷,但是直到走到 Rollup,一個理想狀態的 Layer 2 結構才出現:為了解決主鏈性能局限等問題被重新創建的一條鏈,和主鏈之間能夠雙向免信任,就是說主網和側鏈能夠相互驗證,以及資金雙向流動。
但是在比特幣上,我們沒有辦法套用以太坊 Layer 2 的概念,一個最簡單的例子,閃電網絡毫無疑問是比特幣上的 layer 2 ,但是它沒有獨立的鏈,也比如說比特幣的側鍊和比特幣之間的信任通常是單向的,因此,我們嘗試對比特幣的 layer 2 做一個定義和分類,我們的嘉賓 Jeffery Hu 把它們分為四類:
圖片來源:Jeffery Twitter @hu_zhiwei
A. Rollup
Rollup 是以太坊上最受追捧的二層方案,它本質上是將計算過程從主鏈轉移到稱為“Rollup 鏈”的獨立鏈上。在這些 Rollup 鏈上執行交易後,數據被聚合併匯總,傳輸到主鏈進行驗證,因此,能夠減少以太坊的網絡擁塞。
相比之下,在比特幣上的 Rollkit、Alpen 這些 Rollup 項目中,相比於以太坊上較強的智能合約功能,比特幣扮演的是數據可用層的角色,但由於比特幣被認為是最安全的鏈,因此,這個方案在一定應用場景中也有其優勢。
B. 狀態通道
最典型比特幣狀態通道就是閃電網絡,其理念是在區塊鏈之外開通一條“綠色通道”,將大量高頻的、小額的交易在區塊鏈外進行,最終的結算數據放在鏈上,鏈下交易的確認和支付通道等問題,通過 RSMC 和 HTLC 等技術方式去解決。相比 Rollup 等方案,它沒有一條獨立的鏈,而只有一個通道。
閃電網絡最終的安全性其實是由比特幣的礦工來保證的,Rollup 也是這樣,因此,Rollup 和狀態通道設計方案非常類似。
在這幾年時間裡,閃電網絡發展速度並不是很明顯,根據 5 月 30 日數據,目前大約有 5300 個 BTC 在通道裡,但是我們也看到像 Okex 這樣的交易所已經利用閃電網絡支持比特幣交易,所以我們認為,在越來越多的應用場景體會到閃電網絡帶來的“甜頭”之後,閃電網絡能夠更快地發展起來。
C. 側鏈
閃電網絡主要解決 BTC 結算吞吐量低、成本高的問題,但沒有解決 BTC 原生應用構建不足的問題,因此,在同一時期,比特幣側鏈(Sidechain)的概念也被提出。簡單地說,就是開發者們就另外創造一條鏈,在這條鏈上做更多的智能合約或者是其他的運算執行。
側鍊和比特幣之間的交互,主要是側鏈去驗證比特幣主鏈上的信息,然後做後續的執行,反過來比特幣主鏈無法去無信任側鏈,或者是由所有比特幣礦工去驗證出來側臉上的交易是不是發生了。因此,一般來說可能都採用聯盟側鏈的形式,類似於一個小組或者是幾個成員互相見證的方式,所以去實現雙向的錨定。
Blockstream 最早提出並開發了側鏈,名為Liquid Network,於 2018 年上線。最近大火的 stacks,也被認為是側鏈。
D. 客戶端驗證
和狀態通道的想法有些類似,就是不需要所有的狀態轉換過程都在主鏈上的所有節點/礦工來通過重複計算的方式來驗證,只需要利用主鏈來保證承諾的安全性即可,主要項目包括:RGB、Taro 等。 RGB 等項目也會提供FT、NFT 的合約模板來支持一些合約的開發。
我們也能夠看到不同比特幣二層之間的組合,能夠給比特幣生態帶來更大的可能性,比如 RGB+閃電網絡,前者帶來資產類別的擴展,後者來帶性能的拓展,在 RGB 協議中,使用閃電網絡充當鏈下的通道,在發行資產時,是一個性能得到極大提升的設計。
但如果跳出二層這個限制,對圍繞比特幣技術還可以這樣劃分:
一類叫做重新解釋層,比如 Ordinals 和 Omnilayer 以及 BRC 20 ,這些其實都是在現有的主鏈上的交易,但是通過這些技術,重新定義或者說解釋了交易的含義,比如說讓 Ordinals 一個 NFT 或者是一個 FT 和一個聰綁定,又或者是 Omnilayer 讓一筆資產和一個 NFT 綁定,他們在比特幣主鏈上有較多的動作。
另一類叫做省略層,比如閃電網絡,只是把最終的結算或者是一些承諾信息寫入鏈上,以及利用比特幣的安全性,許多中間的交易斗在鏈下完成。
RGB 其實也是可以認為是兩種的一種結合,既用了比特幣網絡上的一些數據,同時也在鏈下做了許多客戶端驗證,為比特幣可擴展性的提升帶來了巨大的可能性。
不能否認的是,Ordinals 的出現以及比特幣一系列技術準備之後,我們認為比特幣未來生態的發展還是有極大的可能性。