进阶:轻节点服务与轻节点客户端部署

当系统中还没有共识节点

启动带轻节点服务的共识节点

./venachainctl.sh setupgen --nodeid 0 --auto true
./venachainctl.sh init --nodeid 0 --ip 127.0.0.1 --rpc_port 6791 --p2p_port 16791 --ws_port 26791 --auto "true"

## 启动节点时,lightmode参数设置为lightserver
./venachainctl.sh start --nodeid 0 --lightmode lightserver

./venachainctl.sh deploysys --nodeid 0 --auto true

启动轻节点

./venachainctl.sh init --nodeid 1 --ip 127.0.0.1 --rpc_port 6792 --p2p_port 16792 --ws_port 26792 --auto "true"

## 启动节点时,lightmode参数设置为lightnode
./venachainctl.sh start --nodeid 1 --lightmode lightnode
## 添加节点时,type设置为3
./venachainctl.sh addnode --nodeid 1 --type 3

当系统中已有共识节点

启动带轻节点服务的观察者节点

./venachainctl.sh init --nodeid 1 --ip 127.0.0.1 --rpc_port 6792 --p2p_port 16792 --ws_port 26792 --auto "true"

## 启动节点时,lightmode参数设置为lightserver
./venachainctl.sh start --nodeid 1 --lightmode lightserver

./venachainctl.sh addnode --nodeid 1

启动轻节点

./venachainctl.sh init --nodeid 2 --ip 127.0.0.1 --rpc_port 6793 --p2p_port 16793 --ws_port 26793 --auto "true"

## 启动节点时,lightmode参数设置为lightnode
# bootnodes结尾不要加 ?discport=0
# enode格式:enode://pubkey@ip:p2p_port
./venachainctl.sh start --nodeid 2 --lightmode lightnode --bootnodes ${观察者节点的enode}
## 添加节点时,type设置为3
./venachainctl.sh addnode --nodeid 2 --type 3

查看轻节点是否部署成功

进入节点控制台

./venachainctl.sh console -n 1

查看 nodeInfo

> admin.nodeInfo

返回结果

{
  enode: "enode://06cb02b9f5f1a03f655172739bd0dba26a208e085733f94cf73543bb370e5a2a80749c8db95eb8b0ea8cfd046bda943f5630396e8f04c98cb044af5a27625e81@[::]:16792?discport=0",
  id: "06cb02b9f5f1a03f655172739bd0dba26a208e085733f94cf73543bb370e5a2a80749c8db95eb8b0ea8cfd046bda943f5630396e8f04c98cb044af5a27625e81",
  ip: "::",
  listenAddr: "[::]:16792",
  name: "Venachain/venachain/v1.1.2-stable-8d7bd37e/linux-amd64/go1.16.7",
  ports: {
    discovery: 0,
    listener: 16792
  },
  protocols: {
    les: {
      cht: {
        bloomRoot: "0x0000000000000000000000000000000000000000000000000000000000000000",
        chtRoot: "0x0000000000000000000000000000000000000000000000000000000000000000",
        sectionHead: "0x0000000000000000000000000000000000000000000000000000000000000000",
        sectionIndex: 0
      },
      config: {
        chainId: 300,
        interpreter: "all",
        istanbul: {...},
        licenseCheck: false
      },
      genesis: "0xe969d8d9205f6b4f1fb7afde3201ddeeebd1b7a9302f1195b368631cca349b1f",
      head: "0x1b0285a1de6905ca0ff9991aac5c4a4e2e8fa69e5f4bf8fd2b108b68da8047e4",
      network: 1
    }
  }
}

可以看到,节点使用的协议是 les 协议。而 enode 是节点连接的启动了轻节点服务的节点。