简介
代币和数据容器集合概述
本节介绍了如何铸造一种特殊的 Atomical 数字对象,称为容器(Container)。容器用于 NFT 集合等应用场景,它们允许将多个项目组织到一个统一的集合中。
容器是一种用来标识 NFT 集合和元数据的人类可读标识符,其名称以井号(#)为前缀。容器名称通过 Atomicals 数字对象格式,在比特币区块链上实现自我拥有和自我管理。在容器集合内,可以添加和更新项目,还可以选择将容器永久封存以防止将来进行任何更改。
📌 若需使用去中心化铸造(DMINT)来铸造容器项目,请参考 DMINT 指南。
容器集合格式(推荐)
为了提高效率,属性定义与项目属性是分开进行的。每个项目的属性通过一个标识符与其对应的属性定义相关联或连接。详细示例可以参考 GitHub 中的集合格式示例。
name 名称(字符串 - 可选)
name 字段用于定义集合的展示名称。集合容器本身以井号(#)作为标识(例如:#mycollection-name
),而此名称字段则提供了一个用于网站展示的、更具描述性的名称。
desc 描述(字符串 - 可选)
desc 字段用于提供集合的详细描述。
legal 法律法规(对象 - 推荐)
legal 部分规定了相关的法律条款和许可信息,阐明了 NFT 的用户和持有者可以如何利用其中的数据。
条款(推荐):指定集合或单个项目使用的具体条件。
许可(推荐):列出适用的许可类型。
"legal": {
"terms": "...",
"license": "CC",
}
links 链接(可选)
links 部分用于指定与集合相关的外部资源链接,比如网站和社交媒体页面等。
{
"links": {
"x": {
"v": "https://x.com/username"
},
"website": {
"v": "https://coolwebsite.com"
},
"discord": {
"v": "https://discord.gg/..."
}
}
}
attrs 属性(对象 - 可选)
attrs 部分用于定义属性的类型及其详细信息,包括属性的名称、描述和可能的取值范围。
items 项目(对象 - 必需)
在项目部分,通过键到项目的映射关系将所有 NFT 与容器关联起来。即便采用了编号方案,仍建议使用项目键的字符串表示形式。
id(必需):表示项目的“id”,对应于 NFT 的 atomical ID。
a(必需):表示项目的“属性”。此字段必须是一个数组,其中的每个元素对应于属性定义部分 attrs 中的一个属性值。
n(可选):表示项目的“名称”。
{
"name": "Collection Name",
"desc": "Collection description",
"image": "atom:btc:dat:<location of store-file data>/image.png",
"legal": {
"terms": "...",
"license": "CC"
},
"links": {
"x": {
"v": "https://x.com/..."
},
"website": {
"v": "https://..."
},
"discord": {
"v": "https://discord.gg/..."
}
},
"attrs": [
{
"name": "bodyarmor",
"desc": "Type of body armor",
"type": "string",
"values": [
"metal",
"leather",
"field"
]
},
{
"name": "headcovering",
"desc": "The type of head covering",
"type": "string",
"values": [
"bandana",
"helmet",
"scarf",
"baseball cap"
]
},
{
"name": "stamina",
"desc": "The stamina of the hero",
"type": "integer",
"min": 0,
"max": 10
}
],
"items": {
"0": {
"id": "84718b469c40b1bcc7cb324b8e24e4e442f88cd913687ea2bc7b3e79d4fc4fdei0",
"n": "Some Name",
"a": [
0,
3,
8
]
},
"1": {
"id": "1070d7c98304bf5ac9a5addceb13e0ce4e840641f82d71d84cebbdac427c1f4fi0",
"n": "Another Name",
"a": [
1,
2,
10
]
},
"Signature Series 1": {
"id": "14a0d7c98304bf5ac9a5addceb1de0ce4e840641f82d71d84cebbdac427c1fc3i0",
"n": "Special",
"a": [
2,
3,
7
]
}
}
}
整理好您的集合数据,确保它符合上述格式后,执行以下命令。
// first store the desired main image on chain (see section below)
npm run cli store-file ./path/to/image.png image.png --satsbyte=10
Success sent tx: db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461f
{
"success": true,
"data": {
"commitTxid": "b57bad8c0b7f58a552574fafc16b6efbbb3bf966b9ccfb24f03580f9462b5997",
"revealTxid": "db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461f",
"dataId": "db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461fi0"
}
}
// We will use the dataId above to reference the data on chain
// ie: atom:btc:dat:db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461fi0/image.png
// Store the collection metadata with the following command:
npm run cli set-container-data #mycollection-name collection.json --satsbyte=10
推荐的最简集合格式
对于一个没有属性且元数据较少的集合,以下是建议的最基本格式。您只需提供一个名称、一张图片和项目列表即可。
{
"name": "Collection Name",
"image": "atom:btc:dat:<location of store-file data>/image.png",
"items": {
"0": {
"id": "84718b469c40b1bcc7cb324b8e24e4e442f88cd913687ea2bc7b3e79d4fc4fdei0"
},
"1": {
"id": "1070d7c98304bf5ac9a5addceb13e0ce4e840641f82d71d84cebbdac427c1f4fi0"
},
"9999": {
"id": "14a0d7c98304bf5ac9a5addceb1de0ce4e840641f82d71d84cebbdac427c1fc3i0"
}
}
}
将您的集合数据按照上述格式整理好之后,接下来可以执行以下命令。
// first store the desired main image on chain (see section below)
npm run cli store-file ./path/to/image.png image.png --satsbyte=10
Success sent tx: db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461f
{
"success": true,
"data": {
"commitTxid": "b57bad8c0b7f58a552574fafc16b6efbbb3bf966b9ccfb24f03580f9462b5997",
"revealTxid": "db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461f",
"dataId": "db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461fi0"
}
}
// We will use the dataId above to reference the data on chain
// ie: atom:btc:dat:db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461fi0/image.png
// Store the collection metadata with the following command:
npm run cli set-container-data #mycollection-name collection.json --satsbyte=10
链上存储不可变图像文件
通过命令行工具,按照上述示例文件中的数据格式,执行以下命令来配置您的数据。
// immutably store an image on-chain to reference in the container metadata
npm run cli store-file ./path/to/image.png image.png --satsbyte=10
Success sent tx: db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461f
{
"success": true,
"data": {
"commitTxid": "b57bad8c0b7f58a552574fafc16b6efbbb3bf966b9ccfb24f03580f9462b5997",
"revealTxid": "db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461f",
"dataId": "db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461fi0"
}
}
我们将通过使用一个称为“揭示位置”的标识符(db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461fi0)来引用图片 image.png。
向集合容器添加 NFT
根据上述集合格式准备一个文件,然后执行以下命令以更新示例集合 #mycollection-name。
npm run cli set-container-data #mycollection-name sample-collection.json --satsbyte=10
查询集合容器的元数据和项目
在交易在区块中得到确认之后,您可以通过执行以下命令来查询示例集合 #mycollection-name 的当前状态:
npm run cli state #mycollection-name
下载并安装 Atomicals JavaScript 命令行工具,并按照快速入门指南进行操作,在不到 2 分钟内铸造您的 NFT、集合或领域名称。