普通节点环境搭建

生成节点证书

证书生成可参考创世节点证书生成 ,若普通节点与创世节点属于同一机构,必须使用同一机构证书颁发节点证书。

  1. # 进入脚本所在目录(设源码位于~/mydata目录)
  2. $ cd ~/mydata/FISCO-BCOS/tools/scripts
  3.  
  4. # 在~/mydata/node1/data目录下生成普通节点证书
  5. #--------------------------------------------------------
  6. # -a:节点所在机构名称,这里设置为test_agency
  7. # -d:机构证书所在目录,这里设置为~/mydata/test_agency/
  8. # -n:普通节点名称,这里设置为node1
  9. # -o:普通节点机构证书所在目录,这里设置为~/mydata/node1/data
  10. # -s:sdk证书名称,这里设置为sdk1
  11. # 注:(若要手动输入节点信息,请在下面命令最后加上-m选项)
  12. #--------------------------------------------------------
  13. $ bash ./generate_node_cert.sh -a test_agency -d ~/mydata/test_agency/ -n node1 -o ~/mydata/node1/data -s sdk1 -g
  14.  
  15. # ~/mydata/node1/data目录下生成的证书如下:
  16. $ ls ~/mydata/node1/data/ -1
  17. ca.crt
  18. ca.key
  19. client.keystore
  20. gmagency.crt
  21. gmca.crt
  22. gmennode.crt
  23. gmennode.key
  24. gmnode.ca
  25. gmnode.crt
  26. gmnode.json
  27. gmnode.key
  28. gmnode.nodeid
  29. gmnode.private
  30. gmnode.serial
  31. sdk1
  32. server.crt
  33. server.key

初始化普通节点环境

类似于 创世节点环境初始化, 使用generate_node.sh脚本初始化普通节点环境。

  1. # 进入脚本所在目录(设源码位于~/mydata目录)
  2. $ cd ~/mydata/FISCO-BCOS/tools/scripts
  3.  
  4. # 查看创世节点信息:
  5. #--------------------------------------------------------
  6. # -d: 指定创世节点目录,这里是~/mydata/node0
  7. # -g: 指定节点类型是国密版FISCO-BCOS,这里必须设置
  8. #--------------------------------------------------------
  9. $ bash ./node_info.sh -d ~/mydata/node0 -g
  10. -----------------------------------------------------------------
  11. Name:
  12. Node dir: /mydata/node0
  13. Agency:
  14. CA hash: D14983471F0AC975
  15. Node ID: 3d4fe4c876cac411d4c7180b5794198fb3b4f3e0814156410ae4184e0a51097a01bf63e431293f30af0c01a57f24477ad1704d8f676bc7e345526ba1735db6a7
  16. RPC address: 127.0.0.1:8545
  17. P2P address: 127.0.0.1:30303
  18. Channel address: 127.0.0.1:8891
  19. SystemProxy address: 0xee80d7c98cb9a840b9c4df742f61336770951875
  20. God address: 0xf02a10f685a90c3bfc2eccd906b75fe3feeec9ad
  21. State: Running (pid: 11524)
  22. -----------------------------------------------------------------
  23.  
  24. #--------------------------------------------------------
  25. # -o : 普通节点所在目录,这里是~/mydata
  26. # -n : 普通节点名称,这里是node1
  27. # -l : 普通节点监听IP,单机多节点可用127.0.0.1
  28. # -r : 普通节点RPC端口,这里设置为8546(注:不同节点RPC端口不能冲突)
  29. # -p : 普通节点p2p连接端口,这里设置为30304(注:不同节点p2p端口不同,且不能和所有其他端口冲突)
  30. # -c : channel port端口,这里设置为8892(注:不同节点channel port端口不同,且不能和所有其他端口冲突)
  31. # -e : bootstrapnodes.json配置,配置相邻节点的IP和p2p端口,这里设置为{创世节点ip:创世节点p2p端口}和{本节点ip:本节点p2p端口}
  32. # -x : 系统代理合约地址,这里为0xee80d7c98cb9a840b9c4df742f61336770951875(通过 bash ./node_info.sh -d ~/mydata/node0 -g获取,对应【SystemProxy address】)
  33. # -i : 创世节点node id (通过bash ./node_info.sh -d ~/mydata/node0 -g获取,对应【Node ID】)
  34. # -s : god账号地址,这里为0xf02a10f685a90c3bfc2eccd906b75fe3feeec9ad(通过bash ./node_info.sh -d ~/mydata/node0 -g获取,对应【God address】)
  35. # -g: 表示生成国密节点,必须加上该选项
  36. #--------------------------------------------------------
  37. $ bash ./generate_node.sh -o ~/mydata -n node1 -l 127.0.0.1 -r 8546 -p 30304 -c 8892 -e 127.0.0.1:30303,127.0.0.1:30304 -x 0xee80d7c98cb9a840b9c4df742f61336770951875 -i 3d4fe4c876cac411d4c7180b5794198fb3b4f3e0814156410ae4184e0a51097a01bf63e431293f30af0c01a57f24477ad1704d8f676bc7e345526ba1735db6a7 -s 0xf02a10f685a90c3bfc2eccd906b75fe3feeec9ad -g
  38. # 创建节点环境
  39. ---------- Generate node basic files ----------
  40. RUN: bash generate_node_basic.sh -o ~/mydata -n node1 -l 127.0.0.1 -r 8546 -p 30304 -c 8892 -e 127.0.0.1:30303,127.0.0.1:30304 -x 0xee80d7c98cb9a840b9c4df742f61336770951875 -g
  41. #...此处省略若干行....
  42. SUCCESS execution of command: bash generate_node_basic.sh -o ~/mydata -n node1 -l 127.0.0.1 -r 8546 -p 30304 -c 8892 -e 127.0.0.1:30303,127.0.0.1:30304 -x 0xee80d7c98cb9a840b9c4df742f61336770951875 -g
  43. # 创建普通节点genesis.json
  44. ---------- Generate node genesis file ----------
  45. # ... 此处省略若干行...
  46. # 输出普通节点信息
  47. -----------------------------------------------------------------
  48. Name:
  49. Node dir: ~/mydata/node1
  50. Agency:
  51. CA hash: F4AC757508FF6AB2
  52. Node ID: 9940c84c1964095c7a3e0daa37c5cbe718dfb2a20def6df19ffd84438e307fa63427920fbf76550e13b318ed0464b6832d44f87b6a515e9f3616f58d51c81739
  53. RPC address: 127.0.0.1:8546
  54. P2P address: 127.0.0.1:30304
  55. Channel address: 127.0.0.1:8892
  56. SystemProxy address: 0xee80d7c98cb9a840b9c4df742f61336770951875
  57. God address: 0xf02a10f685a90c3bfc2eccd906b75fe3feeec9ad
  58. State: Stop
  59. -----------------------------------------------------------------
  60.  
  61. ## generate_node.sh用法
  62. $ bash ./generate_node.sh -h
  63.  
  64. Usage:
  65. -o <output dir> Where node files generate #普通节点所在目录
  66. -n <node name> Name of node #普通节点名称
  67. -l <listen ip> Node\'s listen IP #普通节点监听IP(推荐填外网IP)
  68. -r <RPC port> Node\'s RPC port #普通节点RPC端口
  69. -p <P2P port> Node\'s P2P port #普通节点P2P端口
  70. -c <channel port> Node\'s channel port #普通节点channel port
  71. -e <bootstrapnodes> Node\'s bootstrap nodes #普通节点bootstrapnode.json配置,主要包括要连接节点的IP和端口
  72. -a <agency name> The agency name that the node belongs to #普通节点所属机构(国密版搭建过程忽略该参数)
  73. -d <agency dir> The agency cert dir that the node belongs to #普通节点机构证书目录(国密版搭建过程忽略该参数)
  74. -i <genesis node id> Genesis node id #普通节点所属链的创世节点node id
  75. -s <god address> God address # 普通节点所属链的god账号
  76. -x <system proxy address> System proxy address of the blockchain # 普通节点所属链的系统合约地址
  77. Optional:
  78. -m Input agency information manually #手动输入机构证书信息(国密版搭建过程忽略该参数)
  79. -g Create guomi node #生成国密版普通节点
  80. -h This help
  81. Example: #非国密版generate_node.sh使用示例
  82. bash ./generate_node.sh -o /mydata -n node1 -l 127.0.0.1 -r 8546 -p 30304 -c 8892 -e 127.0.0.1:30303,127.0.0.1:30304 -d /mydata/test_agency -a test_agency -x 0x919868496524eedc26dbb81915fa1547a20f8998 -i xxxxxx -s xxxxxx
  83. GuomiExample: #国密版generate_node.sh使用示例
  84. bash ./generate_node.sh -o ~/mydata -n node1 -l 127.0.0.1 -r 8546 -p 30304 -c 8892 -e 127.0.0.1:30303,127.0.0.1:30304 -x xxxxx -i xxxxxx -s xxxxxx -g

启动节点进程

FISCO BCOS在节点目录下提供 start.shstop.sh来启停节点:

  1. # 进入节点目录
  2. $ cd ~/mydata/node1
  3.  
  4. # 调用start.sh脚本启动进程
  5. $ ./start.sh

check节点环境

启动普通节点后,check普通节点进程和error日志:

  1. # 查看普通节点进程状态:创世节点和普通节点进程均启动
  2. $ ps aux | grep fisco | grep -v grep
  3. root 20995 0.2 0.1 2171448 13316 pts/3 Sl 09:15 0:05 ./fisco-bcos --genesis /mydata/node0/genesis.json --config /mydata/node0/config.json
  4. root 21727 0.7 0.1 2023984 14092 pts/4 Sl 09:52 0:01 ./fisco-bcos --genesis /mydata/node1/genesis.json --config /mydata/node1/config.json
  5.  
  6. # 通过最新日志check节点连接: 刷出"Recv topic"日志,表明节点连接正常
  7. $ tail -f ~/mydata/node1/log/log_2018081219.log | grep "Recv topic"
  8. DEBUG|2018-08-12 19:34:13:659| Recv topic type:0 topics:0
  9. DEBUG|2018-08-12 19:34:14:659| Recv topic type:0 topics:0
  10. DEBUG|2018-08-12 19:34:15:659| Recv topic type:0 topics:0
  11. DEBUG|2018-08-12 19:34:16:659| Recv topic type:0 topics:0