# Atomicals-JS部署及私有节点搭建

By [E](https://paragraph.com/@cyberscavenger) · 2023-11-14

---

2023年12月24日
-----------

**(首次看教程的请从**`部署Atomicals-JS-Master钱包`**开始)**

### Atomicals-JS-Master工具更新

官方更新了多线程挖矿代码，挖矿速度更快，更新方法如下：

1.在Atomicals官方Github下载最新版本CLI工具文件。

[

GitHub - atomicals/atomicals-js: Atomicals Javascript Command Line Utility (CLI)
--------------------------------------------------------------------------------

Atomicals Javascript Command Line Utility (CLI). Contribute to atomicals/atomicals-js development by creating an account on GitHub.

https://github.com

![](https://storage.googleapis.com/papyrus_images/5b6503d20613fab122a0819a5244684079b6837c09f6de9827be6074cb630455.png)

](https://github.com/atomicals/atomicals-js)

![下载新文件](https://storage.googleapis.com/papyrus_images/4d6f573546ea4454c7c761b56f205fa4af10e2cffa739a685f6ae33eac3e3d1c.png)

下载新文件

2.解压缩后把所有文件替换原来的文件。

3.在文件夹内打开**CMD命令提示符窗口**，并以此运行下列命令：

`npm install -g yarn`

`yarn install`

`yarn run build`

4.运行上述命令后，更新完成。另外，如果你是使用自己电脑的私有节点，需要打开.env文件，将URL修改为本地节点。

![修改env文件](https://storage.googleapis.com/papyrus_images/3071682acafd062204089c30a7359e09b102256ca4ea0a4bda276050f1cd2861.png)

修改env文件

注意：如果之前没有更新过12月4日的官方版本，那么还需要在Atomicals-JS工具文件夹里新建一个wallets文件夹，并把wallet.json文件移动到wallets文件夹，以便使用原来的钱包。如果是新建钱包，则无需此步。

**注意：新版本**`--satsbyte`**参数设置的FeeRate不再有倍率，与实际上链FeeRate几乎是1:1（仍然有微小差别，实际上链FeeRate会略高）**

### Docker服务器更新v1.3.6

1.在Atomicals官方Github下载最新版本文件。

[

GitHub - Next-DAO/atomicals-electrumx-proxy-docker
--------------------------------------------------

Contribute to Next-DAO/atomicals-electrumx-proxy-docker development by creating an account on GitHub.

https://github.com



](https://github.com/Next-DAO/atomicals-electrumx-proxy-docker)

![下载新文件](https://storage.googleapis.com/papyrus_images/73de10427cc56463d738f952591e68c403bca663ddfd4d7cfde29c47d352d666.png)

下载新文件

2.解压缩，替换原来atomicals-electrumx-docker文件夹内的文件。 **（先停止docker运行）**

3.修改docker-compose.yml文件，把`user`和`pass`替换为本地Bitcoin Core的对应用户名和密码，把`${IP:?}`替换为本地IP地址。

![](https://storage.googleapis.com/papyrus_images/10f1d0ad198ed59d36bc4865e30dec9ef7c0de747bab1700ff7113cea5c6b05f.png)

4.重启docker，在文件夹内打开CMD命令提示符窗口，运行下列命令：

`docker-compose pull && docker-compose up -d`

5.运行上述命令后，更新完成。

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

**教程有更新内容，已经全部操作完前面步骤的朋友可以拉到最后看更新部分。**

**第一次看教程的可以从第一步开始操作，到私有节点搭建部分时，结合着更新内容一起做，把更新部分做完后，再一起运行docker。**

部署Atomicals-JS-Master钱包
-----------------------

### **1.安装Node.js**

[

Node.js - Run JavaScript Everywhere
-----------------------------------

Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.

https://nodejs.org

![](https://storage.googleapis.com/papyrus_images/ac403e15c4356ad45bdda1a43279bb3c4126f4e3ed1a7deffffa0b5ac79c863d.png)

](https://nodejs.org/en)

在Node.js官网下载最新版本安装文件，按照安装向导进行安装。

![安装最新版即可](https://storage.googleapis.com/papyrus_images/238301bee029642103d77683ea5cf6241fcd8adec23831353a3a7cb91cfb21cf.png)

安装最新版即可

安装完成后，可以在 `Powershell` 或 `cmd` 命令提示符窗口输入： `node -v` 验证安装是否成功。返回值如果正确显示版本号，即代表安装成功。_（教程中我的版本由于安装的较早，所以跟官网最新版本不一样，我没做升级，大家直接下载最新版即可）_

![使用node -v命令验证安装结果](https://storage.googleapis.com/papyrus_images/8783a10d2feb18f52f679e7f3e8284ea0c70afa84706b604e9ed195983299e74.png)

使用node -v命令验证安装结果

### 2.下载&配置Atomicals-JS-Master

[

GitHub - atomicals/atomicals-js: Atomicals Javascript Command Line Utility (CLI)
--------------------------------------------------------------------------------

Atomicals Javascript Command Line Utility (CLI). Contribute to atomicals/atomicals-js development by creating an account on GitHub.

https://github.com

![](https://storage.googleapis.com/papyrus_images/5b6503d20613fab122a0819a5244684079b6837c09f6de9827be6074cb630455.png)

](https://github.com/atomicals/atomicals-js)

在Atomicals官方Github主页，点击**Code**，在弹出的窗口中选择 `Download ZIP`。

![下载程序](https://storage.googleapis.com/papyrus_images/b8a415bce000a9a97a3497c0fd71fcc9598b729f4a598e89569c2308cd52eec5.png)

下载程序

解压缩程序到目录，然后切换到该目录，并在资源管理器地址栏输入`cmd`，回车，打开**命令提示符窗口**：

![在Atomicals-JS-Master文件夹内打开cmd](https://storage.googleapis.com/papyrus_images/35b70cff60e09f877d7c80809c2ef9428339d8c6df323223500105db2ab7b37a.png)

在Atomicals-JS-Master文件夹内打开cmd

依次运行下面命令：

`npm install -g typescript`

![npm install -g typescript](https://storage.googleapis.com/papyrus_images/42b3ae19dde9e7db9e6bf510478625fd31172304f6b80dc5a4e77c6c236548b6.png)

npm install -g typescript

`npm run build`

![npm run build](https://storage.googleapis.com/papyrus_images/f014334f9c823bf71b1ba967f6589ec441853e1b509fad7fd7de9598db8628c3.png)

npm run build

`npm install -g yarn`

![npm install -g yarn](https://storage.googleapis.com/papyrus_images/0e40262bab5d7a4f1cb9c7bbc27e85af37e142b0de66e48ddfaa82cb505dbe0c.png)

npm install -g yarn

`yarn install`

![yarn install](https://storage.googleapis.com/papyrus_images/098879cae17420792c00524d7b5a1ad2a53aa769dd9c3cfd3c582224eecceca6.png)

yarn install

`yarn cli wallet-init`

![yarn cli wallet-init](https://storage.googleapis.com/papyrus_images/bb71b42c1383160cea3354589fbc70966001da61c6ff4ca945c3919dc8950673.png)

yarn cli wallet-init

最后一步是创建钱包，命令运行后，会在文件夹内生成一个`wallet.json`的文件，这里保存着助记词和私钥。

说明：创建钱包后，会自动生成2个地址，`Primary Address`及`Funding Address`，其中Primary是用于接收Atomicals生态资产的，比如ARC20代币、图片NFT等，Funding是用于铸造（挖矿）过程的中转钱包，通常是往Funding地址中存入相应数量的BTC，用于铸造。

至此，部署已经完成，下面是常用的命令：

铸造FT币命令：

`yarn cli mint-dft dmint --satsbyte 30`

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

#注意这里设置的gas，与**实际上链的gas是1.8~2倍的关系**，比如这里设置30，实际上链gas是54~60sats/vB。

### 最新版的atomicals-js工具已经更新了代码，目前--satsbyte设置的gas与实际上链的gas一至，不再有倍率。（但需要注意：设置gas会略低与实际gas）

### 更新后.env文件里wallet.json位置修改为wallets文件夹，如果要使用原来的钱包，需要在atomicals-js-master文件夹内新建一个wallets文件夹，把wallet.json文件放进去即可（使用wallet-init新建钱包的，无需操作此步骤）。

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

铸造Realm命令：

`yarn cli mint-realm "btc" --satsbyte 30 --satsoutput 1000 --bitworkc 3165`

铸造图片NFT命令：

`yarn cli mint-nft "E:\Crypto\NFT\CryptoPunks\punk0000.png" --satsbyte 30 --satsoutput 1000 --bitworkc 3165`

查询余额命令：

`npm run cli balances`

搭建私有Atomicals节点（需要本地BTC全节点支持）
-----------------------------

### 1.安装Docker

[

Windows
-------

Get started with Docker for Windows. This guide covers system requirements, where to download, and instructions on how to install and update.

https://docs.docker.com

![](https://storage.googleapis.com/papyrus_images/9fdaa65db57e044dc234777bd591d2bc28324ddea519695c7320983193fa46c1.webp)

](https://docs.docker.com/desktop/install/windows-install/)

在Docker官网下载最新版本安装文件，按照安装向导进行安装。

![点击下载，并安装](https://storage.googleapis.com/papyrus_images/cacb45eaeb590ad6d843411bbcbe6b446c54141c9e058d3ab9f427ebfc14ab3f.png)

点击下载，并安装

根据安装向导进行安装，选择`Use WSL 2 instead of Hyper-V(recommended)`

![选择WSL2](https://storage.googleapis.com/papyrus_images/633cb5dc2e94ade75dcac50672f0f83f0912f8fbf8f722e8a20e583a52944972.png)

选择WSL2

![等待安装](https://storage.googleapis.com/papyrus_images/7be44362cef17af52cfb0b893ddd51566d0a255e1c0c5c2d47432ebff0f1ec0e.png)

等待安装

![点击Close and log out注销并重新登录](https://storage.googleapis.com/papyrus_images/0adbf35d225829755113e27959c8b460e8a63227abe7ec9088b392a164d697be.png)

点击Close and log out注销并重新登录

完成安装后需要注销，并重新登录Windows。

重新登陆后，在弹出的窗口，点击 `Accept` 接受协议。

注册并登录Docker（可以使用Google、Github登录）。

### 2.下载&配置Atomicals-Electrumx-Docker

[https://github.com/Next-DAO/atomicals-electrumx-docker#atomicals-electrumx-docker](https://github.com/Next-DAO/atomicals-electrumx-docker#atomicals-electrumx-docker)

在**Next-DAO**的Github页面，下载压缩包，并解压缩到文件夹\*（步骤和方法与安装Atomicals-JS-Master类似，参考上面步骤即可）\*

[

bitcoin/share/rpcauth/rpcauth.py at master · bitcoin/bitcoin
------------------------------------------------------------

Bitcoin Core integration/staging tree. Contribute to bitcoin/bitcoin development by creating an account on GitHub.

https://github.com

![](https://storage.googleapis.com/papyrus_images/59c0d00096747ff7d233810f6f82489b135f1fa679db271ab477f938bc463702.png)

](https://github.com/bitcoin/bitcoin/blob/master/share/rpcauth/rpcauth.py)

在**Bitcoin**的Github页面，下载`rpcauth.py`代码，可以放在刚才atomicals-electrumx-docker的文件夹里。

![下载代码](https://storage.googleapis.com/papyrus_images/4cbf67840fcb5289e31d0e89b2a063b2aa093099c00a8b1469c432f35c82d6e7.png)

下载代码

**在文件夹内打开cmd，运行：**

`python rpcauth.py 用户名 密码`

其中，**用户名**和**密码**位置自行修改，运行把返回参数记录下来，等下会用到。

此步骤需要安装Python，这里不再赘述。

![记录返回值](https://storage.googleapis.com/papyrus_images/8543db42653268fa9fc40720d4e4e0b18c62f4ccb2f111978336d6db07f0a700.png)

记录返回值

**打开Bitcoin Core的conf配置文件，添加如下参数：**

`server=1`

`txindex=1`

`daemon=1`

`rpcuser=用户名` #设置一个用户名

`rpcpassword=密码` #设置一个密码

`rpcauth=electrumx:c7ed296134ebe0035d9ff786dfa102b5$9d40e8e36` #这里是上一步生成记录的返回值

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\***2023.11.30调整-修改部分**\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

rpcbind=127.0.0.1

rpcbind=192.168.31.188 #这里需要自行查看本机的IP地址，可以通过ipconfig命令查看

rpcallowip=127.0.0.1

rpcallowip=192.168.31.188 #这里需要自行查看本机的IP地址，可通过ipconfig命令查看

### 2023.11.30，调整一下这部分内容，因为发现很多人重启电脑后，本机IP会变化（因为大多数人使用了DHCP自动获取IP，每次会开关机后有可能会自动分配不同IP），所以还要再次修改conf文件，现在改为下面的内容后，可以避免这种情况，如果你已经在成功运行，并且没有报错，电脑也不经常关机，那么可以不做修改。

`rpcallowip=127.0.0.1`

`rpcallowip=172.0.0.0/8`

`rpcallowip=192.168.0.0/16`

`rpcbind=0.0.0.0`

改完后就涵盖了192.168号段的所有IP。

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\***2023.11.30调整-修改部分**\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

![我的配置如图（2023.11.30修改前内容）](https://storage.googleapis.com/papyrus_images/4fc06d0d779bc4396ee99429c7f8f7ec13fff6d9dc2667d184af1294dd9ae28e.png)

我的配置如图（2023.11.30修改前内容）

![2023.11.30修改后内容样例](https://storage.googleapis.com/papyrus_images/a672761dbc7f8d8a8281e75b10b8186e8c74df4166462c8b15b9fbf54a014c3e.png)

2023.11.30修改后内容样例

**新建一个.env文件，并在文件内写入：**

DAEMON\_URL=用户名:密码@192.168.31.188:8332

这里的`用户名`和`密码`就是上一步**Bitcoin Core的conf**里设置的`用户名`和`密码`

![](https://storage.googleapis.com/papyrus_images/59e501cff7dd5b5dc0d94f399b695d498aef8a663b18db1e5e7e730e7b97bfed.png)

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

/\***第一次看教程的朋友，从这里往下可以不做，直接去看后面更新部分。**

在Atomicals-Electrumx-Docker文件夹里打开cmd，并运行：

docker-compose pull && docker-compose up -d

![配置中。。。](https://storage.googleapis.com/papyrus_images/b8a2acc193d91c888576beee392ebaf385cd2097d5dcdc7047d5d073c152bd60.png)

配置中。。。

![开启服务器](https://storage.googleapis.com/papyrus_images/742de64d56ee1ed7b5a3dbb23851fb563c26f21cde969936538fea9d1107ef65.png)

开启服务器

运行命令后，可以关闭cmd窗口了。Docker开始同步节点信息，完全同步至最新区块高度，大约需要90G磁盘空间，需要1天半时间。可以打开Docker APP 来查看同步进度。

![在Docker查看](https://storage.googleapis.com/papyrus_images/daafd8a873c6af6efbde454f044a71723b1e2221ac61d069a506ed79d5f45e7d.png)

在Docker查看

**第一次看教程的朋友，从这里往上到 /\*可以不做，直接去看后面更新部分。**

\*/

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

**全部同步完成后，** **打开atomicals-js-master文件夹里的.env文件，替换原有节点URL为：**

`ELECTRUMX_PROXY_BASE_URL=http://localhost:8080/proxy`

![替换节点URL](https://storage.googleapis.com/papyrus_images/4b3bf0f23238f5b2127fdba424de0608773fa80743a3eda0ec8b488b1fba0f00.png)

替换节点URL

至此，私有节点就已经搭建完成。

Docker其他相关命令，在cmd中运行下列命令实现对应功能：

检查electrumx是否准备就绪

`docker-compose ps`

使用cmd查看进度

`docker-compose logs -f`

关闭服务器

`docker-compose down`

2023.11.15晚9点-更新内容
------------------

`更新内容是：本地索引服务支持。由于Next-DAO的Github把两个模式的docker-compose配置文件放在不同的页面，所以上一节教程中没有本节内容，需要操作本节内容才能正确开始本地节点服务。不影响之前的同步数据和进度。`

**1.首先停止已经在运行的Docker，并删除旧的Container。**

![删除旧的Container](https://storage.googleapis.com/papyrus_images/8cc308396ff11c1cd67fdbe7cb63dc84becd5a903a0544c894345369343508b2.png)

删除旧的Container

2.在Next-DAO的GitHub页面，下载`docker-compose.yml`文件，并替换文件夹内现有的同名文件：

[

GitHub - Next-DAO/atomicals-electrumx-proxy-docker
--------------------------------------------------

Contribute to Next-DAO/atomicals-electrumx-proxy-docker development by creating an account on GitHub.

https://github.com



](https://github.com/Next-DAO/atomicals-electrumx-proxy-docker)

![下载docker-compose.yml](https://storage.googleapis.com/papyrus_images/d2a1e3909c0fd9cbdb5877439973c930a4baea3fc07d4aafc2bbadf9f534fe3e.png)

下载docker-compose.yml

![下载新的docker-compose.yml并替换现有同名文件](https://storage.googleapis.com/papyrus_images/3190f0715188e2266b6fe0944d207d69defdb7f4780d3a3cc556dd8e2bfa4436.png)

下载新的docker-compose.yml并替换现有同名文件

docker-compose.yml文件中，需要填写全节点的rpcuser及rpcpassword，`${IP:?}`部分为本机IP，如果之前的步骤正确创建并配置了.ENV文件，这里可以不改，如果没有配置.ENV，则`${IP:?}`改为本机IP即可。

3.把 `data` 文件夹 重命名为： `electrumx-data`

![把 data 文件夹 重命名为：electrumx-data](https://storage.googleapis.com/papyrus_images/ac5a124ee6bc8d6bb2569a629e6618f0136deafeecb0b0642399f84d7aa15dff.png)

把 data 文件夹 重命名为：electrumx-data

**上面3步操作完成后重启电脑**

4.然后在文件夹内打开cmd命令提示符窗口，并运行：

`docker-compose pull && docker-compose up -d`

如果报错：_&&不是有效语句分隔符_，就分开运行这两段代码即可。

atomicals-js-master文件夹里的`.env`文件配置与上一节教程一样，无需改动。

5.1检查docker同步状态：在浏览器地址栏输入 [http://192.168.31.188:8080](http://192.168.31.188:8080) ，如果返回 `“success”：true` 则表示节点运行正常，docker会继续同步数据并检索本地atom协议的交易，此过程也要持续数小时。

5.2检查节点状态：在浏览器地址栏输入 [http://192.168.31.188:8080/proxy/health](http://192.168.31.188:8080/proxy/health) ，如果返回 `“success”：true ， “health”：true`则表示节点已经准备就绪，此时就可以用atomicals-js工具连接私有节点正常使用了。

说明：由于Windows系统上docker的效率本身就低，再加上网络等各种不可控原因，docker下的私有节点并不稳定，及时电脑不关机持续运行，也会导致节点莫名其妙丢失状态（双false状态），此时不用管它，docker会自动继续同步，直到再次准备就绪。（如果期间docker卡死，就需要手动去重启docker）。

_（注意这里的IP地址要替换为你得本机IP地址）_

![返回 “success”：true 则表示docker运行正常](https://storage.googleapis.com/papyrus_images/45f7493d7767f9e1967640c3301d4b9eb43d40fedbcfa0e29835f0d94057209c.png)

返回 “success”：true 则表示docker运行正常

![返回 “success”：true，“health”：true 则表示节准备就绪](https://storage.googleapis.com/papyrus_images/a0354e7c28479a69101a29e0833a8ebd3fce428e69fce4ffae9cd5fed93d2558.png)

返回 “success”：true，“health”：true 则表示节准备就绪

### 我的推特：

---

*Originally published on [E](https://paragraph.com/@cyberscavenger/atomicals-js)*
