前言

交易是web3的靈魂,注意力是web3的最核心資源,價格是簇擁的起點,價值是時間的終點。BTC 減半已經過去一個月,而衆望所歸的 Runes 協議也過去一個月,這期間涌現出十餘家代打平臺,交易市場,在減半當天,甚至一筆代打一張 Runes 資產都需要超過 100 美金的成本。本文以 Runes 資產爲例,分析哪家纔是比特幣上資產代打(蝕刻)模型的最佳機制?

1、Runes 代打平臺 GAS 排名

下圖是十四君梳理的一覽圖。

從方案角度排名,核心結論是:

  • gas 成本上“拆分+鏈式方案” < “鏈式” < ”拆分” < ”單打“

  • 中心化程度:鏈式(無中間地址)< 拆分(無中間地址) < 鏈式 (有中間地址) < 拆分(有中間地址)

  • 資產歸集:鏈式 > 拆分+鏈式 > 拆分

  • 批量上鍊速度:拆分 = 拆分+鏈式 > 鏈式

  • 乍一看可能有些迷糊,什麼是鏈式,什麼是拆分呢?這就要回歸到 Runes 協議本身了,建議拓展閱讀:《BTC 減半在即,解讀 Runes 協議的底層設計機制與侷限》

1.1、Runes 蝕刻機制簡述

Runes 使用的是蝕刻技術,是一種簡單直觀記錄信息到鏈上的方式:即寫入 bitc 中 UTXO(未花費交易)的 op-return 字段內,從功能在 Bitcoin Core 客戶端 0.9 版中開始啓用的( 14 年),OP-RETURN 會創造了一種明確的可驗證不可消費型輸出,讓數據存在區塊鏈上,類似於 utxo 的輸出,但並不可被消費。在 btc 的區塊鏈瀏覽器中可以輕鬆看到,該筆交易就附着了一個 op-return 的信息,比如下圖:

可以看到,這裏的輸出#3 ,其實是遊離的,雖然他佔據的一個該筆 utxo 的 output 的輸出位置,但是他是一個閉環的圓矩形,這就說明他是不能被再次轉移消費的,所以他就像是一個交易的備註區一樣,就留在了比特幣的存儲空間上,通過交易哈希區索引找到他。細心的你可能會發現, 爲什麼 OP_RETURN 的後面有一個 RUNE_TEST  這就是將具體內容解碼後的結果,點開明細按鈕後,就可以找到 52554 e 455 f 54455354 這樣的編碼串,其實一串十六進制編碼數據,解碼後就可以得到 RUNE_TEST,同理,明細裏還有其他的編碼,最終解碼後會成爲一串字符串,大概是 json 的格式,從而體現出 Runes 資產的部署、鑄造、發行等等寓意。

因此,所謂代打,具體機制總結起來就是:Runes 一筆交易只能代打一個資產

那麼所謂交易成本,在 BTC 中就是交易鏈上數據量的大小來體現,那麼代打平臺的設計,就等同於誰可以最小程度的控制交易中出現的 utxo 數量,就是最優模型。下面讓我們展開講解拆分模型和鏈式模型

1.2、拆分模型

所謂拆分模型,是在代打過程中先進行一筆交易拆分出多個子交易,每個子交易再進行資產鑄造過程。

例如 tools.mempool 的代打方案,執行時如下圖所示,第一筆交易會預估算出每個子交易的手續費消耗,然後預留出 546 (比特幣常見粉塵值)+手續費金額,進行拆分出多個 UTXO,這裏會發現他轉入到某個新的地址。

第二筆交易則是再從新的地址轉回到用戶地址,並且完成代打,用戶也收攏到 Runes 資產。

這種模型顯著的問題就是:需要先一筆交易拆分,並且用戶得到的是分散的 UTXO。那麼當用戶想要掛單賣出的時候,要麼逐個掛單,要麼先合併再掛單,對於大客戶而言,會增加交易的成本。並且 tools.mempool 平臺在拆分交易中並不會爲用戶也執行一次代打,所以綜合損耗是拆分模型中較高的。

1.3、鏈式模式

所謂鏈式就類似下列結構,用戶最初的有 2 W 個聰,每一個交易都是消費上一個還在內存池的交易,這樣也是多筆交易。

這裏會發現,這而尾號爲 s 2 t 4 所收取的 6144 個聰就是平臺的代打手續費,對比執行代打所需要本身的手續費 3892 而言,可以說代打平臺的收益是很高的,

該平臺,就是之前號稱 5 天開發完 Runes 代打+交易市場的 Runestone,其實從交易上看該平臺早就無人問津,但是在最初的那幾天,還是產生了幾乎 3 個 BTC(150 W 以上)的手續費收入,對於個人開發者而言不可無不高啊。

然而這是其實是毫無意義的費用,已經有多個平臺都有開源代打代碼,比如 OKX 也開源了 Runes 代碼:完美解決 Runes 編解碼和代打問題,開發者可以直接引用構建自己的代打工具 https://github.com/okx/js-wallet-sdk。

回到鏈式,由於他幾乎是首筆進行了手續費收取,後續的每一筆交易都是如下圖一般循環處理,所以他其實本身數據量是比較少的。

2、Runes 最佳代打模型:拆分+鏈式

luminex 是目前相對較佳的方案模型,即可做大批量 mint,平臺帶有 utxo 拆分工具便於使用,採用拆分+鏈式方案。如下圖所示:

  • 該平臺在拆分就會先給用戶打上一筆資產,一點不浪費。

  • 並且如果鑄造在 25 次以內,拆分出足夠鏈式鑄造的 gas,然後執行鑄造。

  • 最後如果鑄造在 25 次以上,就會拆分出多個鏈式的所需的 gas,然後執行鑄造。

雖然這樣基本手續費並不優於鏈式,但是他可以做到至關重要的大批量鑄造,以及他的上鍊效率可以卡在極限 2 個區塊內完成鑄造。

2.1、爲什麼會有上鍊效率的指標呢?

這是因爲 BTC 節點有個防止 Dos 攻擊的機制,

在單 utxo 的 vout 被消費以及其被消費的鏈路裏,會限制最多 25 個交易在內存池中。

這是爲什麼大多數大批量 Mint 多數採用中間地址的原因,目的是解除這樣的限制。對於鏈式而言,資產會疊加起來最終轉給用戶。

因此鏈式模型只有 25 個交易可以同時在內存池中,但是拆分模型則是在拆分的交易上鍊後,可以無限值放到內存池中(因爲父交易已經不在內存池,每個 utxo 的 vout 都獨立計算 25 限制)所以 luminex 作爲最優模型,並不只是 gas 最低,而是即保持 gas 很低,也還有大批鑄造的能力。

不過,其實也還有比 luminex 更好的模型。

因爲 luminex 的拆分交易也會單獨代打給用戶,但是這個資產其實是不用轉給用戶的,而是可以轉給第二個鏈式交易的 utxo 裏,因爲 Runes 有資產默認流動機制,這樣可以再 luminex 的情況下在減少一個 utxo 的成本。

2.2、BTC 手續費優化率對比

講述了半天成本,那成本究竟如何衡量?其實很簡單,用戶平時設置的是單價,即類似於 gasPrice,但是 BTC 上其實是完全依賴於存儲數據作爲數量單位即 vsize。所以咱們以 taproot 地址爲例(不同地址手續費不同,taproot 地址屬於較低的手續費),此種地址的結構中:

  1. 每增加一個 input,vsize 增加 58 。

  2. 每增加一個 output,vsize 增加 43 。

  3. 而寫入每個 OP_RETURN ,vsize 需要 30 左右。

因此我們可以算出來以下優化率

鏈式 批量 Mint 10 筆,成本:i * 10 + o 10 +p 10 = 1310 

拆分 批量 Mint 10 筆,成本:i * 10 + o 10 +o 9  +p* 10 = 1697 

gas 優化率:( 1697-1310)/1697 = 22.8% 

鏈式 批量 Mint 20 筆,成本:i * 20 + o 20 +p 20 = 2620 

拆分 批量 Mint 20 筆,成本:i * 20 + o 20 +o 19  +p* 20 =  3437 

gas 優化率:( 3437-2620)/3437 =  23.8% 

看似 20% 不多,但是在單筆鑄造就要消耗 100 U 的巔峯期, 10 次批量就可以降低 200 U 的成本,細微的成本價差最終映射到成交的心理閾值上。

面對高昂的代打手續費,未來期望在web3圈子裏分到最早一杯羹的人,還是需要學會基礎的 node js,從而直接運行各家開源代碼(如上文提及的 OKX 開源的簽名組件)從而直接越過平臺收費問題,甚至在下篇交易市場篇中,也可以直接越過多家平臺阻攔直接構建跨平臺交易,甚至直接監聽內存池,直接搶跑謀取收益。

3、總結

Runes 資產協議發行 1 個月,可惜最終並沒有突破 10 億美金的閾值,也傳出 Ordinals 與 runes 創始人 casey 要 seppuku 的直播趣談。

但歸根究底,還是生態中,代打和市場兩個核心基建不完善,讓散戶參與成本過高,讓機構參與缺乏生態運營。

首先目前出現的平臺要麼收取高額手續費,要麼功能不齊全。比如 Runestone 雖然鏈式成本低,但是其 gas 估算不準確,容易導致最後一筆交易的磨損,伴隨上鍊的不確定性,逐步使其退出市場。

還有,目前的代打模型,還是忽略了用戶真實訴求,交易本身。

各個打到的資產,往往需要更快速的轉手出去,但是在市場早期價格波動巨大的情況,並且 btc 極度擁擠,其實除了項目方自己市場行爲之外,並不會有太多的大批量打資產的需求,換言之,有這麼大資金量去打 1000 筆資產的,也自己有能力去做到,平臺的核心用戶是散戶。因此鏈式雖然成本低,但他並不適合最最早期,在高速波動的定價中,在市場缺乏拆分工具的情況下,鏈式產生的 20 多張複合在 1 筆交易中,會讓交易的掃貨的閾值變高。最後本文是 BTC 上資產的代打機制篇,後續還有一份交易市場模型篇,可以適配到(BRC 20、Ordinals、Atomical、Runes)等等新資產的交易模式,敬請關注,切勿錯過。

參考資料:

  • runes 拆分代打開源代碼:https://github.com/okx/js-wallet-sdk

  • ruens協議官方源碼:https://github.com/ordinals/ord