Search in sources :

Example 11 with SmallBlock

use of io.nuls.protocol.model.SmallBlock in project nuls by nuls-io.

the class BlockProcess method forwardingBlock.

/**
 * forwarding block
 * <p>
 * 转发区块
 */
private void forwardingBlock(BlockContainer blockContainer) {
    if (blockContainer.getStatus() == BlockContainerStatus.DOWNLOADING) {
        return;
    }
    if (blockContainer.getNode() == null) {
        return;
    }
    SmallBlock smallBlock = ConsensusTool.getSmallBlock(blockContainer.getBlock());
    cacheManager.cacheSmallBlock(smallBlock);
    Result result = blockService.forwardBlock(blockContainer.getBlock().getHeader().getHash(), blockContainer.getNode());
    if (!result.isSuccess()) {
        Log.warn("forward the block failed, block height: " + blockContainer.getBlock().getHeader().getHeight() + " , hash : " + blockContainer.getBlock().getHeader().getHash());
    }
}
Also used : SmallBlock(io.nuls.protocol.model.SmallBlock) ContractResult(io.nuls.contract.dto.ContractResult) ValidateResult(io.nuls.kernel.validate.ValidateResult)

Example 12 with SmallBlock

use of io.nuls.protocol.model.SmallBlock in project nuls by nuls-io.

the class TxGroupHandler method onMessage.

@Override
public void onMessage(TxGroupMessage message, Node fromNode) throws NulsException {
    TxGroup txGroup = message.getMsgBody();
    if (null == txGroup) {
        Log.warn("recieved a null txGroup form " + fromNode.getId());
        return;
    }
    SmallBlock smallBlock = temporaryCacheManager.getSmallBlockByRequest(txGroup.getRequestHash());
    if (null == smallBlock) {
        return;
    }
    BlockHeader header = smallBlock.getHeader();
    Map<NulsDigestData, Transaction> txMap = new HashMap<>();
    for (Transaction tx : smallBlock.getSubTxList()) {
        txMap.put(tx.getHash(), tx);
    }
    for (Transaction tx : txGroup.getTxList()) {
        txMap.put(tx.getHash(), tx);
    }
    for (NulsDigestData hash : smallBlock.getTxHashList()) {
        Transaction tx = txMap.get(hash);
        if (null == tx) {
            tx = temporaryCacheManager.getTx(hash);
        }
        if (tx != null) {
            smallBlock.getSubTxList().add(tx);
            txMap.put(hash, tx);
        }
    }
    Block block = AssemblyBlockUtil.assemblyBlock(header, txMap, smallBlock.getTxHashList());
    consensusService.newBlock(block, fromNode);
}
Also used : SmallBlock(io.nuls.protocol.model.SmallBlock) TxGroup(io.nuls.protocol.model.TxGroup) HashMap(java.util.HashMap) SmallBlock(io.nuls.protocol.model.SmallBlock)

Aggregations

SmallBlock (io.nuls.protocol.model.SmallBlock)12 ValidateResult (io.nuls.kernel.validate.ValidateResult)4 IOException (java.io.IOException)3 RedPunishData (io.nuls.consensus.poc.protocol.entity.RedPunishData)2 ContractResult (io.nuls.contract.dto.ContractResult)2 NulsDigestData (io.nuls.kernel.model.NulsDigestData)2 CoinBaseTransaction (io.nuls.protocol.model.tx.CoinBaseTransaction)2 HashMap (java.util.HashMap)2 Test (org.junit.Test)2 BaseTest (io.nuls.consensus.poc.BaseTest)1 MeetingMember (io.nuls.consensus.poc.model.MeetingMember)1 MeetingRound (io.nuls.consensus.poc.model.MeetingRound)1 Agent (io.nuls.consensus.poc.protocol.entity.Agent)1 CreateAgentTransaction (io.nuls.consensus.poc.protocol.tx.CreateAgentTransaction)1 DepositTransaction (io.nuls.consensus.poc.protocol.tx.DepositTransaction)1 RedPunishTransaction (io.nuls.consensus.poc.protocol.tx.RedPunishTransaction)1 YellowPunishTransaction (io.nuls.consensus.poc.protocol.tx.YellowPunishTransaction)1 ContractTransaction (io.nuls.contract.entity.tx.ContractTransaction)1 NulsException (io.nuls.kernel.exception.NulsException)1 Block (io.nuls.kernel.model.Block)1