您的位置:首页 > 其它

FISCO-BCOS环境搭建(一)创世节点配置与启动

2018-04-02 13:34 267 查看

第二章 创建创世节点

创世节点是区块链中的第一个节点,搭建区块链,从创建创世节点开始。

2.1 创建节点环境

假定创世节点目录为/mydata/nodedata-1/,创建节点环境如下:
#创建目录结构
mkdir -p /mydata/nodedata-1/
mkdir -p /mydata/nodedata-1/data/ #存放节点的各种文件
mkdir -p /mydata/nodedata-1/log/ #存放日志
mkdir -p /mydata/nodedata-1/keystore/ #存放账户秘钥

#拷贝相关文件
cd /mydata/FISCO-BCOS/
cp genesis.json config.json log.conf start.sh stop.sh /mydata/nodedata-1/

2.2 配置god账号

god账号是区块链的最高权限,在启动区块链前必须配置。

2.2.1 生成god账号

cd /mydata/FISCO-BCOS/web3lib
cnpm install #安装nodejs依赖, 在执行nodejs脚本之前, 该命令在该目录需要执行一次, 之后不需要再执行。
cd /mydata/FISCO-BCOS/tool #代码根目录下的tool文件夹
cnpm install #安装nodejs包,仅需运行一次,之后若需要再次在tool目录下使用nodejs,不需要重复运行此命令
node accountManager.js > godInfo.txt
cat godInfo.txt |grep address
可得到生成god账号的地址如下。godInfo.txt请妥善保存。
address : 0x27214e01c118576dd5f481648f83bb909619a324

2.2.2 配置god账号

将上述步骤生成的god的address配置入genesis.json的god字段:
vim /mydata/nodedata-1/genesis.json
修改后,genesis.json中的god字段如下:
"god":"0x27214e01c118576dd5f481648f83bb909619a324",

2.3 配置节点身份NodeId

NodeId唯一标识了区块链中的某个节点,在节点启动前必须进行配置。

2.3.1 配置cryptomod.json文件

在cryptomod.json文件中配置NodeId生成路径:
vim /mydata/FISCO-BCOS/cryptomod.json
通常情况下,只需将rlpcreatepath配置为/mydata/nodedata-1/data/network.rlp即可。配置后的cryptomod.json如下:
{
"cryptomod":"0",
"rlpcreatepath":"/mydata/nodedata-1/data/network.rlp",
"datakeycreatepath":"",
"keycenterurl":"",
"superkey":""
}
cryptomod.json其它字段说明请参看附录:11.2 cryptomod.json说明

2.3.2 生成节点身份文件

用上述修改好的cryptomod.json文件生成节点身份文件,生成路径为cryptomod.json中配置的路径。
cd /mydata/FISCO-BCOS/
fisco-bcos --gennetworkrlp  cryptomod.json #需要一段时间
ls /mydata/nodedata-1/data/
可看到节点身份文件(network.rlp和network.rlp.pub)生成到了/mydata/nodedata-1/data/下。其中network.rlp是节点身份的私钥二进制文件。network.rlp.pub是节点身份的NodeId文件。
network.rlp  network.rlp.pub

2.3.3 配置创世节点NodeId

(1)查看NodeId
cat /mydata/nodedata-1/data/network.rlp.pub
得到如下类似的NodeId
24b98c6532ff05c2e9e637b3362ee4328c228fb4f6262c1c751f51952012cd68da2cbd8655de5072e49b950a503326942297cfaa9ca919b369be4359b4dccd56
(2)修改genesis.json将NodeId配置入genesis.json的initMinerNodes字段,即指定此NodeId的节点为创世节点。
vim /mydata/nodedata-1/genesis.json
修改后,genesis.json中的initMinerNodes字段如下:
"initMinerNodes":["24b98c6532ff05c2e9e637b3362ee4328c228fb4f6262c1c751f51952012cd68da2cbd8655de5072e49b950a503326942297cfaa9ca919b369be4359b4dccd56"]
(3)修改config.json将NodeId配置入config.json中的NodeextraInfo的Nodeid字段。
vim /mydata/nodedata-1/config.json
修改后,config.json中的NodeextraInfo字段如下:
"NodeextraInfo":[
{
"Nodeid":"24b98c6532ff05c2e9e637b3362ee4328c228fb4f6262c1c751f51952012cd68da2cbd8655de5072e49b950a503326942297cfaa9ca919b369be4359b4dccd56",
"Nodedesc": "node1",
"Agencyinfo": "node1",
"Peerip": "0.0.0.0",
"Identitytype": 1,
"Port":30303,
"Idx":0
}
]

2.4 配置证书

区块链节点间的通信需要证书的认证。在节点运行前,需要为节点配置证书。证书包括:ca.crt:根证书公钥,整条区块链共用。
ca.key:根证书私钥,私钥应保密,仅在生成节点证书公私钥时使用。
server.crt:节点证书的公钥。
server.key:节点证书的私钥,私钥应保密。

2.4.1 生成根证书

将公私钥生成脚本拷贝到data目录,并执行命令生成根证书公私钥ca.key,ca.crt。
cp /mydata/FISCO-BCOS/genkey.sh /mydata/nodedata-1/data/
cd /mydata/nodedata-1/data/
chmod +x genkey.sh
./genkey.sh ca 365 #生成ca根证书有效期为365天
在data目录下生成了证书公私钥ca.key,ca.crt。ca.key应保密,并妥善保存,以便后续生成更多节点的公私钥。

2.4.2 生成节点证书

用生成的根证书公私钥ca.crt和ca.key,生成节点自己的证书。
./genkey.sh server ./ca.key ./ca.crt 365 #注意key和crt前后顺序不能错;此步骤需按照提示输入一些信息;生成server证书有效期为365天
生成的server.key、server.crt即为节点证书文件
ls /mydata/nodedata-1/data/
此时目录下应存在有下述文件:
ca.crt  network.rlp  network.rlp.pub  server.crt  server.key

2.5 配置相关配置文件

节点的启动依赖三个配置文件:创世块文件:genesis.json
节点配置文件:config.json
日志配置文件:log.conf

2.5.1 配置genesis.json(创世块文件)

genesis.json中配置创世块的信息,是节点启动必备的信息。
vim /mydata/nodedata-1/genesis.json
主要配置god和initMinerNodes字段,在之前的步骤中已经配置好,配置好的genesis.json如下:
{
"nonce": "0x0",
"difficulty": "0x0",
"mixhash": "0x0",
"coinbase": "0x0",
"timestamp": "0x0",
"parentHash": "0x0",
"extraData": "0x0",
"gasLimit": "0x13880000000000",
"god":"0x27214e01c118576dd5f481648f83bb909619a324","alloc": {},
"initMinerNodes":["24b98c6532ff05c2e9e637b3362ee4328c228fb4f6262c1c751f51952012cd68da2cbd8655de5072e49b950a503326942297cfaa9ca919b369be4359b4dccd56"]}
genesis.json其它字段说明请参看附录:11.3 genesis.json说明

2.5.2 配置config.json(节点配置文件)

config.json中配置节点的各种信息,包括网络地址,文件目录,节点身份等。
vim /mydata/nodedata-1/config.json
配置节点的信息,主要修改字段:
网络连接相关:listenip、rpcport、p2pport、channelPort
目录相关:wallet、keystoredir、datadir、logconf
节点身份相关:NodeextraInfo中的Nodeid、Nodedesc、Agencyinfo、Peerip、Identitytype、Port、Idx(与网络连接相关对应上)
config.json其它字段说明请参看附录:11.4 config.json说明配置好的config.json如下:
{
"sealEngine": "PBFT",
"systemproxyaddress":"0x0",
"listenip":"0.0.0.0",
"cryptomod":"0",
"ssl":"0",
"rpcport": "8545",
"p2pport": "30303",
"channelPort": "30304",
"rpcsslport":"-1",
"wallet":"/mydata/nodedata-1/keys.info",
"keystoredir":"/mydata/nodedata-1/keystore/",
"datadir":"/mydata/nodedata-1/data/",
"vm":"interpreter",
"networkid":"12345",
"logverbosity":"4",
"coverlog":"OFF",
"eventlog":"ON",
"statlog":"OFF",
"logconf":"/mydata/nodedata-1/log.conf",
"params": {
"accountStartNonce": "0x0",
"maximumExtraDataSize": "0x0",
"tieBreakingGas": false,
"blockReward": "0x0",
"networkID" : "0x0"
},
"NodeextraInfo":[ { "Nodeid":"24b98c6532ff05c2e9e637b3362ee4328c228fb4f6262c1c751f51952012cd68da2cbd8655de5072e49b950a503326942297cfaa9ca919b369be4359b4dccd56", "Nodedesc": "node1", "Agencyinfo": "node1", "Peerip": "0.0.0.0", "Identitytype": 1, "Port":30303, "Idx":0 } ]}

2.5.3 配置log.conf(日志配置文件)

log.conf中配置节点日志生成的格式和路径。
vim /mydata/nodedata-1/log.conf
主要配置日志文件的生成路径,配置好的log.conf 如下:
* GLOBAL:
ENABLED                 =   true
TO_FILE                 =   true
TO_STANDARD_OUTPUT      =   false
FORMAT                  =   "%level|%datetime{%Y-%M-%d %H:%m:%s:%g}|%msg"
FILENAME                =   "/mydata/nodedata-1/log/log_%datetime{%Y%M%d%H}.log"
MILLISECONDS_WIDTH      =   3
PERFORMANCE_TRACKING    =   false
MAX_LOG_FILE_SIZE       =   209715200 ## 200MB - Comment starts with two hashes (##)
LOG_FLUSH_THRESHOLD     =   100  ## Flush after every 100 logs

* TRACE:
ENABLED                 =   true
FILENAME                =   "/mydata/nodedata-1/log/trace_log_%datetime{%Y%M%d%H}.log"

* DEBUG:
ENABLED                 =   true
FILENAME                =   "/mydata/nodedata-1/log/debug_log_%datetime{%Y%M%d%H}.log"

* FATAL:
ENABLED                 =   true
FILENAME                =   "/mydata/nodedata-1/log/fatal_log_%datetime{%Y%M%d%H}.log"

* ERROR:
ENABLED                 =   true
FILENAME                =   "/mydata/nodedata-1/log/error_log_%datetime{%Y%M%d%H}.log"

* WARNING:
ENABLED                 =   true
FILENAME                =   "/mydata/nodedata-1/log/warn_log_%datetime{%Y%M%d%H}.log"

* INFO:
ENABLED                 =   true
FILENAME                =   "/mydata/nodedata-1/log/info_log_%datetime{%Y%M%d%H}.log"

* VERBOSE:
ENABLED                 =   true
FILENAME                =   "/mydata/nodedata-1/log/verbose_log_%datetime{%Y%M%d%H}.log"
log.conf其它字段说明请参看附录:11.5 log.conf说明

2.6 启动创世节点

节点的启动依赖下列文件,在启动前,请确认文件已经正确的配置:证书文件(/mydata/nodedata-1/data):ca.crt、server.crt、server.key
节点身份文件(/mydata/nodedata-1/data):network.rlp、network.rlp.pub
配置文件(/mydata/nodedata-1/):genesis.json、config.json、log.conf
启动节点
cd /mydata/nodedata-1/
chmod +x *.sh
./start.sh
#若需要退出节点
#./stop.sh
或手动启动
cd /mydata/nodedata-1/
fisco-bcos --genesis ./genesis.json --config ./config.json & #启动区块链节点
tail -f log/info* |grep ++++  #查看日志输出
#若需要退出节点
#ps -ef |grep fisco-bcos #查看进程号
#kill -9 13432 #13432是查看到的进程号
几秒后可看到不断刷出打包信息。
INFO|2017-12-12 17:52:16:877|+++++++++++++++++++++++++++ Generating seal ondcae019af78cf04e17ad908ec142ca4e25d8da14791bda50a0eeea782ebf3731#1tx:0,maxtx:1000,tq.num=0time:1513072336877
INFO|2017-12-12 17:52:17:887|+++++++++++++++++++++++++++ Generating seal on3fef9b23b0733ac47fe5385072f80fc036b7517abae0a3e7762739cc66bc7dca#1tx:0,maxtx:1000,tq.num=0time:1513072337887
INFO|2017-12-12 17:52:18:897|+++++++++++++++++++++++++++ Generating seal onb5b38c7a380b13b2e46fecbdca0fac5473f4cbc054190e90b8bd4831faac4521#1tx:0,maxtx:1000,tq.num=0time:1513072338897
INFO|2017-12-12 17:52:19:907|+++++++++++++++++++++++++++ Generating seal on3530ff04adddd30508a4cb7421c8f3ad6421ca6ac3bb5f81fb4880fd72c57a8c#1tx:0,maxtx:1000,tq.num=0time:1513072339907

2.7 验证节点启动

2.7.1 验证进程

ps -ef |grep fisco-bcos
看到进程启动
app 19390     1  1 17:52 ?        00:00:05 fisco-bcos --genesis /mydata/nodedata-1/genesis.json --config /mydata/nodedata-1/config.json

2.7.2 查看日志输出

执行命令,查看打包信息。
tail -f /mydata/nodedata-1/log/info* |grep ++++  #查看日志输出
可看到不断刷出打包信息。
INFO|2017-12-12 17:52:16:877|+++++++++++++++++++++++++++ Generating seal ondcae019af78cf04e17ad908ec142ca4e25d8da14791bda50a0eeea782ebf3731#1tx:0,maxtx:1000,tq.num=0time:1513072336877
INFO|2017-12-12 17:52:17:887|+++++++++++++++++++++++++++ Generating seal on3fef9b23b0733ac47fe5385072f80fc036b7517abae0a3e7762739cc66bc7dca#1tx:0,maxtx:1000,tq.num=0time:1513072337887
INFO|2017-12-12 17:52:18:897|+++++++++++++++++++++++++++ Generating seal onb5b38c7a380b13b2e46fecbdca0fac5473f4cbc054190e90b8bd4831faac4521#1tx:0,maxtx:1000,tq.num=0time:1513072338897
INFO|2017-12-12 17:52:19:907|+++++++++++++++++++++++++++ Generating seal on3530ff04adddd30508a4cb7421c8f3ad6421ca6ac3bb5f81fb4880fd72c57a8c#1tx:0,maxtx:1000,tq.num=0time:1513072339907
若上述都正确输出,则表示创世节点已经正确启动!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐