java genesis_Java GenesisLoader.loadGenesis方法代码示例

import org.ethereum.core.genesis.GenesisLoader; //导入方法依赖的package包/类

/*************************

* Message Processing *

*************************/

protected void processStatus(org.ethereum.net.eth.message.StatusMessage msg, ChannelHandlerContext ctx) throws InterruptedException {

try {

Genesis genesis = GenesisLoader.loadGenesis(config, config.genesisInfo(), config.getBlockchainConfig().getCommonConstants().getInitialNonce(), true);

if (!Arrays.equals(msg.getGenesisHash(), genesis.getHash())

|| msg.getProtocolVersion() != version.getCode()) {

loggerNet.info("Removing EthHandler for {} due to protocol incompatibility", ctx.channel().remoteAddress());

ethState = EthState.STATUS_FAILED;

recordEvent(EventType.INCOMPATIBLE_PROTOCOL);

disconnect(ReasonCode.INCOMPATIBLE_PROTOCOL);

ctx.pipeline().remove(this); // Peer is not compatible for the 'eth' sub-protocol

return;

}

if (msg.getNetworkId() != config.networkId()) {

ethState = EthState.STATUS_FAILED;

recordEvent(EventType.INVALID_NETWORK);

disconnect(ReasonCode.NULL_IDENTITY);

return;

}

// basic checks passed, update statistics

channel.getNodeStatistics().ethHandshake(msg);

ethereumListener.onEthStatusUpdated(channel, msg);

if (peerDiscoveryMode) {

loggerNet.debug("Peer discovery mode: STATUS received, disconnecting...");

disconnect(ReasonCode.REQUESTED);

ctx.close().sync();

ctx.disconnect().sync();

return;

}

} catch (NoSuchElementException e) {

loggerNet.debug("EthHandler already removed");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值