序数理论
在一般的比特币网络应用中,比特币是同质化代币,每个比特币的价值是相同的。而某些应用,需要区分不同的代币,因此它们会给每个代币一个id。
序数理论即是比特币网络的一个编号方案。
因为比特币网络采用utxo模型,所以每一笔交易中的代币都能追溯到其产出的coinbase交易。
比特币网络中,最小单位是聪
,即sats
。1BTC=100,000,000sats,全网BTC总产量21,000,000,所以共有2,100,000,000,000,000,两千一百万亿聪。
因此序数理论用0~2,100,000,000,000,000来编号每个独立的聪。
第一个应用
ordinals.com是一个基于序数理论的NFT
协议,该协议
利用taproot
脚本把符合万维网标准的内容上传到比特币网络。
每个taproot地址有一个描述符,ordinals协议里规定里描述符的基本结构。
OP_FALSE
OP_IF
OP_PUSH "ord"
OP_1
OP_PUSH "text/plain;charset=utf-8"
OP_0
OP_PUSH "Hello, world!"
OP_ENDIF
因为taproot描述符内容的明文只有在utxo被花费时才会上链,所以一个NFT上链需要2笔交易。
- 发送代币到铭文对应的taproot地址
- taproot地址话费utxo发送铭文到接收地址
在该项目中,这个NFT上链的过程称为铭刻(inscribe)
,而这个NFT称为铭文(inscription)
。
需要注意的是,ordinals.com只会收录铭刻在每个sats上的第一个铭文。此外,一个铭文被铭刻后,便和铭刻步骤中第二笔交易中输出的utxo
的第一个sats强绑定了,铭文的所有权和该sats的所有权保持一致。
衍生
brc20
在ordinals协议的基础上,有人提出了brc20
协议,当铭文内容是符合一定规则(brc-20-experiment)的json结构时,就是一个brc20操作。
brc20协议和序数理论没有关系,仅仅是利用了ordinals协议铭文可以是字符串的部分。
brc20规定的json格式如下:
部署
{
"p": "brc-20",
"op": "deploy",
"tick": "ordi",
"max": "21000000",
"lim": "1000"
}
铸造
{
"p": "brc-20",
"op": "mint",
"tick": "ordi",
"amt": "1000"
}
转账
{
"p": "brc-20",
"op": "transfer",
"tick": "ordi",
"amt": "100"
}