本文最初以英文发在 Medium 上:BRC-20 — NOT A Blockchain Project
BRC-20 的概念如今越来越受欢迎。$ORDI 是基于 BRC-20 最受欢迎的代币。其市值已于 2023 年 5 月 8 日突破 6 亿美元。那么,BRC-20 到底是什么呢?
Ordinals 协议
要理解 BRC-20,我们必须理解基于比特币的“Ordinals”协议。通常,“Ordinals”协议是一组规则,它将每个“聪”(比特币的最小单位,1 BTC = 100,000,000 聪)映射到整数。每个“聪”由矿工铸造,并被标记为一个从 0 到 2,100,000,000,000,000 的唯一数字。您可以阅读Ordinal Theory Handbook了解更多信息。“Ordinals”协议定义了如何追踪“聪”,因此我们可以说“聪 X 在区块 780220 被铸造,并从地址 A 转移到地址 B”。如果没有“Ordinals”协议,这在正常的比特币交易中毫无意义。
Taproot
现在我们有了“Ordinals”协议。这样我们就可以识别每个聪了。另外,我们需要知道的是,“taproot”于2021年11月14日被引入比特币。一般来说,taproot 允许用户在交易见证数据中存储自定义指令。因此,理论上,我们可以在标准见证数据之后插入指令代码:
OP_FALSE OP_IF <…> OP_ENDIF
OP_FALSE 和 OP_IF 确保代码块不可访问。我们可以将任何内容放入 <…> 中。这对比特币来说毫无用处。但通过这种方式,我们可以在比特币区块链中写入任何内容,例如 JSON 内容。结合“Ordinals”的概念,我们可以将任何数据“标记”到指定的聪(satoshi)。让我们看一个真实的例子:
这看起来像是一笔标准的比特币交易。但见证数据似乎更大。那么,让我们尝试解码见证数据的中间部分:
我们可以打开这个网站,粘贴十六进制数据,然后将其转换为 ASCII 码。然后我们可以得到:
比特币交易中包含一些文本数据,例如“ord”、“text/plain;charaset=utf-8”以及 JSON 字符串。例如,根据“ordinals”规则,我们可以说:“输出的第一个 satoshi 附加(或标记)了此类数据。”在 BRC-20 中,关键部分是 JSON 数据。
BRC-20
BRC-20也是一个尝试在比特币UTXO模型上构建账户模型体系的协议,它定义了Token的概念以及三个动作(部署、铸造、转账)。
部署
创建一个新的 BRC-20 代币。您可以设置代币的名称、总供应量以及每次发行的代币数量。每个代币都有其独特的名称。规则是“先到先得”。只有当其他代币已占用您想要的名称时,您才能选择其他名称。要部署 BRC-20 代币,您只需发送一笔带有以下标签的 BTC 交易:
{
“p” : “brc-20” ,
“op” : “deploy” ,
“tick” : “<代币名称>” ,
“max” : “<总供应量>” ,
“lim” : “<每枚硬币限额>”
}
薄荷
任何人都可以发送带有此类数据标签的 BTC 交易:
{
"p" : "brc-20" ,
"op" : "mint" ,
"tick" : "<代币名称>" ,
"amt" : "<铸造量>"
}
如果铸造的数量不超过总供应量,发送者将获得一些 BRC-20 币。
转移
转移 BRC-20 需要两笔交易。第一笔交易会创建一个聪(satoshi)的标签数据:
{
"p" : "brc-20" ,
"op" : "transfer" ,
"tick" : "<代币名称>" ,
"amt" : "<金额>" ,
}
第二个使用标记为 satoshi 的 UTXO 并将其转移到另一个地址。
一个大问题
到目前为止,一切看起来都很简单。你可以创建一个代币,铸造它,然后将一些币转移到另一个代币上。你只需要将 JSON 数据附加到比特币交易中。另一个钱包或交易所会持续检查所有交易。如果发现包含此类数据的交易,就会增加/减少余额。一切看起来都正常。
但是,如果有人发送了一笔包含“转账”操作的交易,但他根本没有收到币,该怎么办呢?别忘了,比特币并不关心无法访问的见证数据。比特币矿工会成功确认交易。但是,接收者该如何验证转账呢?
验证 BRC-20 转账是一项复杂的工作。不幸的是,BRC-20 并没有提供官方的共识层实现。因此,交易所或钱包必须根据完整的 BRC-20 转账历史记录来验证每笔转账。这看起来就像:我可以给你开一张支票,但你不知道它是否有效。最好你能通过请求某种服务来验证这张支票。但实际上,没有人能回答这个问题。你必须搜索所有 BRC-20 交易,看看我在指定时间是否有足够的钱。这只是验证 BRC-20 转账的一种方法。
区块链是一个实现最终一致性的分布式数据库。我不认为 BRC-20 是一个区块链项目。它甚至没有状态!它只是比特币数据中的一些 JSON 消息。与 Omni 项目不同,它是一个标准的比特币第 2 层实现,因为它提供了一个官方节点来定义转移是否成功。BRC-20 除了一些规则之外什么都没有。例如,如果你将一些 BRC-20 币转入交易所,但交易所认为转移无效。你很难收集足够的证据来证明你的币是有价值的,而不是假的,反之亦然。交易所必须根据整个传输数据历史记录来验证每笔存款。这是肮脏而危险的工作。任何错误都可能导致假币存款。攻击者可以用假币欺骗交易所,出售它们并提取有价值的加密资产。
结论
BRC-20 是基于比特币区块链的代币协议。它使用 Taproot 见证来存储任意数据。比特币并不关心这些数据。任何想使用它的人都必须实现验证流程,但这是一项非常困难的工作。