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 height
def subsidy(height):
return 50 * 100_000_000 >> height // 210_000
# first ordinal of subsidy of block at given height
def first_ordinal(height):
start = 0
for height in range(height):
start += subsidy(height)
return start
# assign ordinals in given block
def 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
Ordinal(铭文) | NFT | |
---|---|---|
第一枚 | 由中本聪在 2009 年开采比特币创世块时创造 | 2018年3月19日, 第一个 ERC-721 合约 SU SQUARES |
元数据的存储位置 | 链上 | 链下,链上只存URL |
元数据读写 | 不可变(存在链上) | 可变(中心化的网络服务器) | 不可变(IPFS 或 Arweave) |
元数据的大小限制 | 4M(区块大小有限制) | 无限 |
安全性 | 永远不会丢失 | *可能会丢失 |
交易手续费 | 昂贵(存储内容多) | 便宜 |
流通方式 | 区块奖励和UTXO交易 | 执行合约 |
可以当作普通的币花掉 | 能(作为普通UTXT用掉) | 不能 (与ERC20不通用) |
*IPFS上的内容不保证继续可用,一些存储在IPFS上的NFT内容已经丢失。像Arweave这样的平台依赖于薄弱的经济假设,当这些经济假设不再满足时,它们很可能会发生灾难性的失败。中心化的网络服务器随时可能消失。