Ordinals协议概况

  • 开源项目: https://github.com/ordinals/ord
  • 铭文浏览器: https://Ordinals.com
  • 关于Ordinals的BIP: https://github.com/ordinals/ord/blob/master/bip.mediawiki
  • 序数理论手册: https://docs.ordinals.com/overview.html

所需的技术积累

Ordinals NFTs 是基于以下两项比特币上的技术得以实现的: 2017年的隔离见证 (SegWit) 和 2021年的Taproot。

隔离见证(Segregated Witness)

Segwit 是 2017 年的一次更新,导致了比特币区块链的软分叉。该更新通过添加可以支持任意数据的“见证数据”部分,有效地将比特币交易分为两个部分。从技术意义上来说,隔离见证的实施意味着交易不再需要包含见证数据(通常是发送者的数字签名)。相反,在块末尾为见证数据创建了一个额外的空间作为单独的结构。它支持任意数据传输,并具有折扣的“块权重”,巧妙地将大量数据保留在比特币的块大小限制内,以避免硬分叉的需要。

这是Ordinals NFTs 的第一个先驱,因为它扩大了交易中可以包含多少任意数据的限制

Taproot

Taproot 于 2021 年 11 月实施,是一项多方面的升级,旨在提高比特币的隐私性、可扩展性和安全性。在此过程中,Taproot 创建了一个更简单的系统来存储任意见证数据,并放宽了对比特币交易中可以放置多少任意数据的限制。此次升级的最初目标是进一步增强基于比特币的智能合约,例如时间锁定合约,这些合约通常在见证数据中概述。

这些变化是Ordinals NFTs的关键推动因素,它将 NFT 数据存储在 Taproot 脚本路径支出脚本中。此次升级使得构建和存储任意见证数据变得更加容易,为“Ordinals”标准奠定了基础。由于数据要求放宽,假设单笔交易可以用其交易和见证数据填充整个区块,最高可达 4MB 的区块大小限制,从而极大地扩展了可以放在链上的媒体类型。

技术原理

序数(Ordinal)

Ordinal相当于常规NFT的TokenID. 分为铸造方案转让方案

每个聪(Sats) 使用以下算法进行铸造和转让:

# subsidy of block at given heightdef subsidy(height):return 50 * 100_000_000 >> height // 210_000# first ordinal of subsidy of block at given heightdef first_ordinal(height):start = 0for height in range(height):start += subsidy(height)return start# assign ordinals in given blockdef assign_ordinals(block):first = first_ordinal(block.height)last = first + subsidy(block.height)coinbase_ordinals = list(range(first, last))for transaction in block.transactions[1:]:ordinals = []for input in transaction.inputs:ordinals.extend(input.ordinals)for output in transaction.outputs:output.ordinals = ordinals[:output.value]del ordinals[:output.value]coinbase_ordinals.extend(ordinals)for output in block.transaction[0].outputs:output.ordinals = coinbase_ordinals[:output.value]del coinbase_ordinals[:output.value]

元数据

Ordinal NFT 的元数据保存在交易的见证数据中. 以下是比特币铭文的一个例子——被其所有者重新利用的加密朋克图像:

要将数据写入特定的聪并创建有序的 NFT,用户必须将单个聪的交易发送到 Taproot 兼容的钱包,并附加所需的元数据作为交易的一部分。

比特币Ordinals vs NFTs

OrdinalNFT
元数据的存储位置链上链下,链上只存URL
元数据的大小限制4M(区块大小有限制)无限
交易手续费昂贵(存储内容多)便宜
可以当作普通的币花掉能(作为普通UTXT用掉)不能 (与ERC20不通用)

铭文生态


往期精彩回顾:

区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
BTC系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列