“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.”——比特幣創世區塊
最近 BTC 上手續費區塊收入佔比最高到 74% ,大約 4.85 BTC 手續費,而僅僅兩個月前才 2% 左右,源於數個百倍幣的誕生以及大眾 fomo 的情緒,讓 BRC 20 的市場迎來爆發, 5 月 7 日Bitcoin 網絡上有超過40 萬筆交易待確認,雖然他和我們熟知的 ERC 20 雖然都被稱為代幣標準,但是實現的機制原理差異巨大,本文將從技術視角嘗試解讀其實現以及價值。
1、Ordinals 協議的核心思想
1.1、概述
每一枚比特幣都是由一億個「聰(Satoshis)」構成( 1 btc = 10 ^ 8 sat),這些 sat 每一個都有唯一標識且無法分割。
1、根據比特幣裡面 sat 的「序數(ordinal)」,
2、賦予每一個聰特定的含義「Inscriptions(銘刻)」
這就是 Ordinals 協議。
2、聰是如何編號的?
他藉由比特幣獨特的出塊流程和 UTXO 模型,從而讓每一個「聰(sat)」具有獨特的編號。
比特幣是在「挖礦」中產生的,挖礦過程是礦工通過解決複雜的數學問題(POW)獲得出塊權,來驗證新交易並添加到區塊鏈中,比特幣網絡每 10 分鐘左右會生成一個新的區塊,每個區塊包含一組新的交易和之前區塊的哈希值,其中礦工的收益又被稱為Coinbase 區塊
在以太坊中採用“賬戶餘額模型”,即每個地址有單獨的存儲結構和空間餘額(balance)便是其中的一個字段。
這種模型的優點是:
-
簡單非常容易理解和編碼實現。
-
高效,每筆交易只需要驗證發送賬戶是否有足夠的餘額來支付交易;
缺點:會出現雙重支出攻擊。
可拓展閱讀:【前沿解讀】斯坦福研究員論文-以太坊可逆交易標準 ERC 20/721 R 的機制、創新與局限
但是比特幣網絡不同,他賬戶的餘額並不是由一個數字表明,而是由當前區塊鍊網絡中所有跟當前賬戶有關的 UTXO(未花費的交易輸出)組成。
2.1、比特幣的UTXO 模型
UTXO(Unspent Transaction Output)是一種賬本模型,在比特幣系統中,每一筆交易都會產生一些輸出,比如轉賬交易的輸出就是接收方的比特幣地址和轉賬金額。這些輸出被存儲在UTXO 集合中,用於記錄未花費的交易輸出。
每一筆交易都由若干個輸入(Input) 和若干個 輸出(Output) 構成。每一筆交易都要花費一筆輸入,產生一筆輸出,而其所產生的輸出,就是“未花費過的交易輸出”;一個 Input 指向的是前面區塊的某個 Output,只有 Coinbase 交易沒有輸入,只有憑空輸出。
UTXO 模型的優點是更加安全和隱私保護,因為它沒有中心化的賬戶記錄和傳統賬戶模型可能洩露的賬戶餘額信息。
UTXO 模型的缺點是增加了交易的驗證成本和存儲成本。每次交易時都需要驗證交易的支付和接收是否合法,同時也需要存儲大量的UTXO 信息。
所以任何交易,總是可以由 Input 溯源到 Coinbase 交易 繼而追溯每一個聰被挖礦挖出時的序號。
所以我們說自己有多少比特幣(bitcoin)實際上是指的我們擁有所有權的那些 UTXO 中所指明的比特幣(bitcoin)的數量,因此如果我們想要統計一個地址的 BTC 數量:
-
從創始塊開始掃描;
-
遇到某筆交易的某個 output 是指定的地址,餘額增加;
-
遇到某筆交易的某個 input 是指定的地址,餘額減少;
2.2、sat 和 UTXO 的關係
注意是每一個 sat 不是 UTXO! 由於 UTXO 是不可再分的最小交易單元,因此 sat 只能存在於 UTXO 中,且 UTXO 包含了一定範圍的 sats,且只能在花費某一 UTXO 後產生新的輸出中對 sats 編號進行拆分
比如我在創世塊或者 CoinBase 區塊獲得了 50 個 BTC 的獎勵,對應的 Input 和 Output 則是
如果我進行一筆 20 BTC 的轉賬給 B 地址,則 UTXO 集中會呈現,這裡的 input 是上一筆的 output
這裡的 sats 消耗順序,是基於 FIFO”先進先出”(First-In-First-Out )原則,在交易費用相同的情況下,較早的 UTXO 將比較晚的 UTXO 更優先被用於交易。
這些就是 Ordinal NFT 的核心技術支撐,非常的簡潔但是卻能衍生出很多好玩的東西! 這個 Ordinal Number 甚至可以用來表示域名等。
2.3、Ordinal number 的表示方法
Ordinal Number 則有很多種表示方式,比如度數表示法(Degree Notation)
這種表示法有趣的地方在於,它根據比特幣自身的周期性特徵,人為地為 sat 創造了一種稀缺性:
-
common: 所有不是區塊 mint 出的第一個 sat 的 sats
-
uncommon: 該 sat 是某區塊挖出的第一個 sat(D== 0)
-
rare: 難度調整時挖出的第一個 sat(C== 0&&D== 0)
-
epic: 減半時挖出的第一個 sat(B== 0&&D== 0
-
legendary: 發生 Cycle 輪換時挖出的第一個 sat(B==C==D== 0)
-
mythic: 創世區塊挖出的第一個 sat(A==B==C==D== 0)
比如:https://ordinals.com/sat/1 ° 0 ′ 0 ″ 0 ‴,所以目前產生 Fomo 追逐的核心點並非是 mint 的內容中包含什麼東西,而是對應的 Ordinal Number 這樣的序號值。
如果說序號是結合了比特幣原生的諸多技術特性產生的,那麼銘刻(Inscriptions)則是注入 sat 具體內容的方法,所以問題便來到,有了唯一標識的 sat 如何定義其綁定的任意內容呢?
3、如何 Inscriptions(銘刻)任意內容
在討論銘刻之前,咱們先了解下比特幣擴容的兩次重大升級:SegWit 和 Taproot
3.1、SegWit(隔離見證)
他是比特幣的一個重大升級於 2017 年 8 月激活,主要目的是優化比特幣的交易處理能力、降低交易費用,並在更安全的條件下實現比特幣的擴容。 SegWit 是一個軟分叉(Soft Fork)升級,涵蓋多個BIP(141、 142、 143、 144 和145 ),所謂軟分叉也就是可以兼容老版本的比特幣客戶端,沒有破壞比特幣網絡的兼容性。
它的核心改變是把交易中的簽名(Witness Data)從交易數據中分離出來,使交易數據更小,從而減少交易費用,並提高比特幣網絡的容量。
SegWit 的實現方式是將所有的交易數據分為兩部分,一部分是交易的基本信息(Transaction Data),另一部分是交易的簽名信息(Witness Data),並把簽名信息保存在一個新的數據結構中,是被稱為“隔離見證(witness)”的新區塊中,並與原始交易分開傳輸。
這樣,比特幣交易的交易數據大小提高了上限,同時降低了簽名數據的交易費用。在 SegWit 升級之前,比特幣的容量上限是 1 MB,而 SegWit 之後,比特幣交易的容量上限達到了 4 MB。
所以 Oridnals Inscription 的本質就是把銘刻數據藏在見證數據中。
3.2、Taproot 升級
與 SegWit 升級類似,Taproot 升級同樣是一種軟分叉升級,是Bitcoin Core 貢獻者Gregory Maxwell 在2018 年提出的比特幣升級提案,它並不會改變比特幣協議本身,而是對現有的比特幣交易機制進行改進。
該升級主要包含3 個技術概念—— P2SH、MAST 和Schnorr 。其結果是讓複雜的交易如多簽名交易、時間鎖交易看起來如同普通的比特幣交易,增強了比特幣的隱私性,目的是推動了比特幣實現智能合約部署、拓展用例等各種場景升級。
在SegWit 升級中,比特幣協議增加了一個新的版本號,用於表示新的交易格式。在Taproot 升級中,比特幣協議最重要的更改是將腳本驗證程序從ScriptVerify flag 更新為ScriptVerify v2 flag,以支持 Tapscript。
一個Tapscript的上鍊需要分為兩個步驟:commit 和 reveal。而 Inscription(銘刻)的內容則包含在 reveal 交易的第一個輸入中,從而銘刻在此交易的第一個輸出的第一個 sat 上。比如
這裡有多個操作指令,但是開頭必然是 OP_FALSE 此指令被推入執行棧後腳本就會停止運行,但仍然被存在了鏈上。
所以 Ordinal Inscription 的本質是:在比特幣網絡上借助一個永遠不會被執行的腳本 tapscript,搭建了一個簡易的記賬層,進行資產和數據的統計和記錄
由於只有記賬,這就意味著不會有類似智能合約的腳本執行以及驗證的過程,必然高度依賴鏈下的中心化管理和上報結果。
4、什麼是 BRC 20 ?
BRC-20 的名字乍一看很像以太坊的 ERC 20 ,但其實兩者技術差別非常大,ERC-20 代幣的持有狀態保存於鏈上,能在鏈上得到網絡共識。而 BRC 20 則是藉助 Ordinals 協議銘刻的**JSON 格式銘文,**該規範只是定義了 brc-20 代幣的部署、鑄造和轉賬行為, 且BRC-20 代幣的持有狀態由鏈下服務維護。
部署的 json 是什麼樣的?
對應的 op 還有 Mint 和 Transfer,兩個格式幾乎一致,當然如果熟悉以太坊上交易的話,會覺得奇怪,這裡的轉賬接收方 to 怎麼表示呢?
這是因為轉賬交易生效時,就是該銘文內容對應的 sat 被交易的時候,所以銘文對應的 sat 被誰接收,誰就是 transfer 的對象 ,因此brc-20 的轉賬必須伴隨比特幣所有權的轉移(不是只是作為手續費被消耗)。
中心化機構則依據鏈上登記的各個 op 來推導出用戶當前應該有的餘額。
如 unisat.io 這樣客戶端軟件(索引器),根據mint、transfer 事件進行統計獲得。如:UTXO 中包含 mint 銘文,就為第一個所有者添加,transfer 則在發起者的地址上扣除餘額,接收者地址加上餘額。
在這個過程中,銘文是’附加’ 交易(聰)上的,比特幣的礦工並不會處理這些銘文,從鏈上來看跟其它聰依然是沒有分別的,他們都是當做普通的聰來轉移的。
5、如何評價 Ordinals 與 BRC 20
BRC-20 及Ordinals NFT, 給比特幣帶來了很多爭論,基本分成兩種陣營:
支持方認為,只要你支付手續費,你就有全權以任意的方式使用區塊空間,不論交易是什麼內容,他們認為 BRC-20 與NFT 給比特幣帶來了新的文化與敘事,有利於提高比特幣的實際應用價值。
反對方認為,這些 BRC-20 與 NFT 毫無價值是垃圾交易,過多的垃圾交易會搶占交易帶寬,導致交易入塊時間變長以及手續費變高。
筆者看來,通過上文的技術實現路線可以顯然感受到,雖然新生事物在價格上爆火,但是其技術缺陷也十分顯著
1、過於中心化
Ordinals 協議,必須基於比特幣網絡之外的線下服務進行狀態維護。如果底層的狀態服務不可用或者有缺陷,可能導致資產損失,因為比特幣網絡沒辦法阻止失效銘文上鍊,中心化平台要裁定誰的銘文有效,在該平台上就是有效的。
2、缺乏可信驗證機制
不是採用智能合約公開透明的代碼規則,所以該協議無法滿足共識、防止雙花等資金安全的需求。
可拓展閱讀:解讀最新 Final 的 ERC-6147 :極簡的半強制性 NFT 產權分離標準
3、比特幣網絡性能局限
目前比特幣出塊間隔長達十分鐘,交易確認的速度過慢,也會導致交易體驗不佳。而且比特幣的交易成本太高,並且,一筆成功的上鍊銘文交易要扣掉三方抽成,平台網絡數據延遲,以及各種卡頓帶來的預估差錯成本,所以礦工費拉滿至少要2-3 倍才行
4、缺乏基礎設施
比如作為 token 最核心的交易和定價服務,現在是主要依靠交易平台的訂單系統保障,完全中心化的結果缺乏權威的交易方法和定價方法。比如其交易場景若沒有中心化平台裁定極易被雙花作惡。銘文先到先得的fomo 機制和礦工按礦工費優先打包的機制存在的邏輯悖論,這就決定了mint 並不一定是公平的
5、缺乏安全性
BRC 20 容易讓用戶產生錯覺,使其認為BRC 20 是利用了比特幣的安全性進行創造的代幣,會和比特幣一樣的安全以及穩定,但其實它與BTC 並不一樣,BTC 的安全是建立在加密以及共識算法所支撐之上,已經相對穩定運行了相當長的時間,經受住了時間的考驗,而BRC 20 是利用Ordinals 協議與BTC 進行綁定,Ordinals 協議目前運行時間短,還在發展初始階段,其中可能會存在一些安全隱患還未被發現。
慢霧也發出 BRC 20 存在的安全風險的提醒:
近期BRC-20 比較火,我們注意到BRC-20 從Mint 代幣到交易,可能存在安全風險:Mint 代幣上,相關的BRC 20 代幣鑄造平台安全性存疑,防禦措施較為薄弱,容易被惡意攻擊篡改代碼,從而導致用戶Mint 時資產被盜。在交易方法上,有兩種方式:一是私下找第三方擔保交易,很容易遇到騙子、假幣等;二是去專門的交易平台掛單交易,這些交易平台的安全性無法得到保證。
筆者雖然並不看好眼前的 Ordinals,畢竟他對區塊空間的應用還是太單調只是把圖片、NFT 放進去並沒有產生更多價值。但是作為一個有趣的嘗試,如此破圈的創新也能重新引發大家的思考:
如何利用比特幣可編程性?畢竟如今的公鏈中不會有比比特幣更強的共識與安全性了。
都是存儲空間的利用,其實 Ordinals 協議在OP-Ruturn 輸出的金融交易,這在本質上和全節點存儲的其他東西沒有什麼不同,但是是否比特幣只能為高淨值交易服務?是否可自由的將區塊空間去存儲和執行一些低成本的數據?
這也讓我想起曾經 Vitalik 為代表提出的:“當你合理地使用技術並且支付了相應的花費,那你的行為就是有合法性的”