Search in sources :

Example 1 with RadixEngineCheckpointModule

use of com.radixdlt.statecomputer.checkpoint.RadixEngineCheckpointModule in project radixdlt by radixdlt.

the class RadixNodeModule method configure.

@Override
protected void configure() {
    if (this.networkId <= 0) {
        throw new IllegalStateException("Illegal networkId " + networkId);
    }
    var addressing = Addressing.ofNetworkId(networkId);
    bind(Addressing.class).toInstance(addressing);
    bindConstant().annotatedWith(NetworkId.class).to(networkId);
    bind(Txn.class).annotatedWith(Genesis.class).toInstance(loadGenesis(networkId));
    bind(RuntimeProperties.class).toInstance(properties);
    // Consensus configuration
    // These cannot be changed without introducing possibilities of
    // going out of sync with consensus.
    bindConstant().annotatedWith(BFTSyncPatienceMillis.class).to(properties.get("bft.sync.patience", 200));
    // Default values mean that pacemakers will sync if they are within 5 views of each other.
    // 5 consecutive failing views will take 1*(2^6)-1 seconds = 63 seconds.
    bindConstant().annotatedWith(PacemakerTimeout.class).to(3000L);
    bindConstant().annotatedWith(PacemakerRate.class).to(1.1);
    bindConstant().annotatedWith(PacemakerMaxExponent.class).to(0);
    // Mempool configuration
    var mempoolMaxSize = properties.get("mempool.maxSize", 10000);
    install(MempoolConfig.asModule(mempoolMaxSize, 5, 60000, 60000, 100));
    // Sync configuration
    final long syncPatience = properties.get("sync.patience", 5000L);
    bind(SyncConfig.class).toInstance(SyncConfig.of(syncPatience, 10, 3000L));
    // System (e.g. time, random)
    install(new SystemModule());
    install(new RxEnvironmentModule());
    install(new EventLoggerModule());
    install(new DispatcherModule());
    // Consensus
    install(new PersistedBFTKeyModule());
    install(new CryptoModule());
    install(new ConsensusModule());
    // Ledger
    install(new LedgerModule());
    install(new MempoolReceiverModule());
    // Mempool Relay
    install(new MempoolRelayerModule());
    // Sync
    install(new SyncServiceModule());
    // Epochs - Consensus
    install(new EpochsConsensusModule());
    // Epochs - Sync
    install(new EpochsSyncModule());
    // State Computer
    install(new ForksModule());
    if (properties.get("testing_forks.enable", false)) {
        String testingForksModuleName = properties.get("testing_forks.fork_config_name", "TestingForksModuleV1");
        if (testingForksModuleName.isBlank()) {
            testingForksModuleName = "TestingForksModuleV1";
        }
        log.info("Using testing forks module '{}'", testingForksModuleName);
        install(new TestingForksLoader().createTestingForksModuleConfigFromClassName(testingForksModuleName));
    } else {
        final var forksModule = FORKS_MODULE_BY_NETWORK_ID.getOrDefault(networkId, new GenericTestnetForksModule());
        log.info("Using a predefined forks module '{}'", forksModule.getClass().getSimpleName());
        install(forksModule);
    }
    if (properties.get("overwrite_forks.enable", false)) {
        log.info("Enabling fork overwrites from properties");
        install(new ForkOverwritesFromPropertiesModule());
    }
    install(new RadixEngineStateComputerModule());
    install(new RadixEngineModule());
    install(new RadixEngineStoreModule());
    // Checkpoints
    install(new RadixEngineCheckpointModule());
    // Storage
    install(new DatabasePropertiesModule());
    install(new PersistenceModule());
    install(new ConsensusRecoveryModule());
    install(new LedgerRecoveryModule());
    // System Info
    install(new SystemInfoModule());
    // Network
    install(new MessagingModule());
    install(new MessageCentralModule(properties));
    install(new HostIpModule(properties));
    install(new P2PModule(properties));
    install(new PeerDiscoveryModule());
    install(new PeerLivenessMonitorModule());
    // API
    var bindAddress = properties.get("api.bind.address", DEFAULT_BIND_ADDRESS);
    var port = properties.get("api.port", DEFAULT_CORE_PORT);
    var enableTransactions = properties.get("api.transactions.enable", false);
    var enableSign = properties.get("api.sign.enable", false);
    install(new ApiModule(bindAddress, port, enableTransactions, enableSign));
    // Substate Hash Accumulator
    boolean isUpdateEpochHashFileEnabled = properties.get(UPDATE_EPOCH_HASH_FILE_ENABLE_PROPERTY_NAME, false);
    boolean isVerifyEpochHashEnabled = properties.get(VERIFY_EPOCH_HASH_ENABLE_PROPERTY_NAME, false);
    if (isUpdateEpochHashFileEnabled || isVerifyEpochHashEnabled) {
        SubstateAccumulatorHashModule substateAccumulatorHashModule = new SubstateAccumulatorHashModule(isUpdateEpochHashFileEnabled, isVerifyEpochHashEnabled);
        log.info("Enabling Substate Hash Accumulator Module.");
        install(substateAccumulatorHashModule);
    }
}
Also used : RadixEngineModule(com.radixdlt.statecomputer.RadixEngineModule) ApiModule(com.radixdlt.api.ApiModule) GenericTestnetForksModule(com.radixdlt.statecomputer.forks.modules.GenericTestnetForksModule) MainnetForksModule(com.radixdlt.statecomputer.forks.modules.MainnetForksModule) ReleasenetForksModule(com.radixdlt.statecomputer.forks.modules.ReleasenetForksModule) StokenetForksModule(com.radixdlt.statecomputer.forks.modules.StokenetForksModule) ForksModule(com.radixdlt.statecomputer.forks.ForksModule) RadixEngineStateComputerModule(com.radixdlt.statecomputer.RadixEngineStateComputerModule) SyncConfig(com.radixdlt.sync.SyncConfig) Addressing(com.radixdlt.networks.Addressing) MessageCentralModule(com.radixdlt.network.messaging.MessageCentralModule) PacemakerMaxExponent(com.radixdlt.hotstuff.bft.PacemakerMaxExponent) PacemakerRate(com.radixdlt.hotstuff.bft.PacemakerRate) GenericTestnetForksModule(com.radixdlt.statecomputer.forks.modules.GenericTestnetForksModule) SubstateAccumulatorHashModule(com.radixdlt.statecomputer.substatehash.SubstateAccumulatorHashModule) HostIpModule(com.radixdlt.network.hostip.HostIpModule) RuntimeProperties(com.radixdlt.properties.RuntimeProperties) PeerLivenessMonitorModule(com.radixdlt.network.p2p.PeerLivenessMonitorModule) BFTSyncPatienceMillis(com.radixdlt.hotstuff.sync.BFTSyncPatienceMillis) TestingForksLoader(com.radixdlt.statecomputer.forks.modules.testing.TestingForksLoader) PacemakerTimeout(com.radixdlt.hotstuff.bft.PacemakerTimeout) PersistenceModule(com.radixdlt.store.PersistenceModule) NetworkId(com.radixdlt.networks.NetworkId) RxEnvironmentModule(com.radixdlt.environment.rx.RxEnvironmentModule) DatabasePropertiesModule(com.radixdlt.store.DatabasePropertiesModule) MempoolRelayerModule(com.radixdlt.mempool.MempoolRelayerModule) MessagingModule(com.radixdlt.network.messaging.MessagingModule) ForkOverwritesFromPropertiesModule(com.radixdlt.statecomputer.forks.ForkOverwritesFromPropertiesModule) RadixEngineCheckpointModule(com.radixdlt.statecomputer.checkpoint.RadixEngineCheckpointModule) Genesis(com.radixdlt.statecomputer.checkpoint.Genesis) P2PModule(com.radixdlt.network.p2p.P2PModule) PeerDiscoveryModule(com.radixdlt.network.p2p.PeerDiscoveryModule) PersistedBFTKeyModule(com.radixdlt.keys.PersistedBFTKeyModule) MempoolReceiverModule(com.radixdlt.mempool.MempoolReceiverModule)

Example 2 with RadixEngineCheckpointModule

use of com.radixdlt.statecomputer.checkpoint.RadixEngineCheckpointModule in project radixdlt by radixdlt.

the class FunctionalNodeModule method configure.

@Override
public void configure() {
    install(new EventLoggerModule());
    install(new DispatcherModule());
    // Consensus
    if (hasConsensus) {
        install(new ConsensusModule());
        if (hasEpochs) {
            install(new EpochsConsensusModule());
        } else {
            install(new NoEpochsConsensusModule());
        }
    }
    // Sync
    if (hasLedger) {
        if (!hasSync) {
            install(mockedSyncServiceModule);
        } else {
            install(new SyncServiceModule());
            if (hasEpochs) {
                install(new EpochsSyncModule());
            } else {
                install(new NoEpochsSyncModule());
            }
        }
    }
    // State Manager
    if (!hasLedger) {
        install(new MockedLedgerModule());
    } else {
        install(new LedgerModule());
        if (!hasMempool) {
            install(new MockedCommandGeneratorModule());
            if (!hasEpochs) {
                install(new MockedStateComputerModule());
            } else {
                install(new MockedStateComputerWithEpochsModule());
            }
        } else {
            install(new MempoolReceiverModule());
            if (hasMempoolRelayer) {
                install(new MempoolRelayerModule());
            }
            if (!hasRadixEngine) {
                install(new MockedMempoolStateComputerModule());
            } else {
                install(new RadixEngineStateComputerModule());
                install(new RadixEngineModule());
                install(new RadixEngineCheckpointModule());
            }
        }
    }
}
Also used : RadixEngineModule(com.radixdlt.statecomputer.RadixEngineModule) MockedStateComputerWithEpochsModule(com.radixdlt.statecomputer.MockedStateComputerWithEpochsModule) NoEpochsConsensusModule(com.radixdlt.environment.NoEpochsConsensusModule) MockedSyncServiceModule(com.radixdlt.sync.MockedSyncServiceModule) RadixEngineStateComputerModule(com.radixdlt.statecomputer.RadixEngineStateComputerModule) NoEpochsConsensusModule(com.radixdlt.environment.NoEpochsConsensusModule) MockedLedgerModule(com.radixdlt.ledger.MockedLedgerModule) MockedStateComputerModule(com.radixdlt.statecomputer.MockedStateComputerModule) MockedLedgerModule(com.radixdlt.ledger.MockedLedgerModule) MempoolRelayerModule(com.radixdlt.mempool.MempoolRelayerModule) MockedCommandGeneratorModule(com.radixdlt.ledger.MockedCommandGeneratorModule) RadixEngineCheckpointModule(com.radixdlt.statecomputer.checkpoint.RadixEngineCheckpointModule) MockedMempoolStateComputerModule(com.radixdlt.statecomputer.MockedMempoolStateComputerModule) NoEpochsSyncModule(com.radixdlt.environment.NoEpochsSyncModule) NoEpochsConsensusModule(com.radixdlt.environment.NoEpochsConsensusModule) NoEpochsSyncModule(com.radixdlt.environment.NoEpochsSyncModule) MempoolReceiverModule(com.radixdlt.mempool.MempoolReceiverModule)

Aggregations

MempoolReceiverModule (com.radixdlt.mempool.MempoolReceiverModule)2 MempoolRelayerModule (com.radixdlt.mempool.MempoolRelayerModule)2 RadixEngineModule (com.radixdlt.statecomputer.RadixEngineModule)2 RadixEngineStateComputerModule (com.radixdlt.statecomputer.RadixEngineStateComputerModule)2 RadixEngineCheckpointModule (com.radixdlt.statecomputer.checkpoint.RadixEngineCheckpointModule)2 ApiModule (com.radixdlt.api.ApiModule)1 NoEpochsConsensusModule (com.radixdlt.environment.NoEpochsConsensusModule)1 NoEpochsSyncModule (com.radixdlt.environment.NoEpochsSyncModule)1 RxEnvironmentModule (com.radixdlt.environment.rx.RxEnvironmentModule)1 PacemakerMaxExponent (com.radixdlt.hotstuff.bft.PacemakerMaxExponent)1 PacemakerRate (com.radixdlt.hotstuff.bft.PacemakerRate)1 PacemakerTimeout (com.radixdlt.hotstuff.bft.PacemakerTimeout)1 BFTSyncPatienceMillis (com.radixdlt.hotstuff.sync.BFTSyncPatienceMillis)1 PersistedBFTKeyModule (com.radixdlt.keys.PersistedBFTKeyModule)1 MockedCommandGeneratorModule (com.radixdlt.ledger.MockedCommandGeneratorModule)1 MockedLedgerModule (com.radixdlt.ledger.MockedLedgerModule)1 HostIpModule (com.radixdlt.network.hostip.HostIpModule)1 MessageCentralModule (com.radixdlt.network.messaging.MessageCentralModule)1 MessagingModule (com.radixdlt.network.messaging.MessagingModule)1 P2PModule (com.radixdlt.network.p2p.P2PModule)1