@Test public void createFromJsonNoAllocs() throws Exception { final GenesisState genesisState = GenesisState.fromJson( Resources.toString(GenesisStateTest.class.getResource("genesis2.json"), Charsets.UTF_8), MainnetProtocolSchedule.create()); final BlockHeader header = genesisState.getBlock().getHeader(); assertThat(header.getStateRoot()).isEqualTo(Hash.EMPTY_TRIE_HASH); assertThat(header.getTransactionsRoot()).isEqualTo(Hash.EMPTY_TRIE_HASH); assertThat(header.getReceiptsRoot()).isEqualTo(Hash.EMPTY_TRIE_HASH); assertThat(header.getOmmersHash()).isEqualTo(Hash.EMPTY_LIST_HASH); assertThat(header.getExtraData()).isEqualTo(BytesValue.EMPTY); assertThat(header.getParentHash()).isEqualTo(Hash.ZERO); }
@Test public void calculateTransactionsRoot() throws IOException { for (final int block : Arrays.asList(300006, 4400002)) { final BlockHeader header = ValidationTestUtils.readHeader(block); final BlockBody body = ValidationTestUtils.readBody(block); final Bytes32 transactionRoot = BodyValidation.transactionsRoot(body.getTransactions()); Assertions.assertThat(header.getTransactionsRoot()).isEqualTo(transactionRoot); } }
private void assertBlockResultMatchesBlock(final JsonObject result, final Block block) { final BlockHeader header = block.getHeader(); assertThat(Hash.fromHexString(result.getString("parentHash"))) .isEqualTo(header.getParentHash()); assertThat(Hash.fromHexString(result.getString("sha3Uncles"))) .isEqualTo(header.getOmmersHash()); assertThat(Hash.fromHexString(result.getString("transactionsRoot"))) .isEqualTo(header.getTransactionsRoot()); assertThat(Hash.fromHexString(result.getString("stateRoot"))).isEqualTo(header.getStateRoot()); assertThat(Hash.fromHexString(result.getString("receiptsRoot"))) .isEqualTo(header.getReceiptsRoot()); assertThat(Address.fromHexString(result.getString("miner"))).isEqualTo(header.getCoinbase()); assertThat(UInt256.fromHexString(result.getString("difficulty"))) .isEqualTo(header.getDifficulty()); assertThat(BytesValue.fromHexString(result.getString("extraData"))) .isEqualTo(header.getExtraData()); assertThat(hexStringToInt(result.getString("size"))).isEqualTo(block.calculateSize()); assertThat(Long.decode(result.getString("gasLimit"))).isEqualTo(header.getGasLimit()); assertThat(Long.decode(result.getString("gasUsed"))).isEqualTo(header.getGasUsed()); assertThat(Long.decode(result.getString("timestamp"))).isEqualTo(header.getTimestamp()); assertThat(Long.decode(result.getString("number"))).isEqualTo(header.getNumber()); // Nonce is a data field and should represent 8 bytes exactly final String nonceResult = result.getString("nonce").toLowerCase(); assertThat(nonceResult.length() == 18 && nonceResult.startsWith("0x")).isTrue(); assertThat(Long.parseUnsignedLong(nonceResult.substring(2), 16)).isEqualTo(header.getNonce()); assertThat(Hash.fromHexString(result.getString("hash"))).isEqualTo(header.getHash()); assertThat(LogsBloomFilter.fromHexString(result.getString("logsBloom"))) .isEqualTo(header.getLogsBloom()); }
@Test public void createFromJsonWithAllocs() throws Exception { final GenesisState genesisState = GenesisState.fromJson( Resources.toString(GenesisStateTest.class.getResource("genesis1.json"), Charsets.UTF_8), MainnetProtocolSchedule.create()); final BlockHeader header = genesisState.getBlock().getHeader(); assertThat(header.getStateRoot()) .isEqualTo( Hash.fromHexString( "0x92683e6af0f8a932e5fe08c870f2ae9d287e39d4518ec544b0be451f1035fd39")); assertThat(header.getTransactionsRoot()).isEqualTo(Hash.EMPTY_TRIE_HASH); assertThat(header.getReceiptsRoot()).isEqualTo(Hash.EMPTY_TRIE_HASH); assertThat(header.getOmmersHash()).isEqualTo(Hash.EMPTY_LIST_HASH); assertThat(header.getExtraData()).isEqualTo(BytesValue.EMPTY); assertThat(header.getParentHash()).isEqualTo(Hash.ZERO); final DefaultMutableWorldState worldState = new DefaultMutableWorldState( new KeyValueStorageWorldStateStorage(new InMemoryKeyValueStorage())); genesisState.writeStateTo(worldState); final Account first = worldState.get(Address.fromHexString("0x0000000000000000000000000000000000000001")); final Account second = worldState.get(Address.fromHexString("0x0000000000000000000000000000000000000002")); assertThat(first).isNotNull(); assertThat(first.getBalance().toLong()).isEqualTo(111111111L); assertThat(second).isNotNull(); assertThat(second.getBalance().toLong()).isEqualTo(222222222L); }