比特币研究人员阿剑以及 Harshky Capital 的 Tech lead Jeffery Hu 谈论他们对 BRC-20 在内的比特币二层的看法。
主播和嘉宾
阿剑:Bitcoin Maximalism,BTCStudy 贡献者,@AurtrianAjian
Jeffery Hu:Hashkey Capital Tech lead,@hu_zhiwei
Brutoshi:Mempool 主理人,Web3 钱包产品 AstroX 联合创始人,@brutoshi_
0xHelen:Mempool 主理人,web3 builder
比特币的 NFT 协议自 2 月份面世以来,引发了一系列关注——从基于 Ordinals 的 NFT 到基于 Ordinals 的 BRC20 代币,但是对于 BRC20 协议,一些比特币研究人员认为,他们并不是最佳解决方案,类似于 RGB 这样的比特币二层,才是更好的选择。
Mempool 播客在这一期节目请到了比特币研究人员阿剑以及 Harshky Capital 的 Tech lead Jeffery Hu 来谈论他们对包括 Brc20 在内的比特币二层的看法。
Ordinals 由比特币核心开发者 Casey Rodarmor 在 2022 年 2 月 2 日提出 BIP,到了 2023 年 1 月底上线,整个开发经过了差不多一年的时间,简单来说,它用一种独特的方式,把任意一段 4MB 大小内容数据写到比特币上,每一段数据和比特币的一个聪绑定。可以从两个部分理解 Ordinals 这个协议,一个是 Ordinals 序数,一个是 Inscription 铭文:
比特币实际上是一个去中心化的账本系统,而这个账本的核心是它的脚本系统——用来编写交易规则的语言,这种语言不具备图灵完备性,提供了执行交易和定制特定操作的功能。
Ordinals 在脚本中的逻辑实际上依赖比特币脚本中的「op_if」的操作码, 这个操作码自比特币诞生起就存在,由中本聪写下。「op_if」的意思是说,如果堆栈中出现了「0」和「op_if」,那么「0」和「op_if」中间这一整段代码都会被跳过,不会进入堆栈中去实际执行。
而 Ordinals 就是利用了这一点——当它需要附加铭文时,它先验证一个签名,然后向堆栈写入「0」和「op_if」,而「0」和「op_if」中间的这段数据按照脚本设置被完整地跳过,而这段数据就是 Ordinals 铭文。
除了「op_if」,Ordinals 的存在还跟比特币一次重大技术升级隔离见证有关。众所周知,比特币记账是采用 UTXO 系统,而 UTXO 有自己的脚本公钥,通常需要提供一些数据来完成脚本公钥编程出来的验证程序一笔钱才能被解锁。原本,所有用于通过验证程序的数据都会放在输入脚本签名的字段里。2017 年 8 月,比特币采用了名为隔离见证 (SegWit) 的软分叉升级,通俗地说,通过把占用大量存储空间的签名等数据,放置交易脚本末尾,在比特币区块大小不超过 4MB 的限制下,区块有更大空间,从而能进行更多的交易,以达到扩容的目的。
由于隔离见证是软分叉,并非强制使用,开发者为了吸引大家使用隔离见证,便让隔离见证上数据存储价格更为低廉。而交易的大小是收取交比特币的手续费的依据,因此,开发者采用对方法是对于见证隔离部分交易大小计算给予折扣——把交易数据结构分为交易数据和见证数据两部分,在计算见证数据的大小时,使用的是 virtual Byte(vByte)为单位,1 个 vByte 相当于 4 个权重单位 (wu):
也就是说,见证部分的数据权重仅为交易部分的 25%,交易费用也相应地为 25%,同时,此前最大区块大小由 1MB 变更为 1vMB,即 4MB。
但是真正实现 Ordinals,还跟 Taproot 有关。在见证隔离的技术中,对每次输入的数据大小做了专门的限制,但是到了 2021 年 11 月,比特币再次发生重大升级 Taproot,移除对见证部分中数据量的限制,数据具体大小只受到隔离区域最大区块 4MB 的限制,同时,让开发者可以在见证部分编写更高级的脚本。
在一连串技术升级之后,让之前没有办法放在比特币链上对数据能够存储到链上,一步步为实现 Ordinals 打下基础。
Ordinals 发布之后,社区先是用这个协议来发行 NFT,尤其是像 Yuga Labs 这样知名的机构也发行了基于 BRC20 的比特币 NFT 之后,引起了行业广泛关注,Mempool 也发布了专门的关于比特币 NFT 的研究报告(https://mp.weixin.qq.com/s/AUnlV5R6jGsEXUD3BDVE2Q)。但是很快引起市场更大关注的是基于 Ordinals 发行代币的 BRC20 协议。
在比特币 NFT 热潮之后,推特用户@domodata 于 2023 年 3 月 8 日创建了比特币上的 BRC-20 代币标准。
BRC20 一经面世,就引起了极大的关注,许多人希望借着 Ordinals 风头发行代币。首个在 BRC-20 上部署的代币是「ordi」,致敬 BTC,Ordi 的总量也为 2100 万个,每次铸币限制为 1000 个。Ordi 引起市场极大追捧,如果按照 mint 价格计算,最高时涨幅超过 3000 倍,一度成为市场最热的 meme 币。但是在我们文章刊发的五月底,Ordi 的价格已经从最高时间 24 美元回落到 8 美元附近。
同时,就在 5 月 25 日,一家名为 Stably 的公司宣布,他们即将推出其美元 (USD) 支持的稳定币 Stably USD,作为本地发行的 BRC20 代币,符号为**#USD**。
从技术上简单解释 BRC20,它实际上就是利用了铭刻可以在区块中写入任意数据的特点,在其中写入 JSON 形式的数据来发行代币,这些 JSON 暑假定义代币的一些标准,包括资产名字、发行量等等信息都以铭刻的形式写到链上。
如果以如果用以太坊来打比方,相当于在 ERC721 之上实现 ERC20 发行代币的功能。用比喻的方式就更能够理解这种「套娃」的形式,如果比特币是一张纸钞,Ordinals 就像在这个纸钞上面去写了一些文字或者是画一幅画,甚至是嵌入一个大小合适的游戏,在我们的嘉宾 Jeffery Hu 看来,BRC20 就相当于在这张钞票上写了一张支票,通过这张钞票上的支票,把钱转移给另一个人。
在我们的嘉宾,阿剑和 Jeffery Hu 看来,BRC20 和之前的 Omni Layer 协议非常类似,「而之前大家把这条路走了一遍,我们已经知道了是一条走不通的道路」。
Omni Layer 也是试图在比特币之上去发行额外的资产。真正让 Omnilayer 大规模落地的是在 2014 年 Tether 公司基于它发行稳定币 USDT,这些转帐帐号地址开头通常是「1」、「3」。虽然转账速度较慢,但是因为是基于比特币区块链,一开始还是受到用户接受,尤其大笔金额的转帐通常会用基于 Omni Layer 的 USDT。但到了 2018 年以太坊热门起来,所以 Tether 公司在以太坊上面发行 USDT,转帐速度大幅上升,这些地址通常是「0x」,基于 Omni Layer 的用户逐渐流失。
**Omni Layer 和 Ordinals 的设计非常类似,实际上是利用的也是比特币的 OP_RETURN 脚本,**在交易中嵌入小段数据,从而把比特币之外的代币信息写在比特币链上。
在比特币的 UTXO 系统中,每一笔交易都有花费(spend)即输入,然后产生一笔输出(output),就是「未花费过的交易输出」(Unspent Transaction Output)。输出脚本负责在交易中编程,当一个交易试图从一个账户中支出时,它必须提供一个输入脚本,来「解决」输出脚本提供的难题。
但是当输出脚本中使用 OP_RETURN 操作码时,它将输出标记为不可消费,这意味着该交易不会影响余额,但是这笔交易仍然被记录在区块链上:
不难看出,Omini 协议和 Odinals 协议有一些差异:在 Omni 协议中,比特币的链上资产和交易之间本身是没有关系的,但是在 Ordinals 协议中,通过追踪聪的流动,去跟踪和决定 NFT 到底在谁手里,也就是说 NFT 和比特币资产本身是绑定的。
但非常相似:
首先,他们都是把数据写在链上,思路都是把整个协议设计分为两层:
其次,他们解决双花问题的核心在于 UTXO 不能被花费两次:
面对 BRC20,值得思考的是,Omni Layer 已经被证明行不通了,BRC20 与其高度相似,是不是能够较好地发展下去?
在我们的嘉宾看来,RGB 或许是个更好的方法——在用 UTXO 保障资金安全的情况下,并不需要把所有数据都放到链上,只需要把数据承诺放到链上,通过这种方式来实现一个安全的智能合约系统。
在很长一段时间里,在 Vitalic 还在运营 Bitcoin Magazine 这个网站时候,包括他在内,社区许多人都尝试去比特币上发行额外的资产,Omnilayer 以及 Counterparty 都是这个尝试的结果,(在我们第 4 期节目中,对这一类尝试和努力做出了梳理)。
经过一段时间的努力之后,社区得出了一致得出的结论是:如果想使用比特币的脚本去发行额外的资产,也就意味着需要所有节点去解析比特币脚本里的额外资产的信息,在真正进入大规模应用,在速度、费用上缺陷十分明显。
于是,Vitalic 放弃了在比特币作为底层,另起炉灶,在 2013 年年底写出了以太坊白皮书。与此同时,有另一些人,他们没有放弃比特币,但是放弃把所有数据写到比特币链上,而只把数据最重要的部分上链,也就是像 RGB 这样的比特币二层协议。
基于 Peter Todd 在 2017 年提出的客户端验证(client-side validation)和一次性密封条(single-use-seals)的概念,RGB 协议提出了一种更可扩展、更加隐私、更面向未来的解决方案,其核心的理念是,仅在必要的时候才使用比特币区块链,代币转移的验证工作都从全链共识层中移除,放在链下,仅由接收支付的一方的客户端来验证,但是利用比特币的去中心化网络来防止双花以及抗审查,展开来说,它有以下特征:
一次性密封条和链下转移:RGB 的基本设计是这样的,代币和一个比特币 UTXO 绑定,如果要转移代币,就需要花费这个 UTXO,在花费这个 UTXO 的时候,比特币交易必须包含一个数据承诺,即 RGB 的支付信息,包括输入、代币将被发送到哪个 UTXO、资产的 id、数量、花费的交易等等。
(文献参考:https://www.btcstudy.org/2022/04/24/understanding-rgb-protocol/)
在这种设计中,比特币的 UTXO 的作用是装载 RGB 资产的一次性容器,要转移资产,你只需要打开旧的容器、关上新的容器就好。
也即是说,在 RGB 的交易当中,需要发起一笔交易时候,交易发起方在链下点对点地把没有瑕疵的证明资产流转顺序的资料完整地发给交易对方,在链上,用户花费携带的 UTXO,用 OP_RETURN 输出去承载这笔交易的这个哈希值,值得注意的是,相比 Omni 协议会把完整的交易放上去,RGB 协议只放一个哈希值。
自主验证:无论是 Omnilayer 还是 Ordinals,实际上都是通过 UTXO 不能双花的特质去保证比特币上的额外资产的安全性,实际上 RGB 也是基于这样一个理念——让用户自主验证特定 UTXO 上合约的状态,并且验证所有合约状态转换都是安全与否,然后,用比特币的 UTXO 交易去激发一个智能合约系统。
举个例子, Brutoshi 要给阿剑发送一笔资产时候,阿剑需要 Brutoshi 提供流转过程详细记录,来验证确实有一笔资产通过一笔一笔的比特币交易路由或者说中转到了他手上,而这些资料也能够让阿剑向下一个人证明,这些资产确确实实是从某一个地方一路流转到他手上的,这个验证方式被称之为自主验证——流转链条是没有瑕疵的,接受者可以放心地接收资产,并且能够支付给其他人。
**抗审查:**除此之外,RGB 不需要接收方给出明确的 UTXO,而是给出 UTXO 加一个混淆值,这样保证了接收方的隐私性。同时,在流转过程的话,使用零知识证明技术保证整个流转过程当中它的数额不会曝光,比比特币上的 UTXO 更具有隐私性。
这也是基于 Peter Tolder 一个非常激进的观念,**他认为旷工不应该知道一笔交易里面的具体内容,只要去挖矿就行了,因为如果知道交易的内容,就会带来审查的这个可能性。**RGB 继承了这个理念——所有的 RGB 资产只不过是被人为地附加到一个 UTXO 中,因此,它在链上的这个他的链上的痕迹就是一笔普通的比特币交易,矿工不需要知道交易里面到底有没有 RGB 资产,矿工只需要挖比特币交易就可以了。
一直以来,比特币的隐私性是有限的,比如交易的转账金额是公开的,比特币社区做出这样的选择,是认为货币量的可审计性会比交易的隐私性更加重要。
在我们 4 月份举办的 Ordinals 线下活动中,北美最大的矿池 Luxor Mining 向我们表示,作为一家身在美国的公司他们需要符合美国法律的要求,会基于一些 OFAC,对比如来自北朝鲜的创作者审查,因此,在一些极端情况下,完全的抗审查性也是必要的。
听起来 RGB 是一个完美的技术方案,但是有时候生态的发展需要「天时地利人和」,以太坊的白皮书在 2013 年年底发布,2015 年发布了主网,虽然 2016 年时还发生过针对以太坊的大规模攻击攻击,但是随着 defi 的发展,越来越多的开发者去以太上搭建应用,拥抱与比特币和 RGB 不一样的这个技术范式。
RGB 在几年备受冷落,团队大约只有 5 个人,都是乌克兰人,他们继续维护着这个协议,但是我们两位嘉宾都认为,假以时日,真正合适的方案是能够发展起来的。
在以太坊社区,大家对二层的形成了比较强的共识。在布拉格的 DevCon,社区认为,之前许多 Layer2 概念,包括 Plasma 等等在技术上都有一些缺陷,但是直到走到 Rollup,一个理想状态的 Layer2 结构才出现:为了解决主链性能局限等问题被重新创建的一条链,和主链之间能够双向免信任,就是说主网和侧链能够相互验证,以及资金双向流动。
但是在比特币上,我们没有办法套用以太坊 Layer2 的概念,一个最简单的例子,闪电网络毫无疑问是比特币上的 layer2,但是它没有独立的链,也比如说比特币的侧链和比特币之间的信任通常是单向的,因此,我们尝试对比特币的 layer2 做一个定义和分类,我们的嘉宾 Jeffery Hu 把它们分为四类:
图片来源:Jeffery Twitter @hu_zhiwei
A. Rollup
Rollup 是以太坊上最受追捧的二层方案,它本质上是将计算过程从主链转移到称为「Rollup 链」的独立链上。在这些 Rollup 链上执行交易后,数据被聚合并汇总,传输到主链进行验证,因此,能够减少以太坊的网络拥塞。
相比之下,在比特币上的 Rollkit、Alpen 这些 Rollup 项目中,相比于以太坊上较强的智能合约功能,比特币扮演的是数据可用层的角色,但由于比特币被认为是最安全的链,因此,这个方案在一定应用场景中也有其优势。
B. 状态通道
最典型比特币状态通道就是闪电网络,其理念是在区块链之外开通一条「绿色通道」,将大量高频的、小额的交易在区块链外进行,最终的结算数据放在链上,链下交易的确认和支付通道等问题,通过 RSMC 和 HTLC 等技术方式去解决。相比 Rollup 等方案,它没有一条独立的链,而只有一个通道。
闪电网络最终的安全性其实是由比特币的矿工来保证的,Rollup 也是这样,因此,Rollup 和状态通道设计方案非常类似。
在这几年时间里,闪电网络发展速度并不是很明显,根据 5 月 30 日数据,目前大约有 5300 个 BTC 在通道里,但是我们也看到像 Okex 这样的交易所已经利用闪电网络支持比特币交易,所以我们认为,在越来越多的应用场景体会到闪电网络带来的「甜头」之后,闪电网络能够更快地发展起来。
C. 侧链:
闪电网络主要解决 BTC 结算吞吐量低、成本高的问题,但没有解决 BTC 原生应用构建不足的问题,因此,在同一时期,比特币侧链(Sidechain)的概念也被提出。简单地说,就是开发者们就另外创造一条链,在这条链上做更多的智能合约或者是其他的运算执行。
侧链和比特币之间的交互,主要是侧链去验证比特币主链上的信息,然后做后续的执行,反过来比特币主链无法去无信任侧链,或者是由所有比特币矿工去验证出来侧脸上的交易是不是发生了。因此,一般来说可能都采用联盟侧链的形式,类似于一个小组或者是几个成员互相见证的方式,所以去实现双向的锚定。
Blockstream 最早提出并开发了侧链,名为 Liquid Network,于 2018 年上线。最近大火的 stacks,也被认为是侧链。
D. 客户端验证
和状态通道的想法有些类似,就是不需要所有的状态转换过程都在主链上的所有节点 / 矿工来通过重复计算的方式来验证,只需要利用主链来保证承诺的安全性即可,主要项目包括:RGB、Taro 等。RGB 等项目也会提供 FT、NFT 的合约模板来支持一些合约的开发。
我们也能够看到不同比特币二层之间的组合,能够给比特币生态带来更大的可能性,比如 RGB+ 闪电网络,前者带来资产类别的扩展,后者来带性能的拓展,在 RGB 协议中,使用闪电网络充当链下的通道,在发行资产时,是一个性能得到极大提升的设计。
但如果跳出二层这个限制,对围绕比特币技术还可以这样划分:
一类叫做重新解释层,比如 Ordinals 和 Omnilayer 以及 BRC20,这些其实都是在现有的主链上的交易,但是通过这些技术,重新定义或者说解释了交易的含义,比如说让 Ordinals 一个 NFT 或者是一个 FT 和一个聪绑定,又或者是 Omnilayer 让一笔资产和一个 NFT 绑定,他们在比特币主链上有较多的动作。
**另一类叫做省略层,**比如闪电网络,只是把最终的结算或者是一些承诺信息写入链上,以及利用比特币的安全性,许多中间的交易斗在链下完成。
RGB 其实也是可以认为是两种的一种结合,既用了比特币网络上的一些数据,同时也在链下做了许多客户端验证,为比特币可扩展性的提升带来了巨大的可能性。
不能否认的是,Ordinals 的出现以及比特币一系列技术准备之后,我们认为比特币未来生态的发展还是有极大的可能性。