use of org.ethereum.manager.AdminInfo in project rskj by rsksmart.
the class ImportLightTest method createBlockchain.
public static BlockChainImpl createBlockchain(Genesis genesis) {
RskSystemProperties config = new RskSystemProperties();
config.setBlockchainConfig(new GenesisConfig(new GenesisConfig.GenesisConstants() {
@Override
public BlockDifficulty getMinimumDifficulty() {
return new BlockDifficulty(BigInteger.ONE);
}
}));
IndexedBlockStore blockStore = new IndexedBlockStore(new HashMap<>(), new HashMapDB(), null);
Repository repository = new RepositoryImpl(config, new TrieStoreImpl(new HashMapDB()));
EthereumListenerAdapter listener = new EthereumListenerAdapter();
KeyValueDataSource ds = new HashMapDB();
ds.init();
ReceiptStore receiptStore = new ReceiptStoreImpl(ds);
BlockChainImpl blockchain = new BlockChainImpl(config, repository, blockStore, receiptStore, null, listener, new AdminInfo(), new DummyBlockValidator());
blockchain.setNoValidation(true);
TransactionPoolImpl transactionPool = new TransactionPoolImpl(config, repository, null, receiptStore, null, listener, 10, 100);
blockchain.setTransactionPool(transactionPool);
Repository track = repository.startTracking();
for (RskAddress addr : genesis.getPremine().keySet()) {
track.createAccount(addr);
track.addBalance(addr, genesis.getPremine().get(addr).getAccountState().getBalance());
}
track.commit();
genesis.setStateRoot(repository.getRoot());
genesis.flushRLP();
blockStore.saveBlock(genesis, genesis.getCumulativeDifficulty(), true);
blockchain.setBestBlock(genesis);
blockchain.setTotalDifficulty(genesis.getCumulativeDifficulty());
return blockchain;
}
use of org.ethereum.manager.AdminInfo in project rskj by rsksmart.
the class BlockChainImplTest method createBlockChain.
private static BlockChainImpl createBlockChain(Repository repository, IndexedBlockStore blockStore, BlockValidatorImpl blockValidator) {
KeyValueDataSource ds = new HashMapDB();
ds.init();
ReceiptStore receiptStore = new ReceiptStoreImpl(ds);
AdminInfo adminInfo = new SimpleAdminInfo();
EthereumListener listener = new BlockExecutorTest.SimpleEthereumListener();
BlockChainImpl blockChain = new BlockChainImpl(config, repository, blockStore, receiptStore, null, listener, adminInfo, blockValidator);
TransactionPoolImpl transactionPool = new TransactionPoolImpl(config, repository, blockStore, receiptStore, null, listener, 10, 100);
blockChain.setTransactionPool(transactionPool);
return blockChain;
}
use of org.ethereum.manager.AdminInfo in project rskj by rsksmart.
the class BlockChainBuilder method build.
public BlockChainImpl build(boolean withoutCleaner) {
if (repository == null)
repository = new RepositoryImpl(config, new TrieStoreImpl(new HashMapDB().setClearOnClose(false)));
if (blockStore == null) {
blockStore = new IndexedBlockStore(new HashMap<>(), new HashMapDB(), null);
}
if (receiptStore == null) {
KeyValueDataSource ds = new HashMapDB();
ds.init();
receiptStore = new ReceiptStoreImpl(ds);
}
if (txinfos != null && !txinfos.isEmpty())
for (TransactionInfo txinfo : txinfos) receiptStore.add(txinfo.getBlockHash(), txinfo.getIndex(), txinfo.getReceipt());
EthereumListener listener = new BlockExecutorTest.SimpleEthereumListener();
BlockValidatorBuilder validatorBuilder = new BlockValidatorBuilder();
validatorBuilder.addBlockRootValidationRule().addBlockUnclesValidationRule(blockStore).addBlockTxsValidationRule(repository).blockStore(blockStore);
BlockValidator blockValidator = validatorBuilder.build();
if (this.adminInfo == null)
this.adminInfo = new AdminInfo();
BlockChainImpl blockChain = new BlockChainImpl(config, this.repository, this.blockStore, receiptStore, null, listener, this.adminInfo, blockValidator);
if (this.testing) {
blockChain.setBlockValidator(new DummyBlockValidator());
blockChain.setNoValidation(true);
}
TransactionPoolImpl transactionPool;
if (withoutCleaner) {
transactionPool = new TransactionPoolImplNoCleaner(config, blockChain.getRepository(), blockChain.getBlockStore(), receiptStore, new ProgramInvokeFactoryImpl(), new BlockExecutorTest.SimpleEthereumListener(), 10, 100);
} else {
transactionPool = new TransactionPoolImpl(config, blockChain.getRepository(), blockChain.getBlockStore(), receiptStore, new ProgramInvokeFactoryImpl(), new BlockExecutorTest.SimpleEthereumListener(), 10, 100);
}
blockChain.setTransactionPool(transactionPool);
if (this.genesis != null) {
for (RskAddress addr : this.genesis.getPremine().keySet()) {
this.repository.createAccount(addr);
this.repository.addBalance(addr, this.genesis.getPremine().get(addr).getAccountState().getBalance());
}
Repository track = this.repository.startTracking();
new RepositoryBlockStore(config, track, PrecompiledContracts.BRIDGE_ADDR);
track.commit();
this.genesis.setStateRoot(this.repository.getRoot());
this.genesis.flushRLP();
blockChain.setBestBlock(this.genesis);
blockChain.setTotalDifficulty(this.genesis.getCumulativeDifficulty());
}
if (this.blocks != null) {
BlockExecutor blockExecutor = new BlockExecutor(config, repository, receiptStore, blockStore, listener);
for (Block b : this.blocks) {
blockExecutor.executeAndFillAll(b, blockChain.getBestBlock());
blockChain.tryToConnect(b);
}
}
return blockChain;
}
Aggregations