public static void Q2P_McBlockHash_Handle(Session session, int opcode, object msg) { Q2P_McBlockHash q2q_McBlockHash = msg as Q2P_McBlockHash; Block mcbkl = BlockChainHelper.GetMcBlock(q2q_McBlockHash.height); var cons = Entity.Root.GetComponent <Consensus>(); if (mcbkl == null && cons.transferHeight + 3 >= q2q_McBlockHash.height) { // 取最新高度 var chain1 = BlockChainHelper.GetBlockChain(cons.transferHeight); while (chain1 != null) { if (q2q_McBlockHash.height == chain1.height) { mcbkl = chain1.GetMcBlock(); break; } chain1 = chain1.GetMcBlockNext(); } } R2P_McBlockHash r2p_McBlockHash = new R2P_McBlockHash() { hash = mcbkl != null ? mcbkl.hash : "" }; if (r2p_McBlockHash.hash == "") { r2p_McBlockHash.hash = ""; } session.Reply(q2q_McBlockHash, r2p_McBlockHash); }
public async Task <string> QueryMcBlockHash(long height, string ipEndPoint = null) { Q2P_McBlockHash q2p_mcBlockHash = new Q2P_McBlockHash(); q2p_mcBlockHash.ActorId = nodeManager.GetMyNodeId(); q2p_mcBlockHash.height = height; Session session = null; if (ipEndPoint != null && ipEndPoint != "") { session = await networkInner.Get(NetworkHelper.ToIPEndPoint(ipEndPoint)); } if (session != null && !session.IsConnect()) { session = null; } string hash = ""; if (session == null) { NodeManager.NodeData node = nodeManager.GetRandomNode(); if (node != null) { session = await networkInner.Get(NetworkHelper.ToIPEndPoint(node.ipEndPoint)); } } if (session != null) { R2P_McBlockHash r2p_McBlock = (R2P_McBlockHash)await session.Query(q2p_mcBlockHash); if (r2p_McBlock != null) { hash = r2p_McBlock.hash; } } return(hash); }