BTC区块链搭建及应用

《BTC区块链搭建及应用》

  • BTC区块链搭建
  1. 准备操作系统,目前使用的是64位的CentOS6.8阿里云服务器
  2. 查看操作系统磁盘空间,需要至少300G磁盘空间,目前生产和测试环境的BTC区块数据已经达到了200G左右,使用df -h命令查看,如下:

[root@iZ2zeauqkyqtj5k0ntwr5iZ bitcoin]# df -h

  1. 下载最新版本的BTC客户端同步工具,下载地址为:

https://bitcoin.org/en/download

使用技巧:对于连上网的Linux系统,可以使用wget命令下载,如下:

[root@iZ2zeauqkyqtj5k0ntwr5iZ ~]# wget \

https://bitcoin.org/bin/bitcoin-core-0.16.0/bitcoin-0.16.0-x86_64-linux-gnu.tar.gz

  1. 下载之后,创建文件夹,解压,按照名称加版本号重命名,如下:

[root@iZ2zeauqkyqtj5k0ntwr5iZ bitcoin]# mkdir -pv /data/blockchain_data/bitcoin/

[root@iZ2zeauqkyqtj5k0ntwr5iZ bitcoin]# tar xf bitcoin-0.16.0-x86_64-linux-gnu.tar.gz \

-C /data/blockchain_data/bitcoin/

[root@iZ2zeauqkyqtj5k0ntwr5iZ bitcoin]# cd /data/blockchain_data/bitcoin/

[root@iZ2zeauqkyqtj5k0ntwr5iZ bitcoin]# mv bitcoin-0.16.0-x86_64-linux-gnu bitcoin-0.16.0

  1. 创建数据目录,并启动BTC客户端同步工具

[root@iZ2zeauqkyqtj5k0ntwr5iZ bitcoin]# mkdir -pv data_0.16.0

[root@iZ2zeauqkyqtj5k0ntwr5iZ bitcoin]# cd bitcoin-0.16.0/bin/

[root@iZ2zeauqkyqtj5k0ntwr5iZ bin]# ./bitcoind -rpcuser=BpKgvNqEMYU \

-rpcpassword=5McOBR6cpRNM8zaOxmxYf80AbWhCne0KbhNPjPbOM \

-rpcallowip=120.27.14.93 \

-datadir=/data/blockchain_data/bitcoin/data_0.16.0/ \

-keypool=10000 \

-daemon \

-txindex=1

参数含义:

bitcoind: 该文件为一个可执行文件,是BTC客户端同步工具的核心

-rpcuser:指定rpc方式访问BTC链时的用户名,在进行rpc访问时,需要进行身份认证

-rpcpassword:指定rpc方式访问BTC链时的密码

-rpcallowip:指定哪些IP可以通过远程的方式访问BTC区块链的API接口

-datadir:表示BTC同步区块数据时的数据存放目录

-daemon:表示以后台进程的方式启动,不向控制台实时输出日志,如果要实时查看日志,可以在datadir指定的目录下查看debug.log文件

-txindex:表示是否开启交易信息查询功能,如果没有改选项,则在区块数据同步完成之后,无法查询到非本链上的交易记录.

注意:如果需要更多的启动参数,可以通过./bitcoind --help命令查看。

启动之后可以查看到类似于如下的输出信息:

  1. 验证是否启动成功:

方法一:

查看端口,使用如下命令:

[root@iZ2zeauqkyqtj5k0ntwr5iZ data_0.16.0]# netstat -tunlp

BTC启动之后,默认会开启两个tcp端口,8332为rpc服务监听的端口,远程rpc调用的时候使用这个端口,8333为bitcoind进程的默认端口。

方法二:

使用如下命令查看当前区块的信息:

[root@iZ2zeauqkyqtj5k0ntwr5iZ data_0.16.0]# cd \

/data/blockchain_data/bitcoin/bitcoin-0.16.0/bin/

[root@iZ2zeauqkyqtj5k0ntwr5iZ bin]# ./bitcoin-cli getblockchaininfo

注意:

  1. BTC链刚启动的时候有个初始化的过程,如果刚启动就使用这个命令查看当前区块信息,可能查不到,也可能会卡住没反应,可以等一会再试;
  2. 版本不同,这个命令也会有所不同,0.16.0之前的版本可以直接使用getinfo命令查看,即:

[root@iZ2zeauqkyqtj5k0ntwr5iZ bin]# ./bitcoin-cli getinfo

  1. 验证是否同步完成

第一步:首先查看当前区块的区块高度,0.16.0版本的使用如下命令查看:

[root@iZ2zeauqkyqtj5k0ntwr5iZ bin]# ./bitcoin-cli getblockchaininfo

第二步:查看区块链浏览器上的最新区块高度:

地址:

https://blockchain.info/zh-cn/

如果上述两个地方查出的区块高度相差不大或者相等,则说明区块同步完成。

  • BTC区块链常见的操作
  1. BTC区块启动命令:

[root@iZ2zeauqkyqtj5k0ntwr5iZ bin]# ./bitcoind -rpcuser=BpKgvNqEMYU -rpcpassword=5McOBR6cpRNM8zaOxmxYf80AbWhCne0KbhNPjPbOM -rpcallowip=120.27.14.93 -datadir=/data/blockchain_data/bitcoin/data_0.16.0/ -keypool=1000000 -daemon -txindex=1

  1. BTC区块停止命令:

[root@iZ2zeauqkyqtj5k0ntwr5iZ bin]# ./bitcoind stop

注意:如果上述命令长时间不能停止BTC区块,则可以使用kill命令结束bitcoind进程.

3.BTC查询类命令:

请参考文档:https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

使用方法:

进入到BTC的安装目录的bin目录下,然后执行:

./bitcoin-cli [command] [params] -rpcuser=xxx -rpcpassword=xxx即可

如:./bitcoin-cli getbalance wb表示查询wb账户中的余额.

使用技巧:

如上命令每次使用都需要加-rpcuser和-rpcpassword参数,可以将此参数配置在用户家目录下的.bitcoin/bitcoin.conf文件中:

  • BTC区块同步过程中常见的问题
  1. 区块同步过程中由于网络原因链接超时,重启BTC区块即可。
  2. 区块数据写入磁盘失败,需要检查是否磁盘已满,如果磁盘已满,需要更换数据盘。
  3. 云服务器上BTC链部署好之后,无法远程访问

可能的原因:

  1. 被云服务器自身的防火墙拦截
  2. 被云服务器的安全规则拦截
  3. 区块链上不允许某个IP访问

解决办法:

(1)查看云服务器的防火墙,安全规则是否允许某个IP访问

(2)查看BTC区块链启动的时候,IP是否在其允许访问的列表中,如下:

如上表示该区块链允许IP为120.27.14.93的客户端访问。

  • BTC升级步骤

前提:升级之前,需要确保至少有两台BTC区块链服务器,否则会长时间的中断业务

假设:有A服务器,和B服务器,BTC的版本目前都为V0.15.0

业务:需要将BTC服务的版本由V0.15.0升级到V0.16.0

升级步骤:

  1. 如果A服务器之前在使用,可以选则一台空闲的服务器,比如:B服务器。首先将使用到B服务器上BTC服务的接口都切换到A服务器的BTC服务上,如果没有则不用切换,直接升级B服务器即可;
  2. 目前需要切换的系统为区块链接口系统,服务为:

发币及各类查询:修改Tomcat中项目的配置文件,然后重启tomcat即可。如下:

  1. 停止B服务器上的区块链服务,然后验证应用是否正常。如果正常,开始备份B服务器的datadir所指定的目录下的wallet.dat(BTC的钱包文件,如果之前正在使用该链发币,则这个文件很重要!)文件,如果之前没有使用B服务器做过发币操作,也没有收币操作,也可不用备份。然后删除B服务器上BTC的数据目录。
  2. 下载新版本的BTC客户端工具,按照区块链搭建的步骤重新操作一遍,启动即可。
  3. 一天之后,如果新的BTC区块链同步完成(验证方法为“一、”中的第7步),则将原来A服务器上的钱包文件传到B的datadir目录下,具体操作过程:
  1. 停止区块链接口系统(关闭区块链系统Tomcat服务),防止备份过程中出现数据不一致。此时需要给前端业务系统通知,然后通知用户服务正在升级;
  2. 停止B服务器上的BTC区块服务;
  3. 停止A服务器上的BTC区块服务,然后将A服务器上的datadir目录下的wallet.dat文件传到B服务器上,这个文件可能比较大,可以压缩之后通过scp命令传输;
  4. 传输完成之后,启动A服务器上的BTC区块服务和B服务器上的BTC区块服务,然后将Tomcat中的配置的BTC区块服务器IP改为B的IP。稍等10分钟左右启动Tomcat(因为在BTC的启动过程中有个初始化的过程,如果此时调用BTC区块链服务,会出现长时间卡顿现象);
  1. 通知业务系统,验证BTC服务是否正确,此时先不要删除A服务器上的区块数据,使其继续同步,防止出现异常可以及时回滚;
  2. 验证BTC服务正产之后,可以升级A服务器上的BTC服务。删除数据目录,使用区块链搭建中的方法重新执行一遍即可;
  3. 至此,两台区块链服务器升级完毕;
  • 常用查询类网站
  1. 交易查询浏览器和BTC在线钱包:https://blockchain.info/
  2. 图形化界面钱包:https://jaxx.io/
  3. BTC查询浏览器:https://btc.com/
阅读更多 登录后自动展开

更多精彩内容