出品|歐科雲鏈研究院

作者| Jason Jiang

在Web3世界,鏈上活動所產生的數據直接對應著價值流動,掌握鏈上數據就能發現更多Alpha。加上近年加密市場頻繁遭遇風險事件,個人和機構用戶對鏈上數據也愈加敏感。鏈上數據已成為洞悉加密世界必不可少的“利器” 。但面對近來風頭正盛的BRC20交易,我們對其進行地址標籤分析時,卻發現此前的BTC-UTXO模型卻似乎並不完全適用。那問題究竟出在哪兒?又該如何解決?

BRC20交易與PSBT

分析問題前,首先要了解BRC20基本情況。 2023年1月,比特幣核心貢獻者Casey Rodarmor提出“序數理論”(Ordinals Theory),允許用戶在比特幣最小單位“聰”上寫入任意文件(不超過4MB的圖像、文本、視頻等)。隨後,匿名分析師@domodata基於Ordinals協議創建BRC20代幣標準。這是一種實驗性代幣標準,允許任何人在比特幣網絡發行代幣。

Ordinals協議和BRC20標准給比特幣生態創造了價值轉移之外的全新用例,使其在減半之後有了另一種極具吸引力的敘事邏輯。作為最古老的區塊鏈生態,比特幣因此煥發無限活力,BRC20代幣也在2023年上半年成為廣受關注的賽道:截至2023年6月29日,BRC20相關代幣已超過6000種,市值超過6億美元。

但與以太坊ERC20 部署智能合約後可立即發行和傳輸代幣不同,BRC20並不是實際意義上的代幣,而是記錄特定文本的“聰”,因此需要單獨索引器來了解BRC20 代幣的狀態或餘額。同時,BRC20是以公鑰腳本中的JSON 數據包為承載體,相關代幣合約部署以及代幣鑄造、轉移都需要利用Ordinals協議將銘文設置為JSON數據格式來實現。

由於比特幣公鑰腳本只存儲數據,並不支持智能合約指令執行程序,所以BRC20代幣也無法構建相關協議實現自動交割,理論上只能通過集中託管或OTC完成交易。這些方式不論交易效率和信任程度都不盡如人意,於是PSBT(Partially Signed Bitcoin Transactions,部分簽名比特幣交易)開始被用於BRC20相關交易中。

所謂PSBT,是由BTC核心開發者Andrew Chow提出的一項提高未簽名交易便捷性的標準。它可以創建一個未完全簽名的交易以及一些其他數據來協助未簽名交易的傳輸,促進未簽名交易的可移植性,讓多方能在不同時間、不同場合(軟件或硬件錢包)更便捷地對同一筆交易進行簽名。在一筆多簽交易中,Creator只需先創建一個PSBT標識要花費的UTXO和接收UTXO的output,再將這個PSBT複製到可簽名的程序中,通過Combiner將多個PSBT集成到一個PSBT中並發給每個參與者,各方完成簽名後即可完成完整交易。

簡言之, PSBT允許用戶僅對部分input進行簽名,以幫助BRC20代幣在沒有智能合約的情況下實現交易的去信任化。包括UniSat和其他Ordinals市場都在利用PSBT技術使買賣雙方能以無需信任和非託管方式進行交易。

為何BRC20交易具有特殊性?

這是因為,如今我們在對比特幣地址標籤進行解析時,主要基於UTXO特性的Common Spending和One-Time-Change等原則進行追溯。其中, Common Spending原則是指,如果一筆BTC交易同時有多個輸入地址,那麼可認定這些input地址屬於同一個實體,因為只有他/它有所有的私鑰才能將這些地址放在同一交易中

但在使用PSBT進行BRC-20交易時,整個PSBT廣播前都會在鏈下協調好買賣方在Input與Output確認後再完成簽名,因此在輸入中可能會有買方、賣方、平台等多個角色,並存在一個具體參與方(物理上)同時擔任多個角色的可能性,因此採用Common Spending原則的標籤模型並不能兼容此類交易。

以具體的BRC20 Token交易為例。目前常見的BRC20交易涉及Token合約部署(Deploy)、鑄造(Mint)和轉移(Transfer)三種主要類型。

(1)在Deploy和Mint過程中,代幣轉賬沒有發送方地址而只有接收方地址,其BTC轉賬交易的Input和output地址最多只有一個,所以無法用基於Common Spending原則的模型進行標籤拓展。

最新發現:BRC-20交易並不適用BTC-UTXO標籤模型

 (ordi的deploy交易-代幣轉賬) 

最新發現:BRC-20交易並不適用BTC-UTXO標籤模型

 (ordi的deploy交易-BTC轉賬)

(2)在BRC20代幣的Transfer過程中,Input地址通常會有多個,我們可以通過查看交易的代幣轉賬來辨別本次交易的買方和賣方地址。例如,在下面這筆ordi的Transfer交易(https://www.oklink.com/cn/btc/tx/bc2ac0be40b33cfaf0dedf7bafc97de113ce56e2e6dc7caf67c116f00d1dc849)中,代幣發送方(bc1p...hdjn)為交易的賣方,代幣接收方(bc1p...wftk)為交易的買方。

最新發現:BRC-20交易並不適用BTC-UTXO標籤模型

但在BTC轉賬交易的Input裡會存在多個地址,其中有賣方地址,也可能會有買方地址和疑似第三方平台的地址:

最新發現:BRC-20交易並不適用BTC-UTXO標籤模型

經過分析,我們發現在BRC20的Transfer過程中,儘管輸入腳本類型大部分是單簽(也存在少數多簽情況),但由於可能應用PSBT技術,將賣方和第三方平台地址等共同添加到input中來實現多簽,所以會導致input中多個地址雖然看起來是單簽,但實際上卻並不屬於同一個實體/個人,因此也無法採用Common Spending原則進行判斷。

綜上,BRC20交易的特殊性主要體現在:在Deploy和Mint過程中最多只會出現一個input地址,無法滿足“Common Spending”原則的前提條件。在Transfer過程中,由於input地址中有可能包含多種角色,如果用基於“Common Spending”原則的UTXO模型對交易地址進行標籤拓展,可能會將買方、賣方和第三方平台打上相同標籤,導致標籤錯誤,從而會誤導其他主體對BRC20市場的判斷,甚至會影響比特幣地址標籤的整體準確性和可信性

如何消除BRC20對UTXO標籤模型的影響?

為了消除BRC-20交易帶來的負面影響,在拓展BTC-UTXO標籤模型的過程中,我們可以選擇通過特定篩選機制識別和剔除相關交易,以保證整個BTC- UTXO標籤庫的準確性。同時考慮到,多重簽名對基於“Common Spending”原則的BTC-UTXO標籤拓展模型的影響,我們也需要對相關交易的input和output腳本進行解析,以過濾多簽地址,從而在理論上支持UTXO標籤拓展不受影響。

其中,識別多簽主要是通過查看其鎖定腳本中是否包含多個公鑰和對應的簽名條件。多簽鎖定腳本通常包含類似於"OP_CHECKMULTISIG" 或"OP_CHECKMULTISIGVERIFY" 的操作碼,並且需要滿足多個簽名條件才能解鎖資金。如果在輸出腳本中發現包含多個公鑰和對應簽名條件,那麼這個輸出就是一個多重簽名輸出。同樣地,如果輸入腳本包含了多個簽名,那麼這個輸入就是一個多重簽名輸入。

需要注意的是,在進行腳本類型解析時,我們首先要判斷交易是否為隔離見證交易。如果是隔離見證交易則需要對Witness信息進行解析。以下為常見的非隔離見證交易腳本和隔離見證交易腳本列表:

最新發現:BRC-20交易並不適用BTC-UTXO標籤模型

以非隔離見證交易腳本Pay-to-Public-Key-Hash (P2PKH)為例。這是最常見的比特幣交易類型之一。在P2PKH 交易中,發送方需要提供接收方的公鑰哈希作為交易輸出腳本。接收方需要提供與該公鑰相對應的私鑰來解鎖輸出。在對P2PKH進行解析時,主要規則為:

輸入腳本:包含簽名信息以及公鑰;script.getChunks().size() == 2;

最新發現:BRC-20交易並不適用BTC-UTXO標籤模型

輸出腳本:OP_DUP + OP_HASH160 + pubkeyHash + OP_EQUALVERIFY + OP_CHECKSIG;判斷是否以OP_DUP開頭並且以OP_CHECKSIG結尾。

最新發現:BRC-20交易並不適用BTC-UTXO標籤模型

在隔離見證交易中,以P2WPKH為例。這是一種使用隔離見證技術的交易類型,它可以提高交易的效率和安全性。在P2WPKH 交易中,發送方需要提供接收方的公鑰哈希作為輸出腳本。在對這類交易進行解析時,其規則為:

輸入腳本:EMPTY

witness:簽名+ pubkey;判斷時首先獲取input script是否為EMPTY,然後判斷witness.getPushCount() == 2

最新發現:BRC-20交易並不適用BTC-UTXO標籤模型

輸出腳本:0 + 20byte witness program;判斷時首先判斷是否以0開頭,之後判斷witness program長度是否為20byte。 (注:P2WPKH的output script中witness program長度規定為20byte。)

最新發現:BRC-20交易並不適用BTC-UTXO標籤模型

除了依據不同交易的輸入輸出腳本特徵對多簽地址進行識別,我們也可以根據相關特徵對BRC20交易進行篩選。根據調研,BRC20交易採用PSBT技術通過線下簽名的形式完成,其隔離見證類型為Witness里以83為結尾的半簽名。

就如同下面這筆交易:

(https://www.oklink.com/cn/btc/tx/cbb6bbd6a828b15afe01ec77eab3e96a83be3d5ff56d99caf8185af79c3d1b53)

Address:bc1pd6pd4pdzx2an8w8pg8dlst8329ck8t8a6ehqqatglfstqmf3f9yss9yz7y

Winess:["1b003b4099402cde95be79ab7f4b488c74058c0f620cf4cbeb37a90ca871c4a499334a1262f24fdbe484d7511a54a04aa0d693b02159b603021942cb74f55e9d83"]

Witness裡有以83結尾的半簽名,所以理應將其視為BRC20相關交易。

在識別各類多簽地址及BRC20之後,我們就可以根據一定的規則對多簽地址和BRC20交易進行剔除,從而保證BTC- UTXO標籤拓展模式的可行性和可信性。其基本思路如下圖所示:

最新發現:BRC-20交易並不適用BTC-UTXO標籤模型

值得注意的是,當前全球主要鏈上數據服務商在拓展UTXO標籤時,大都會考慮多重簽名所帶來的影響,但還未有其他機構關注或提出BRC20交易可能導致UTXO標籤錯誤的問題。

彌合信息差在海量鏈上數據尋找價值增量

Web3世界對大多數人來說是陌生且神秘的,洞察Web3世界最重要的工具就是鏈上標籤。標籤解析能力也因此成為評估鏈上數據分析商競爭力的核心指標。但當我們真的選擇鏈上數據服務商時,除了要關注鏈上標籤的數量,還要關注標籤的質量:標籤是否準確?更新是否及時? ......一個錯誤的標籤帶來的負面影響有時候遠比沒有標籤的影響更大。基於此前積累的標籤技術能力和對BRC20市場的深入理解,歐科雲鏈團隊此次發現並提出BRC20交易對UTXO標籤模型的影響,其目的就是希望引起市場重視,提升比特幣地址標籤的可信性和可用性,讓鏈上標籤的質量更過硬。

除了標籤解析,全球鏈上數據服務市場在擁有至少百億美元級別的巨大發展潛力的同時,也需要持續創新以提升產品與服務質量。鏈上數據服務商不可能再像Reuters和Bloomberg等傳統金融數據服務商那樣,通過直接販賣即時數據和信息獲利,只能轉向在海量鏈上信息中探尋更多增量價值,以更好的技術創新與服務創新吸引用戶。只有根植於鏈上數據並有效結合鏈下信息,實現與虛擬與現實的有機結合,同時具有敏銳市場分析與數據洞察能力,鏈上數據分析服務才能適應加密創新與Web3市場發展。