BRC-20标准与铭文 Ordi 技术原理解析

作者:林冠宏 / 指尖下的幽灵。转载者,请: 务必标明出处。

掘金:juejin.im/user/178526...

GitHub : github.com/af913337456...

出版的书籍:


BRC-20标准的本质

BRC-20 标准是在 Ordinals 协议 的基础上提出的一种数据存储标准,应用在 BTC 链上。

由于这种标准被应用到了 Token 经济中,所以人们又叫它为BTC-Token标准

无论如何,我们只需要知道,它是定义了一种数据存储格式就行了。

至于Ordinals 协议是什么,可以去看这篇文章的介绍:Ordinals 协议介绍

BTC链的数据存储方案

关于在比特币链上存储数据的技术方案,早在几年前我参与开发的一个公司 DApp 的时候曾思考并实践过其中的一种,直到现在也是只有两种本质级别的方案:

  1. 存储在操作码 OP_RETURN [data] 所携带的数据域;
  2. 存在到隔离见证(SegWit)数据中。

关于 OP_RETURN 的深入解析在我第二本书中有单独的一章讲解它,涉及到如何使用来构造轻量级 DApp,OP_RETURN 所携带的数据量是有限的,对于重型 DApp 是不适用的,但它的好处是数据完全存储在链上。

相反,隔离见证(SegWit) 是存储在链下的,注意这里的重点:链下。

隔离见证(SegWit) 的由来

2017年以前,比特币交易的签名数据被包含在交易数据中,这种机制长远去看是有缺陷的,即当网络交易量大的时候,链上区块空间会被交易数据占大头导致区块膨胀,从而影响比特币全网的性能。

为了讲解这个问题,BTC的核心开发者们提出了隔离见证技术方案。做法是将比特币的签名数据单独抽出来,不再放到交易数据中,放到节点本地,这样交易数据量就大大减少从而解决问题。

签名是交易的核心数据,存储到本地后如何参与验证签名呢?做法是将签名数据存储到一个 见证区块(Witness Block)的数据结构中。当交易需要被验证签名的时候,就会把见证区块进行一次哈希计算,哈希值会被加入到交易数据中参与整体验证。

当节点本地的签名数据被修改,就会导致整个哈希计算不一致,自然地这笔交易就无法上链而被踢出区块交易组。

更多阅读:比特币技术 --- 交易的验签原理

BRC-20标准及数据存储位置

它定义了如下的基础 Json 结构:

json 复制代码
{
	"p": "brc-20",
	"op": "mint",
	"tick": "ordi",
	"amt": "1000",
	"max": "210000",
	"lim": "10",
   "des": "1",
}

字段解析如下。

  • p 协议名称。protocol 的首字母,告知解析器这是 BRC-20;
  • op 操作名称。operation 前两个字母,现在包含的取值有:
    • deploy 部署,代表部署 Token
    • mint 铸造,铸造/生产 Token
    • transfer 转移,转账 token
  • tick 名称,比如 Ordi,四个字母标识符,可以是 emoji;
  • amt 数量,当 op = tranfer 的时候用到;
  • max 最大供应,当 op = deploy 的时候用到;
  • lim 每次铸造时的数量限制,为最大值,当 op = mint 的时候用到;
  • des 精度

BRC-20 的数据存储位置在:隔离见证(SegWit)

BRC-20转账接收者

由于每次 BRC 的转账操作都是一笔 BTC 交易,我们可以指定交易的最小 BTC 数值是 1 sat,自然地,sat 的接收地址,就是这一次 BRC 转账的接收地址。

BRC-20的有效规则

部署规则

观察到上面的 deploy 操作可以想象到如果同一个 tick 被重复部署,那么在 Token 经济价值的角度上去看,应该认同哪一个呢?

一般来说,是遵循部署性质的先来后到,如果有其他说明,比如社区的高度一致性意见,那么以社区意见为主,此时可以理解为 BRC 层面的硬分叉。

比如我在昨天部署了 A,那么你今天再部署 A,你的 A 就不再被认同。

以ordi为例,domo在3月8日部署了ordi,你后面再部署叫ordi就是无效的了。

挖掘Mint规则

不限用户,任何人都可以按照标准去组装交易发出,只要当前的 Token 还没被 Mint 完,那么你就可以去 发送 Mint 交易。

虽然我们可以限制其 max 最大供应量是 2100 个,如果我作为用户,我偏偏往链上 mint 一笔 30000 个的,那么如何来限制我的这次 mint 超出各种限制而无效呢?

依靠的是标准的共识,下面我说谈及索引器来说明,共识是如何约束并维持整个系统正常运行的。

BRC-20的索引性质

思考上面的 BRC-20 标准,它在整个链上的频繁交易,会在一开始的几个地址的Token持有分散出很多零散的地址的持有。

那么在这种情况下,我们如何维持发散后的地址总值依然是当初 max 的总值呢?

依靠的是 BTC 的 UTXO 规则,首先每笔的 BRC 交易都是常规的 BTC 交易,而 BTC 交易模型基于 UTXO,自然地,对于受共识规则所认同有效的 BRC 交易,那么就能够索引整个交易链,由 Output 输出找出 Input 输入,再逐个累加就可得到总值。

BRC-20 索引器

所谓 BRC-20 索引器就是一个程序,根据 BRC-20 标准监控 BTC 链上的区块数据,来提取出各种 BRC-20 Token 交易的程序。

比如 Golang 语言实现的 BRC-20 索引器:github.com/unisat-wall...

索引器的做法在其他链,比如以太坊上面上面已经有很多例子,原理都是一样的,无外乎下面几个步骤:

  1. 监控链上区块;
  2. 从区块中获取数据;
  3. 将区块中的数据提取;
  4. 按照特定的规则对数据进行处理。

由于我们知道了 BRC-20 标准的 Json 结构,那么按照这个结构就能够取出这些基于 BRC-20 标准实现的 Token 数据,来实现:

  1. 转账;
  2. 余额;
  3. 等应用功能操作。

铭文 Ordi

Ordi 就是 BRC-20标准 下的一种 Token,且是历史的第一个,遵循上面所有属性。

打铭文

就是去发送 mint 交易,很多平台都提供了这个功能。

相关推荐
这个懒人8 小时前
ERC-20与ERC-721:区块链代币标准的双星解析
人工智能·区块链
数据与人工智能律师12 小时前
私服与外挂:刑事法律风险的深度剖析
大数据·人工智能·算法·云计算·区块链
电报号dapp11912 小时前
DeFi开发系统软件开发:技术架构与生态重构
重构·架构·web3·去中心化·区块链·智能合约
电报号dapp11917 小时前
公链钱包开发:技术逻辑与产品设计实践
web3·去中心化·区块链·智能合约
QQ399038502318 小时前
香港国际交易节奏解析:结构性波动背后的信号逻辑
区块链
这儿有一堆花1 天前
什么是智能合约?区块链上的自动化契约
自动化·区块链·智能合约
Sui_Network2 天前
Sui 上线两周年,掀起增长「海啸」
人工智能·物联网·游戏·web3·区块链·智能合约
数据与人工智能律师2 天前
互联网法院在NFT、元宇宙等新兴领域的规则创新
大数据·网络·人工智能·算法·区块链
九章云极AladdinEdu2 天前
算力经济模型推演:从中心化到去中心化算力市场的转变(区块链+智能合约的算力交易原型设计)
人工智能·机器学习·去中心化·区块链·智能合约·gpu算力·量子计算
这个懒人3 天前
第一节:Web3开发概述
web3·区块链