Search in sources :

Example 1 with BlockService

use of io.nuls.protocol.service.BlockService in project nuls by nuls-io.

the class ConsensusScheduler method initNulsProtocol.

private void initNulsProtocol() {
    try {
        // 针对第一版本升级时的特殊处理
        NulsVersionManager.init();
        BlockService blockService = NulsContext.getServiceBean(BlockService.class);
        // 获取最新的记录版本信息的高度
        Long consensusVersionHeight = getVersionManagerStorageService().getConsensusVersionHeight();
        if (consensusVersionHeight == null) {
            // todo 正式上线这里会改成1200000L
            consensusVersionHeight = ProtocolConstant.START_CHECK_PROTOCOL_HEIGHT;
        }
        NulsVersionManager.loadVersionByHeight(consensusVersionHeight);
        ProtocolContainer container = NulsVersionManager.getProtocolContainer(NulsContext.MAIN_NET_VERSION);
        if (container != null) {
            NulsContext.MAIN_NET_VERSION_HEIGHT = container.getEffectiveHeight();
        }
        // 获取最新的区块高度
        long bestHeight = blockService.getBestBlockHeader().getData().getHeight();
        // 检查记录的版本最新高度和区块的最新高度是否一致,如果不一致,找出中间相差的块,再做统计
        if (consensusVersionHeight < bestHeight) {
            for (long i = consensusVersionHeight; i <= bestHeight; i++) {
                Result<BlockHeader> result = blockService.getBlockHeader(i);
                if (result.isSuccess()) {
                    NulsProtocolProcess.getInstance().processProtocolUpGrade(result.getData());
                }
            }
        }
    } catch (Exception e) {
        Log.error(e);
        System.exit(-1);
    }
}
Also used : ProtocolContainer(io.nuls.protocol.base.version.ProtocolContainer) BlockService(io.nuls.protocol.service.BlockService) BlockHeader(io.nuls.kernel.model.BlockHeader) NulsRuntimeException(io.nuls.kernel.exception.NulsRuntimeException)

Example 2 with BlockService

use of io.nuls.protocol.service.BlockService in project nuls by nuls-io.

the class UtxoAccountsModuleBootstrap method start.

@Override
public void start() {
    Log.info("start utxoAccountsModule");
    // 启动进行本地数据一致性判断与回滚
    try {
        UtxoAccountsService utxoAccountsService = NulsContext.getServiceBean(UtxoAccountsService.class);
        UtxoAccountsStorageService utxoAccountsStorageService = NulsContext.getServiceBean(UtxoAccountsStorageService.class);
        BlockService blockService = NulsContext.getServiceBean(BlockService.class);
        long hadSynBlockHeight = utxoAccountsStorageService.getHadSynBlockHeight();
        // 启动处理数据一致性
        if (!utxoAccountsService.validateIntegrityBootstrap(hadSynBlockHeight)) {
            Log.error("start utxoAccountsModule fail." + hadSynBlockHeight);
            return;
        }
    } catch (Exception e) {
        Log.error(e);
        Log.error("start utxoAccountsModule fail.");
        return;
    }
    ScheduledThreadPoolExecutor executor = TaskManager.createScheduledThreadPool(1, new NulsThreadFactory(UtxoAccountsConstant.MODULE_ID_UTXOACCOUNTS, "utxoAccountsThread"));
    executor.scheduleAtFixedRate(NulsContext.getServiceBean(UtxoAccountsThread.class), 15, 1, TimeUnit.SECONDS);
}
Also used : UtxoAccountsThread(io.nuls.utxo.accounts.task.UtxoAccountsThread) NulsThreadFactory(io.nuls.kernel.thread.manager.NulsThreadFactory) ScheduledThreadPoolExecutor(java.util.concurrent.ScheduledThreadPoolExecutor) UtxoAccountsStorageService(io.nuls.utxo.accounts.storage.service.UtxoAccountsStorageService) BlockService(io.nuls.protocol.service.BlockService) UtxoAccountsService(io.nuls.utxo.accounts.service.UtxoAccountsService)

Example 3 with BlockService

use of io.nuls.protocol.service.BlockService in project nuls by nuls-io.

the class ChainContainer method addBlockInBlockList.

private void addBlockInBlockList(Chain chain) {
    BlockService blockService = NulsContext.getServiceBean(BlockService.class);
    if (chain.getAllBlockList().isEmpty()) {
        chain.addBlock(blockService.getBestBlock().getData());
    }
    while (chain.getAllBlockList().size() < PocConsensusConstant.INIT_BLOCKS_COUNT) {
        Block preBlock = chain.getAllBlockList().get(0);
        if (preBlock.getHeader().getHeight() == 0) {
            break;
        }
        chain.addPreBlock(blockService.getBlock(preBlock.getHeader().getPreHash()).getData());
    }
}
Also used : BlockService(io.nuls.protocol.service.BlockService) SmallBlock(io.nuls.protocol.model.SmallBlock)

Example 4 with BlockService

use of io.nuls.protocol.service.BlockService in project nuls by nuls-io.

the class BaseProtocolsModuleBootstrap method start.

@Override
public void start() {
    this.waitForDependencyRunning(MessageBusConstant.MODULE_ID_MESSAGE_BUS);
    this.waitForDependencyInited(ConsensusConstant.MODULE_ID_CONSENSUS, NetworkConstant.NETWORK_MODULE_ID);
    BlockService blockService = NulsContext.getServiceBean(BlockService.class);
    Block block0 = blockService.getGengsisBlock().getData();
    Block genesisBlock = NulsContext.getInstance().getGenesisBlock();
    if (null == block0) {
        try {
            blockService.saveBlock(genesisBlock);
        } catch (NulsException e) {
            Log.error(e);
            throw new NulsRuntimeException(e);
        }
    }
    Block block = blockService.getBestBlock().getData();
    while (null != block && block.verify().isFailed()) {
        try {
            blockService.rollbackBlock(block);
        } catch (NulsException e) {
            Log.error(e);
        }
        block = blockService.getBlock(block.getHeader().getPreHash()).getData();
    }
    if (null != block) {
        NulsContext.getInstance().setBestBlock(block);
        this.initHandlers();
        ((DownloadServiceImpl) NulsContext.getServiceBean(DownloadService.class)).start();
    } else {
        start();
    }
}
Also used : DownloadServiceImpl(io.nuls.protocol.base.service.DownloadServiceImpl) NulsException(io.nuls.kernel.exception.NulsException) BlockService(io.nuls.protocol.service.BlockService) Block(io.nuls.kernel.model.Block) NulsRuntimeException(io.nuls.kernel.exception.NulsRuntimeException) DownloadService(io.nuls.protocol.service.DownloadService)

Aggregations

BlockService (io.nuls.protocol.service.BlockService)4 NulsRuntimeException (io.nuls.kernel.exception.NulsRuntimeException)2 NulsException (io.nuls.kernel.exception.NulsException)1 Block (io.nuls.kernel.model.Block)1 BlockHeader (io.nuls.kernel.model.BlockHeader)1 NulsThreadFactory (io.nuls.kernel.thread.manager.NulsThreadFactory)1 DownloadServiceImpl (io.nuls.protocol.base.service.DownloadServiceImpl)1 ProtocolContainer (io.nuls.protocol.base.version.ProtocolContainer)1 SmallBlock (io.nuls.protocol.model.SmallBlock)1 DownloadService (io.nuls.protocol.service.DownloadService)1 UtxoAccountsService (io.nuls.utxo.accounts.service.UtxoAccountsService)1 UtxoAccountsStorageService (io.nuls.utxo.accounts.storage.service.UtxoAccountsStorageService)1 UtxoAccountsThread (io.nuls.utxo.accounts.task.UtxoAccountsThread)1 ScheduledThreadPoolExecutor (java.util.concurrent.ScheduledThreadPoolExecutor)1