起源
2021 年 比特币进行了一次升级,命名为 Taproot。
Inscriptions 是 Taproot 升级中一个重要的特性,它允许在比特币交易中添加附加数据,实现附加数据上链。
Ordinals 协议诞生
2023年1月21日,Casey Rodarmor 推出 Ordinal 协议,为比特币最小单位聪进行编号,从而使每个聪成为唯一的,使用 ord 软件就可以追踪每个聪,并为其添加内容。因为添加的内容不同,所以聪之前就产生了区别,变成了非同质化的。
BTC-NFT 协议 添加图片
BRC-20 协议 添加文本
...
Ordinals 协议是一个为聪编号的系统,赋予每个聪序列号,并在交易中追踪它们。简而言之,用户可以通过 Ordinals 附加额外的数据,使每个聪都变得独一无二。
上链
上链文件可以是上面说的,图片、文本、json、音频等文件。文件大小不能超过 4MB,数据越大需要支付的费用越多。
软件 | 特点 | 是否收费 |
---|---|---|
ord | 需要 Bitcoin core 软件并同步全节点数据,等待时间长,需要会用命令行工具 | 交易费 |
unisat | 使用简单,操作方便 | 交易费 + 服务费 |
其他服务 | - | - |
从图中可以看出,利用 unisat 可以很方便把文件上链。根据上链类型的文件的不同,我们就可以区分发行 NFT、发行 Token、Mint token、注册域名等操作。附加数据上链的行为叫做:inscribe,附加的数据叫做:inscriptions。
inscribe 本质就是把一个文件附加到一个 1 sat 上。但是由于粉尘交易不被允许,所以每次转账至少要 > 546 sat。
当然除了使用 unisat 进行 inscribe,我们也可以使用 ord 命令来操作:
下面我将列举常用的 inscribe 文件类型:
BRC20 协议
这个协议本质上就是规定了一个 json 格式的文件,类似这样
{
"p":"brc-20",
"op":"deploy",
"tick":"kfmm",
"max":"21000000",
"lim":"100"
}
如果转账的所有 sat 中的一个 sat 附加了这个 json 文件,就是发行了一个 BRC20 代币。
ORC20 协议
本质上和 BRC20 一样,都是一个指定格式的 json 文件,不一样的是 json 数据定义的内容
{
"p": "orc-20",
"tick": "orc",
"name": "kfmm",
"op": "deploy",
"max": "21000000",
"lim": "10000",
"dec": "18"
}
.sats 域名
使用域名可以帮助我们输入简短的地址就可以完成交易,例如 kangfenmao.sats,在交易过程中,接收方输入这个域名,就可以对我发起一次转账。
如何铸造这个域名
我们需要用 ord 命令行工具,或者使用 unisat 等网站发起一笔交易,并将下面的 json 文件附加上去。
{
"p":"sns",
"op":"reg",
"name":"kangfenmao.sats"
}
如何通过域名获取钱包地址
索引器会全表扫描区块数据,然后找到第一个附加上面 json 数据的 sat,将这个 sat 所有者的钱包地址作为实际转账地址。
索引 BRC20 代币
当很多人上链了 BRC20 json 数据后,如何才能从链上读取到这些数据呢?目前还没有很简单的办法能读到这些数据,要想读取这些数据需要同步比特币网络全部区块数据(接近500GB),然后扫描全部区块,找到附加文本信息为 BRC20 格式的 sat,然后进行统计。
统计中可以得到很多信息,比如:
链上存在的 BRC20 代币一共有哪些
每一个 BRC20 代币发行者
每一个 BRC20 代币 mint 数据
每一个 BRC20 代币交易数据
...
将以上信息进行统计就可以得到一些图表
所有数据在比特币网络上都是静态数据,矿工不会帮助计算,只会原样打包
交易数据如何计算:
所有数据计算都是在链下进行的,扫描全部区块数据,根据操作类型进行累积计算,如果是 receive 就增加数量,如果 send 就减少数量,追踪全表数据扫描完成后得到最终余额。
注意:
- 如果两个人发行了同样内容的 ERC20 代币,以第一个发行者为准
- 如果 mint 数量超过了最大的发行数,后面 mint 数量作废
- inscribe
{"p":"brc20","op":"mint","tick":"kfmm"}
就完成了一次 mint - inscribe
{"p":"orc-20","tick":"orc","op":"send","n":"5"}
,然后再转账给别人,就完成了一次转发
Mint 计算
如果要计算一个 BRC20 代币是否 mint 完毕,首先找到发行这个币的 json 数据,读取名字、总量等信息。然后继续扫描币名相同、操作为 mint 的 json 数据,用总数减去这个 mint 数量后,继续找到下一个同样的数据。当总量被减到 0 的时候,代表这个币已经 mint完毕。如果这个时候我们继续发布 mint json 数据,将被作废。
如何建立一个全节点
在这个网站下载 Bitcoin Core: https://bitcoin.org/en/bitcoin-core/
这里使用图形客户端来举例:
我们下载安装后,即可开始数据同步,数据同步需要同步将近 500GB 数据,根据网络速度,同步完成大概需要1-2天时间。
在设置中勾选启用 RPC 服务器后,我们这个节点就可以对外提供数据服务了。这样我们就可以使用 ord 命令行工具调用这个 RPC 节点进行数据上链操作了。当然,有了全部数据,我们也可以对数据进行分析,得到更多的汇总信息。
ord 命令行工具使用:
https://docs.ordinals.com/guides/inscriptions.html
https://www.bilibili.com/video/BV1fP411f7Hj
相关网站
Ordinals官网
BRC-20协议
https://domo-2.gitbook.io/brc-20-experiment
比特币区块实时查询
数据分析
https://dune.com/dgtl_assets/bitcoin-ordinals-analysis
验证铭文真实性
域名铭文查询
BTC铭文浏览器
钱包
MINT工具
交易市场
UTXO
https://www.liaoxuefeng.com/wiki/1207298049439968/1207298275932480