随着区块链技术的持续演进,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启动参数解析:
-regtest:指定开发网模式(测试网用-testnet,主网省略)。-txindex=1:启用完整交易索引,支持查询任意交易。-server=1:允许 JSON-RPC 命令调用。-paytxfee=0.00005:设置交易手续费率(单位:BCHA/kB)。-rpcuser和-rpcpassword:RPC 认证凭据。-rpcport和-port:分别指定 RPC 和 P2P 通信端口。-rpcallowip和-rpcbind:控制 RPC 访问权限。
服务验证与监控
检查容器状态
使用以下命令确认容器正常运行:
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 生态的不断发展,掌握本地环境部署将成为开发者的必备技能。