為什麼說在比特幣上發展生態是緣木求魚?
作者:MiddleX
最近,從 BRC20 到 ORC20,從"巫師"到"青蛙佩佩",這些比特幣生態的 meme 以漲服人,讓市場徹底 FOMO 了。與此同時,除了 Ordinals 協議之外、已經被遺忘的比特幣銘文協議 RGB 、還有各種比特幣 L2 項目紛紛成了新的熱門,也有一些新項目殺入其中,希望能參與 Build 比特幣生態,從新敘事中分一杯羹。
比特幣銘文(Inscriptions)的技術實質是什麼,是在"聰"上面銘刻嗎?比特幣 L2 是怎麼回事?比特幣上可以構建生態嗎?咱們來扒一扒。
什麼是比特幣"銘文"
比特幣是一個去中心化的帳本,記錄著發生在其中的每一筆交易。每一筆交易在提交時,比特幣網絡除了基本的交易元數據之外,還允許提交一串自定義字符,可以理解為交易備註。這個交易備註字段曾經主要是"OP_Return"字段,在 Taproot 升級之後,也可以是交易 witness 字段。不管存在哪裡,這部分是作為交易的一部分,存儲在比特幣鏈上的。
那在"聰"上銘刻是怎麼一回事呢 ?其實 Ordinal 協議最早是用來發NFT的,在 mint Ordinal NFT 的過程中,你會獲得 1 聰,這 1 聰的交易上銘刻了 NFT 的元數據,這樣這 1 聰就和該NFT綁定起來了。如果你願意支付更高的成本,你也可以銘刻 NFT 的完整數據,witness 字段最多支持銘刻 4M 的內容。
但請注意,比特幣網絡不會識別 Ordinals NFT 和聰的這種綁定關係,當你給別人轉帳這 1 聰的時候,比特幣網絡不會區分這是綁定了 NFT 的聰,還是普通的聰。這意味著,你可能在轉帳的時候,不小心把這個特殊聰支付掉。
眾所周知,比特幣的帳本是 UTXO 模型,這是一種模擬物理現金的記帳模型。每個人帳戶裡放的不是比特幣,而是一個個的 UTXO,就像一張張的紙鈔。當你需要給別人支付時,如果你帳戶裡有多張紙鈔,你是可以選擇用哪張紙鈔的(自選 UTXO )。此外,你可以用一張紙鈔去支付一筆交易,也可以用多張紙鈔組合支付一筆交易,如果你要支付的金額小於你手裡的最小紙鈔金額,你還可以將該鈔票一分為二,一張支付給對方,一張支付給自己(這就是UTXO模型裡常說的"找零")。
大多數比特幣錢包,並不會把支付時自選 UTXO 功能放在很顯眼的位置,而是藏在高級設置裡,錢包默認會按照自己定義的一套隨機規則去自動選擇使用哪個或哪幾個 UTXO 來支付。
為了避免把特殊聰當做普通聰被錯誤的支付掉,需要"客戶端驗證"。如果錢包支持 Ordinals 協議,那麼就會在支付時,避開特殊聰。如果你要轉帳這一個特殊聰,錢包也會提示你,你正在轉帳一個 NFT。也就是說,支持 Ordinals 協議的錢包客戶端要負責維護和識別 NFT 與特殊聰的綁定關係。
RGB 和 Ordinals NFT 原理相同,都是靠客戶端驗證來驗證 NFT 和聰的綁定關係。而這本質上是一種鏈下共識。
BRC20 代幣是在"聰"上銘文嗎?
無論是 Ordinals NFT 還是 BRC20 代幣本質上都是在比特幣交易中銘文,而非在"聰"上銘文,只是 Ordinals NFT 會建立 NFT 與聰的綁定關係。BRC20代幣則不同,不存在代幣與聰的綁定關係。BRC20 代幣是通過銘文的方式來實現部署、鑄造、轉帳等操作。具體而言,通過在比特幣交易中寫入 Jason 格式的狀態轉換數據來實現。如下圖:
任何人都可以在比特幣鏈上銘文,不一定要通過特定客戶端。如果有人通過銘文 mint 已鑄造完畢的 BRC20 代幣,亦或者 transfer 自己本不擁有的 BRC20 代幣。這筆 mint 或者 transfer 是無效的。但比特幣鏈本身不處理這些代碼,也不會驗證 BRC20 代幣的 mint、transfer 是否有效。
驗證銘文有效性的工作是由支持 Ordinals 協議的錢包客戶端或瀏覽器來完成的。
可以這麼理解,Ordinals 協議實際上把比特幣協議當硬碟,在比特幣鏈上記錄自己的帳本,但對帳本的解釋規則是在本地,不在比特幣鏈上。或者我們可以用模組化區塊鏈的思路去理解:比特幣鏈只是 BRC20 代幣的數據可用性層(Data Accessibility Layer),Ordinals 協議自身才是真正的共識層,這個邏輯和 Celestia 提出的 "主權 Rollup"的概念是很相似的。
BRC20 和 Ordinals NFT 的區別在於 Ordinals NFT 的轉帳不是通過銘文實現的,不需要 transfer 函數,只需要轉移特定聰就相當於轉帳了對應的 NFT,這種結構是天然支持閃電網絡的。BRC20 代幣則不與聰綁定,通過銘文來記錄轉帳信息,需要做特定的兼容性開發才能支持閃電網絡。
"銘文"代幣安全嗎?
無論是 Ordinals NFT 還是 BRC20 代幣,儘管帳本存在比特幣上,但共識規則都是在鏈下的。所以"銘文"式代幣並不完全與比特幣共享安全性。
比特幣鏈作為數據可用性層,並不會對銘文作任何驗證,有效的銘文、無效的銘文都會提交上來,比特幣鏈本身沒有能力區分銘文是否有效。因此,比特幣上儘管存儲了Ordinals 協議的帳本,但存儲的是一個"髒帳本",所有有效數據都被存儲在上面,但並非所有被存儲的數據都有效。對於"髒帳本"的過濾是通過"客戶端驗證"來完成的。
這個"過濾規則",或者說對鏈上數據有效性的"解釋規則",才是 Ordinals 協議的本體。只有 Ordinals 協議所定義的這套規則本身有很強的社會共識時,"銘文"代幣才是安全的。
比特幣上可以構建生態嗎?
Ordinals 協議目前只能用來發 Token,但如果 Ordinals 將銘文系統,也就是規則系統做的足夠複雜的話,是可以用來做 DeFi 的,Ordinals 把規則的複雜性做到極致,甚至可以讓自己圖靈完備,可以實現任何合約邏輯。
但我不認為這是比特幣生態! 這只是Ordinals 生態。如果其他銘文系統,比如 RGB,也做了這樣一套規則,那是 RGB 生態,而不是比特幣生態。RGB 生態和 Ordinal 生態不互通,也不能依靠比特幣提供互操作性。這種感覺就像,以太坊上的一個合約無法訪問和調用另一個合約…
比特幣L2是什麼?
首先要定義一下L2,L2 是指將安全性依附於其他 L1 的鏈。比特幣 L2 就是安全性依附於比特幣的鏈,或者說比特幣 L2 是與比特幣共享安全性的鏈。
如果以這個標準來看,Rootstock、Liquid、Stack 都不是比特幣的 L2,只能算是比特幣的側鏈。Stack 宣稱在下一個版本的更新中會實現與比特幣的共享安全性,但沒有披露具體方案。
目前各種宣稱是比特幣 L2,事實上是側鏈的項目提出的各種花裡胡哨的方案都沒有辦法與比特幣共享安全性,包括:
- 把區塊頭寫比特幣鏈上(類似以太坊已經淘汰掉的 Plasma 方案)
- 用比特幣來作為網絡質押代幣
- 在比特幣鏈上選舉出塊人
- 與比特幣鏈同步出塊
- 激勵比特幣礦工成為 L2 網絡驗證者
無效行為
想要與比特幣共享安全性,並不是沒有辦法。我們可以試想,如果 Ordinals 協議不止在比特幣鏈上通過銘文來存儲帳本數據,而是將 Ordinals 的整個定義數據有效性的規則(即 Ordinals 協議的源碼)也放到比特幣鏈上呢?
在這種情況下,儘管依舊需要通過"客戶端驗證"來實現一系列操作過程中的驗證。但任何主體都可以通過寫在鏈上的"規則"和髒帳本,運行出一個乾淨的帳本來,並得到一個一致的狀態轉換記錄和最終狀態。
這種形式並不是新事物,而是 Arweave 提出的存儲共識範式------SCP,這種方式適用於構建對互操作性要求不高,但對性能要求較高的重型應用。Arweave 積累多年,其上已經有 100+ SCP 應用。
如果要基於比特幣去構建SCP應用,技術上是可行的,但經濟上受到制約,只能構建形態較為簡單的應用,因為頻繁的在比特幣上銘文不是一般的貴。
小結
說了這麼多,我並不是想徹底否定在比特幣上構建各種服務的努力。我理解 PoW 支持者對以太坊升級的不滿,也理解比特幣礦工在減半預期之下尋求增收的需要,比特幣網絡當然可以通過銘文的方式去做一些 meme 代幣和收藏品,但故事應該適可而止,不應該再去浪費時間在比特幣上復刻以太坊生態(無論是"銘文"的方式,還是L2的方式),因為這並不能給整個 Web3 創造什麼新的價值。
歸根結底,在比特幣上做生態,相當於以一個蹩腳且成本更高的方式在做以太坊本就可以做的事情,在比特幣生態中,誕生不了什麼新事物。我不否認圍繞"比特幣生態"概念的價格奇蹟和造富神話可能會繼續,但作為長期主義者,我更關注能創造實際價值,拓寬Web3使用場景、讓Web出圈的新敘事。