作者: 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 代幣是在“聰”上銘文嗎?
無論是Oridnals NFT 還是BRC20 代幣本質上都是在比特幣交易中銘文,而非在“聰”上銘文,只是Ordinals NFT 會建立NFT 與聰的綁定關係。 BRC20代幣則不同,不存在代幣與聰的綁定關係。 BRC20 代幣是通過銘文的方式來實現部署、鑄造、轉賬等操作。具體而言,通過在比特幣交易中寫入Jason 格式的狀態轉換數據來實現。如下圖:
任何人都可以在比特幣鏈上銘文,不一定要通過特定客戶端。如果有人通過銘文mint 已鑄造完畢的BRC20 代幣,亦或者transfer 自己本不擁有的BRC20 代幣。這筆mint 或者transfer 是無效的。但比特幣鏈本身不處理這些代碼,也不會驗證BRC20 代幣的mint、transfer 是否有效。
驗證銘文有效性的工作是由支持Ordinals 協議的錢包客戶端或瀏覽器來完成的。
可以這麼理解,Ordinals 協議實際上把比特幣協議當硬盤,在比特幣鏈上記錄自己的賬本,但對賬本的解釋規則是在本地,不在比特幣鏈上。或者我們可以用模塊化區塊鏈的思路去理解:比特幣鏈只是BRC20 代幣的數據可用性層(Data Accessiblity 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出圈的新敘事。