首页 > 区块链 > 区块链 > 如何部署Qtum全节点,实现RPC调用服务
RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
可以通过以下两种方式之一获取Qtum节点:
1. 直接下载二进制文件
如果你并不关心Qtum的源码,部署Qtum节点最方便的方法是在Qtum release page( https://github.com/qtumproject/qtum/releases)下载最新的二进制文件,目前支持的平台包括Linux,Window,OSX。
以Linux为例,可根据需要下载32位或64位二进制文件,下载解压后打开
qtum-0.14.3/bin,即可看到所有可执行二进制文件,包括:
qtumd,
qtum-cli,
qtum-qt。
2. 从源代码编译Qtu m
如果你想从源代码直接编译Qtum,可以从Github上下载最新源码 https://github.com/qtumproject/qtum。
具体编译方法请参考 https://github.com/qtumproject/qtum/blob/master/README.md。
编译成功后,同样得到上文的二进制可执行文件:
qtumd,
qtum-cli,
qtum-qt。
(注意,
qtum-qt是Qtum Qt钱包,如果不采用额外参数或配置文件,则在默认条件下不能与
qtumd同时运行。本文节点部署不需要运行Qt钱包,请忽略)
其中与节点部署及RPC调用相关的是:
qtumd,Qtum核心程序,即真正的Qtum全节点程序qtum-cli,Qtum命令行接口,可以和Qtum核心程序进行交互,实现本地RPC调用
通过
./qtumd
, 即可运行Qtum全节点:
./qtumd -daemon
其中
-daemon
表示进程后台驻留。 更多选项,可执行:
./qtumd -help
结束运行请执行:
./qtum-cli stop
程序默认的数据路径为
~/.qtum/
,首次运行如果该路径不为空,请清空之后再运行节点(清空前注意备份!)。
首次运行需要同步所有区块,节点运行日志路径为
~/.qtum/debug.log。
节点正常运行后,可通过
qtum-cli
进行交互,实现本地RPC调用。 例如:
oldclock@raven:~/qtum-0.14.3/bin$ ./qtum-cli getinfo
{
"version": 140300,
"protocolversion": 70016,
"walletversion": 130000,
"balance": 0.00000000,
"stake": 0.00000000,
"blocks": 12126,
"timeoffset": 0,
"connections": 8,
"proxy": "",
"difficulty": {
"proof-of-work": 1.52587890625e-05,
"proof-of-stake": 886731.5868738915
},
"testnet": false,
"moneysupply": 100028504,
"keypoololdest": 1505186997,
"keypoolsize": 100,
"paytxfee": 0.00000000,
"relayfee": 0.00400000,
"errors": ""
}
获取所有RPC命令列表,请运行:
./qtum-cli help
获取RPC调用的使用说明,请使用
./qtum-cli help <RPCcmd>
,例如:
./qtum-cli help getinfo
通过
./qtum-cli help getinfo
我们可以获取通过jsonrpc实现getinfo调用的使用说明:
Examples:
> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:3889/
实例中给出了json报文的详细格式,但默认条件下无法进行调用。只有在设置rpc用户名和密码后,才可正常使用。设置方法如下:
方法一:新建配置文件
~/.qtum/qtum.conf,内容包含
rpcuser=test #rpc用户名 rpcpassword=test1234 #rpc密码 #以上两项必须设置。默认情况下,只允许本地的RPC连接, #要实习远程调用,可通过设置rpcallowip声明所有允许访问的ip #ipv4和ipv6都可设置,且可是设置多个ip。例如: #rpcallowip=192.168.77.51/255.255.255.0 #rpcallowip=1.2.3.4/24 #rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96
更多配置参数可以参考: https://github.com/qtumproject/qtum/blob/1a926b980f03e97322c7dd787835bec1730f35d2/contrib/debian/examples/qtum.conf
设置完成后,重启节点即完成配置。
方法二:重新运行Qtum节点,并加入特定参数:
./qtumd -rpcuser=test -rpcpassword=test1234 -rpcallowip=192.168.77.51/255.255.255.0
各参数含义与配置文件中相同,不再赘述。
设置完成并重新运行节点后,即可进行远程RPC调用。本文中运行Qtum节点的服务器ip为192.168.77.188,默认端口为3889。例如,在macbook上对ubuntu中运行的Qtum节点进行rpc调用:
zhongwenbins-MacBook-Pro:~ zhongwenbin$ curl --user test:test1234 --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://192.168.77.188:3889/
{"result":{"version":140300,"protocolversion":70016,"walletversion":130000,"balance":0.00000000,"stake":0.00000000,"blocks":12197,"timeoffset":0,"connections":8,"proxy":"","difficulty":{"proof-of-work":1.52587890625e-05,"proof-of-stake":650787.7561123729},"testnet":false,"moneysupply":100028788,"keypoololdest":1505186997,"keypoolsize":100,"paytxfee":0.00000000,"relayfee":0.00400000,"errors":""},"error":null,"id":"curltest"}
自此Qtum节点的部署及rpc调用设置全部完成。
从上文实例可以看出,rpc命令必须包含rpc用户名,密码,并指定端口号3889。如果想部署通用API,避免输入用户密码及端口号,可以考虑用Nginx实现。这样做的好处是可以隐藏用户名和密码,当用户名密码甚至是端口号发生改变时,也不影响api,同时还可以对外部rpc调用进行适当过滤,保证安全性。关于Nginx的安装和基本使用,可自行搜索相关教程。
例如,
设置步骤如下:
1.设置服务端Qtum节点的rpc配置文件(参考上文),将api代理端的ip加入rpcallowip中,并重启节点,例如:
rpcuser=test rpcpassword=test1234 rpcallowip=192.168.77.51/255.255.255.0
2.配置代理端Nginx:
server {
listen 80;
server_name localhost; location / {
root html;
index index.html index.htm;
proxy_pass http://192.168.77.188:3889; #反代到端口3889
proxy_set_header Authorization "Basic dGVzdDp0ZXN0MTIzNA=="; #本例中为test:test1234的base64编码
}
3.设置完成后,直接访问代理端即可进行RPC调用(无需输入用户名密码和端口号),如:
zhongwenbins-MacBook-Pro:~ zhongwenbin$ curl --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://192.168.77.51/
{"result":{"version":140300,"protocolversion":70016,"walletversion":130000,"balance":0.00000000,"stake":0.00000000,"blocks":12250,"timeoffset":0,"connections":8,"proxy":"","difficulty":{"proof-of-work":1.52587890625e-05,"proof-of-stake":651324.7815933984},"testnet":false,"moneysupply":100029000,"keypoololdest":1505186997,"keypoolsize":100,"paytxfee":0.00000000,"relayfee":0.00400000,"errors":""},"error":null,"id":"curltest"}
以上设置实例仅供参考,读者可根据自身需求作更多设置,或是选择其它工具代替。
读者在部署节点或RPC调用时遇到问题,可优先参考以下实用命令或文档:
./qtumd -help./qtum-cli help./qtum-cli help getinfo
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69966803/viewspace-2681010/ ,如需转载,请注明出处,否则将追究法律责任。