达世币全节点


btc全节点Docker容器部署

<h1>Docker容器部署btc全节点</h1> <h2>相关文档</h2> <p><code>https://hub.docker.com/r/wwcr/bitcoin-core/~/dockerfile/, https://blog.csdn.net/yzpbright/article/details/81004202 </code></p> <h3>docker安装</h3> <ul> <li>下载docker.dmg文件,然后点击,一步步操作(mac下)</li> <li>执行docker version,查看是否安装成功</li> </ul> <h2>操作流程</h2> <ol> <li>新建文件Dockerfile和bitcoin.conf(已上传到gitlab),以构建镜像 Dockerfile: <pre><code>FROM buildpack-deps:stretch-curl ENV BITCOIN_VERSION 0.17.0 ENV BITCOIN_DOWNLOAD_PATH https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/ ENV BITCOIN_DOWNLOAD_FILENAME bitcoin-${BITCOIN_VERSION}-x86_64-linux-gnu.tar.gz ENV BITCOIN_RELEASES_KEY 01EA5486DE18A882D4C2684590C8019E36C2E964 RUN wget $BITCOIN_DOWNLOAD_PATH/$BITCOIN_DOWNLOAD_FILENAME \ &amp;&amp; wget $BITCOIN_DOWNLOAD_PATH/SHA256SUMS.asc \ &amp;&amp; wget https://bitcoin.org/laanwj-releases.asc \ &amp;&amp; gpg --import laanwj-releases.asc \ &amp;&amp; gpg --fingerprint $BITCOIN_RELEASES_KEY \ &amp;&amp; gpg --verify SHA256SUMS.asc \ &amp;&amp; grep -o "$(sha256sum $BITCOIN_DOWNLOAD_FILENAME)" SHA256SUMS.asc \ &amp;&amp; tar -xzvf $BITCOIN_DOWNLOAD_FILENAME \ &amp;&amp; cd bitcoin-*/bin \ &amp;&amp; mv bitcoin-cli bitcoin-tx bitcoind /usr/local/bin FROM debian:9-slim COPY --from=0 /usr/local/bin/* /usr/local/bin/ EXPOSE 8333 8332 VOLUME /root/.bitcoin RUN mkdir conf COPY bitcoin.conf /conf CMD ["bitcoind", "--conf=/conf/bitcoin.conf","-printtoconsole", "-disablewallet"]</code></pre> <hr /></li> </ol> <p>bitcoin.conf:</p> <pre><code>server=1 whitelist=127.0.0.1 txindex=1 addressindex=1 timestampindex=1 spentindex=1 zmqpubrawtx=tcp://127.0.0.1:28332 zmqpubhashblock=tcp://127.0.0.1:28332 rpcallowip=127.0.0.1 rpcuser=bitcoin rpcpassword=local321 uacomment=bitcore</code></pre> <hr /> <ol> <li>使用命令:docker build -t btc_docker:dev ./,构建镜像</li> <li>执行docker images查看生成的镜像</li> <li>启动镜像: <pre><code>全节点模式:docker run -it -v /Users/admin/Desktop/docker-build/btc_blockdata:/root/.bitcoin -p 8332:8332 btc_docker:dev</code></pre> <p>参数说明:</p> <ul> <li>-p 8332:8332-映射端口</li> <li>-v /Users/admin/Desktop/docker-build/btc_blockdata 指定挂载出来的区块数据存储目录,可自定义</li> </ul></li> <li>容器启动后,可执行docker exec -it 87fadc0249a9 /bin/bash #进入容器</li> <li>执行bitcoin-cli --conf=/conf/bitcoin.conf getblockchaininfo <h2>搭建测试私有链</h2> <h3>参考链接</h3> <p><code>https://blog.csdn.net/yzpbright/article/details/81004202</code></p> <h3>操作流程</h3> <ul> <li>拉取比特币测试网络(bitcoin-testnet)的Docker镜像 :sudo docker pull freewil/bitcoin-testnet-box</li> <li>运行Docker镜像 docker run -t -i -p 19001:19001 -p 19011:19011 freewil/bitcoin-testnet-box</li> <li>进入Docker运行环境后,输入make start命令来启动两个比特币节点,组成比特币测试网络</li> <li>模拟运行两个比特币测试钱包节点,组成一个私有范围的比特币测试网络。输入make getinfo可以查看测试网络节点状态信息 <h2>代码连接示例(node.js)</h2> <p>bitcore-node.js:</p> <pre><code>var bitcore = require('bitcore-node'); var Bitcoin = bitcore.services.Bitcoin; var node = new bitcore.Node({ network: 'livenet', services:[ { name: 'bitcoind', module: Bitcoin, config: { connect: [{ "rpchost": "127.0.0.1", "rpcport": 8332, "rpcuser":"bitcoin", "rpcpassword": "local321",//与bitcoin.conf中配置一致 "zmqpubrawtx": "tcp://127.0.0.1:28332" }] } } ] }); module.exports = node;</code></pre> <p>bitcore-node.js:</p> <pre><code>const lib = require('bitcore-lib'); const node = require("../lib/bitcore-node"); const async = require("async"); exports.getBalance = function(req, res) {//查询余额 var address = req.params.address; var testnet = req.query.testnet; if (testnet) { if (!lib.Address.isValid(address, 'testnet')) { res.status(400).json({"error":"address isn't a valid testnet's address"}); return; } } else { if (!lib.Address.isValid(address, 'livenet')) { res.status(400).json({"error":"address isn't a valid livenet's address"}); return; } } node.services.bitcoind.getAddressBalance(address, {}, (err, balance) =&gt; { if (err) { res.status(400).json({"error": err.toString()}); return; } res.json({"address":address, "balance":balance.balance.toString()}); }); }</code></pre> <h5></h5></li> </ul></li> </ol>

页面列表

ITEM_HTML