做最好的区块链网

TokenPocket钱包APP官方|深度剖析比特币Ordinals、铭文和BRC20

作者:财经0xnaitive

比特币Ordinals Theory由开发人员CaseyRodarmor 2022年开发,直到2023年2月提交BIP后开始在比特币社区流行。

Ordinals主要利用了2个想法,1、给每个satoshi排序,分配一个介于0和2,100,000,000,000,000之间的序数“ordinals”。2、segwit和Taproot。2017年实施的SegWit和2021年在SegWit基础上的Taproot升级script-pathspendscripts(脚本路径花费脚本),让比特币交易本身可以包含元数据(被称为铭文Inscriptions)。

序数ordinals让satoshis拥有数字序列,从而拥有了非同质化属性。Inscriptions让诸如图片、文字、视频甚至游戏数据包含在比特币交易中,可以和拥有序数的satoshis链接起来。

Ordinals Theory:Ordinals + Inscriptions = Digital Artefacts。

实际上如何工作?

在“铸造”Digital Artefacts时,需要创建一个比特币交易,在其中一个输出地址中存储一些额外的数据也就是所谓铭文。这些额外数据可以是文本、图像、SCG或HTML,数据大小仅受区块大小的限制。

在序数理论之前,添加到比特币交易中的任何额外数据通常都是使用OP_RETURN完成,这是一种不可花费的输出,可以在其中包含最多80字节的元数据。而且OP_RETURN可修剪,这意味着可以从全节点删除数据。

Ordinals不使用OP_RETURN,而是使用Taproot的script-pathspendscripts。基于2017年实施的SegWit和在SegWit基础上的2021年Taproot升级,比特币交易本身可以包含元数据(铭文)。SegWit将数字签名与交易数据分离,使区块空间从1M扩容至4M(1M基础区块和3M见证区块)。

一句话理解:铭文数据存储在比特币taproot script-path花费脚本中。

digitalartefacts使用两阶段过程从Taproot的输出(“bc1p...”地址)铸造。最初,taproot输出必须提交给包含铭文内容的脚本。此内容在所谓的“envelope”中序列化,envelope包夹在“OP_FALSEOP_IF...OP_ENDIF”操作码之间。

示例:创建文本“Hello,world!”的铭文

4ItMFHhytQW0OXcliOYPgHmtPXc8shgAziNKAwc8.png

此外,Taproot和MAST升级的一个关键部分是这个脚本在它被花费之前不会在链上显示,因此你需要创建另一个交易来显示信息。在这个显示交易中,提交交易创建的输出被花费,从而显示链上的铭文内容。

如何发送digitalartefacts?

要了解如何发送digitalartefacts,来看一个具有三个输入和两个输出以及不同数额的示例:

VA1xlK8LeJGzwUCzDXYW2ZJ4tTSZ7Z9ehXZBiiMT.png

上面我们可以看到总共有6satoshis来自3个不同地址,5satoshis被发送到2个不同地址,其中1satoshis作为费用支付给矿工。

然后我们可以为输入的每个satoshi分配序数,然后按照先进先出算法将它们分配给输出,任何剩余的序数然后转到矿工。

AjIzThAXBEI0khClAFSCj1MHs0CNeeaUE6NfenxR.png

值得注意的是,并不是所有的序数都有分配给他们的铭文,所以这并不意味着在这次交易中有6个铭文被转移,可能有1个,没有或最多6个。

无聊猿铭文案例

我们直接以一个铭文为例,可以更多地了解铭文数据以及序数如何发挥作用:

clBAGJRW531VteBNGovZJfkBYF2qNrI4h4cuzFjG.png

https://ordinals.com/inscription/2911040743b16b71c4c00dc2561b91dac87650e0957d8acd016da0ffd8d3d511i0

这个重新创建的无聊猿是在这个交易哈希中创建:2911040743b16b71c4c00dc2561b91dac87650e0957d8acd016da0ffd8d3d511

BTIHb4remEVCIKGXaLBMEk7JGZ9l3OyVnXn3eIYk.png

并且与地址相关:bc1pc837xc4vfq66g2wm3hy6rd4nxjlkwcl46m4wn2n6u0afd45h472sx8924n(从“bc1p”前缀可以清楚地看出启用Taproot的地址类型),但特别是具有序号的satoshi:1598601235315166

可以在此处查看对图像进行编码的见证数据:https://blockstream.info/tx/2911040743b16b71c4c00dc2561b91dac87650e0957d8acd016da0ffd8d3d511?expand

你可能会注意到在铭文信息中还有一个值为“cnhzpcdknwl”的名称字段。

6pAKR5RxJ2KF6VxCP2MtAxanmtbbFj2FijMknBYp.png

这是因为每个序数都映射到一个由字母A到Z组成的名称,satoshi被开采的时间越长,名称越短。

铭文与以太坊上的NFT有何差别?

在以太坊中,nft代币标准(通常是ERC721、ERC1155)为每个NFT都被赋予一个tokenID以唯一表征它,其元数据可能是中心化存储的,可能会被删除,即便是在ipfs或者arweave中去中心化存储,其元数据也仅仅只是一个链接。

比特币铭文完全存储在比特币链上,不可篡改且完全去中心化。

BRC20代币

BRC-20代币标准是由Twitter用户@domodata于2023年3月8日创建的借助铭文功能试验比特币上同质化代币的标准。“BRC-20”名字借鉴于以太坊ERC-20代币标准。

BRC20代币在比特币铭文里存储的是JSON代码数据,目前仅有部署、铸造和转帐三种功能。也就是说,BRC20代币在比特币网络上只能部署、铸造和转账,不具备以太坊上图灵完备的智能合约功能。

还有一个理解重点是:BRC20代币每一次部署、铸造和转移都产生一个新的铭文。

以第一个BRC20代币Ordi发行者为例:ordiscan.com/address/bc1pxaneaf3w4d27hl2y93fuft2xk6m4u3wc4rafevc6slgd7f5tq2dqyfgy06/brc20

9pCaaSOo97TGCUURczRf2l68DEeuyNVKab6Nppqg.png

BRC20代币JSON代码

部署代币:

G280NzOneIDV6qcKFboP9n47qT37u1Apisze4OuR.png

铸造代币:

qMC12DniJ39FmJ040qgYxdZvQFQZ9e6Q03El8sW3.png

转移代币:

Q0s28H0JG23KHjcQ6IWQrcKODHr8UGfgnYtjxj46.png