Runes 協議即將上線,從技術角度解析其原理、分發規則和預估成本
原文作者: Trustless Labs
距離 BTC 減半的 840000 區塊還有不到 3 天時間,這也意味著整個 BTC 生態期待已久的 Runes 協議即將上線,作為 BTC 生態規模最大的公平發射,雖然可能面臨著巨大的競爭內卷壓力,但這任是目前加密世界最巨大且公開的 alpha 機會。
雖然目前 OKX 錢包、Unisat 等平台已經提供了公共的蚀刻平台,但想要在競爭中拿到更多籌碼,運行自己的比特幣全節點與索引,並了解 Runes 運行的相關原理,從而針對性地進行優化將帶來一定的優勢。
在本文中,Trustless Labs 將從技術實現、分發規則、預估成本三部分介紹 Runes 協議。
Runes 協議是 Ordinals 創始人 Casey 部署在比特幣網絡上發行同質化代幣的資產協議,Runes 的基本面也就是其接棒了 Ordinals 協議的正統性,成為了下一個 BTC 鏈上資產公平分發的窗口,Ordinals 社區需要借助 Runes 爭取 BTC 生態代幣資產的定價權,Casey 甚至喊話 Runes 生態上線一個月後不到 10 億美金市值就切腹自盡……
可以預計,減半後 Runes 協議將帶來十分活躍的鏈上交互,可以關注的熱點將包括但不限於:
Casey 在 Runes 協議中硬編碼的創世符文;
RSIC、Runestone 等 NFT 對應的 Runes 代幣空投;
社區主導的 Runes 代幣的部署和 fomo;
原理
Brc 20 的方式被稱為銘刻,即將代幣數據寫入隔離見證的簽名中,並將數據綁定在一個特定的聰上。本質上這是把 BTC 當為存儲空間,轉帳完全依賴鏈下的 BRC 20 索引帳本,為了保證交易的合法,BRC 20 的轉帳必須先通過銘刻將對應代幣變為可轉移狀態,再通過第二個交易轉移對應銘刻後的 UTXO 完成轉帳。
Atomicals 的方式被稱為染色,ARC 20 的餘額依靠一筆 UTXO 下的聰數量表示,嚴格遵循 1 token = 1 sats 的對應關係,因此 Arc 20 的轉帳可以完全被 BTC 網絡當作一般的交易處理,索引較為簡單,可以使用 BTC 原生特性。
Runes 的方式被稱為蚀刻,一筆 Runes 的餘額被綁定在一筆 UTXO 下,對這筆餘額數量、代幣符號等信息的數據被記錄在這筆交易的 OP-RETURN 下,OP-RETURN 可以看作是這筆交易的備註(最大 80 個字節),其數據包含的 json 標註了該 BTC 交易下 utxo 表示了多少數量的 Runes 代幣,識別這些代幣需要 Runes 的索引器。
總而言之,Runes 綁定 BTC UTXO,或者將 BTC UTXO 視為 Runes 代幣的指針,OP-RETURN 就是指針的賦值語句。
當 Runes 代幣進行轉移時,需要將代表了 Runes 代幣的 UTXO 作為輸入,在 OP-RETURN 寫入轉帳的數量,與指定的 utxo 作為第一個輸出,設定數量的 Runes 代幣將轉移到 utxo 1 的目標地址,而剩下的 Runes 代幣會自動按順序與其他 utxo 如 utxo 2 綁定。utxo 1 可以輸出給別人的地址,utxo 2 可以輸出給自己作為找零,這樣就完成了一次 Runes 轉帳。同時 Runes 還附帶了 burn 的功能,可聲明銷毀代幣。
與 BRC 20 僅使用 BTC 存儲轉帳記錄不同, Runes 代幣嚴格 UTXO 綁定,允許其適用 BTC UTXO 所附帶的各種好處;該方式與 ARC 20 類似,但不同點在於,Runes 的 utxo 可以表示任意數量的代幣,而 ARC 20 的數量嚴格與綁定 UTXO 下包含的 sats 數量有關(難以分拆);但同時,ARC 20 也更不依賴索引器,Runes 代幣轉帳的合法性依然需要 Ord 索引帳本的記錄。
struct Runestone {
edicts: Vec\, etching: Option\ , mint: Option\ , pointer: Option\,
}
struct Edict {
id: RuneId
amount: u 128,
output: u 32,
}
OP-RETURN 下 json 數據的靈活性,允許其一次性操作 Runes 代幣的批量轉帳,包括將不同類型 Rune 資產如 RuneA 與 RuneB 在同一個比特幣交易中轉移。
分發規則
在 Runes 代幣的初始分發流程下,代幣部署者首先需要先定義其代幣信息與分發規則。
代幣信息這包括了最小拆分單位、資產名字、名字的符號分割符、符號等,要注意的是,Runes 資產的名字不限長度,並包括 • 這類的分割符,可能會比較複雜,在鑄造新資產的時候一定要注意識別。
struct Etching {
divisibility: Option\,
premine: Option\,
rune: Option\, spacers: Option\,
symbol: Option\<char>,
terms: Option\<Terms>,
}
在分發規則部分,Runes 允許部署者進行預分配,將代幣分配給自己,因此要注意識別是否為公平發射,此功能可以用於 Runestone、Rsic 這類資產的分發。
在分發規則的 Terms 數據下,包含了單次 Mint 代幣數量限制、總共 mint 張數、mint 的開始與結束區塊這些數據。這裡可以將總 mint 次數設定為無上限,限時不限量,casey 部署的 0 號符文 UNCOMMON•GOODS 就是這樣。
struct Terms {
amount: Option\,
cap: Option\,
height: (Option\, Option\),
offset: (Option\, Option\),
}
同時,用戶自發的 mint 過程需要在 OP-RETURN 下寫入 Runestone 的數據類型(與符文 NFT Runestone 無關),一次交易只能 mint 一次,因此想要獲取更多的籌碼,就需要在一個地址下分多個 UTXO 進行。
Runes 會在 840000 區塊開始,ord 索引也已經更新到最新版本 0.18.1,現已充分支持 runes 代幣查詢、etch(等同於 Brc 20 的 deploy)、mint 等功能,同時 Casey 也表示將部署一部分 Runes 代幣硬編碼到 ord 索引器中,在減半區塊激活。這些資產完全公平分發,可自由 mint,Casey 曾提到過的名字有 COMMUNISTRUNE、ANARCHISTRUNE、CYPERPUNKRUNE。現在索引中已經可以看到名為 UNCOMMOM.GOODS 的創世符文。
Runes 資產名稱的部署被 Ord 索引進行了限制, 13 - 26 字符的名字在 840000 區塊後就可以自由部署, 12 位字符的名字被逐步解鎖。每過 17, 500 個區塊後(大約 120 天)就解鎖更短一位的名字的部署,因此要 mint 到 4 字符的代幣,需要等待 3 年時間。
雖然早期超長的名稱並不利於炒作,但好在能設計特殊的符號來表示資產,這個符號符合 Unicode 標準,因此可以寫入很多 emoji 表情,選一個好的 emoji 也是部署 meme 時需要注意的。
預估成本
當前的 Runes 的協議代碼基本已經確定,並在測試網運行了一段時間,因此可以進行一些成本的預測。我們透過在 signet 上運行 ord 索引已經可以看到 signet 測試網上部署了多達 497 個 runes 的測試代幣,testnet 測試網上更是多達 963 個。同時我們也在 signet 進行了一些實驗和測試,以測算 mint 時的成本花費和進度。
Signet 測試網 0 ~ 9 號 Runes 代幣:
THESE•WILL•BE•WORTHLESS
GREG•GREG•GREG
CUBS•FIRST•RUNES•TOKEN
AMAZING•KODA•FART
SORA•PARTY•STARTS•FIVE•DOLLARS
WAKE•N•BAKE
RECURSIVE•ROBOTS•RUNES•TEST
FRENCH•WON
SATOSEA•XYZ
我們在 signet 測試網進行了多筆 runes 代幣的 mint,ord 命令:
$ ord --index-runes --bitcoin-rpc-password xxx --bitcoin-rpc-username xxx -s wallet mint --fee-rate 1 --rune HARRY•POTTER•OBAMA•SONIC•IO•INU
{
"rune": "HARRY•POTTER•OBAMA•SONIC•IO•INU",
"pile": {
"amount": 1000,
"divisibility": 0,
"symbol": "🧹"
},
"mint": "645829 bdaf 105 cce cc0 12629 a 3 bbb 6 e 9 dfcfe 9 2fa 09499 ea 54 b 8709 2c 9100946"
}
交易如下:https://mempool.space/zh/signet/tx/645829bdaf105ccecc012629a3bbb6e9dfcfe92fa09499ea54b87092c9100946
指定 destination 作為接收 Runes 代幣的地址:
$ ord --index-runes --bitcoin-rpc-password xxx --bitcoin-rpc-username xxx -s wallet mint --fee-rate 1 --rune MAOBY•THE•CUTEST•CAT --postage 1000 sat --destination tb 1 p 43 k 8 gxevpc 0x 3 hthv 9 dm 33589 gecn 8 mr 4 rk l3 03 js 3 gtvmpehltqg 2 mmc 4
{
"rune": "MAOBY•THE•CUTEST•CAT",
"pile": {
"amount": 100,
"divisibility": 0,
"symbol": "🐈"
},
"mint": "32125 d 247 a 282 ebf 53 b 89 3a 17 f 3 c 2c 99 a 774774923 3d c 010 bd 9 ae 2934540 c 981"
}
交易如下:https://mempool.space/zh/signet/tx/32125d247a282ebf53b893a17f3c2c99a7747749233dc010bd9ae2934540c981
可以看到,一次 mint 交易大概會消耗 230 vB 大小,參考市場熱度推測 fomo 情緒,若以 feerate 在極端情況下為 300-1000 sats/vB 來計算,mint 一張的成本約是 0.0023-0.00069 BTC(150 u-50 u),同時 ord 支持指定 destination 地址,因此可以拆分 utxo 後並發批量 mint 到目標地址。
若減半後 fomo 情緒高漲,前期每個區塊有 3000 筆 transactions 為 Runes mint 交易的情況下,以 feerate 平均為 200 sats/vb 計算,一天 Runes 代幣的 mint 約消耗 198.72 btc 的 gas 成本,將可以為計算早期 fomo 籌碼市值提供一些參考。