Search in sources :

Example 16 with BlockHeader

use of io.nuls.kernel.model.BlockHeader in project nuls by nuls-io.

the class YellowPunishTxProcessor method onCommit.

@Override
public Result onCommit(YellowPunishTransaction tx, Object secondaryData) {
    YellowPunishData punishData = tx.getTxData();
    BlockHeader header = (BlockHeader) secondaryData;
    BlockExtendsData roundData = new BlockExtendsData(header.getExtend());
    List<PunishLogPo> savedList = new ArrayList<>();
    int index = 1;
    for (byte[] address : punishData.getAddressList()) {
        PunishLogPo po = new PunishLogPo();
        po.setAddress(address);
        po.setHeight(tx.getBlockHeight());
        po.setRoundIndex(roundData.getRoundIndex());
        po.setTime(tx.getTime());
        po.setIndex(index++);
        po.setType(PunishType.YELLOW.getCode());
        boolean result = punishLogStorageService.save(po);
        if (!result) {
            for (PunishLogPo punishLogPo : savedList) {
                punishLogStorageService.delete(getPoKey(punishLogPo.getAddress(), PunishType.YELLOW.getCode(), punishLogPo.getHeight(), punishLogPo.getIndex()));
            }
            throw new NulsRuntimeException(TransactionErrorCode.ROLLBACK_TRANSACTION_FAILED);
        } else {
            savedList.add(po);
        }
    }
    return Result.getSuccess();
}
Also used : BlockExtendsData(io.nuls.consensus.poc.model.BlockExtendsData) YellowPunishData(io.nuls.consensus.poc.protocol.entity.YellowPunishData) ArrayList(java.util.ArrayList) NulsRuntimeException(io.nuls.kernel.exception.NulsRuntimeException) BlockHeader(io.nuls.kernel.model.BlockHeader) PunishLogPo(io.nuls.consensus.poc.storage.po.PunishLogPo)

Example 17 with BlockHeader

use of io.nuls.kernel.model.BlockHeader in project nuls by nuls-io.

the class YellowPunishTxProcessor method onRollback.

@Override
public Result onRollback(YellowPunishTransaction tx, Object secondaryData) {
    YellowPunishData punishData = tx.getTxData();
    List<byte[]> deletedList = new ArrayList<>();
    int deleteIndex = 1;
    for (byte[] address : punishData.getAddressList()) {
        boolean result = punishLogStorageService.delete(this.getPoKey(address, PunishType.YELLOW.getCode(), tx.getBlockHeight(), deleteIndex++));
        if (!result) {
            BlockHeader header = (BlockHeader) secondaryData;
            BlockExtendsData roundData = new BlockExtendsData(header.getExtend());
            int index = 1;
            for (byte[] bytes : deletedList) {
                PunishLogPo po = new PunishLogPo();
                po.setAddress(bytes);
                po.setHeight(tx.getBlockHeight());
                po.setRoundIndex(roundData.getRoundIndex());
                po.setTime(tx.getTime());
                po.setIndex(index++);
                po.setType(PunishType.YELLOW.getCode());
                punishLogStorageService.save(po);
            }
            throw new NulsRuntimeException(TransactionErrorCode.ROLLBACK_TRANSACTION_FAILED);
        } else {
            deletedList.add(address);
        }
    }
    return Result.getSuccess();
}
Also used : BlockExtendsData(io.nuls.consensus.poc.model.BlockExtendsData) YellowPunishData(io.nuls.consensus.poc.protocol.entity.YellowPunishData) ArrayList(java.util.ArrayList) NulsRuntimeException(io.nuls.kernel.exception.NulsRuntimeException) BlockHeader(io.nuls.kernel.model.BlockHeader) PunishLogPo(io.nuls.consensus.poc.storage.po.PunishLogPo)

Example 18 with BlockHeader

use of io.nuls.kernel.model.BlockHeader in project nuls by nuls-io.

the class ConsensusDownloadServiceImpl method downloadBlock.

@Override
public Result<Block> downloadBlock(NulsDigestData hash, Node node) {
    Result<Block> result = new Result<>();
    Block block = new Block();
    block.setTxs(new ArrayList<>());
    BlockHeader blockHeader = new BlockHeader();
    blockHeader.setHash(hash);
    block.setHeader(blockHeader);
    result.setData(block);
    return result;
}
Also used : Block(io.nuls.kernel.model.Block) BlockHeader(io.nuls.kernel.model.BlockHeader) Result(io.nuls.kernel.model.Result)

Example 19 with BlockHeader

use of io.nuls.kernel.model.BlockHeader in project nuls by nuls-io.

the class ChainTest method test.

@Test
public void test() {
    Chain chain = new Chain();
    assertNotNull(chain.getId());
    assertNull(chain.getBestBlock());
    Block block = new Block();
    BlockHeader blockHeader = new BlockHeader();
    blockHeader.setHeight(100l);
    block.setHeader(blockHeader);
    chain.getAllBlockList().add(block);
    Block bestBlock = chain.getBestBlock();
    assertNotNull(bestBlock);
    assertEquals(bestBlock.getHeader().getHeight(), 100l);
}
Also used : Block(io.nuls.kernel.model.Block) BlockHeader(io.nuls.kernel.model.BlockHeader) Test(org.junit.Test)

Example 20 with BlockHeader

use of io.nuls.kernel.model.BlockHeader in project nuls by nuls-io.

the class ClientResource method getProtocolInfo.

@GET
@Path("/protocol/info")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "协议版本升级统计信息")
@ApiResponses(value = { @ApiResponse(code = 200, message = "success", response = ProtocolContainerDTO.class) })
public RpcClientResult getProtocolInfo() {
    BlockHeader blockHeader = NulsContext.getInstance().getBestBlock().getHeader();
    List<ProtocolContainerDTO> list = new ArrayList<>();
    ProtocolContainer protocolContainer = NulsVersionManager.getProtocolContainer(NulsContext.CURRENT_PROTOCOL_VERSION);
    ProtocolContainerDTO pcDTO = new ProtocolContainerDTO(protocolContainer);
    if (pcDTO.getStatus() == ProtocolContainer.DELAY_LOCK) {
        pcDTO.setEffectiveHeight(blockHeader.getHeight() + pcDTO.getCountdownDelay() + 1);
    }
    list.add(pcDTO);
    Map<String, ProtocolTempInfoPo> protocolTempMap = versionManagerStorageService.getProtocolTempMap();
    for (ProtocolTempInfoPo protocolTempInfoPo : protocolTempMap.values()) {
        ProtocolContainerDTO protocolContainerDTO = new ProtocolContainerDTO(protocolTempInfoPo);
        if (protocolContainerDTO.getStatus() == ProtocolContainer.DELAY_LOCK) {
            protocolContainerDTO.setEffectiveHeight(blockHeader.getHeight() + protocolContainerDTO.getCountdownDelay() + 1);
        }
        list.add(protocolContainerDTO);
    }
    Map<String, List<ProtocolContainerDTO>> map = new HashMap<>();
    map.put("list", list);
    return Result.getSuccess().setData(map).toRpcClientResult();
}
Also used : ProtocolContainer(io.nuls.protocol.base.version.ProtocolContainer) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) ProtocolTempInfoPo(io.nuls.protocol.storage.po.ProtocolTempInfoPo) ArrayList(java.util.ArrayList) List(java.util.List) BlockHeader(io.nuls.kernel.model.BlockHeader) ProtocolContainerDTO(io.nuls.client.rpc.resources.dto.ProtocolContainerDTO) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Aggregations

BlockHeader (io.nuls.kernel.model.BlockHeader)40 Block (io.nuls.kernel.model.Block)8 BlockExtendsData (io.nuls.consensus.poc.model.BlockExtendsData)7 NulsRuntimeException (io.nuls.kernel.exception.NulsRuntimeException)7 NulsDigestData (io.nuls.kernel.model.NulsDigestData)7 ArrayList (java.util.ArrayList)7 PunishLogPo (io.nuls.consensus.poc.storage.po.PunishLogPo)5 Result (io.nuls.kernel.model.Result)5 ValidateResult (io.nuls.kernel.validate.ValidateResult)4 IOException (java.io.IOException)4 ChainContainer (io.nuls.consensus.poc.container.ChainContainer)3 Agent (io.nuls.consensus.poc.protocol.entity.Agent)3 AgentPo (io.nuls.consensus.poc.storage.po.AgentPo)3 ProtocolContainer (io.nuls.protocol.base.version.ProtocolContainer)3 Chain (io.nuls.consensus.poc.model.Chain)2 RedPunishData (io.nuls.consensus.poc.protocol.entity.RedPunishData)2 YellowPunishData (io.nuls.consensus.poc.protocol.entity.YellowPunishData)2 DepositPo (io.nuls.consensus.poc.storage.po.DepositPo)2 ContractResult (io.nuls.contract.dto.ContractResult)2 BlockHeaderDto (io.nuls.contract.entity.BlockHeaderDto)2