本文整理汇总了Java中org.ethereum.db.IndexedBlockStore.saveBlock方法的典型用法代码示例。如果您正苦于以下问题:Java IndexedBlockStore.saveBlock方法的具体用法?Java IndexedBlockStore.saveBlock怎么用?Java IndexedBlockStore.saveBlock使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.ethereum.db.IndexedBlockStore
的用法示例。
在下文中一共展示了IndexedBlockStore.saveBlock方法的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: 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));
}
示例7: 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));
}
示例8: 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())));
}
示例9: 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())));
}
示例10: 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));
}
示例11: invalidSiblingUncles
import org.ethereum.db.IndexedBlockStore; //导入方法依赖的package包/类
@Test
public void invalidSiblingUncles() {
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, null, uncles1, 1, null);
store.saveBlock(genesis, BigInteger.ONE, true);
store.saveBlock(uncle1a, BigInteger.ONE, false);
store.saveBlock(uncle1b, BigInteger.ONE, false);
store.saveBlock(block1, BigInteger.ONE, true);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addBlockUnclesValidationRule(store)
.blockStore(store)
.build();
Assert.assertFalse(validator.isValid(block1));
}
示例12: invalidPOWUncles
import org.ethereum.db.IndexedBlockStore; //导入方法依赖的package包/类
@Test
public void invalidPOWUncles() {
IndexedBlockStore store = new IndexedBlockStore(ConfigHelper.CONFIG);
store.init(new HashMap<>(), new HashMapDB(), null);
BlockGenerator blockGenerator = new BlockGenerator();
Blockchain blockchain = BlockChainBuilder.ofSize(30, true);
Block genesis = blockchain.getBlockByNumber(0);
Block uncle1a = blockchain.getBlockByNumber(1);
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);
BlockParentDependantValidationRule parentValidationRule = Mockito.mock(BlockParentDependantValidationRule.class);
Mockito.when(parentValidationRule.isValid(Mockito.any(), Mockito.any())).thenReturn(true);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addBlockUnclesValidationRule(store, new ProofOfWorkRule(ConfigHelper.CONFIG).setFallbackMiningEnabled(false), parentValidationRule)
.blockStore(store)
.build();
Assert.assertFalse(validator.isValid(block1));
}
示例13: invalidUncleHasParentThatIsNotAncestor
import org.ethereum.db.IndexedBlockStore; //导入方法依赖的package包/类
@Test
public void invalidUncleHasParentThatIsNotAncestor() {
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 uncle2a = blockGenerator.createChildBlock(uncle1a);
List<BlockHeader> uncles3 = new ArrayList<>();
uncles3.add(uncle2a.getHeader());
uncles3.add(uncle1a.getHeader());
Block block1 = blockGenerator.createChildBlock(genesis, null, null, 1, null);
Block block2 = blockGenerator.createChildBlock(block1, null, null, 1, null);
Block block3 = blockGenerator.createChildBlock(block2, null, uncles3, 1, null);
store.saveBlock(genesis, BigInteger.ONE, true);
store.saveBlock(uncle1a, BigInteger.ONE, false);
store.saveBlock(uncle2a, BigInteger.ONE, false);
store.saveBlock(block1, BigInteger.ONE, true);
store.saveBlock(block2, BigInteger.ONE, true);
store.saveBlock(block3, BigInteger.ONE, true);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addBlockUnclesValidationRule(store)
.blockStore(store).build();
Assert.assertFalse(validator.isValid(block3));
}
示例14: invalidUncleAlreadyUsed
import org.ethereum.db.IndexedBlockStore; //导入方法依赖的package包/类
@Test
public void invalidUncleAlreadyUsed() {
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, null, uncles1, 1, null);
Block uncle2a = blockGenerator.createChildBlock(genesis);
Block uncle2b = blockGenerator.createChildBlock(genesis);
List<BlockHeader> uncles2 = new ArrayList<>();
uncles2.add(uncle2a.getHeader());
uncles2.add(uncle2b.getHeader());
Block block2 = blockGenerator.createChildBlock(block1, null, uncles2, 1, null);
Block block3 = blockGenerator.createChildBlock(block2, null, uncles2, 1, null);
store.saveBlock(genesis, BigInteger.ONE, true);
store.saveBlock(uncle1a, BigInteger.ONE, false);
store.saveBlock(uncle1b, BigInteger.ONE, false);
store.saveBlock(block1, BigInteger.ONE, true);
store.saveBlock(uncle2a, BigInteger.ONE, false);
store.saveBlock(uncle2b, BigInteger.ONE, false);
store.saveBlock(block2, BigInteger.ONE, true);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addBlockUnclesValidationRule(store)
.blockStore(store).build();
Assert.assertFalse(validator.isValid(block3));
}
示例15: tooManyUncles
import org.ethereum.db.IndexedBlockStore; //导入方法依赖的package包/类
@Test
public void tooManyUncles() {
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);
Block block1 = blockGenerator.createChildBlock(genesis, null, null, 1, null);
Block uncle2a = blockGenerator.createChildBlock(genesis);
Block uncle2b = blockGenerator.createChildBlock(genesis);
List<BlockHeader> uncles2 = new ArrayList<>();
uncles2.add(uncle2a.getHeader());
uncles2.add(uncle2b.getHeader());
uncles2.add(uncle1a.getHeader());
uncles2.add(uncle1b.getHeader());
for(int i = 0; i < 10; i++) {
uncles2.add(blockGenerator.createChildBlock(genesis).getHeader());
}
Block block2 = blockGenerator.createChildBlock(block1, null, uncles2, 1, null);
store.saveBlock(genesis, BigInteger.ONE, true);
store.saveBlock(uncle1a, BigInteger.ONE, false);
store.saveBlock(uncle1b, BigInteger.ONE, false);
store.saveBlock(block1, BigInteger.ONE, true);
store.saveBlock(uncle2a, BigInteger.ONE, false);
store.saveBlock(uncle2b, BigInteger.ONE, false);
BlockValidatorImpl validator = new BlockValidatorBuilder()
.addBlockUnclesValidationRule(store)
.blockStore(store).build();
Assert.assertFalse(validator.isValid(block2));
}