private GenesisConfigOptions fromConfigOptions(final Map<String, Object> options) { return GenesisConfigFile.fromConfig(new JsonObject(Collections.singletonMap("config", options))) .getConfigOptions(); } }
@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 shouldLoadMainnetConfigFile() { final GenesisConfigFile config = GenesisConfigFile.mainnet(); // Sanity check some basic properties to confirm this is the mainnet file. assertThat(config.getConfigOptions().isEthHash()).isTrue(); assertThat(config.getConfigOptions().getChainId()).hasValue(MAINNET_CHAIN_ID); assertThat(config.getAllocations().map(GenesisAllocation::getAddress)) .contains( "000d836201318ec6899a67540690382780743280", "001762430ea9c3a26e5749afdb70da5f78ddbb8c", "001d14804b399c6ef80e64576f657660804fec0b"); }
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 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)); } } }
final PrivacyParameters privacyParameters) { final GenesisConfigOptions configOptions = genesisConfigFile.getConfigOptions();
@Before public void setup() { protocolSchedule = CliqueProtocolSchedule.create( GenesisConfigFile.DEFAULT.getConfigOptions(), proposerKeyPair); final Address otherAddress = Util.publicKeyToAddress(otherKeyPair.getPublicKey()); validatorList.add(otherAddress); final VoteTallyCache voteTallyCache = mock(VoteTallyCache.class); when(voteTallyCache.getVoteTallyAfterBlock(any())).thenReturn(new VoteTally(validatorList)); voteProposer = new VoteProposer(); final CliqueContext cliqueContext = new CliqueContext(voteTallyCache, voteProposer, null); final Block genesis = GenesisState.fromConfig(GenesisConfigFile.mainnet(), protocolSchedule).getBlock(); blockchain = createInMemoryBlockchain(genesis); protocolContext = new ProtocolContext<>(blockchain, stateArchive, cliqueContext); // Add a block above the genesis final BlockHeaderTestFixture headerTestFixture = new BlockHeaderTestFixture(); headerTestFixture.number(1).parentHash(genesis.getHeader().getHash()); final Block emptyBlock = new Block( TestHelpers.createCliqueSignedBlockHeader( headerTestFixture, otherKeyPair, validatorList), new BlockBody(Lists.newArrayList(), Lists.newArrayList())); blockchain.appendBlock(emptyBlock, Lists.newArrayList()); }
private GenesisConfigFile configWithProperty(final String key, final String value) { return GenesisConfigFile.fromConfig("{\"" + key + "\":\"" + value + "\"}"); }
@Test public void shouldGetAllocations() { final GenesisConfigFile config = GenesisConfigFile.fromConfig( "{" + " \"alloc\": {" + " \"fe3b557e8fb62b89f4916b721be55ceb828dbd73\": {" + " \"balance\": \"0xad78ebc5ac6200000\"" + " }," + " \"627306090abaB3A6e1400e9345bC60c78a8BEf57\": {" + " \"balance\": \"1000\"" + " }," + " \"f17f52151EbEF6C7334FAD080c5704D77216b732\": {" + " \"balance\": \"90000000000000000000000\"" + " }" + " }" + "}"); final Map<String, String> allocations = config .getAllocations() .collect( Collectors.toMap(GenesisAllocation::getAddress, GenesisAllocation::getBalance)); assertThat(allocations) .containsOnly( entry("fe3b557e8fb62b89f4916b721be55ceb828dbd73", "0xad78ebc5ac6200000"), entry("627306090abab3a6e1400e9345bc60c78a8bef57", "1000"), entry("f17f52151ebef6c7334fad080c5704d77216b732", "90000000000000000000000")); }
public static EthProtocolManager create(final TimeoutPolicy timeoutPolicy) { final ProtocolSchedule<Void> protocolSchedule = MainnetProtocolSchedule.create(); final GenesisConfigFile config = GenesisConfigFile.mainnet(); final GenesisState genesisState = GenesisState.fromConfig(config, protocolSchedule); final Blockchain blockchain = createInMemoryBlockchain(genesisState.getBlock()); final WorldStateArchive worldStateArchive = createInMemoryWorldStateArchive(); return create(blockchain, worldStateArchive, timeoutPolicy); }
.bodies( FixedDifficultyProtocolSchedule.create( GenesisConfigFile.development().getConfigOptions(), PrivacyParameters.noPrivacy())) .iterator();
@Test public void parametersAlignWithMainnetWithAdjustments() { final ProtocolSpec<CliqueContext> homestead = CliqueProtocolSchedule.create(GenesisConfigFile.DEFAULT.getConfigOptions(), NODE_KEYS) .getByBlockNumber(0); assertThat(homestead.getName()).isEqualTo("Frontier"); assertThat(homestead.getBlockReward()).isEqualTo(Wei.ZERO); assertThat(homestead.getDifficultyCalculator()).isInstanceOf(CliqueDifficultyCalculator.class); } }
GenesisConfigFile.fromConfig(config), SynchronizerConfiguration.builder().build(), new InMemoryStorageProvider(),
@Test public void blockImport() throws IOException { final Path source = folder.newFile().toPath(); BlockTestUtil.write1000Blocks(source); final PantheonController<?> targetController = PantheonController.fromConfig( GenesisConfigFile.mainnet(), SynchronizerConfiguration.builder().build(), new InMemoryStorageProvider(), false, 1, new MiningParametersTestBuilder().enabled(false).build(), KeyPair.generate(), new NoOpMetricsSystem(), PrivacyParameters.noPrivacy()); final BlockImporter.ImportResult result = blockImporter.importBlockchain(source, targetController); // Don't count the Genesis block assertThat(result.count).isEqualTo(999); assertThat(result.td).isEqualTo(UInt256.of(21991996248790L)); }
private IbftConfigOptions fromConfigOptions(final Map<String, Object> ibftConfigOptions) { return GenesisConfigFile.fromConfig( new JsonObject(singletonMap("config", singletonMap("ibft", ibftConfigOptions)))) .getConfigOptions() .getIbftConfigOptions(); } }
final ProtocolSchedule<Void> protocolSchedule = FixedDifficultyProtocolSchedule.create( GenesisConfigFile.development().getConfigOptions(), PrivacyParameters.noPrivacy()); final Blockchain blockchain = new TestBlockchain(); final TransactionProcessor transactionProcessor =
protocolContext.getWorldStateArchive(), genesisConfig .getConfigOptions() .getChainId() .orElse(MainnetProtocolSchedule.DEFAULT_CHAIN_ID),
MainnetPantheonController.init( createKeyValueStorageProvider(dbAhead), GenesisConfigFile.mainnet(), MainnetProtocolSchedule.create(), fastSyncConfig, MainnetPantheonController.init( createKeyValueStorageProvider(dbAhead), GenesisConfigFile.mainnet(), MainnetProtocolSchedule.create(), fastSyncConfig, MainnetPantheonController.init( new InMemoryStorageProvider(), GenesisConfigFile.mainnet(), MainnetProtocolSchedule.create(), fastSyncConfig,
private CliqueConfigOptions fromConfigOptions(final Map<String, Object> cliqueConfigOptions) { return GenesisConfigFile.fromConfig( new JsonObject(singletonMap("config", singletonMap("clique", cliqueConfigOptions)))) .getConfigOptions() .getCliqueConfigOptions(); } }
.setSupportedProtocols(EthProtocol.get()); final GenesisConfigFile genesisConfigFile = GenesisConfigFile.development(); final ProtocolSchedule<Void> protocolSchedule = FixedDifficultyProtocolSchedule.create( GenesisConfigFile.development().getConfigOptions(), PrivacyParameters.noPrivacy());