如何安装和运行一个Stacks节点

  • QuickNode
  • 发布于 2025-01-30 20:22
  • 阅读 25

这篇文章详细介绍了如何在Linux和macOS上安装Stacks 2.0主网节点,并使用Stacks CLI和cURL查询区块链数据。文章涵盖了安装所需的软件、详细的步骤说明以及节点配置的相关信息,适合希望深入了解Stacks生态的开发者。

概述

Stacks 2.0 是一个开源的第一级区块链,允许开发者构建智能合约和去中心化区块链应用。此指南将演示如何在 Linux 和 macOS 上安装 Stacks 客户端并开始运行主网节点。当我们的主网节点同步后,我们将使用 Stacks CLI 和 cURL 从 Stacks 区块链查询数据。

你将要做的事情

  • 安装并运行 Stacks 2.0 主网节点

  • 使用 Stacks CLI 和你的本地主网节点查询区块链数据

  • 使用 cURL 和你的本地主网节点查询区块链数据

  • 检查额外的节点配置

你将需要的东西

为什么选择 Stacks?

Stacks 利用了一种叫做转移证明(“PoX”)的共识机制。该共识机制使 Stacks 能够利用比特币的安全性,同时支持快速且低成本的交易。此外,Stacks 还提供了一些功能:

  • 智能合约:智能合约可以使用 Clarity 编程语言编写。智能合约允许开发人员构建各种去中心化应用,例如 DAO、非同质化代币(NFT)、同质化代币(类似于 ERC-20 代币)和支付服务。
  • 挖矿:你可以成为一个矿工,并为你帮助生成的区块中的交易获取 Stacks 费用。
  • 堆叠:你可以锁定你的 STX 代币一段时间并赚取比特币。

Stacks 节点设置

注意:本指南演示了如何在类 Unix 的操作系统(Linux 和 macOS)上运行 Stacks。

我们将使用 Docker 快速引导我们的 Stacks 主网节点。确保你已启动 Docker,然后打开终端并运行以下命令:

docker pull blockstack/stacks-blockchain

响应应如下所示:

Docker Pull Command

接下来,我们将创建一个目录来保存 Stacks 节点的持久数据。在终端中运行以下命令:

mkdir -p ./stacks-node/{persistent-data/stacks-blockchain/mainnet,config/mainnet} && cd stacks-node

接下来,我们将创建一个配置文件,用于保存 Stacks 节点的配置。在终端中运行以下命令以创建一个 .toml 文件,并添加以下配置:

tee -a ./config/mainnet/Config.toml <<EOF

[node]
working_dir = "/root/stacks-node/data"
rpc_bind = "0.0.0.0:20443"
p2p_bind = "0.0.0.0:20444"
bootstrap_node = "02da7a464ac770ae8337a343670778b93410f2f3fef6bea98dd1c3e9224459d36b@seed-0.mainnet.stacks.co:20444,02afeae522aab5f8c99a00ddf75fbcb4a641e052dd48836408d9cf437344b63516@seed-1.mainnet.stacks.co:20444,03652212ea76be0ed4cd83a25c06e57819993029a7b9999f7d63c36340b34a4e62@seed-2.mainnet.stacks.co:20444"
wait_time_for_microblocks = 10000

[burnchain]
chain = "bitcoin"
mode = "mainnet"
peer_host = "bitcoin.blockstack.com"
username = "blockstack"
password = "blockstacksystem"
rpc_port = 8332
peer_port = 8333

[connection_options]
read_only_call_limit_write_length = 0
read_only_call_limit_read_length = 100000
read_only_call_limit_write_count = 0
read_only_call_limit_read_count = 30
read_only_call_limit_runtime = 1000000000
EOF

现在是启动 Stacks 主网节点的时间了!在相同的终端窗口中运行以下命令:

docker run -d --rm \
  --name stacks-blockchain \
  -v $(pwd)/persistent-data/stacks-blockchain/mainnet:/root/stacks-node/data \
  -v $(pwd)/config/mainnet:/src/stacks-node \
  -p 20443:20443 \
  -p 20444:20444 \
  blockstack/stacks-blockchain \
/bin/stacks-node start --config /src/stacks-node/Config.toml

注意:如果你使用的是 M1 Mac,你需要在命令中添加配置标志 --platform linux/amd64docker run --platform linux/amd64 --name stacks-blockchain

如果最后命令成功运行,你应该看到一个哈希输出。为了确保 Docker 正在运行我们的 Stacks 容器,请在终端中运行以下命令:

docker ps --filter name=stacks-blockchain

输出应如下所示:

Docker Filter Command

要检查同步进度,请运行以下命令:

docker logs stacks-blockchain

如果初始的 burnchain 头未同步,你可能会收到错误。如果是这样,请等待 5-10 分钟,然后再次尝试运行该命令。 一旦你看到类似于以下输出的进度,我们就成功了!

INFO [1659079212.635694] [testnet/stacks-node/src/run_loop/neon.rs:341] [main] 开始同步比特币头,别担心,可以去喝杯咖啡,这可能会花费一段时间
INFO [1659079223.189890] [src/burnchains/bitcoin/spv.rs:923] [main] 同步比特币头:0.3%(2000/747045)
INFO [1659079224.609923] [src/burnchains/bitcoin/spv.rs:923] [main] 同步比特币头:0.5%(4000/747045)
INFO [1659079227.038602] [src/burnchains/bitcoin/spv.rs:923] [main] 同步比特币头:0.8%(6000/747045)
INFO [1659079234.098386] [src/burnchains/bitcoin/spv.rs:923] [main] 同步比特币头:1.1%(8000/747045)
INFO [1659079235.686547] [src/burnchains/bitcoin/spv.rs:923] [main] 同步比特币头:1.3%(10000/747045)
INFO [1659079237.309671] [src/burnchains/bitcoin/spv.rs:923] [main] 同步比特币头:1.6%(12000/747045)
INFO [1659079239.138133] [src/burnchains/bitcoin/spv.rs:923] [main] 同步比特币头:1.9%(14000/747045)
INFO [1659079241.008169] [src/burnchains/bitcoin/spv.rs:923] [main] 同步比特币头:2.1%(16000/747045)
...

一旦 burnchain 头同步完成(即,100%),我们可以运行以下命令检查 Stacks 高度的同步状态:

curl -sL localhost:20443/v2/info | jq

你应该会看到类似以下的输出:

{
  "peer_version": 402653189,
  "pox_consensus": "88659f1f1fa4f3c8f246ceb3b5648bf40def64cf",
  "burn_block_height": 666057,
  "stable_pox_consensus": "0000000000000000000000000000000000000000",
  "stable_burn_block_height": 666050,
  "server_version": "stacks-node 2.05.0.1.0 (master:de541f9, release build, linux [x86_64])",
  "network_id": 1,
  "parent_network_id": 3652501241,
  "stacks_tip_height": 4,
  "stacks_tip": "11c5d00aa3b99afd3e74d818164f1ef3c0aefe9f7b24b8d2a46e878e557d8eda",
  "stacks_tip_consensus_hash": "88659f1f1fa4f3c8f246ceb3b5648bf40def64cf",
  "genesis_chainstate_hash": "74237aa39aa50a83de11a4f53e9d3bb7d43461d1de9873f402e5453ae60bc59b",
  "unanchored_tip": null,
  "unanchored_seq": null,
  "exit_at_block_height": null
}

如果 stacks_tip0000000000000000000000000000000000000000000000000000000000000000,请稍等几分钟再运行该命令。最终,你应该会看到某些进展。在我们的测试中,节点完全同步到网络的最新区块大约花费了 14 天。请记住,这将根据你的 PC 硬件和节点连接的健康对等数量而有所不同。

要检查你的 Stacks 主网节点是否完全同步,你可以对公共节点进行相同的 cURL 请求(即 https://stacks-node-api.mainnet.stacks.co/),并验证 stacks_tip_heightburn_block_height 是否与你的本地节点匹配。

停止你的 Stacks 节点

要停止正在运行你 Stacks 主网节点的 Docker 容器,请在终端中运行以下命令:

docker stop stacks-blockchain

使用 Stacks CLI 和 cURL 查询区块链数据

现在我们的 Stacks 主网节点已同步,我们可以向 Stacks 区块链发出请求。本节将演示如何通过 Stacks CLI 和 cURL 查询区块链数据。只有 v1v2 的一组 RPC 方法可用于我们的主网节点。如果你想查询 扩展 方法的一组数据,你需要运行 Stacks API 节点(说明可以在 这里 找到)或者使用 QuickNode 等服务来管理和优化你的节点基础设施。另外有关 Stacks 在 QuickNode 的更多信息,可以在 这里 找到。

所有支持的 v1 和 v2 方法的列表可以在 QuickNode 的文档页面 找到。

在使用 Stacks CLI 之前,我们需要通过 npm 下载它。在终端中运行以下命令将 Stacks CLI 全局安装:

npm install -g @stacks/cli

安装完成后,我们将查询 Stacks 区块链上一个地址的余额。在终端中运行以下命令:

stx balance SP21ZXQHV9EVNQERT3FF676S5RRFF77CHQ9TK5FE8 -I "http://localhost:20443"

你应该会看到以下格式的输出。你可以通过检查同一地址在 Stacks 区块浏览器 上的数据来验证数据的准确性。

{
  "balance": "70570179407",
  "locked": "12224500000",
  "unlock_height": 747950,
  "nonce": 38
}

有关更多 Stacks CLI 命令,请查看 官方 Stacks 文档

你还可以使用 cURL 向你的同步节点发出请求。例如,这是如何使用 cURL 查询 v2/accounts{principal} 方法的:

curl --location --request GET 'http://localhost:20443/v2/accounts/SPME0WF87C4HY7FYCEMVWSHK03FNNZQ45FAEJ1J5' \
--header 'Accept: application/json'

这将返回:

{
    "balance": "0x000000000000000000000000078283e8",
    "locked": "0x00000000000000000000000000000000",
    "unlock_height": 0,
    "nonce": 1657,
    "balance_proof": "0x0000000604eb000000..."
}

请记住,只有 v1v2 的一组 RPC 方法可用于 Stacks 节点。如果你想查询 扩展 方法的一组,你需要运行 Stacks API 节点。

其他节点配置

如果你想在另一个网络上运行 Stacks 节点,你可以使用以下的子命令之一:

  • mocknet:快速的本地设置,模拟一个 burnchain。非常适合智能合约开发。

  • krypton:一个节点,加入并从公共 krypton regtest 流式传输区块,由 Blockstack 驱动(通过转移证明)。

  • testnet:一个节点,加入并从公共 testnet 流式传输区块。

  • mainnet:一个节点,加入并从公共 mainnet 流式传输区块。

你可以使用以下语法运行上述任何子命令:

stacks-node sub-command [--subcommand-option <value>]

配置文件(即 .toml 文件)也可以自定义,以调整与你的 Stacks 节点相关的选项。示例配置列表可以在 这里 找到。

最后感想

恭喜你!你已经学习了如何运行 Stacks 主网节点并成功查询来自该节点的区块链数据。运行节点有助于使 Stacks 网络更加弹性。

你总是可以通过快速在 Quicknode.com 上启动一个 Stacks 节点来跳过和简化这个过程。

我们 ❤️ 反馈!

要了解更多,你可以查看其他一些教程 在这里。如果你对本指南有任何反馈或问题,请 告诉我们,我们非常乐意听取你的意见!

你也可以通过 Twitter 或我们的 Discord 社区服务器与我们联系。

  • 原文链接: quicknode.com/guides/inf...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。