zcash全节点搭建
<h3>环境</h3>
<p>NodeJs</p>
<h3>安装客户端</h3>
<p>zcash进行硬分叉后,使用1.1.2版本的源码,且已增加rpc方法,硬分叉的主要变化在于发起交易时要分别调用创建交易,签名交易,广播交易接口,因为创建交易时必须指定花费的amount,详情见:<a href="https://zcash-rpc.github.io/signrawtransaction.html">https://zcash-rpc.github.io/signrawtransaction.html</a>
启动客户端命令:./root/zcash1.1.2_改好的/src/zcashd --daemon</p>
<pre><code>搭建流程:
1.使用samueldebruyn/debian-git作为基础镜像(在47.244.239.11上),下载二进制文件,下载依赖包,然后执行./zcash-fetch-params,commit为一个新镜像,再执行./zcashd
更新2.1.0版本后:
下载源码后编译
git checkout v2.1.0-1
./zcutil/fetch-params.sh
./zcutil/build.sh -j$(nproc)
生成可执行文件在src目录下,启动即可,配置文件如下
</code></pre>
<p><strong>Dockerfile:</strong></p>
<pre><code>FROM zcash:1.0
EXPOSE 13144
CMD ["/root/zcash-2.0.7-3/bin/zcashd", "--conf=/root/zcash-2.0.7-3/bin/zcash.conf"]
查看同步进程:/root/zcash-2.0.7-3/bin/zcash-cli --conf=/root/zcash-2.0.7-3/bin/zcash.conf getblockcount
存储目录:/root/.zcash
docker run -itd -p 13144:13144 -v /root/.zcash:/root/.zcash herry143/zec:2.0 /root/zcash-2.0.7-3/bin/zcashd --conf=/root/zcash-2.0.7-3/bin/zcash.conf
docker run -itd --net=host -v /root/.zcash:/root/.zcash herry143/zec:2.0 /root/zcash-2.0.7-3/bin/zcashd --conf=/root/zcash-2.0.7-3/bin/zcash.conf</code></pre>
<pre><code>addnode=mainnet.z.cash
rpcuser=root
rpcpassword=root
rpcport=13144
rpcallowip=0.0.0.0/0
server=1
txindex=1
addressindex=1
timestampindex=1
spentindex=1</code></pre>
<h3>同步全节点</h3>
<p>安装dre-node后,在代码中</p>
<pre><code>var zcashcore = require('bitcore-node-zcash');
var Zcash = zcashcore.services.Bitcoin;
var node = new zcashcore.Node({
network: 'livenet',
services:[
{
name: 'bitcoind',
module: Zcash,
config: {
connect: [{
"rpchost": "127.0.0.1",
"rpcport": 8331,
"rpcuser":"bitcoin",
"rpcpassword": "local321",
"zmqpubrawtx": "tcp://127.0.0.1:28331"
}]
}
}
]
});
</code></pre>
<p>zcash.conf:</p>
<pre><code>addnode=mainnet.z.cash
gen=1
genproclimit=-1
rpcuser=bitcoin
rpcpassword=local321
rpcport=8331
rpcallowip=127.0.0.1
server=1
whitelist=127.0.0.1
txindex=1
addressindex=1
timestampindex=1
spentindex=1
zmqpubrawtx=tcp://127.0.0.1:28331
zmqpubhashblock=tcp://127.0.0.1:28331
</code></pre>
<p>//启动节点,节点成功启动之后,执行里面的回调函数
node.start(() => {
//do something...
});</p>
<h3>开发</h3>
<p>上面代码中的node提供了很多的方法可共调用
node.services.bitcoind.getAddressBalance
node.services.bitcoind.sendTransaction
等等,详细内容可以查看bitcore文档</p>
<h4>代码</h4>
<p>接口代码:/root/zcashapi-master/
源码:/root/zcash1.1.2_改好的</p>
<h4>区块数据</h4>
<h5>/root/.zcash/</h5>
<pre><code>./dfs/dn2/zcash/zcash/src/zcashd --conf=/dfs/dn2/zcash/zcash.conf
</code></pre>