本文整理汇总了Java中org.ethereum.db.IndexedBlockStore类的典型用法代码示例。如果您正苦于以下问题:Java IndexedBlockStore类的具体用法?Java IndexedBlockStore怎么用?Java IndexedBlockStore使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IndexedBlockStore类属于org.ethereum.db包,在下文中一共展示了IndexedBlockStore类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: validateHeader
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void validateHeader() {
IndexedBlockStore store = new IndexedBlockStore(ConfigHelper.CONFIG);
store.init(new HashMap<>(), new HashMapDB(), null);
BlockGenerator blockGenerator = new BlockGenerator();
Block genesis = blockGenerator.getGenesisBlock();
Block parent = new BlockBuilder().parent(genesis).build();
Block block = new BlockBuilder().parent(parent).build();
store.saveBlock(parent, BigInteger.ONE, true);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addParentBlockHeaderValidator()
.addBlockRootValidationRule()
.addBlockUnclesValidationRule(null)
.blockStore(store)
.build();
Assert.assertTrue(validator.isValid(block));
}
示例2: invalidUnclesUncleIncludedMultipeTimes
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void invalidUnclesUncleIncludedMultipeTimes () {
IndexedBlockStore store = new IndexedBlockStore(ConfigHelper.CONFIG);
store.init(new HashMap<>(), new HashMapDB(), null);
BlockGenerator blockGenerator = new BlockGenerator();
Block genesis = blockGenerator.getGenesisBlock();
Block uncle1a = blockGenerator.createChildBlock(genesis);
List<BlockHeader> uncles1 = new ArrayList<>();
uncles1.add(uncle1a.getHeader());
uncles1.add(uncle1a.getHeader());
Block block1 = blockGenerator.createChildBlock(genesis, null, uncles1, 1, null);
store.saveBlock(genesis, BigInteger.ONE, true);
store.saveBlock(uncle1a, BigInteger.ONE, false);
store.saveBlock(block1, BigInteger.ONE, true);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addBlockUnclesValidationRule(store)
.blockStore(store)
.build();
Assert.assertFalse(validator.isValid(block1));
}
示例3: invalidUncleIsAncestor
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void invalidUncleIsAncestor() {
IndexedBlockStore store = new IndexedBlockStore(ConfigHelper.CONFIG);
store.init(new HashMap<>(), new HashMapDB(), null);
BlockGenerator blockGenerator = new BlockGenerator();
Block genesis = blockGenerator.getGenesisBlock();
Block uncle1a = blockGenerator.createChildBlock(genesis);
List<BlockHeader> uncles1 = new ArrayList<>();
uncles1.add(uncle1a.getHeader());
uncles1.add(genesis.getHeader());
Block block1 = blockGenerator.createChildBlock(genesis, null, uncles1, 1, null);
store.saveBlock(genesis, BigInteger.ONE, true);
store.saveBlock(uncle1a, BigInteger.ONE, false);
store.saveBlock(block1, BigInteger.ONE, true);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addBlockUnclesValidationRule(store)
.blockStore(store)
.build();
Assert.assertFalse(validator.isValid(block1));
}
示例4: invalidUncleHasNoSavedParent
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void invalidUncleHasNoSavedParent() {
IndexedBlockStore store = new IndexedBlockStore(ConfigHelper.CONFIG);
store.init(new HashMap<>(), new HashMapDB(), null);
BlockGenerator blockGenerator = new BlockGenerator();
Block genesis = blockGenerator.getGenesisBlock();
Block uncle1a = blockGenerator.createChildBlock(new BlockGenerator().createChildBlock(genesis));
List<BlockHeader> uncles1 = new ArrayList<>();
uncles1.add(uncle1a.getHeader());
Block block1 = blockGenerator.createChildBlock(genesis, null, uncles1, 1, null);
store.saveBlock(genesis, BigInteger.ONE, true);
store.saveBlock(block1, BigInteger.ONE, true);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addBlockUnclesValidationRule(store)
.blockStore(store)
.build();
Assert.assertFalse(validator.isValid(block1));
}
示例5: invalidUncleHasNoCommonAncestor
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void invalidUncleHasNoCommonAncestor() {
IndexedBlockStore store = new IndexedBlockStore(ConfigHelper.CONFIG);
store.init(new HashMap<>(), new HashMapDB(), null);
BlockGenerator blockGenerator = new BlockGenerator();
Block genesis = blockGenerator.getGenesisBlock();
Block uncle1a = blockGenerator.createChildBlock(new SimpleBlock(null, null, new byte[]{12, 12}, null, BigInteger.ONE.toByteArray(),
0, null, 0L, 0L, new byte[]{}, null, null, null, Block.getTxTrie(null).getHash(), null, null, null));
List<BlockHeader> uncles1 = new ArrayList<>();
uncles1.add(uncle1a.getHeader());
Block block1 = blockGenerator.createChildBlock(genesis, null, uncles1, 1, null);
store.saveBlock(genesis, BigInteger.ONE, true);
store.saveBlock(uncle1a, BigInteger.ONE, false);
store.saveBlock(block1, BigInteger.ONE, true);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addBlockUnclesValidationRule(store)
.blockStore(store)
.build();
Assert.assertFalse(validator.isValid(block1));
}
示例6: parentInvalidNumber
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void parentInvalidNumber() {
IndexedBlockStore store = new IndexedBlockStore(ConfigHelper.CONFIG);
store.init(new HashMap<>(), new HashMapDB(), null);
BlockGenerator blockGenerator = new BlockGenerator();
Block genesis = blockGenerator.getGenesisBlock();
Block block = new BlockBuilder().parent(genesis).build();
block.getHeader().setNumber(25L);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addParentNumberRule()
.blockStore(store)
.build();
Assert.assertFalse(validator.isValid(block));
}
示例7: addInvalidMGPBlock
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void addInvalidMGPBlock() {
Repository repository = new RepositoryImpl(ConfigHelper.CONFIG, new TrieStoreImpl(new HashMapDB()));
IndexedBlockStore blockStore = new IndexedBlockStore(ConfigHelper.CONFIG);
blockStore.init(new HashMap<>(), new HashMapDB(), null);
BlockValidatorBuilder validatorBuilder = new BlockValidatorBuilder();
validatorBuilder.addBlockRootValidationRule().addBlockUnclesValidationRule(blockStore)
.addBlockTxsValidationRule(repository).addPrevMinGasPriceRule().addTxsMinGasPriceRule();
BlockChainImpl blockChain = createBlockChain(repository, blockStore, validatorBuilder.build());
Block genesis = getGenesisBlock(blockChain);
Block block = new BlockBuilder().minGasPrice(BigInteger.ONE)
.parent(genesis).build();
Assert.assertEquals(ImportResult.IMPORTED_BEST, blockChain.tryToConnect(genesis));
Assert.assertEquals(ImportResult.INVALID_BLOCK, blockChain.tryToConnect(block));
List<Transaction> txs = new ArrayList<>();
Transaction tx = Transaction.create(ConfigHelper.CONFIG, "0000000000000000000000000000000000000006", BigInteger.ZERO, BigInteger.ZERO, BigInteger.valueOf(1L), BigInteger.TEN);
tx.sign(new byte[]{22, 11, 00});
txs.add(tx);
block = new BlockBuilder().transactions(txs).minGasPrice(BigInteger.valueOf(11L))
.parent(genesis).build();
Assert.assertEquals(ImportResult.INVALID_BLOCK, blockChain.tryToConnect(block));
}
示例8: addValidMGPBlock
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void addValidMGPBlock() {
Repository repository = new RepositoryImpl(ConfigHelper.CONFIG, new TrieStoreImpl(new HashMapDB()));
IndexedBlockStore blockStore = new IndexedBlockStore(ConfigHelper.CONFIG);
blockStore.init(new HashMap<>(), new HashMapDB(), null);
BlockValidatorBuilder validatorBuilder = new BlockValidatorBuilder();
validatorBuilder.blockStore(blockStore)
.addPrevMinGasPriceRule().addTxsMinGasPriceRule();
BlockChainImpl blockChain = createBlockChain(repository, blockStore, validatorBuilder.build());
Repository track = repository.startTracking();
Account account = BlockExecutorTest.createAccount("acctest1", track, BigInteger.valueOf(100000));
Assert.assertTrue(account.getEcKey().hasPrivKey());
track.commit();
List<Transaction> txs = new ArrayList<>();
Transaction tx = Transaction.create(ConfigHelper.CONFIG, "0000000000000000000000000000000000000100", BigInteger.ZERO, BigInteger.ZERO, BigInteger.ONE, BigInteger.valueOf(22000L));
tx.sign(account.getEcKey().getPrivKeyBytes());
txs.add(tx);
Block genesis = getGenesisBlock(blockChain);
genesis.setStateRoot(repository.getRoot());
genesis.flushRLP();
Block block = new BlockBuilder().minGasPrice(BigInteger.ZERO).transactions(txs)
.parent(genesis).build();
BlockExecutor executor = new BlockExecutor(ConfigHelper.CONFIG, repository, blockChain, null, null);
executor.executeAndFill(block, genesis);
Assert.assertEquals(ImportResult.IMPORTED_BEST, blockChain.tryToConnect(genesis));
Assert.assertEquals(ImportResult.IMPORTED_BEST, blockChain.tryToConnect(block));
}
示例9: createBlockChain
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
public static BlockChainImpl createBlockChain(Repository repository) {
IndexedBlockStore blockStore = new IndexedBlockStore(ConfigHelper.CONFIG);
blockStore.init(new HashMap<>(), new HashMapDB(), null);
BlockValidatorBuilder validatorBuilder = new BlockValidatorBuilder();
validatorBuilder.addBlockRootValidationRule().addBlockUnclesValidationRule(blockStore)
.addBlockTxsValidationRule(repository).blockStore(blockStore);
BlockValidatorImpl blockValidator = validatorBuilder.build();
return createBlockChain(repository, blockStore, blockValidator);
}
示例10: validateEmptyBlock
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void validateEmptyBlock() {
IndexedBlockStore blockStore = new IndexedBlockStore(ConfigHelper.CONFIG);
blockStore.init(new HashMap<>(), new HashMapDB(), null);
Block genesis = new BlockGenerator().getGenesisBlock();
blockStore.saveBlock(genesis, genesis.getCumulativeDifficulty(), true);
Block block = new BlockBuilder().parent(genesis).build();
BlockValidator validator = createValidator(blockStore);
Assert.assertTrue(validator.isValid(block));
}
示例11: validateChildBlock
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void validateChildBlock() {
IndexedBlockStore blockStore = new IndexedBlockStore(ConfigHelper.CONFIG);
blockStore.init(new HashMap<>(), new HashMapDB(), null);
Block genesis = new BlockGenerator().getGenesisBlock();
blockStore.saveBlock(genesis, genesis.getCumulativeDifficulty(), true);
Block block = new BlockGenerator().createChildBlock(genesis);
BlockValidator validator = createValidator(blockStore);
Assert.assertTrue(validator.isValid(block));
}
示例12: getGenesisEmptyAncestorSet
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void getGenesisEmptyAncestorSet() {
IndexedBlockStore store = new IndexedBlockStore(ConfigHelper.CONFIG);
store.init(new HashMap<>(), new HashMapDB(), null);
BlockGenerator blockGenerator = new BlockGenerator();
Block genesis = blockGenerator.getGenesisBlock();
Assert.assertTrue(FamilyUtils.getAncestors(store, genesis, 6).isEmpty());
}
示例13: getBlockOneAncestorSet
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void getBlockOneAncestorSet() {
IndexedBlockStore store = new IndexedBlockStore(ConfigHelper.CONFIG);
store.init(new HashMap<>(), new HashMapDB(), null);
BlockGenerator blockGenerator = new BlockGenerator();
Block genesis = blockGenerator.getGenesisBlock();
store.saveBlock(genesis, BigInteger.ONE, true);
Block block = new BlockGenerator().createChildBlock(genesis);
Set<ByteArrayWrapper> ancestors = FamilyUtils.getAncestors(store, block, 6);
Assert.assertFalse(ancestors.isEmpty());
Assert.assertTrue(ancestors.contains(new ByteArrayWrapper(genesis.getHash())));
Assert.assertFalse(ancestors.contains(new ByteArrayWrapper(block.getHash())));
}
示例14: getThreeAncestorSet
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void getThreeAncestorSet() {
IndexedBlockStore store = new IndexedBlockStore(ConfigHelper.CONFIG);
store.init(new HashMap<>(), new HashMapDB(), null);
BlockGenerator blockGenerator = new BlockGenerator();
Block genesis = blockGenerator.getGenesisBlock();
store.saveBlock(genesis, BigInteger.ONE, true);
Block block1 = blockGenerator.createChildBlock(genesis);
store.saveBlock(block1, BigInteger.ONE, true);
Block block2 = blockGenerator.createChildBlock(block1);
store.saveBlock(block2, BigInteger.ONE, true);
Block block3 = blockGenerator.createChildBlock(block2);
store.saveBlock(block3, BigInteger.ONE, true);
Block block4 = blockGenerator.createChildBlock(block3);
store.saveBlock(block4, BigInteger.ONE, true);
Block block5 = blockGenerator.createChildBlock(block4);
store.saveBlock(block5, BigInteger.ONE, true);
Set<ByteArrayWrapper> ancestors = FamilyUtils.getAncestors(store, block5, 3);
Assert.assertFalse(ancestors.isEmpty());
Assert.assertEquals(3, ancestors.size());
Assert.assertFalse(ancestors.contains(new ByteArrayWrapper(genesis.getHash())));
Assert.assertFalse(ancestors.contains(new ByteArrayWrapper(block1.getHash())));
Assert.assertTrue(ancestors.contains(new ByteArrayWrapper(block2.getHash())));
Assert.assertTrue(ancestors.contains(new ByteArrayWrapper(block3.getHash())));
Assert.assertTrue(ancestors.contains(new ByteArrayWrapper(block4.getHash())));
Assert.assertFalse(ancestors.contains(new ByteArrayWrapper(block5.getHash())));
}
示例15: validUncles
import org.ethereum.db.IndexedBlockStore; //导入依赖的package包/类
@Test
public void validUncles() {
IndexedBlockStore store = new IndexedBlockStore(ConfigHelper.CONFIG);
store.init(new HashMap<>(), new HashMapDB(), null);
BlockGenerator blockGenerator = new BlockGenerator();
Block genesis = blockGenerator.getGenesisBlock();
Block uncle1a = blockGenerator.createChildBlock(genesis);
Block uncle1b = blockGenerator.createChildBlock(genesis);
List<BlockHeader> uncles1 = new ArrayList<>();
uncles1.add(uncle1a.getHeader());
uncles1.add(uncle1b.getHeader());
Block block1 = blockGenerator.createChildBlock(genesis);
Block block2 = blockGenerator.createChildBlock(block1, null, uncles1, 1, null);
store.saveBlock(genesis, BigInteger.ONE, true);
store.saveBlock(block1, BigInteger.ONE, true);
store.saveBlock(block2, BigInteger.ONE, true);
store.saveBlock(uncle1a, BigInteger.ONE, false);
store.saveBlock(uncle1b, BigInteger.ONE, false);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addBlockUnclesValidationRule(store)
.blockStore(store)
.build();
Assert.assertTrue(validator.isValid(block1));
}