最新发现:BRC-20交易并不适用BTC-UTXO标签模型
出品|欧科云链研究院
作者|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原则的模型进行标签拓展。
(ordi的deploy交易-代币转账)
(ordi的deploy交易-BTC转账)
(2)在BRC20代币的Transfer过程中,Input地址通常会有多个,我们可以通过查看交易的代币转账来辨别本次交易的买方和卖方地址。例如,在下面这笔ordi的Transfer交易(https://www.oklink.com/cn/btc/tx/bc2ac0be40b33cfaf0dedf7bafc97de113ce56e2e6dc7caf67c116f00d1dc849)中,代币发送方(bc1p…hdjn)为交易的卖方,代币接收方(bc1p…wftk)为交易的买方。
但在BTC转账交易的Input里会存在多个地址,其中有卖方地址,也可能会有买方地址和疑似第三方平台的地址:
经过分析,我们发现在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信息进行解析。以下为常见的非隔离见证交易脚本和隔离见证交易脚本列表:
以非隔离见证交易脚本Pay-to-Public-Key-Hash (P2PKH)为例。这是最常见的比特币交易类型之一。在 P2PKH 交易中,发送方需要提供接收方的公钥哈希作为交易输出脚本。接收方需要提供与该公钥相对应的私钥来解锁输出。在对P2PKH进行解析时,主要规则为:
输入脚本:包含签名信息以及公钥;script.getChunks().size() == 2;
输出脚本:OP_DUP + OP_HASH160 + pubkeyHash + OP_EQUALVERIFY + OP_CHECKSIG;判断是否以OP_DUP开头并且以OP_CHECKSIG结尾。
在隔离见证交易中,以P2WPKH为例。这是一种使用隔离见证技术的交易类型,它可以提高交易的效率和安全性。在 P2WPKH 交易中,发送方需要提供接收方的公钥哈希作为输出脚本。在对这类交易进行解析时,其规则为:
输入脚本:EMPTY
witness:签名 + pubkey;判断时首先获取input script是否为EMPTY,然后判断witness.getPushCount() == 2
输出脚本:0 + 20byte witness program;判断时首先判断是否以0开头,之后判断witness program长度是否为20byte。(注:P2WPKH的output script中witness program长度规定为20byte。)
除了依据不同交易的输入输出脚本特征对多签地址进行识别,我们也可以根据相关特征对BRC20交易进行筛选。根据调研,BRC20交易采用PSBT技术通过线下签名的形式完成,其隔离见证类型为Witness里以83为结尾的半签名。
就如同下面这笔交易:
(https://www.oklink.com/cn/btc/tx/cbb6bbd6a828b15afe01ec77eab3e96a83be3d5ff56d99caf8185af79c3d1b53)
Address:bc1pd6pd4pdzx2an8w8pg8dlst8329ck8t8a6ehqqatglfstqmf3f9yss9yz7y
Winess:["1b003b4099402cde95be79ab7f4b488c74058c0f620cf4cbeb37a90ca871c4a499334a1262f24fdbe484d7511a54a04aa0d693b02159b603021942cb74f55e9d83"]
Witness里有以83结尾的半签名,所以理应将其视为BRC20相关交易。
在识别各类多签地址及BRC20之后,我们就可以根据一定的规则对多签地址和BRC20交易进行剔除,从而保证BTC- UTXO标签拓展模式的可行性和可信性。其基本思路如下图所示:
值得注意的是,当前全球主要链上数据服务商在拓展UTXO标签时,大都会考虑多重签名所带来的影响,但还未有其他机构关注或提出BRC20交易可能导致UTXO标签错误的问题。
弥合信息差在海量链上数据寻找价值增量
Web3世界对大多数人来说是陌生且神秘的,洞察Web3世界最重要的工具就是链上标签。标签解析能力也因此成为评估链上数据分析商竞争力的核心指标。但当我们真的选择链上数据服务商时,除了要关注链上标签的数量,还要关注标签的质量:标签是否准确?更新是否及时?……一个错误的标签带来的负面影响有时候远比没有标签的影响更大。基于此前积累的标签技术能力和对BRC20市场的深入理解,欧科云链团队此次发现并提出BRC20交易对UTXO标签模型的影响,其目的就是希望引起市场重视,提升比特币地址标签的可信性和可用性,让链上标签的质量更过硬。
除了标签解析,全球链上数据服务市场在拥有至少百亿美元级别的巨大发展潜力的同时,也需要持续创新以提升产品与服务质量。链上数据服务商不可能再像Reuters和Bloomberg等传统金融数据服务商那样,通过直接贩卖即时数据和信息获利,只能转向在海量链上信息中探寻更多增量价值,以更好的技术创新与服务创新吸引用户。只有根植于链上数据并有效结合链下信息,实现与虚拟与现实的有机结合,同时具有敏锐市场分析与数据洞察能力,链上数据分析服务才能适应加密创新与Web3市场发展。