比特币全节点
<h5>环境</h5>
<p>NodeJs</p>
<h5>安装客户端</h5>
<h5>安装bitcoin core客户端</h5>
<pre><code>apt-get install software-properties-common
apt-add-repository ppa:bitcoin/bitcoin
apt-get update
apt-get install bitcoind</code></pre>
<p>但是bitcoin core的bitcoind不提供地址索引,所以我们使用bitcore-node,bitcore-node使用一个增加了地址索引的bitcoind,并在其上封装成nodejs库</p>
<h5>安装bitcore-node</h5>
<pre><code>npm install -g bitcore-node
安装bitcore-node时,会自动安装bitcoind,一般在./node_modules/bitcore-node/bin/bitcoind</code></pre>
<p>同步全节点
安装bitcore-node后,在代码中</p>
<pre><code>var bitcore = require('bitcore-node');
var Bitcoin = bitcore.services.Bitcoin;
var node = new bitcore.Node({
network: 'livenet', //主网络,测试网为testnet
services:[{
name: 'bitcoind',
module: Bitcoin,
config: {
spawn: {
datadir: '/root/.bitcoin/', //存放区块数据的目录
exec: './node_modules/bitcore-node/bin/bitcoind' //bitcoind程序的路径
}
}
}]
});</code></pre>
<p>//启动节点,节点成功启动之后,执行里面的回调函数
node.start(() => {
//do something...
});
上面启动节点时,会调用
bitcoind --datadir='/root/.bitcoin/' --conf='/root/.bitcoin/bitcoin.conf'
所以还要在datadir里创建一个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>
<p>节点启动后就正常开始同步区块数据了
这种spawn模式,node退出会导致bitcoind退出
还有一种connect模式,这可以链接已经在运行的bitcoind程序,并且可以链接多个
是需要把上方代码中的config修改成</p>
<pre><code>config: {
connect: [{
"rpchost": "127.0.0.1",
"rpcport": 8332,
"rpcuser":"bitcoin",
"rpcpassword": "local321",
"zmqpubrawtx": "tcp://127.0.0.1:28332"
}]
}</code></pre>
<p>但是启动node前需要手动运行bitcoind
开发
上面代码中的node提供了很多的方法可共调用</p>
<pre><code>node.services.bitcoind.getAddressBalance
node.services.bitcoind.sendTransaction</code></pre>
<p>等等,详细内容可以查看bitcore文档
代码
/root/bitcoin_api/
区块数据
/root/.bitcore/</p>