拓展协议
基础

基础

Ordinals 协议最初由 Casey 在 2022 年提出, 是一种可以给聪编号的方案。

比特币的最小单位是聪, 一个比特币等于 10810^8 聪。矿工在挖出区块, 获得新的比特币奖励时, 每个聪都可以被赋予一个编号。这个编号被称为聪的序数。由于比特币是基于 UTXO 模型, 每个 UTXO 中都包含一定编号范围内的聪。在给聪绑定数据, 例如文本、序列化的图片等, 通过追踪聪的转移可以确定这些数据的所有权。

编号聪

区块补贴是凭空产生比特币的唯一方式。在一个新区块产生时, 聪编号就被确定了。

从创世区块(第0个区块)开始, 区块补贴是 50 BTC, 在 Coinbase 交易中被输出到的 UTXO 中, 这些聪的编号范围在[0, 50×108)[0, \ 50 \times 10^8) 内。当第1个区块挖出时, 聪的编号范围在[50×108, 100×108)[50 \times 10^8, \ 100 \times 10^8) 内。 依次类推, 每个新区块产生时, 或者新的比特币被挖出时, 对应聪的编号就被确定了。

聪的编号表示有几种方法:

  • 整数表示: 从 0 开始, 每产出新的聪, 编号加 1

  • 百分比表示: 已挖出的聪占总供应的百分比

  • 十进制表示: <height>.<offset>

    • height: 区块高度
    • offset: 区块内聪偏移量
  • 度数表示: <cycle>°<epoch>’<period>″<offset>‴

    • cycle: 减半区块和难度调整区块重合称为一个周期, 第一次重合大约在2032年发生, 正好是比特币的第6次减半。
    • epoch: 减半周期内的区块偏移, 每 210000 区块减半。 例如区块高度是 840003, 处于第 4 个减半区块(840000区块)后, 则 cycle=0, epoch=3
    • period: 难度调整周期内的区块偏移, 每 2016 区块进行难度调整。例如区块高度是 840003, 处于第 417 个难度调整周期内, 偏移区块为 8400034162016=1344840003 - 416 * 2016 = 1344, 则 period=1344
    • offset: 区块内聪偏移量

例如: 第 840050 个区块的第 99 个聪 聪浏览器

  • 整数表示: 840050 区块补贴的聪的范围在 [1968765625000000, 1968765937499999][1968765625000000, \ 1968765937499999], 第 99 个聪的编号为 1968765625000099
  • 十进制表示: 840050.99
  • 度数表示: 处于第 4 个减半区块(840000区块)后, 故 cycle = 0; 减半周期内的偏移区块等于 50, 故 period = 50; 经历了 8400502016=416\frac {840050} {2016} = 416 个难度调整周期, 在第 417 个难度调整周期内的偏移区块等于 8400504162016=1394840050 - 416 * 2016 = 1394, 故 period = 1394; 区块内的聪的偏移量是 99, 故 offset = 99。最后度数表示为 0°50′1394″99‴

聪的稀有度

  • 普通 common - 任何不是区块中的第 0 个聪的聪
  • 不常见 uncommon - 每个区块的第 0 个聪, 例如: 869254区块的第0个聪: 838656.0
  • 稀有 rare - 每个难度调整时期的第 0 个聪, 例如: 第 423 次难度调整时的第 0 个聪: 0°12768′0″0‴, 度数表示法中的 periodoffset 必为 0
  • 史诗 epic - 每个减半时期的第 0 个聪, 例如: 第 4 次减半时的第 0 个聪: 0°0′1344″0‴, 度数表示法中 epochoffset 必为 0
  • 传奇 legendary - 每个周期的第 0 个聪, 每 6 次减半为一个周期, 下一个周期在 2032 年。目前只有创世区块的第 0 个聪是传奇聪: 0°0′0″0‴, 度数表示法中 epochperiodoffset 必为 0
  • 神话 mythic - 创世区块的第 0 个聪, 只能是 0°0′0″0‴

追踪聪

聪包含在 UTXO 中, 初次编号是在区块的 Coinbase 交易输出中。例如创世区块的 Coinbase 交易

01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000

交易输出的 UTXO 只有一个

{
  amount: '00f2052a01000000', // 大端序为 0x000000012a05f200, 等于十进制 5000000000
  scriptPubKeySize: '43',
  scriptPubKey:
    '4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac'
}

UTXO 包含的聪编号范围在 049999999990 \sim 4999999999

假设花费该 UTXO 时, 输出了两个 UTXO

聪在交易中的转移遵循先进先出的原则, 可以确定交易输出中的聪的编号范围:

  • 输出 0 的聪编号范围在 019999999990 \sim 1999999999
  • 输出 1 的聪编号范围在 200000000049999999992000000000 \sim 4999999999

铭刻

聪的铭刻是指给聪所在的 UTXO 绑定数据, 例如文本、序列化的图片等。铭刻的数据可以通过追踪聪的转移来确定所有权。

铭刻数据的方式有很多, 例如:

Copyright © 2024 HeapUp