use of com.radixdlt.api.ApiModule 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);
}
}
Aggregations