1、Runes(符文)是什么?
過去一年,web3最大的敘事莫過于銘文生態的爆發,最初的起點便是Ordinals,是一種為btc上每個聰給予唯一性序號的技術,可拓展閱讀:解讀比特幣Oridinals協議與BRC20標準 原理創新與局限
其核心創始人casey,在去年9月就提交了基礎版的Runes代碼,但是一直遲遲沒有發布主網上線,因此在9月的銘文熱潮中,runeAlpha等項目便提前fork了該代碼,單獨發行了RunesAlpha等協議,雖然有一定抄襲的說法,但是短短數月數億的總市值增長也讓人看到Runes協議的無窮潛力。
那么由Ordinals協議的創始人casey所設計的,官方正版的Runes協議也將在2024.4.20號左右正式官宣上線。且直接上線btc主網,因此各路項目方想要發行Runes資產,各路錢包、NFT/FT交易市場想要支持Runes都將面臨區塊鏈行業最難的挑戰之一,如何在沒有測試網的情況直接沖刺主網!
而官方的Twitter發言更是高度自信~順帶學個新單詞:Seppuku
本文,將會系統的梳理符文項目的底層字段變遷,讓大家從根本上理解Runes與Brc20、Arc20等FT協議的差異點,對比優缺理性決策參與。
2、比特幣上是如何記錄額外信息的?
比特幣上有兩種主流的鏈下數據附著在鏈上的方案,銘刻與蝕刻2.1、蝕刻基礎原理Runes使用的是蝕刻技術,是一種簡單直觀記錄信息到鏈上的方式:即寫入bitc中UTXO(未花費交易)的op-return字段內,從功能在 Bitcoin Core 客戶端 0.9 版中開始啟用的(14年),OP-RETURN 會創造了一種明確的可驗證不可消費型輸出,讓數據存在區塊鏈上,類似于utxo的輸出,但并不可被消費。
在btc的區塊鏈瀏覽器中可以輕松看到,該筆交易就附著了一個op-return的信息,比如下圖:
可以看到,這里的輸出#3,其實是游離的,雖然他占據的一個該筆utxo的output的輸出位置,但是他是一個閉環的圓矩形,這就說明他是不能被再次轉移消費的,所以他就像是一個交易的備注區一樣,就留在了比特幣的存儲空間上,通過交易哈希區索引找到他。
細心的你可能會發現, 為什么OP_RETURN的后面有一個RUNE_TEST 這就是將具體內容解碼后的結果,點開明細按鈕后,就可以找到52554e455f54455354 這樣的編碼串,其實一串十六進制編碼數據,解碼后就可以得到RUNE_TEST,同理,明細里還有其他的編碼,最終解碼后會成為一串字符串,大概是json的格式,從而體現出Runes資產的部署、鑄造、發行等等寓意。
2.2、銘刻基礎原理
其實Ordinals/brc20等協議中,要嵌入元數據到鏈上,都是寫到交易的見證數據(witness data, witness field)中,這一銘刻銘文過程通過隔離見證(Segregated Witness, SegWit)和“向Taproot支付”(Pay-to-Taproot, P2TR)的方式實現,其中包含了提交(commit)和揭露(reveal)兩個階段也就是最終2筆交易來完成。
其實P2TR是比特幣的一種交易輸出類型,它是在2021年進行的Taproot升級中引入的,它使得不同的交易條件可以更加“隱私”地存儲在區塊鏈中,之所以提升隱私是因為只有在揭示的時候,才能看到具體完整內容。具體來說生成p2tr地址使用的是腳本hash,在花費時提供真正腳本(包含銘文數據),所以為了上傳銘文數據,需要先生成一個支付到此腳本生成的p2tr地址的utxo(commit交易),然后花費這個utxo時,需要在見證腳本中提供真正腳本,也就把銘文數據上傳到了鏈上(reveal交易)。
其實Ordinals協議非常好理解,就是在完成這個銘刻過程(commit、reveal)兩筆交易都上鏈后,ordinals協議則定義規定此銘文綁定到了第一個輸入的第一個sat上。所以,綁定的過程就是銘刻,綁定到結果就是銘文。
2.3、對比兩者數據上鏈方案
蝕刻:
優點:邏輯簡單直觀明確,交易成本低,可以不占用全節點內存池。
缺點:限制于80字節長度,需要高度壓縮數據編碼。
銘刻:
優點:幾乎不限制大小,有一定隱私保護能力,有多種玩法(時間鎖、工作量證明)等
缺點:交易需要2次上鏈,導致最終成本較高,commit存續時間長,對全節點內存池壓力較大。
3、Runes底層設計解讀
Runes協議最初的代碼是casey發布在Ordinals 0.11.版本上,而最新的Ordinals 已經演進到0.18版本,巨大的版本變化,也讓我們有機會步入一個頂級協議的設計過程中,就像十四君曾經解讀的ERC721/ERC3525/ERC3475等標準,拓展閱讀:
我們不妨也步入Runes的起點和終點兩個版本的字段變化,來解讀Runes的價值依規。
3.1、Runes 0.11版本解讀
最初的Runes整體的字段分成3個部分,edicts( 資產轉移信息),etching( 資產部署信息),burn(銷毀)。
具體來說,當一筆交易的op_Return里,信息解碼之后能夠呈現edicts 的信息,且格式正確,那么鏈下的解析器,就會計算出該用戶的資產發生了轉移,其中的output就是轉移的目標地。
同理etching 的內容也是直接呈現了部署資產的主要信息,我們可以和ERC721對比,最大的差別在于limit和term 限制了mint的數量和可mint的區間。而這點也就是銘文、符文項目與以太坊智能合約發行資產的根本性差別,由于鏈上缺乏智能合約的驗證,這就少了實時驗證的能力,如果某個項目方發行鏈上的資產還自己運行一套新的銘文協議來定制化自己的白名單Mint、代幣經濟學釋放速率,版稅繳納等等功能,都將會缺乏共識,就沒有人來參與這個項目了,所以銘文協議(brc20、atomical、Runes)等都是統一定義了資產發行的方式,也統一了用戶參與mint的方式,以公平發射的理念,完全開放用戶參與,進一步杜絕了項目方過度干預資產市場認知的情況。
即使是項目方才通過掃貨累計資產來控制市場,也需要付出巨大的gas代價,這個過程里可被用戶感知到并且自由選擇。
那最初版本的Runes協議設計,其實已經挺完善了,因此演變出的runealpha,哪怕是山寨的也占據不少的市場規模,累計82W的交易筆數,僅手續費就消耗掉312個BTC。
用戶可以輕易的使用rune字段本身的設計實現資產的復合、拆分,甚至一旦Runes資產與Ordinals、atomical等資產跨協議復合了,也可以借助op_Return多樣的語言表達性,從而實現拆分。
那最新的Runes 協議在0.18中實現了什么,又是怎樣的考慮從而要有這樣的字段呢?
3.2、Runes 0.18版本解讀要看懂Runes 0.18十分艱難,因為缺乏測試網,基本都只能從casey的源代碼里看邏輯,最終梳理出來字段分4個方面: