use of com.radixdlt.network.p2p.PeerLivenessMonitorModule 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);
}
}
use of com.radixdlt.network.p2p.PeerLivenessMonitorModule in project radixdlt by radixdlt.
the class P2PTestNetworkRunner method createInjector.
private static Injector createInjector(MockP2PNetwork p2pNetwork, DeterministicNetwork network, P2PConfig p2pConfig, ECKeyPair nodeKey, RadixNodeUri selfUri, int selfNodeIndex) throws ParseException {
final var properties = new RuntimeProperties(new JSONObject(), new String[] {});
return Guice.createInjector(Modules.override(new P2PModule(properties)).with(new AbstractModule() {
@Override
protected void configure() {
bind(TestCounters.class).toInstance(new TestCounters());
bind(P2PConfig.class).toInstance(p2pConfig);
bind(RadixNodeUri.class).annotatedWith(Self.class).toInstance(selfUri);
bind(SystemCounters.class).to(SystemCountersImpl.class).in(Scopes.SINGLETON);
}
@Provides
public PeerOutboundBootstrap peerOutboundBootstrap(TestCounters testCounters) {
return uri -> {
testCounters.outboundChannelsBootstrapped += 1;
p2pNetwork.createChannel(selfNodeIndex, uri);
};
}
}), new PeerDiscoveryModule(), new PeerLivenessMonitorModule(), new DispatcherModule(), new AbstractModule() {
@Override
protected void configure() {
final var dbDir = new TemporaryFolder();
try {
dbDir.create();
} catch (IOException e) {
throw new RuntimeException(e);
}
bindConstant().annotatedWith(NetworkId.class).to(Network.LOCALNET.getId());
bind(Addressing.class).toInstance(Addressing.ofNetwork(Network.LOCALNET));
bindConstant().annotatedWith(DatabaseLocation.class).to(dbDir.getRoot().getAbsolutePath());
bindConstant().annotatedWith(DatabaseCacheSize.class).to(100_000L);
bind(ECKeyPair.class).annotatedWith(Self.class).toInstance(nodeKey);
bind(ECPublicKey.class).annotatedWith(Self.class).toInstance(nodeKey.getPublicKey());
bind(BFTNode.class).annotatedWith(Self.class).toInstance(BFTNode.create(nodeKey.getPublicKey()));
bind(String.class).annotatedWith(Self.class).toInstance(Addressing.ofNetwork(Network.LOCALNET).forValidators().of(nodeKey.getPublicKey()).substring(0, 10));
bind(ECKeyOps.class).toInstance(ECKeyOps.fromKeyPair(nodeKey));
bind(Environment.class).toInstance(network.createSender(BFTNode.create(nodeKey.getPublicKey())));
bind(RuntimeProperties.class).toInstance(properties);
bind(Serialization.class).toInstance(DefaultSerialization.getInstance());
bind(DeterministicProcessor.class);
Multibinder.newSetBinder(binder(), StartProcessorOnRunner.class);
bind(ForkConfig.class).annotatedWith(NewestForkConfig.class).toInstance(new FixedEpochForkConfig("genesis", null, 0L));
}
});
}
Aggregations