层次式:指定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,UsageValue属性;同时添加设置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不一致时,输出错误提示