赞
踩
Ordinals NFTs 是基于以下两项比特币上的技术得以实现的: 2017年的隔离见证 (SegWit) 和 2021年的Taproot。
Segwit 是 2017 年的一次更新,导致了比特币区块链的软分叉。该更新通过添加可以支持任意数据的“见证数据”部分,有效地将比特币交易分为两个部分。从技术意义上来说,隔离见证的实施意味着交易不再需要包含见证数据(通常是发送者的数字签名)。相反,在块末尾为见证数据创建了一个额外的空间作为单独的结构。它支持任意数据传输,并具有折扣的“块权重”,巧妙地将大量数据保留在比特币的块大小限制内,以避免硬分叉的需要。
这是Ordinals NFTs 的第一个先驱,因为它扩大了交易中可以包含多少任意数据的限制。
Taproot 于 2021 年 11 月实施,是一项多方面的升级,旨在提高比特币的隐私性、可扩展性和安全性。在此过程中,Taproot 创建了一个更简单的系统来存储任意见证数据,并放宽了对比特币交易中可以放置多少任意数据的限制。此次升级的最初目标是进一步增强基于比特币的智能合约,例如时间锁定合约,这些合约通常在见证数据中概述。
这些变化是Ordinals NFTs的关键推动因素,它将 NFT 数据存储在 Taproot 脚本路径支出脚本中。此次升级使得构建和存储任意见证数据变得更加容易,为“Ordinals”标准奠定了基础。由于数据要求放宽,假设单笔交易可以用其交易和见证数据填充整个区块,最高可达 4MB 的区块大小限制,从而极大地扩展了可以放在链上的媒体类型。
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 兼容的钱包,并附加所需的元数据作为交易的一部分。
Ordinal | NFT | |
---|---|---|
元数据的存储位置 | 链上 | 链下,链上只存URL |
元数据的大小限制 | 4M(区块大小有限制) | 无限 |
交易手续费 | 昂贵(存储内容多) | 便宜 |
可以当作普通的币花掉 | 能(作为普通UTXT用掉) | 不能 (与ERC20不通用) |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。