Search in sources :

Example 1 with BlockHeader

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

the class VMContext method getBlockHeader.

/**
 * @param hash
 * @return
 * @throws NulsException
 * @throws IOException
 */
public BlockHeaderDto getBlockHeader(String hash) throws NulsException, IOException {
    if (StringUtils.isBlank(hash)) {
        return null;
    }
    NulsDigestData nulsDigestData = NulsDigestData.fromDigestHex(hash);
    Result<BlockHeader> blockHeaderResult = blockService.getBlockHeader(nulsDigestData);
    if (blockHeaderResult == null || blockHeaderResult.getData() == null) {
        return null;
    }
    BlockHeaderDto header = new BlockHeaderDto(blockHeaderResult.getData());
    return header;
}
Also used : NulsDigestData(io.nuls.kernel.model.NulsDigestData) BlockHeader(io.nuls.kernel.model.BlockHeader) BlockHeaderDto(io.nuls.contract.entity.BlockHeaderDto)

Example 2 with BlockHeader

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

the class VMHelper method invokeCustomGasViewMethod.

public ProgramResult invokeCustomGasViewMethod(byte[] contractAddressBytes, String methodName, String methodDesc, String[][] args) {
    // 当前区块高度
    BlockHeader blockHeader = NulsContext.getInstance().getBestBlock().getHeader();
    long blockHeight = blockHeader.getHeight();
    // 当前区块状态根
    byte[] currentStateRoot = ContractUtil.getStateRoot(blockHeader);
    return this.invokeViewMethod(null, true, currentStateRoot, blockHeight, contractAddressBytes, methodName, methodDesc, args);
}
Also used : BlockHeader(io.nuls.kernel.model.BlockHeader)

Example 3 with BlockHeader

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

the class VMHelper method getMethodInfoByContractAddress.

public ProgramMethod getMethodInfoByContractAddress(String methodName, String methodDesc, byte[] contractAddressBytes) {
    if (StringUtils.isBlank(methodName)) {
        return null;
    }
    BlockHeader header = NulsContext.getInstance().getBestBlock().getHeader();
    // 当前区块状态根
    byte[] currentStateRoot = ContractUtil.getStateRoot(header);
    ProgramExecutor track = programExecutor.begin(currentStateRoot);
    List<ProgramMethod> methods = track.method(contractAddressBytes);
    return this.getMethodInfo(methodName, methodDesc, methods);
}
Also used : BlockHeader(io.nuls.kernel.model.BlockHeader)

Example 4 with BlockHeader

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

the class GetBlocksByHashHandler method onMessage.

@Override
public void onMessage(GetBlocksByHashMessage message, Node fromNode) {
    if (message == null || message.getMsgBody() == null || fromNode == null) {
        return;
    }
    GetBlocksByHashParam param = message.getMsgBody();
    if (param.getStartHash() == null || param.getEndHash() == null) {
        return;
    }
    NulsDigestData requestHash = null;
    try {
        requestHash = NulsDigestData.calcDigestData(param.serialize());
    } catch (IOException e) {
        e.printStackTrace();
    }
    // react request
    messageBusService.sendToNode(new ReactMessage(requestHash), fromNode, true);
    BlockHeader startBlockHeader = blockService.getBlockHeader(param.getStartHash()).getData();
    if (startBlockHeader == null) {
        sendNotFound(requestHash, fromNode);
        return;
    }
    Block endBlock = blockService.getBlock(param.getEndHash()).getData();
    if (endBlock == null) {
        sendNotFound(requestHash, fromNode);
        return;
    }
    if (endBlock.getHeader().getHeight() - startBlockHeader.getHeight() >= MAX_SIZE) {
        return;
    }
    Block block = endBlock;
    while (true) {
        sendBlock(block, fromNode);
        if (block.getHeader().getHash().equals(startBlockHeader.getHash())) {
            break;
        }
        Result<Block> result = blockService.getBlock(block.getHeader().getPreHash());
        if (result.isFailed() || (block = result.getData()) == null) {
            sendNotFound(requestHash, fromNode);
            return;
        }
    }
    CompleteMessage completeMessage = new CompleteMessage();
    completeMessage.setMsgBody(new CompleteParam(requestHash, true));
    messageBusService.sendToNode(completeMessage, fromNode, true);
}
Also used : GetBlocksByHashParam(io.nuls.protocol.model.GetBlocksByHashParam) NulsDigestData(io.nuls.kernel.model.NulsDigestData) Block(io.nuls.kernel.model.Block) IOException(java.io.IOException) BlockHeader(io.nuls.kernel.model.BlockHeader) CompleteParam(io.nuls.protocol.model.CompleteParam)

Example 5 with BlockHeader

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

the class BlockServiceImplTest method init.

@Before
public void init() {
    MicroKernelBootstrap mk = MicroKernelBootstrap.getInstance();
    mk.init();
    mk.start();
    LevelDbModuleBootstrap bootstrap = new LevelDbModuleBootstrap();
    bootstrap.init();
    bootstrap.start();
    UtxoLedgerModuleBootstrap ledgerModuleBootstrap = new UtxoLedgerModuleBootstrap();
    ledgerModuleBootstrap.init();
    ledgerModuleBootstrap.start();
    service = NulsContext.getServiceBean(BlockService.class);
    Block block = new Block();
    BlockHeader blockHeader = new BlockHeader();
    blockHeader.setHash(NulsDigestData.calcDigestData("hashhash".getBytes()));
    blockHeader.setHeight(1286L);
    blockHeader.setExtend("extends".getBytes());
    blockHeader.setMerkleHash(NulsDigestData.calcDigestData("merkleHash".getBytes()));
    blockHeader.setPreHash(NulsDigestData.calcDigestData("prehash".getBytes()));
    try {
        blockHeader.setPackingAddress("address".getBytes());
    } catch (Exception e) {
        e.printStackTrace();
        assertTrue(false);
    }
    blockHeader.setBlockSignature(new BlockSignature());
    blockHeader.setTime(12345678901L);
    blockHeader.setTxCount(3);
    List<NulsDigestData> txHashList = new ArrayList<>();
    txHashList.add(NulsDigestData.calcDigestData("first-tx-hash".getBytes()));
    txHashList.add(NulsDigestData.calcDigestData("second-tx-hash".getBytes()));
    txHashList.add(NulsDigestData.calcDigestData("third-tx-hash".getBytes()));
// block.setTxHashList(txHashList);
// this.model = blockHeader;
}
Also used : LevelDbModuleBootstrap(io.nuls.db.module.impl.LevelDbModuleBootstrap) BlockSignature(io.nuls.kernel.script.BlockSignature) UtxoLedgerModuleBootstrap(io.nuls.ledger.module.impl.UtxoLedgerModuleBootstrap) ArrayList(java.util.ArrayList) BlockService(io.nuls.protocol.service.BlockService) Block(io.nuls.kernel.model.Block) NulsDigestData(io.nuls.kernel.model.NulsDigestData) BlockHeader(io.nuls.kernel.model.BlockHeader) MicroKernelBootstrap(io.nuls.kernel.MicroKernelBootstrap) Before(org.junit.Before)

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