这篇文章详细介绍了如何在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 和你的本地主网节点查询区块链数据
检查额外的节点配置
推荐至少 4GB RAM / Unix 风格的操作系统 / ~100 GB SSD 存储
安装 Docker
安装 curl
安装 jq
安装 Stacks CLI
Stacks 利用了一种叫做转移证明(“PoX”)的共识机制。该共识机制使 Stacks 能够利用比特币的安全性,同时支持快速且低成本的交易。此外,Stacks 还提供了一些功能:
注意:本指南演示了如何在类 Unix 的操作系统(Linux 和 macOS)上运行 Stacks。
我们将使用 Docker 快速引导我们的 Stacks 主网节点。确保你已启动 Docker,然后打开终端并运行以下命令:
docker pull blockstack/stacks-blockchain
响应应如下所示:
接下来,我们将创建一个目录来保存 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/amd64:docker run --platform linux/amd64 --name stacks-blockchain。
如果最后命令成功运行,你应该看到一个哈希输出。为了确保 Docker 正在运行我们的 Stacks 容器,请在终端中运行以下命令:
docker ps --filter name=stacks-blockchain
输出应如下所示:
要检查同步进度,请运行以下命令:
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_tip
是 0000000000000000000000000000000000000000000000000000000000000000,请稍等几分钟再运行该命令。最终,你应该会看到某些进展。在我们的测试中,节点完全同步到网络的最新区块大约花费了 14 天。请记住,这将根据你的 PC 硬件和节点连接的健康对等数量而有所不同。
要检查你的 Stacks 主网节点是否完全同步,你可以对公共节点进行相同的 cURL 请求(即 https://stacks-node-api.mainnet.stacks.co/),并验证 stacks_tip_height 和 burn_block_height 是否与你的本地节点匹配。
要停止正在运行你 Stacks 主网节点的 Docker 容器,请在终端中运行以下命令:
docker stop stacks-blockchain
现在我们的 Stacks 主网节点已同步,我们可以向 Stacks 区块链发出请求。本节将演示如何通过 Stacks CLI 和 cURL 查询区块链数据。只有 v1 和 v2 的一组 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..."
}
请记住,只有 v1 和 v2 的一组 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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!