层次式:指定blockchainID - Agzs/geth-pbft-study GitHub Wiki
链号设置
注:2018.02.03 push 到 levelpbft
大体思路:类似于networkid一样,在命令行运行geth时,指定命令参数选项--blockchainid指定链号
1、cmd/geth/main.go
添加utils.BlockchainIdFlag,增添命令参数选项
2、cmd/geth/misccmd.go
添加eth.DefaultConfig.BlockchainId,便于在geth version显示BlockchainID
3、cmd/geth/usage.go
添加utils.BlockchainIdFlag,便于在geth --help显示BlockchainID的使用
4、cmd/utils/flags.go
对BlockchainIdFlag进行定义,包括Name,Usage和Value属性;同时添加设置blockchainID的操作
5、eth/backend.go
在Ethereum结构体中添加id属性,相应的修改Ethereum初始化中和blockchainID相关的操作
6、eth/config.go
在DefaultConfig结构体中添加BlockchainId属性,默认值为0;在Config结构体中添加BlockchainId属性
7、eth/handler.go
在ProtocolManager结构体中添加BlockchainId属性,相应的修改ProtocolManager初始化中和blockchainID相关的操作
在handle(p *peer)函数中调用p.Handshake()时,添加blockchainID,若是同层节点间连接,必须进行验证blockchainID是否一致;
在EthNodeInfo结构体中添加BlockchainId属性,便于在运行中通过admin.nodeInfo进行查看时可查看BlockchainId
8、eth/peer.go
在Handshake()函数中,添加blockchainID,若是同层节点间连接,必须进行验证blockchainID是否一致;
9、eth/protocol.go
定义ErrBlockchainIdMismatch,用于blockchainID不一致时,输出错误提示