1 搭建节点
节点搭建步骤如下:
1.1 解压软件
下载hwchaind-2.0.18-testnet.tar.gz 文件,解压后包含如下文件:
daemon.sh
hwchain-core.cfg
hwchaind
hwchain.service
install.sh
libprotobuf.so.8
lua/
1.2 安装部署
操作系统:Ubuntu16.04_64、Ubuntu18.04_64、Ubuntu20.04_64 请使用root用户执行,并确认root用户对相应的目录有读写权限。
安装节点
./install.sh
1.3 启动运行
systemctl start hwchain
首次启动,选用这种模式,会从恒为链HWChain-Core区块链的其他网络上节点同步初始化历史账本信息。
1.4 验证是否启动成功
执行如下命令:
./hwchaind peers
返回响应信息中包含如下形式的其他节点的IP等信息,说明本节点已经联网接入成功。
{
"id" : 1,
"result" : {
"cluster" : {},
"peers" : [
{
"address" : "124.70.206.180:51266",
"complete_ledgers" : "1 - 6942882",
"latency" : 225,
"ledger" : "5BF4AE0DBFD53D624ABC83CB7C1E88D3F0511AED22B274AB80D2B1B1354984E3",
"load" : 23,
"public_key" : "n9KPJmY62nSFsYCLBpDW6Sa6YNoJ9iujCDy7YoBcm6FptBpx4Rz3",
"uptime" : 742,
"version" : "hwchaind-2.0.18"
}
],
"status" : "success"
}
}
字段名称 | 类型 | 描述 |
---|---|---|
peers | array | 已经建立连接的节点列表 |
address | string | 节点的IP地址 |
complete_ledgers | string | 该节点保存的账本的区间 |
latency | unsigned int | 网络通讯延迟,单位ms |
load | unsigned int | 负载情况 |
public_key | string | 节点的公钥 |
uptime | unsigned int | 已经运行的时间,单位s |
version | string | 节点程序的版本号 |
1.5 验证是否可用
新建的节点接入主网后,这个时候节点还不可用。只有当节点和主网握手完成,并开始同步账本之后,才进入可用状态。同步账本从最新的账本,向最旧的账本推进。当节点已经同步了最新的账本,并和主网其他节点保持同步的状态后,该节点才算进入可用状态。即可以对外提供服务。可以通过如下命令判断节点状态。 执行如下命令:
./hwchaind server_info
响应:
{
"id" : 1,
"result" : {
"info" : {
"build_version" : "2.0.18",
"complete_ledgers" : "6942676-6942890",
"fetch_pack" : 447,
"hostid" : "fate-VirtualBox",
"io_latency_ms" : 1,
"last_close" : {
"converge_time_s" : 9.805999999999999,
"proposers" : 1
},
"load" : {
"job_types" : [
{
"in_progress" : 1,
"job_type" : "clientCommand"
},
{
"in_progress" : 2,
"job_type" : "RPC"
},
{
"in_progress" : 1,
"job_type" : "updatePaths"
},
{
"job_type" : "writeObjects",
"peak_time" : 3,
"per_second" : 5
},
{
"job_type" : "SyncReadNode",
"peak_time" : 62,
"per_second" : 6380
},
{
"job_type" : "AsyncReadNode",
"peak_time" : 1,
"per_second" : 27
},
{
"job_type" : "WriteNode",
"per_second" : 7
}
],
"threads" : 11
},
"load_factor" : 1,
"peers" : 1,
"pubkey_node" : "n9KPCGw5Z6Q3qCK89iNRMMekqwANom8TULxNhfP6gZNdCSgkTLzw",
"pubkey_validator" : "none",
"server_state" : "full",
"state_accounting" : {
"connected" : {
"duration_us" : "497930871",
"transitions" : 1
},
"disconnected" : {
"duration_us" : "13960819",
"transitions" : 1
},
"full" : {
"duration_us" : "90583048",
"transitions" : 1
},
"syncing" : {
"duration_us" : "210043256",
"transitions" : 1
},
"tracking" : {
"duration_us" : "2",
"transitions" : 1
}
},
"uptime" : 810,
"validated_ledger" : {
"base_fee_hwt" : 0.01,
"hash" : "F5A644429E0EB7EAE47E5D758B5D647B62FD1139739339C18578607C376604FA",
"reserve_base_hwt" : 30,
"reserve_inc_hwt" : 5,
"seq" : 6942890
},
"validation_quorum" : 1
},
"status" : "success"
}
}
字段名称 | 类型 | 描述 |
---|---|---|
build_version | string | 本节点程序的版本号 |
hostid | array | 本节点的主机名 |
complete_ledgers | string | 本节点节点已经保存的账本的区间。empty:表示没有账本,即还没开始同步账本。“n-m”:两个数值的区间,表示已经同步了这两个账本高度之间的账本。 |
server_state | string | 本节点的状态。disconneted:表示和主网已经断开连接。connected:表示和主网已经建立连接。syncing:表示账本落后于主网。tracking:表示和主网握手成功。full:表示已经同步最新账本。validating:表示正在验证账本。proposing:表示在提交共识提议。 |
load | unsigned int | 负载情况 |
public_key | string | 节点的公钥 |
uptime | unsigned int | 已经运行的时间,单位s |
validated_ledger | object | 上一个被验证的区块的信息 |
age | unsigned int | 上一个被验证的区块到现在时间间隔 |
hash | string | 上一个被验证的区块的hash |
seq | string | 上一个被验证的区块的高度 |
判断当前节点是否可用的方法一般如下: 首先,complete_ledgers是一个区间,不能是empty;然后,server_state不能是disconnected,connected,syncing状态;最后,age是上一个被验证的账本到现在的时间间隔,不能超过120s,即不能超过2分钟。
1.6 通过节点使用区块链服务
节点搭建成功后,可通过以下方式来使用节点提供的区块链服务
(1)命令行访问
可参考节点基本命令来使用区块链服务。
(2)RPC接口访问
查看“hwchain-core.cfg”中RPC接口的端口号,通过 http://节点IP:RPC端口 的方式,参考JSON-RPC API来使用区块链服务。