递归和引用

使用递归和引用创建层次结构并包含原子数字对象

定义以下 URN 是为了简化包含和引用不同的 Atomicals 资源。

注意:当引用原子中的参考文献时,建议这样做。使用数据中的 ctx 顶级字段导入或包含对其他原子和数据文件的引用。为此,专门保留了 ctx 顶层。

ctx 字段中引用的递归示例:

{
  // Any Atomical data above...
  "ctx": {
     // Implied to always get the latest data for an atomical:
     "resourcename": "atom:btc:id:<atomical_id>/mydata",
     // Gets permanent data file image.png at the dat_id
     "icon": "atom:btc:dat:<dat_id>/image.png",
     // Gets the minted "name" property for a collection
     "collection-name": "atom:btc:container:<dat_id>$name",
     // Gets the latest version of import.js located at a realm name
     "assetbuilder.js": "atom:btc:realm:<realm_name>/import.js",
  },
  // Another other Atomical data ...
}

注意:如果适用,最好使用“dat”命令来引用链上资产。当使用容器、领域或动态引用(使用斜杠“/”)时,它可能是资源。

约定

约定是使用前缀 "atom:btc" 来表示 Bitcoin(BTC)网络上的原子协议。可以通过 atomical_id、collection名称或(sub)Re约定alm 引用数字对象,并通过 data_id 引用不可变文件数据。

Atomicals 通用资源名称 (URN) 的基本形式是:

atom:<chain>:<ref_type>:<identifier>[$ or /[<file>]]

其中:

chain: 引用的区块链,对于 Bitcoin 设置为“BTC”

ref_type:引用的类型。目前支持“id”、“container”、“realm”“dat”

identifier: ref_type对应的标识符。例如atomical_id、容器名称、领域名称或“dat”情况下不可变数据的显示位置

$ or /: 是否引用 Atomical 文件的最新(原始)数据(使用美元符号 $)或动态(最新)数据(使用斜杠 /)。很容易注意到,对于 dat ref_type,$ 或 / 都是可接受的,并且无论如何都会返回相同的数据

file: 文件名是可选的,如果省略则返回有关资源的一般信息

我们的理念是,我们应该能够根据 Atomicals 数字对象的类型明确引用它们。在基础级别,每种类型(例如 collection 和 realm)也可以由atomical_id 引用。此外,我们应该始终能够获取原始的 mint 数据,并获取存储的文件的最新版本,包括该文件的每个修订版本(按 txid、版本号或块高度)

按 Atomical ID 引用

获取一般信息

atom:btc:id:<atomical_id>

例如:atom:btc:id:14a0d7c98304bf5ac9a5addceb1de0ce4e840641f82d71d84cebbdac427c1fc3i0

获取 Json 格式的原始铸造数据

atom:btc:id:<atomical_id>$

获取原始铸造文件

atom:btc:id:<atomical_id>$links

atom:btc:id:<atomical_id>$info.pdf

获取最新的动态数据状态

atom:btc:id:<atomical_id>/

获取文件的最新版本

atom:btc:id:<atomical_id>/image.png

获取文件的特定版本

atom:btc:id:<atomical_id>/image.png@[交易哈希值或者区块高度]

[交易哈希值或者区块高度]可以采用下列形式:

  • 作为文件有效更新之一的交易哈希的十六进制

  • 以 "v" 开头的版本号,例如 "v1"

  • 截至该高度的文件状态的块高度

按容器名称引用

获取一般信息

atom:btc:container:<containerName>

样例:

atom:btc:id:my-coolcontainer-name

获取原始铸造数据

atom:btc:container:<containerName>$

获取最新的动态数据状态

atom:btc:container:<containerName>/

获取原始铸造文件

atom:btc:container:<containerName>$image.jpg

获取文件的最新版本

atom:btc:container:<containerName>/items

获取文件的特定版本

atom:btc:container:<containerName>/items@[交易哈希或版本号]

按 Realm 引用

获取一般信息

atom:btc:realm:<realmName>

realmName 可以是顶级 Realm 或子 Realm

样例:

atom:btc:realm:myrealm atom:btc:realm:myrealm.somesubrealm atom:btc:realm:myrealm.somesubrealm.thirdlevel-subrealm

获取文件的最新版本

atom:btc:realm:<realmName>/profile

获取文件的特定版本

atom:btc:realm:<realmName>/profile@[哈希值或版本号]

[哈希值或版本号]可以是如下形式:

  • 作为文件有效更新之一的交易哈希的十六进制

  • 以 "v" 开头的版本号,例如 "v1"

  • 截至该高度的文件状态的块高度

按 ARC20 引用

获取一般信息

atom:btc:arc:<ticker>

其中,ticker 可以是 ARC20 代币的名称

获取铸造原始数据

atom:btc:arc:<ticker>$

atom:btc:arc:<ticker>/icon.png

在代码中获取事件源

atom:btc:arc:<ticker>/events (待定 - TBD)

对不可变数据的引用

要存储不可变(非数字对象数据),请使用“dat”命令(存储文件)并使用以下形式的 dat URN 引用它:

atom:btc:dat:<data_id>/image.png

请注意, dat 不可变数据存储可以使用 $ 或 /,因为不可变数据只有一个版本,并且两者都会返回相同的数据。

Last updated