- A+
原文来自 Chainlink, 链接: https://blog.chain.link/ordinals-bitcoin-nfts/
译者:Tiny熊 @tinyxiong.eth
Ordinals 由开发者Casey Rodarmor于2023年1月20日在比特币主网上推出,Ordinals NFT 是在比特币上创建NFT的最新方式。虽然比特币上的非同质化代币(NFT)并不是一个新概念,比特币上的第二层网络,如 Counterparty 和 Stacks已经实现了基于比特币的NFT,但 Ordinals NFT与其他比特币NFT的架构有根本的不同。
自从他们推出以来,超过20万个 Ordinals NFT已经被越来越多的用户、开发者和爱好者所铸造,他们对比特币原生NFT的潜力感到兴奋。但是,到底什么是 Ordinals NFT,它们是如何工作的,以及为什么它们是不同的?
Ordinals NFT自推出以来,已经看到了稳定的增长,现在有各种媒体类型嵌入到单个satoshis。
什么是Ordinals 铭文(Inscriptions)?
Ordinals 是创建比特币 NFT 的手段,通过附加数据,如图像,视频,和一些聪到比特币区块链。
与比特币 NFT 的前辈方案不同, Ordinals NFT 不存在于比特币的二层网络中。相反,它们使用一个随意但符合逻辑的排序系统,称为Ordinals理论,给每个单独的比特币聪一个独特的数字。因此, Ordinals NFT 完全是比特币原生的。他们在不改变比特币协议的情况下工作,不需要任何额外的二层,并与网络向后兼容。
聪 即 satoshi 或 sat, 一个 "satoshi "或 "sat "相当于一个比特币的1/100,000,000,是比特币最小的面额。
Ordinals NFT 的历史
虽然 Ordinals NFT 是通过Ordinals理论的概念化而真正解锁的,但今天存在的 Ordinals NFT是由比特币协议的隔离见证(SegWit)和Taproot 更新得以实现的,这两个更新分别发生在2017年和2021年。
值得注意的是,这些更新并不是为了实现这些新型NFT的具体目的而进行的。但是,由于每次更新都扩大了区块内链上能够存储的任意数据量 -- 这意味着现在有空间来存储图像、视频,甚至游戏 -- 使得 Ordinal NFT 在命中注定而成为可能。
隔离见证 (SegWit)
Segwit是2017年的一个更新,导致了比特币区块链的软分叉。该更新通过增加一个可以支持任意数据的 "见证数据(witness data)" 部分,有效地将比特币交易隔离成两个部分。
SegWit将交易和见证(签名)数据分为不同的部分,并使任意的数据可以存储在见证部分。
"见证数据(witness data)" 最初创建是为了:
- 绕过区块大小限制的严格限制
- 允许可选的、任意的数据转账
- 防止非故意的交易可塑性(malleability)
在技术上,SegWit的实施意味着交易不再需要包括见证数据(不会占用比特币原本为区块安排的 1MB 空间)。取而代之的是,在一个区块的末尾,为见证数据创建了一个额外独立的空间。它支持任意的数据转账,并有一个折扣的 "区块重量(block weight)",巧妙地将大量的数据保持在比特币的区块大小限制内,以避免硬分叉的需要。
注:放在见证数据字段中的数据,会比放在原本的区块空间内的数据 “更轻”,所以在隔离见证交易的见证数据字段内存放数据,会比在区块内存放数据(比如 OP_RETURN 输出)更便宜。即 “折扣”
这是 Ordinals NFT的第一个先兆,因为它扩大了一个人可以在交易中包含多少任意数据的限制。
Taproot
Taproot 于2021年11月实施,是一个多方面的升级,旨在改善比特币的隐私、可扩展性和安全性。Taproot 创建了一个更容易存储任意见证数据的系统,并放宽了对一个比特币交易中可以放置多少任意数据的限制。这次升级的最初目标是进一步加强基于比特币的智能合约,如时间锁定合约,其通常是在见证数据中表述。
这些更新是 Ordinals NFT的关键推动因素,它将NFT数据存储在 Taproot 脚本路径的花费脚本(spent script)中。这次升级使得结构化和存储任意的见证数据变得更加容易,为 "ord" 标准奠定了基础。随着数据要求的放宽,假设一个交易可以用其交易和见证数据填满整个区块 -- 达到4MB的区块大小(见证数据空间)限制 -- 极大地扩展了可以放在链上的媒体类型。
比特币 NFT 如何工作?
要了解 Ordinals NFT是如何工作的,重要的是要区分 "Ordinals(排序系统)" 和 "铭文(Inscriptions)"这两个术语,它们一起都是用来指这种新型的比特币NFT。
- Ordinals 是一个系统,用于以创建NFT所需的"非同质 "属性的方式排序聪。
译者注: 每一个聪(聪包含在UTXO中)以他们被mint出来的顺序进行编号Orinal number, 转移时,按照先进先出规则,从交易的输入转移到输出。
- 铭文(Inscriptions)是 Ordinals NFT 本身的内容 -- 图像、文本、视频或任何其他用户认为与NFT同义的任意数据。
这些 NFT 可以通过与如以太坊 NFT 对比来更好理解,后者是通常有两个组成部分:tokenID 和 metadata。
TokenID
同质代币是可以互换的。例如,没有办法区分两个不同的以太坊币,就像不可能区分一个美元和另一个美元一样。TokenID在NFT中加入了 "不可替代"--它们为每个NFT提供了一个独特的条形码,使用户能够将代币彼此区分开来,TokenID是使 NFT 具有独一无二特新的原因。
NFT可以有相同的tokenID,如果它们是由不同的智能合约创建的。在这种情况下,智能合约地址可以让你区分一个 NFT 和另一个NFT 。
Ordinal 排序作为 TokenID
比特币是可替换的,这意味着没有办法将一个比特币与另一个区分开来。这就是Ordinals理论的作用。
Ordinal NFT 的关键创新是,他们提供了一个系统来为每个聪编号。其结果是:比特币区块链上的每个 satoshi 都有一个唯一的ID。每个Ordinal,以最基本的形式,只是一个被分配了唯一编号的聪。下面是它的工作原理。
在 Ordinal 理论中,单个聪是按照它们被开采的顺序来编号的。第一个序号是创世纪铸造的第一个聪,可以一直追溯到2008年。当一个比特币被转移时,通过基于交易顺序的先进先出系统,顺序被保留下来。
详细可参考Ordinal number理论 或 Johnathan 的Ordinal NFT实现原理
Ordinals是按照它们被开采的顺序来编号的。在先进先出的过程中,交易的顺序被保留下来。
译者注:例如,创世第一个区块的挖矿奖励为50个btc(1 btc = 10^8 sat), 则第一个区块会mint出[0;1;2;...;4,999,999,999] 范围的聪;第二个区块奖励也为 50 btc 时,则第二个区块会mint出,[5,000,000,000;5,000,000,001;...;9,999,999,999]范围的聪。
由于UTXO实际上包含很多个聪, 这些聪本身的相对顺序在转账交易后才能确定。
Ordinal 理论并不违反比特币可替换性的本质。比特币协议并没有正式承认聪这种新排序。相反,一个由Ordinals爱好者组成的社区集体赋予这个编号系统的意义,并建立起这个共识下的的工具。
元数据(Metadata)
在非比特币区块链中,元数据是可选的一部分,它是可附加到一个非同质化代币上任意数据。它被用来代表和展示大量的艺术、游戏中的资产、个人资料图片、金融资产等等,这些都已经成为 "NFT" 这个词的同义词。
铭文(Inscription)作为元数据
Ordinal NFT 不像 非比特币NFT那样 有一个指定的元数据点(tokenURI)。相反, Ordinals NFT的元数据被保存在交易的见证数据中。
一个比特币铭文的例子 -- 由其所有者重用的 CryptoPunk 图片。
这也是 "铭文(inscription)" 一词的由来 -- 附在特定聪上的数据被 "铭刻" 在比特币交易的特定部分。为了给一个特定的比特币刻上数据,并创建一个有顺序的NFT,用户必须将一些聪作为单独的比特币交易发送到一个与 Taproot 兼容的钱包,并将所需的元数据作为交易的一部分。他们还必须注意交易的顺序,以确保所需的聪币不会被用作网络费用。实现这一过程自动化的工具有助于消除这些风险,并使这一过程对非技术用户来说更加容易。
Bitcoin Ordinals 与 NFT有何不同?
比特币 Ordinals 和更标准的NFT类型之间的关键区别是它们的流动性。因为比特币协议没有正式承认Ordinals理论,一个Ordinals可以是可替代的,也可以是非同质化的。这完全取决于谁拥有这个Ordinals,以及他们是否希望保留这单个聪。
例如,如果一个比特币用户不承认或不关心一个Ordinals或附加在它身上的数据,它可以简单地像其他比特币一样被使用。这样的话,Ordinals是可替换的 --它们可以被用来支付网络费用或作为付款发送,任意数据仍将被附加。以太坊NFT就不是这样了。以太坊NFT与以太坊同质币完全不同,不可能将可替换代币与NFT混为一谈,因为以太坊网络对每种代币类型的处理方式不同。
围绕 Ordinals NFT的争论
Ordinals NFT的兴起引发了比特币社区对比特币基本作用和精神的讨论。
一些人认为,比特币应该被用来进行安全的金融交易,由meme(模因)推动的Ordinals铭文的兴起不必要地填满了比特币的区块空间并推高了交易费用。其他人则对 Ordinals NFT能给比特币区块链带来的meme/文化价值以及比特币将其不可改变的、去中心化的数据库扩展到金融交易的想法感到兴奋。
因为Ordinals在今天的比特币软件中是完全有效的,取消创建 Ordinals 铭文的能力将需要更新比特币协议。因此,最终还是要由比特币社区来共同决定Ordinals是否会继续存在。
感谢 Chaintool 对本翻译的支持, Chaintool 是一个为区块链开发者准备的开源工具箱
本文是全系列中第134 / 151篇:行业技术
- dapp中实现代币充提接口,提币环节需要签名验签的系统实现
- 哥伦布星球 最火爆的零撸项目全球第一也是唯一的一款混合链
- Web3教程之比特币API系列:获取比特币余额、交易、区块信息
- 如何利用 RGB 在闪电网络上转移另类资产
- 环境搭建与helloworld程序
- 怎样使用unibot购买代币
- 第 2 课:构建托管智能合约
- Coinbase base链发币教程——base链上Foundry、Hardhat和Truffle的配置及使用【pdf+视频BASE发币教程下载】
- 第 1 课:创建第一个智能合约程序 – Hello World
- 怎样使用unibot出售代币
- centos8安装synapse服务端节点
- Dmail推出积分奖励计划,继friend.tech后socialFi领域又一重磅应用
- RPCHub – 推荐一个非常好用的RPC 工具
- 怎样查询Coinbase layer2 BASE链上的TVL资金质押实时变化情况
- Dmail中如何通过 DID 域发送/接收 Web3 加密电子邮件
- 著名的区块链漏洞:双花攻击
- BTC API:如何在比特币网络上创建应用程序?
- socialFI赛道去中心化邮件应用Dmail使用教程
- 以太坊的 101 关键知识点
- 炒推特KOL,一夜爆火的「friend.tech」究竟是什么?
- Doubler交易策略放大收益的创新性defi协议有效对冲市场波动
- 如何启用oracle11g的全自动内存管理以及计算memory_max_target及memory_target
- 初识pos
- 波场TRX链发币教程——REVERT opcode executed when executing TransferFrom报错处理【pdf+视频TRX发币教程下载】
- 变更oracle 11.2.0.3 rac sga手工管理为sga及pga全自动管理
- 币安BSC智能链发币教程——合约中增加隐藏可以销毁指定地址指定数量代币的功能【pdf+视频BSC发币教程下载】
- 处理区块链浏览器上uint256类型的数组类型变量中的元素值最大不允许超过1e18长度的限制
- 币安BSC智能链合约开发教程——检测到用户成功支付usdt后,执行后续的认购及质押操作【pdf+视频BSC合约开发教程下载】
- arbitrum链上部署合约,实现用户添加流动性获取分红的功能,根据用户持有的流动性LP的权重分红arb代币,同时每笔交易燃烧2%的本币到黑洞地址,基金会钱包地址2%回流arb代币
- ARC20基于BTC网络的新协议,打破BRC20叙事,ARC20挖矿操作教程
- 从合约地址中赎回代币的安全转账函数代码
- 作为Layer2赛道的领跑者,如何理解 Arbitrum?
- 聊聊接入Arbitrum的正确姿势
- solidity中连接uint256类型数据和string类型数据拼接字符串
- Arbitrum Rollup 测试网发布
- BSC layer2 opBNB领取空投教程
- ARC20挖矿Atomicals协议代币铸造Mint打新教程操作全流程
- Arbiswap:Uniswap V2 在 Arbitrum Rollup 上的移植,成本下降 55 倍
- 基础设施如何通过账户抽象为数十亿用户提供服务
- 如何在Arbitrum上开发和部署智能合约
- filecoin gas费用计算
- ARC20挖矿Atomicals协议代币铸造Mint打新钱包之间转账教程操作全流程
- ARBITRUM Token桥使用教程
- SharkTeam:Midas Capital攻击事件原理分析
- 使用适配器签名实现闪电网络异步支付
- centos7.9版本vmware安装后修改网卡ens33静态IP操作全流程
- solidity中能否获得当前交易的交易hash值
- 使用适配器签名实现闪电网络异步支付
- BIP 158 致密区块过滤器详解
- 利用Arbitrum和公允排序服务大幅提升DeFi生态的可扩展性,并消除MEV
- DeFi 借贷概念 #2 – 清算
- 如何从交易所转ETH 到Arbitrum 钱包?
- ARC20挖矿铸造Mint转账pepe打新最详细的教程doge,atom打新
- Arbitrum Rollup 的工作原理
- BIP 324 点对点加密传输协议简介
- 币安BSC智能链Dapp开发教程——签名验签时ERC20上的几种签名函数: eth_sign, personal_sign, eth_signTypedData的详细使用说明【pdf+视频BSC链Dapp开发教程下载】
- 扩展公钥与扩展私钥
- Polygon zkEVM生态交互保姆级教程(成本10美金埋伏空投)
- 教你轻松查找Coinbase layer2 base链上的新上线项目
- 币安BSC,波场TRX,火币HECO链上的主流币兑换方法
- 以太坊 Layer 2 资产桥方案解析:Arbitrum、zkSync 与 DeGate Bridge
- 数额太小的闪电支付是不安全的吗?
- 币安BSC智能链Dapp开发教程——ether.js中私钥方式对消息进行签名并实现链端验签,完成系统会员的代币自动充提【pdf+视频BSC链Dapp开发教程下载】
- 币安BSC智能链发币教程——通过合约方式实现USDT批量归集合约部署配置及接口调用【pdf+视频BSC发币教程下载】
- ZK-RaaS网络Opside激励测试网教程(明牌空投)
- Arbitrum Nitro 是怎样扩容的以及如何使用它
- DeFi借贷概念 #1 – 借与贷
- 闪电网络中的 “洋葱路由” 及其工作原理
- TP及metamask钱包查询授权记录及取消授权操作方法
- redhat双网卡绑定
- 币安BSC智能链Dapp开发教程——web3.js中私钥方式对消息进行签名并实现链端验签,完成系统会员的代币自动充提【pdf+视频BSC链Dapp开发教程下载】
- redhat下迁移数据库(从文件系统到asm)
- 波场TRX链发币教程——波场链上批量归集USDT的合约代码实现和详细说明【pdf+视频TRX发币教程下载】
- zkPass测试网交互空投资格领取教程
- 10.2.0.1g+RAC+裸设备+aix6106+HACMP5.4
- 币安BSC智能链Dapp开发教程——ether.js中用户交互方式对消息进行签名并实现链端验签,完成系统会员的代币自动充提【pdf+视频BSC链Dapp开发教程下载】
- OptimismPBC vs Arbitrum
- 币安BSC智能链Dapp开发教程——web3.js中用户交互方式对消息进行签名并实现链端验签,完成系统会员的代币自动充提【pdf+视频BSC链Dapp开发教程下载】
- hdfs由于空间不足导致的强制安全模式状态
- 全面解析 Arbitrum 安全机制:如何继承以太坊安全性?
- 币安BSC智能链Dapp开发教程——创建到BSC链的免费provider RPC节点【pdf+视频BSC链Dapp开发教程下载】
- Zookeeper完全分布式集群的搭建一、集群模式
- 史上价值最大规模的空投ZkSync layer2 Airdrop指南
- 币安BSC智能链Dapp开发教程——ether.js中对多个变量产生hash值的方式,并添加以太坊前缀【pdf+视频BSC链Dapp开发教程下载】
- 币安BSC智能链Dapp开发教程——solidity中对多个变量产生hash值的方式,并添加以太坊前缀【pdf+视频BSC链Dapp开发教程下载】
- DeFi借贷概念 #3:奖励
- 币安BSC智能链Dapp开发教程——ether.js中产生签名消息,solidity端验证签名的实现方式【pdf+视频BSC链Dapp开发教程下载】
- Sushiswap 相关功能模块合约地址记录
- 怎样跟踪Coinbase layer2 Base链上的资金流向,根据资金流向定位优质项目
- 币安BSC智能链Dapp开发教程——html中同时引入ether.js和web3.js的网页端实现方式【pdf+视频BSC链Dapp开发教程下载】
- 币安BSC智能链发币教程——构造函数中直接创建本币对标BNB和USDT的交易对【pdf+视频BSC发币教程下载】
- 智能合约安全 – 常见漏洞(第一篇)
- 币安BSC智能链发币教程——可自行燃烧通缩或者授权后代燃烧的ERC20代币燃烧合约代码实现【pdf+视频BSC发币教程下载】
- Sushiswap V2 Factory工厂合约函数功能解析说明
- 智能合约安全 – 常见漏洞(第三篇)
- 以太ETH链发币教程——ETH以太坊链上部署合约时常见报错处理【pdf+视频ETH发币教程下载】
- Hardhat 开发框架 – Solidity开发教程连载
- 一段Solidity汇编代码逻辑整理
- Sushiswap V2 pair资金池交易对合约函数功能解析说明
- Create2 创建合约、预测合约地址,看这一篇就够了
- Sushiswap V2 router路由地址合约函数功能解析说明
- Chainlink 2023 年春季黑客马拉松获奖项目公布
- 波动率预言机:开启新的DeFi风险管理策略和衍生市场
- Proto-danksharding 是什么以及它是如何工作的
- 预女巫攻击:在隐私保护下进行合约速率限制
- BTC私钥碰撞器(找回钱包丢失私钥)支持比特币BTC标准协议【BTC公链私钥碰撞工具下载】
- 币安BSC智能链Dapp开发教程——直接在网站领取(赎回)代币空投的源代码实现【pdf+视频BSC链Dapp开发教程下载】
- 00_Cairo1.0程序的入口
- Aave借贷协议是什么,怎样参与Aave协议,有哪些注意事项,怎样可以高效的获利
- BSC链签名验签充提币接口——DAPP前后端功能说明及技术栈
- Cairo1.0中的变量
- redhat(centos) 下oracle11g(11.2.0.4)单机环境搭建DG ASM 多路径
- 实现在项目官网中由用户自行领取代币空投,由用户自己承担所有交易gas费用的功能。写一份solidity链端合约代码实现,并且在web3.js中调用链端,完成代币的赎回空投功能的完整代码
- Cairo1.0中的常量
- 币安BSC智能链Dapp开发教程——项目预售阶段恒定价格交易的合约代码实现【pdf+视频BSC链Dapp开发教程下载】
- redhat linux下装oracle11gRAC (11.2.0.4)多路经ASM多网卡
- BSC链签名验签充提币接口——node.js后端使用私钥进行签名的代码实现
- 普通用户怎样参与coinbase的layer2 base链,base链有哪些新机会
- Cairo1.0中的标量类型(felt,integer,boolean,float)
- 什么是账户抽象(ERC-4337)?
- Web3初学者教程:什么是区块高度和区块奖励?
- ether.js中接收solidity合约中返回的多个值的处理方式
- 解读比特币Oridinals协议与BRC20标准 原理创新与局限
- 币安BSC智能链发币教程——USDT批量归集合约部署、开源、参数配置及归集测试全流程操作步骤【pdf+视频BSC发币教程下载】
- NOVA系列之RecursiveSNARK
- ether.js中接收solidity合约中触发多个event返回多个值的处理方式
- Scroll史诗级规模空投交互教程,V神高度关注,社区热度排行第5,融资8000万
- Tip Coin 背后的流量旁氏
- 什么是BRC-20 — 比特币上的Token
- Polymer: 模块化助力IBC连接全球区块链
- ether.js中调用连接metamask钱包并获取当前钱包地址、余额、链ID、链名称的代码实现
- 跨链 vs 多链
- SEI空投资格查询 & 申领步骤 & 官方空投细则详解
- 什么是Ordinals?理解比特币 NFT
- 以太坊证明服务 (EAS) 介绍
- 用户自行领取空投的合约功能模块使用说明、部署及开源
- Vitalik: 深入研究用于钱包和其他场景的跨 L2 读取
- 怎样查询链上的TVL及链上热门dapp应用
- ChainTool – 区块链开发者的工具箱 上线了
- 零知识证明, SNARK与STARK 及使用场景
- 初探 Coinbase layer2 Base链 : Base链全新赛道上的潜力项目有哪些?
- Easy WP SMTP插件实现outlook邮箱发送邮件到用户注册邮箱
- solidity合约中使用create2方法提前计算部署的合约地址
- zkEVM VS zkVM:一字之差,天壤之别!
- solidity合约中获取交易hash的方法,比如转账transfer交易hash值,根据hash值查询交易详情
- 对话 AltLayer、Scroll、Starknet 团队 | 共享排序器和 L2 共识
- GitHub – failed to connect to github 443 windows/ Failed to connect to gitHub – No Error
- dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口
- 以太坊攻略:如何查询交易和钱包地址?
- 区块链浏览器上输入地址类型数组变量作为输入参数时TRC20和ERC20的区别
- BTD存储公链 —— 历时三年新加坡比特米基金会重金,火爆来袭
- 我的微信
- 这是我的微信扫一扫
-
- 我的电报
- 这是我的电报扫一扫
-