搭建创世节点¶
注意事项
创建创世节点配置genesis.json前,必须确保已在创世节点data目录生成了节点证书,参考 证书生成
创世节点配置生成¶
FISCO BCOS提供generate_genesis.sh 脚本创建创世节点配置genesis.json:
# 进入脚本所在目录(设FISCO-BCOS位于~/mydata目录)
$ cd ~/mydata/FISCO-BCOS/tools/scripts
# 注意:请妥善保存god账号信息
# 生成god账号:
$ fisco-bcos --newaccount ./guomi_godInfo.txt
$ cat guomi_godInfo.txt
address:0xf02a10f685a90c3bfc2eccd906b75fe3feeec9ad # god账号
publicKey:9c39ff254a673ec069c5aec56d206531ec45a2165f97df0b7259ad393dbde90b3f6896925060006ff6a43191dfabf93941de4e42bd54dea88c2f373e1f8db252 #god账号公钥
privateKey:f5474c4c9b1a3d922bc583b261c4ec45cd2bacb19030c82f9ad20d64acd431a8 #god账号私钥
# 配置rpc端口:(设创世节点P2P端口是8545)
#--------------------------------------------------------
# -o: 创世节点监听ip: 创世节点rpc端口,这里是127.0.0.1:8545
#--------------------------------------------------------
$ bash ./config_rpc_address.sh -o 127.0.0.1:8545
Attention! This operation will change the target <rpcport url> of all tools under tools/. Continue?
[Y/n]: ]y
$ cat ../web3lib/config.js
var proxy="http://127.0.0.1:8545"; #proxy地址更新为127.0.0.1:8545
var encryptType = 1;// 0:ECDSA 1:sm2Withsm3 #国密算法设置为1
//console.log('RPC='+proxy);
var output="./output/";
//console.log('Ouputpath='+output);
module.exports={
HttpProvider:proxy,
Ouputpath:output,
EncryptType:encryptType,
privKey:"bcec428d5205abe0f0cc8a734083908d9eb8563e31f943d760786edf42ad67dd",
account:"0x64fa644d2a694681bd6addd6c5e36cccd8dcdde3"
}
#--------------------------------------------------------
# -d: 创世节点路径,这里设置为~/mydata/node0
# -o: 生成的创世节点配置genesis.json所在目录,这里设置为~/mydata/node0
# -s: 可选,god账户地址,默认为0x3b5b68db7502424007c6e6567fa690c5afd71721
#--------------------------------------------------------
# 初始化创世节点配置genesis.json
$ bash ./generate_genesis.sh -d ~/mydata/node0 -o ~/mydata/node0 -s 0xf02a10f685a90c3bfc2eccd906b75fe3feeec9ad -g
God account address: 0xf02a10f685a90c3bfc2eccd906b75fe3feeec9ad
~/mydata/node0/genesis.json is generated
# 此时在~/mydata/node0/目录下生成genesis.json,内容如下:
$ cat ~/mydata/node0/genesis.json
{
"nonce": "0x0",
"difficulty": "0x0",
"mixhash": "0x0",
"coinbase": "0x0",
"timestamp": "0x0",
"parentHash": "0x0",
"extraData": "0x0",
"gasLimit": "0x13880000000000",
"god":"0xf02a10f685a90c3bfc2eccd906b75fe3feeec9ad",
"alloc": {},
"initMinerNodes":["08eff55799d66d7426e64e44384c8e3eb5d849b4b5dbf21a32e5b954d787cc6c2500b8d25e14bf90e327940b0a2d3eeecb26ab2ea43b076f67af75d8cb3fbcf0"]
}
# 若使用默认god账号0x3b5b68db7502424007c6e6567fa690c5afd71721生成创世节点配置,可使用如下命令:
# ./generate_genesis.sh -d ~/mydata/node0 -o ~/mydata/node0 -g # 生成~/mydata/genesis.json
# god账号信息存储在~/mydata/FISCO-BCOS/tools/scripts/god_info/guomiDefaultGod.txt中
# generate_genesis.sh 脚本功能
$ bash ./generate_genesis.sh -h
Usage:
-o <output dir> Where genesis.json generate #创世块配置文件genesis.json所在目录
-i/-d <genesis node id/dir> Genesis node id or dir #创世节点node id
Optional:
-d <genesis node dir> Genesis node dir of the blockchain #创世节点所在目录
#god账号地址,非国密版默认是0xf78451eb46e20bc5336e279c52bda3a3e92c09b6
-s <god address> Address of god account(default: 0xf78451eb46e20bc5336e279c52bda3a3e92c09b6)
#为国密版FISCO BCOS产生genesis.json
-g Generate genesis node for guomi-FISCO-BCOS
-h This help # #显示帮助信息
Example: #生成非国密版FISCO BCOS genesis.json示例
bash ./generate_genesis.sh -d /mydata/node0 -o /mydata/node1
bash ./generate_genesis.sh -i xxxxxxxxxxxxx -o /mydata/node1
bash ./generate_genesis.sh -d /mydata/node0 -o /mydata/node1 -s 0xf78451eb46e20bc5336e279c52bda3a3e92c09b6
bash ./generate_genesis.sh -i xxxxxxxxxxxxx -o /mydata/node1 -s 0xf78451eb46e20bc5336e279c52bda3a3e92c09b6
GUOMI Example: #生成国密版FISCO BCOS genesis.json示例
bash ./generate_genesis.sh -d ~/mydata/node0 -o ~/mydata/node0 -g
bash ./generate_genesis.sh -i xxxxxxxxxxxxx -o ~/mydata/node0 -g
bash ./generate_genesis.sh -d ~/mydata/node0 -o ~/mydata/node0 -s 0x3b5b68db7502424007c6e6567fa690c5afd71721 -g
bash ./generate_genesis.sh -i xxxxxxxxxxxxx -o ~/mydata/node0 -s 0x3b5b68db7502424007c6e6567fa690c5afd71721 -g
创世节点环境初始化¶
FISCO-BCOS提供generate_genesis_node.sh脚本初始化节点环境并部署系统合约,下面使用该脚本初始化创世节点:
# 进入脚本所在目录(设FISCO-BCOS位于~/mydata目录)
$ cd ~/mydata/FISCO-BCOS/tools/scripts
#调用generate_genesis_node.sh生成创世节点环境并部署系统合约
#--------------------------------------------------------
# -o: 创世节点所在目录,这里设置为~/mydata
# -n: 创世节点名称,这里设置为node0
# -l: 创世节点监听ip,这里设置为127.0.0.1(多机多节点环境设置为外网IP或0.0.0.0)
# -r: 创世节点rpc端口,这里设置为8545(必须保证端口不冲突)
# -p: 创世节点p2p端口,这里设置为30303(必须保证端口不冲突)
# -c: 创世节点channel port端口,这里设置为8891(必须保证端口不冲突)
#--------------------------------------------------------
$ bash ./generate_genesis_node.sh -o ~/mydata -n node0 -l 127.0.0.1 -r 8545 -p 30303 -c 8891 -g
---------- Generate node basic files ---------- #初始化创世节点配置信息
RUN: sh generate_node_basic.sh -o ~/mydata -n node0 -l 127.0.0.1 -r 8545 -p 30303 -c 8891 -e 127.0.0.1:30303 -g
#... 此处省略若干行 ...
SUCCESS execution of command: sh generate_node_basic.sh -o ~/mydata -n node0 -l 127.0.0.1 -r 8545 -p 30303 -c 8891 -e 127.0.0.1:30303 -g
---------- Deploy system contract ---------- # 部署系统合约
RUN: sh deploy_systemcontract.sh -d ~/mydata/node0 -g
Pre-start genesis node
Deploy System Contract
Start depoly system contract
RUN: babel-node deploy_systemcontract.js ~/FISCO-BCOS/tools/web3lib/tmp_config_deploy_system_contract.js
SystemProxycomplie success!
#... 此处省略若干行 ...
### 显示系统合约信息
-----------------SystemProxy route ----------------------
0 )TransactionFilterChain=>0x08f8eeb7959660ed84b18b2daf271dc19e62aaf9,false,22
1 )ConfigAction=>0xbc2b0ca104ac0a824b05c1e055f24b1857e69b35,false,23
2 )NodeAction=>0x22af893607e84456eb5aea0b277e4dffe260fdcd,false,24
3 )CAAction=>0xa92014f1593bbaa1294be562f0dbfbc7aca0d579,false,25
4 )ContractAbiMgr=>0xe441c93f05d2d200c9e51fdac87b9851483aa341,false,26
5 )ConsensusControlMgr=>0xb53b1513c2edf88c0a27f3670385481821cc0818,false,27
SUCCESS execution of command: babel-node deploy_systemcontract.js /data/chenyujie/guomi/FISCO-BCOS/tools/web3lib/tmp_config_deploy_system_contract.js
/data/chenyujie/guomi/FISCO-BCOS/tools/scripts
Stop genesis node
Reconfig genesis node
SystemProxy address: 0xee80d7c98cb9a840b9c4df742f61336770951875
Deploy System Contract Success!
SUCCESS execution of command: sh deploy_systemcontract.sh -d ~/mydata/node0 -g
#... 此处省略若干行 ...
# 显示节点信息
-----------------------------------------------------------------
Name:
Node dir: ~/mydata/node0 #创世节点名
Agency:
CA hash: D14983471F0AC975
Node ID: 3d4fe4c876cac411d4c7180b5794198fb3b4f3e0814156410ae4184e0a51097a01bf63e431293f30af0c01a57f24477ad1704d8f676bc7e345526ba1735db6a7 #node id
RPC address: 127.0.0.1:8545
P2P address: 127.0.0.1:30303
Channel address: 127.0.0.1:8891
SystemProxy address: 0xee80d7c98cb9a840b9c4df742f61336770951875 #系统代理合约地址
God address: 0xf02a10f685a90c3bfc2eccd906b75fe3feeec9ad # god账号地地址
State: Running (pid: 11524) #节点运行状态
-----------------------------------------------------------------
# generate_node.sh脚本功能
$ bash ./generate_genesis_node.sh -h
Usage:
-o <output dir> Where node files generate # 节点所处目录
-n <node name> Name of node # 节点名
-l <listen ip> Node\'s listen IP # 监听IP
-r <RPC port> Node\'s RPC port # RPC端口
-p <P2P port> Node\'s P2P port # P2P端口
-c <channel port> Node\'s channel port # channel port
-a <agency name> The agency name that the node belongs to #国密版FISCO-BCOS不需关注
-d <agency dir> The agency cert dir that the node belongs to #国密版FISCO-BCOS不需关注
Optional:
-m Input agency information manually #手动输入证书信息,国密版FISCO-BCOS不需关注
-g Generate guomi genesis node # 国密版FISCO-BCOS加该选项
-h This help
Example: #非国密版FISCO-BCOS使用示例
./generate_genesis_node.sh -o /mydata -n node0 -l 127.0.0.1 -r 8545 -p 30303 -c 8891 -d /mydata/test_agency -a test_agency
guomi Example: #国密版FISCO-BCOS使用示例
./generate_genesis_node.sh -o ~/mydata -n node0 -l 127.0.0.1 -r 8545 -p 30303 -c 8891 -g
说明
- 若本步执行异常,可能是国密版nodejs环境初始化出错,请通过
init_guomi_nodejs.sh
脚本重新初始化nodejs环境,设FISCO-BCOS源码位于~/mydata目录,执行命令如下: cd ~/mydata/FISCO-BCOS/tools/scripts && bash init_guomi_nodejs.sh
check创世节点环境¶
创世节点部署成功后,需要check创世节点进程和是否正常出块:
# check创世节点是否正常出块
$ tail -f ~/mydata/node0/log/log_2018080809.log | grep +++
INFO|2018-08-08 09:21:18:109|+++++++++++++++++++++++++++ Generating seal onff05d8b4386fc1a058b9c9da7816fa1e340d0bffcd008424104b2ed48740ace4#1tx:0,maxtx:1000,tq.num=0time:1533691278109
INFO|2018-08-08 09:21:19:138|+++++++++++++++++++++++++++ Generating seal on7e78c3a28b652a243ec2d2ffe2c3c927469bddef53cfaf9cab9128b7930f3c50#1tx:0,maxtx:1000,tq.num=0time:1533691279138
通过以上输出可看出,创世节点进程已启动,且出块正常。