Skip to main content

教程

如何在 ARC20.ME 显示你的领域资料

info

目前,ARC20.ME 仍处于早期版本,尚未内置铸造领域和制作领域资料的功能。因此,我们将使用第三方工具来完成领域铸造和资料制作。

接下来,我将详细讲解整个流程,只需按照以下步骤操作,即可完成一个领域资料页面的创建。

1. 铸造领域

目前,铸造领域(Realm)主要有三种方法:

  1. 使用协议官方的命令行工具(Atomicals-js Cli
  2. 使用钱包和交易市场提供的铸造工具(Wizz 钱包AtomicalMarket 市场
  3. 使用提供领域铸造功能的第三方网站(Realmbullrun
tip

多数情况下,我们会使用方法一和方法二来铸造领域。因此,这里重点讲解这两种方法。第二种方法最为简单,也最适合新手,因此我们先讲解如何使用 Wizz 钱包和 Atomical Market 市场来铸造领域。

1). 使用 Wizz 钱包铸造

tip

这里假定你已经安装了 Wizz 钱包,并创建或导入了你的比特币助记词。如果尚未安装,请前往谷歌应用商店安装 Wizz 钱包

warning

请注意!直接使用 Wizz 钱包铸造领域会有每笔 6,000 聪的手续费

接下来,我将演示如何一步步铸造一个领域(Realm)。在这个示例中,我们将铸造名为 Bureau 的领域。

  1. 点击谷歌浏览器右上方的 Wizz 钱包图标,在弹出的主界面上点击 Mint 按钮。
  1. 在进入钱包自带的铸造页面之前,先勾选 I accept... 按钮以接受条款,然后点击 I Understand 按钮。
  1. 在钱包的铸造页面,选择 Realm 页,然后选中 Realm 选项。在输入框中输入你要铸造的 Realm 名称,这里我们输入 "bureau"。
  1. 如果没有出现错误提示,说明当前名称有效,可以进行铸造。如果你想使用其他地址接收铸造的领域,可以勾选 Received By Other Address,在出现的输入框中填入你想要的领域接收地址,然后点击 Mint Realm 按钮,并按照弹出的钱包提示进行签名,即可完成铸造。

2). 使用 Atomical Market 市场铸造

warning

使用 Atomical Market 需要安装支持 ARC20 协议的钱包。这里假定你已经安装了 Wizz 钱包,并创建或导入了你的比特币助记词。如果尚未安装,请前往谷歌应用商店安装 Wizz 钱包

  1. 首先访问 Atomical Market 的 Realm 铸造页面,然后点击右上角 Connect 按钮。
  1. 在弹出的钱包选择框中选择 Wizz Wallet 进行连接。(你也可以选择其它钱包,但由于 Wizz 钱包对 ARC20 的支持度最高,因此推荐使用 Wizz 钱包)
  1. 连接钱包后,在 Realm 名称输入框中输入你要铸造的名称,例如 "bureau",然后点击 Next。在弹出的确认框中点击 Mint 按钮。最后,按照弹出的钱包提示进行签名,即可完成铸造。

3). 使用协议官方命令行工具铸造

tip

要使用协议命令行工具,需要熟练掌握操作系统的控制台,了解如何安装 npm 软件包,以及如何克隆 GitHub 仓库。这里假定你的系统已经安装了 Git 和 npm 运行环境。安装 npm 运行环境后,请记得在控制台输入 corepack enable 以激活 yarn 命令。

  1. 克隆协议命令行源码仓库,安装所需依赖包,然后进行编译。
git clone https://github.com/to1dev/atomicals-js.git
cd atomicals-js
yarn install
yarn build
info

选择克隆 https://github.com/to1dev/atomicals-js 的协议命令行源码仓库,是因为索引服务器在 1.5.1.0 更新后,API 参数有所变化,导致官方源的命令行在铸造领域时会出现错误。因此,我们暂时使用 https://github.com/to1dev/atomicals-js 的修正版。一旦我们提交的 PR 获得通过,将会切换回官方源仓库。

  1. 确认待铸造的领域名称的有效性。
yarn cli get-realm bureau

# 如果得到以下结果,说明这个名称可以铸造
{
"success": false,
"data": {
"atomical_id": null,
"candidates": [],
"found_full_realm_name": null,
"missing_name_parts": "bureau",
"nearest_parent_realm_atomical_id": null,
"nearest_parent_realm_name": null,
"request_full_realm_name": "bureau",
"top_level_realm_atomical_id": null,
"top_level_realm_name": null
}
  1. 铸造领域(这里待铸造的领域名称是 bureau)
# **接收地址** 填写你准备用来接收这个领域名称的比特币钱包地址
# **付款地址私钥** 填写你为铸造交易付款的比特币地址的 WIF 私钥(这个私钥可以提前通过 yarn cli wallet-import 命令导入为别名)
# **交易费** 填写比特币交易矿工费,可以参考 https://mempool.space/ 获取最新值
# **bitworkc** 不懂什么意思的话,直接取默认值 8888
yarn cli mint-realm --initialowner=接收地址 --funding=付款地址私钥 --satsbyte=交易费 --bitworkc=8888 bureau

2. 铸造领域资料

tip

目前,领域资料的铸造还是依靠协议命令行工具。如果你还没有安装该工具,请先参考上面的流程进行安装。

待安装完成后,按照以下步骤制作并铸造领域资料。

1). 编辑领域资料

领域资料本质上是一个 JSON 文件(JSON 文件是一种用于存储和交换数据的纯文本文件,使用键值对和数组来表示数据结构)。所以,我们可以使用任何文本编辑器编辑领域资料。下面,我们根据协议官方推荐的格式来一步步制作一份领域资料。

✍️ 以下是协议官方提供的一个极简化领域资料示例。

/*
** 来自 https://github.com/atomicals/atomicals-js/blob/avmbeta1/templates/socialfi/min-profile.json
** 协议官方的领域资料示例,一份领域资料至少应包括以下字段
**
** 版本 v
** 名称 name
** 头像 image
** 简介 desc
**
** 其余字段均为可选,推荐加上 links 字段,用来添加社交媒体和其它网站链接
** 如果希望用户能够给你捐款,还可以加上 wallets 字段,用来添加区块链钱包地址
*/

{
"v": "1.2",
"name": "User or profile title or name",
"image": "atom:btc:id:<atomicalId>/image.jpg",
"desc": "Lorem ipsum dolor sit amet...",
"ids": {
"0": {
"t": "realm",
"v": "myrealmname"
}
},
"wallets": {
"btc": {
"address": "btc address to receive tips"
}
},
"links": {
"0": {
"group": "social",
"items": {
"0": {
"type": "x",
"name": "@loremipsum9872",
"url": "https://x.com/loremipsum9872"
}
}
}
}
}

ARC20.ME 还添加了几个额外字段,用于显示横幅和背景图片。这充分体现了 Atomicals 协议的开放性,任何人都可以修改领域资料的格式,添加不同字段,以丰富领域的使用场景。

/*
** 所有图像 URN 既可以是 Atomicals 协议下的引用,也可以是任何有效的图像 URL。
**
** 背景 background
** 横幅 banner
*/
{
"v": "1.2",
"name": "User or profile title or name",
"image": "atom:btc:id:<atomicalId>/image.jpg",
"banner": "atom:btc:id:<atomicalId>/banner.jpg",
"background": "atom:btc:id:<atomicalId>/background.jpg",
"desc": "Lorem ipsum dolor sit amet...",
}
// 或
{
"v": "1.2",
"name": "User or profile title or name",
"image": "https://example.com/image.png",
"banner": "https://example.com/banner.jpg",
"background": "https://example.com/background.jpg",
"desc": "Lorem ipsum dolor sit amet...",
}
tip

目前,desc 字段支持部分 HTML 标签,例如 <div><video>。你可以通过插入 HTML 来自定义领域资料的个人简介。

2). 领域资料上链

当领域资料编辑完成后,可以发起一个交易,将资料的 JSON 文件铸造成比特币区块链上的永久记录。整个过程可以通过以下命令完成。

# **付款地址私钥** 填写你为铸造交易付款的比特币地址的 WIF 私钥(这个私钥可以提前通过 yarn cli wallet-import 命令导入为别名)
# **交易费** 填写比特币交易矿工费,可以参考 https://mempool.space/ 获取最新值
# **bitworkc** 不懂什么意思的话,直接取默认值 8888
# **profile.json** 领域资料 JSON 文件名,可以是任意名称
yarn cli mint-nft-json --funding=付款地址私钥 --satsbyte=交易费 --bitworkc=8888 profile.json
# 命令运行过程中会打印出下一步骤需要的 atomical_id 等信息

mint-nft-json 命令会将你的领域资料 JSON 文件铸造为比特币区块链上的一个 NFT,而该 NFT 是后续步骤中不可或缺的重要部分。在这里,我们需要记录生成的 NFT 的 atomical_id,以备后用。

3). 引用领域资料

最后一步,也是最重要的一步,就是将领域指向上一步铸造的 NFT。Atomicals 协议推荐使用委托机制来引用领域资料,这样每次更新领域资料时只需更新指向的 NFT 即可,无需重新铸造新的 NFT。对于需要频繁更新的领域,这种方法可以节省大量的交易费用和工作量。

首先,我们需要新建一个 d.json 文件,并输入以下信息。

// 这里的 d 是英文单词 delegate(委托)的缩写
{
"d": "输入上一步生成的 NFT 的 atomical_id"
}

有了这个 d.json 文件后,我们就可以将其中的数据附加到我们的领域上。这样一来,我们的领域就可以指向刚才创建的领域资料 NFT。通过这种委托机制,领域和领域资料被绑定在一起。每次更新领域资料 NFT 的内容,领域的数据也会随之更新。

下面,我们将通过 set 命令把这个 d.json 文件附加到我们的领域上。

# **付款地址私钥** 填写你为铸造交易付款的比特币地址的 WIF 私钥(这个私钥可以提前通过 yarn cli wallet-import 命令导入为别名)
# **交易费** 填写比特币交易矿工费,可以参考 https://mempool.space/ 获取最新值
# **bitworkc** 不懂什么意思的话,直接取默认值 8888
# **拥有者地址私钥** 当前领域的拥有者地址 WIF 私钥或别名(这个 WIF 私钥可以提前通过 yarn cli wallet-import 命令导入为别名)
# **atomical_id** 对应领域的 atomical_id
# **d.json** 上一步制作的 d.json 文件名(实际路径)
yarn cli set --funding=付款地址私钥 --satsbyte=交易费 --bitworkc=8888 --owner=拥有者地址私钥 atomical_id d.json

当命令执行完毕后,一个比特币交易将被广播出去。一旦交易上链,这个 d.json 文件就会成功附加到我们的领域上,领域也会成功指向前一步创建的领域资料 NFT。

至此,一个完整的领域资料就铸造成功了。现在,你可以通过访问类似这样的链接 https://arc20.me/to1dev 查看你的领域页面。

4). 更新领域资料

当需要修改领域资料时,只需修改上一步创建的 profile.json 文件,然后使用 set 命令更新对应的 NFT 数据。

# **付款地址私钥** 填写你为铸造交易付款的比特币地址的 WIF 私钥(这个私钥可以提前通过 yarn cli wallet-import 命令导入为别名)
# **交易费** 填写比特币交易矿工费,可以参考 https://mempool.space/ 获取最新值
# **bitworkc** 不懂什么意思的话,直接取默认值 8888
# **拥有者地址私钥** 当前领域的拥有者地址 WIF 私钥或别名(这个 WIF 私钥可以提前通过 yarn cli wallet-import 命令导入为别名)
# **atomical_id** 对应 NFT 的 atomical_id
# **profile.json** 领域资料 JSON 数据文件名(实际路径)
yarn cli set --funding=付款地址私钥 --satsbyte=交易费 --bitworkc=8888 --owner=拥有者地址私钥 atomical_id profile.json
# 命令运行过程中会打印出下一步骤需要的 atomical_id 等信息

命令运行后,会发起一个比特币交易,将对应的 NFT 数据更新为当前 profile.json 的内容。由于采用了委托机制,指向该数据的领域也会自动更新其资料。

tip

如果你已经更新了当前领域资料,需要清除 ARC20.ME 现有的领域资料缓存。只需在你的领域网址后加上 ?action=update 参数即可。