public PantheonController<?> build() throws IOException { // instantiate a controller with mainnet config if no genesis file is defined // otherwise use the indicated genesis file final KeyPair nodeKeys = loadKeyPair(nodePrivateKeyFile); final StorageProvider storageProvider = RocksDbStorageProvider.create(homePath.resolve(DATABASE_PATH), metricsSystem); final GenesisConfigFile genesisConfigFile; if (devMode) { genesisConfigFile = GenesisConfigFile.development(); } else { final String genesisConfig = ethNetworkConfig.getGenesisConfig(); genesisConfigFile = GenesisConfigFile.fromConfig(genesisConfig); } return PantheonController.fromConfig( genesisConfigFile, synchronizerConfiguration, storageProvider, syncWithOttoman, ethNetworkConfig.getNetworkId(), miningParameters, nodeKeys, metricsSystem, privacyParameters); } }
@Test public void shouldLoadDevelopmentConfigFile() { final GenesisConfigFile config = GenesisConfigFile.development(); // Sanity check some basic properties to confirm this is the dev file. assertThat(config.getConfigOptions().isEthHash()).isTrue(); assertThat(config.getConfigOptions().getChainId()).hasValue(DEVELOPMENT_CHAIN_ID); assertThat(config.getAllocations().map(GenesisAllocation::getAddress)) .contains( "fe3b557e8fb62b89f4916b721be55ceb828dbd73", "627306090abab3a6e1400e9345bc60c78a8bef57", "f17f52151ebef6c7334fad080c5704d77216b732"); }
@Test public void blockHeadersRoundTrip() throws IOException { final List<BlockHeader> headers = new ArrayList<>(); final ByteBuffer buffer = ByteBuffer.wrap(Resources.toByteArray(Resources.getResource("50.blocks"))); for (int i = 0; i < 50; ++i) { final int blockSize = RLP.calculateSize(BytesValue.wrapBuffer(buffer)); final byte[] block = new byte[blockSize]; buffer.get(block); buffer.compact().position(0); final RLPInput oneBlock = new BytesValueRLPInput(BytesValue.wrap(block), false); oneBlock.enterList(); headers.add(BlockHeader.readFrom(oneBlock, MainnetBlockHashFunction::createHash)); // We don't care about the bodies, just the headers oneBlock.skipNext(); oneBlock.skipNext(); } final MessageData initialMessage = BlockHeadersMessage.create(headers); final MessageData raw = new RawMessage(EthPV62.BLOCK_HEADERS, initialMessage.getData()); final BlockHeadersMessage message = BlockHeadersMessage.readFrom(raw); final Iterator<BlockHeader> readHeaders = message.getHeaders( FixedDifficultyProtocolSchedule.create( GenesisConfigFile.development().getConfigOptions(), PrivacyParameters.noPrivacy())); for (int i = 0; i < 50; ++i) { Assertions.assertThat(readHeaders.next()).isEqualTo(headers.get(i)); } } }
.bodies( FixedDifficultyProtocolSchedule.create( GenesisConfigFile.development().getConfigOptions(), PrivacyParameters.noPrivacy())) .iterator();
final ProtocolSchedule<Void> protocolSchedule = FixedDifficultyProtocolSchedule.create( GenesisConfigFile.development().getConfigOptions(), PrivacyParameters.noPrivacy()); final Blockchain blockchain = new TestBlockchain(); final TransactionProcessor transactionProcessor =
.setSupportedProtocols(EthProtocol.get()); final GenesisConfigFile genesisConfigFile = GenesisConfigFile.development(); final ProtocolSchedule<Void> protocolSchedule = FixedDifficultyProtocolSchedule.create( GenesisConfigFile.development().getConfigOptions(), PrivacyParameters.noPrivacy());