注意,bsv将在2.4号"硬分叉"强制升级,dockerfile文件git资源地址替换为 git clone https://github.com/bitcoin-sv/bitcoin-sv.git --branch v1.0.1, 还要在配置中新增"extrablocksize=2000000000, maxstackmemoryusageconsensus=200000000"这两个参数,其它都跟之前一样. 这是本次升级的详细说明: https://bitcoinsv.io/genesis-hard-fork/
首先需要一个服务器,并安装完成docker,服务器推荐配置; 生产环境:2c,8G,500G硬盘大小, 测试环境:2c,4g, 50G硬盘大小
1.创建dockerfile文件
cd /
mkdir bsv
cd /bsv
vim dockerfile
2. 一下是dockerfile文件内容
FROM ubuntu:18.04
MAINTAINER jiangliuer
RUN apt-get update
RUN apt-get install -y git build-essential libzmq3-dev libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils libboost-all-dev
RUN git clone https://github.com/shawnshawnshawn/bitcoin-sv.git --branch bsv-prod /root/bitcoin-sv
WORKDIR /root/bitcoin-sv
RUN ./autogen.sh
RUN ./configure --disable-wallet --disable-tests
RUN make
RUN make install
RUN mkdir conf
COPY bitcoin.conf conf
EXPOSE 8332 8333 18332 18333 28332
CMD ["bitcoind","--conf=/root/bitcoin-sv/conf/bitcoin.conf","-printtoconsole"]
在这里说一下,我当初使用bitcoin-sv上面的master源码部署问题很多,所以我fork了一份tags为0.2.1的源码,自己创建了分支,由于不会c++,所以过程很痛苦,这也是我写这篇博客的原因.
3. 创建bitcoin.conf配置文件
server=1
txindex=1
addressindex=1
timestampindex=1
spentindex=1
zmqpubrawtx=tcp://127.0.0.1:28333
zmqpubhashblock=tcp://127.0.0.1:28333
rpcallowip=0.0.0.0/0
rpcport=18332
rpcuser=test
rpcpassword=test
uacomment=bitcore
如果想部署测试节点,只需要在这个配置文件中添加 testnet=1 即可.
4. 根据dockerfile文件创建docker镜像
docker build -t ubuntu:18.04 .
这里需要注意一下, 一定要在包含这个dockerfile文件的目录中执行,否则找不到这个文件
5. 使用创建的docker镜像,运行容器
docker run -tid --name bsv-node -p 18332:18332 ubuntu:18.04
这里暴露的端口要和配置文件中的rpcport一直,否则访问不到
6. 查看docker容器是否启动
docker ps
查看这个命令执行的内容是否包含name为bsv-node的容器,并且指向正确的端口 0.0.0.0:18332 -> 18332
7. 查看docker容器日志,节点配置是否生效
docker logs -f --tail=100 bsv-node
如果生效,你会看到一条特别长的语句,包含了rpcuser和rpcpassword, 如果有 No rpcuser 这种字眼,就说明没成功,当然你也可以看他是否提示有没有加载配置文件
8. 进入容器查看bsv节点的所有方法,以确保有你需要的方法(被坑过)
docker exec -it bsv-node bash
进入容器后 使用 bitcoin-cli --conf=/root/bitcoin-sv/conf/bitcoin.conf help 这条命令可以查看全部没被隐藏的rpc方法. 当然你也可以使用 bitcoin-cli --conf=/root/bitcoin-sv/conf/bitcoin.conf help getblock 这样的命令查看某一方法的调用示例.注意--config后面跟的是你dockerfile中设置的配置文件地址. 使用exit可以退出容器.
9. 使用curl外部请求节点rpc方法, 这里以获取区块高度为例;
curl --user test:test --data-binary '{"jsonrpc": "1.0", "id":"1", "method": "getblockcount", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:18332/
返回的结果为:
{"result":342469,"error":null,"id":"1"}
这里说以--user, 这个是请求rpc时会验证入参,如果使用postman请求, 只需要在请求头中加入 .如下图
图中划线的是 test:test的bytes,使用java方法 "test:test".getBytes(),接口获取到. 前面basic是固定的.
这样就算搭建成功了.有什么问题可以给我发邮件: [email protected]. 看见会回复.
欢迎转载,转载请注明原文链接