1 搭建节点

节点搭建步骤如下:

1.1 解压软件

1.2 安装部署

1.3 启动运行

1.4 验证是否启动成功

1.5 验证是否可用

1.6 通过节点使用区块链服务

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来使用区块链服务。

results matching ""

    No results matching ""