Docker 部署 BCH v23.0.0 版本开发网指南

·

随着区块链技术的持续演进,BCH(Bitcoin Cash)网络因其高效的处理能力和较低的交易费用而受到广泛关注。特别是在近期行业动态中,BCH 侧链 smartBCH 的上线进一步提升了其生态潜力,使得学习和部署 BCH 开发网成为开发者探索应用场景的重要一步。本文将详细讲解如何使用 Docker 部署 BCH v23.0.0 版本的开发网(regtest),涵盖镜像构建、容器配置、服务验证及常用接口操作,助您快速搭建本地测试环境。

开发网部署概述

BCH 开发网(regtest)是一个本地私有区块链网络,允许开发者在不消耗主网资产的情况下进行智能合约测试、交易模拟和功能验证。与测试网(testnet)和主网(mainnet)不同,regtest 网络提供了完全可控的环境,用户可以自主挖矿、生成区块并调试应用。

本次部署基于 BCH v23.0.0 版本,该版本在 RPC 接口和启动参数上有所优化。部署过程采用 Docker 容器化方案,确保环境一致性和可重复性。

镜像构建步骤

下载基础镜像

首先,拉取所需的 Docker 基础镜像:

docker pull buildpack-deps:jessie-curl

编写 Dockerfile

创建 Dockerfile 文件,定义镜像构建流程:

FROM buildpack-deps:jessie-curl
RUN wget -O bchn.tar.gz https://github.com/bitcoin-cash-node/bitcoin-cash-node/releases/download/v23.0.0/bitcoin-cash-node-23.0.0-x86_64-linux-gnu.tar.gz \
 && tar -xzvf bchn.tar.gz \
 && cd bitcoin-cash-node-23.0.0/bin \
 && mv bitcoin-cli bitcoin-tx bitcoind /usr/local/bin \
 && cd / \
 && rm -Rfv bitcoin*
EXPOSE 18443 18444
WORKDIR /root/.bitcoin
ENTRYPOINT ["bitcoind"]

:EXPOSE 指令声明容器端口,18443 用于 RPC 远程调用,18444 用于节点间同步。BCH 开发网默认使用这些端口。

构建与验证镜像

执行构建命令并查看生成的镜像:

docker build . -t bch/bitcoin-cash-node:v23.0.0
docker images

成功后可看到镜像大小约为 212MB。

容器配置与启动

创建数据目录

为持久化存储区块链数据,创建本地目录:

mkdir -p /opt/docker/bch-regtest/data

启动开发网容器

运行以下命令启动容器,并配置关键参数:

docker run -itd --restart=unless-stopped -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone --name bchn-regtest -v /opt/docker/bch-regtest/data:/root/.bitcoin/regtest -p 18443:18443 -p 18444:18444 bch/bitcoin-cash-node:v23.0.0 -regtest -server=1 -rpcuser=admin -rpcpassword=123456 -txindex=1 -paytxfee=0.00005 -rpcport=18443 -rpcallowip=0.0.0.0/0 -port=18444 -rpcbind=0.0.0.0:18443

启动参数解析

服务验证与监控

检查容器状态

使用以下命令确认容器正常运行:

docker ps

输出应显示容器状态为 "Up",并映射端口 18443-18444。

分析启动日志

查看日志以确保无报错且同步正常:

docker logs bchn-regtest

关键日志包括版本初始化、LevelDB 打开成功、创世区块生成(高度 0)和线程启动完成。出现 "UpdateTip: new best" 表示链同步正常。

常用 RPC 接口操作

BCH 开发网提供丰富的 JSON-RPC 接口用于交互。以下示例使用 curl 调用,基本格式为:

curl --user admin:123456 --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "方法名", "params": [参数列表] }' -H 'content-type: text/plain;' http://127.0.0.1:18443

创建新地址

生成一个属于标签 "test2" 的地址:

curl --user admin:123456 --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getnewaddress", "params": ["test2"] }' -H 'content-type: text/plain;' http://127.0.0.1:18443

返回结果包含以 "bchreg:" 开头的地址。

模拟挖矿产出

向指定地址挖出 6 个区块(开发网中需挖满 106 个区块后才可花费收益):

curl --user admin:123456 --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "generatetoaddress", "params": [6,"qz9qwcwqd3jrt669dvjg32pyd5kmh2x8zyvflejunj"] }' -H 'content-type: text/plain;' http://127.0.0.1:18443

查询区块高度

获取当前链上最新区块数:

curl --user admin:123456 --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getblockcount", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:18443

查看余额分组

列出钱包中所有地址及其余额:

curl --user admin:123456 --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "listaddressgroupings", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:18443

发送交易

向目标地址转账 10 BCHA:

curl --user admin:123456 --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "sendtoaddress", "params": ["qr03h5ewa07jp4lpme4qmjdzc244c480mqhjkes9vq",10] }' -H 'content-type: text/plain;' http://127.0.0.1:18443

查询未花费输出

获取指定地址的未花费交易输出(UTXO):

curl --user admin:123456 --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "listunspent", "params": [6, 9999999, ["qz9qwcwqd3jrt669dvjg32pyd5kmh2x8zyvflejunj"]] }' -H 'content-type: text/plain;' http://127.0.0.1:18443

👉 查看实时区块浏览器

常见问题解答

开发网与测试网有何区别?

开发网(regtest)是完全本地的私有链,区块生成由用户控制,无需网络同步,适合快速调试。测试网(testnet)是公开网络,需同步全局区块,模拟主网环境但使用测试代币。

为何挖矿后余额仍显示为零?

BCH 开发网要求挖满 106 个区块后才能解锁初始奖励。请持续挖矿直到高度超过 106,然后使用 listaddressgroupings 查询余额。

如何修改 RPC 认证密码?

在容器启动参数中修改 -rpcpassword 的值即可。请注意,重启容器后需重新同步数据,建议提前备份持久化目录。

交易迟迟未确认怎么办?

在开发网中,交易需要被打包进区块才能确认。通过 generatetoaddress 方法挖出一个新区块即可包含待处理交易。

是否支持多节点集群部署?

支持。只需在不同容器中启动多个节点,并通过 addnode 参数或将节点地址互连即可组建私有集群网络。

如何升级到新版本?

下载新版本二进制文件并重新构建 Docker 镜像。注意:升级前备份数据目录,并查阅 GitHub 发布说明以确认参数变更。

结语

通过本文介绍的 Docker 化部署方案,您可以轻松搭建 BCH v23.0.0 开发网环境,并利用 RPC 接口进行全方位测试。这种部署方式不仅隔离了系统环境,还简化了重复部署流程,为智能合约开发和链上应用调试提供了坚实基础。随着 BCH 生态的不断发展,掌握本地环境部署将成为开发者的必备技能。

👉 获取更多区块链开发工具