public BlockChain(Branch branch, BlockHusk genesisBlock, BlockStore blockStore,
TransactionStore transactionStore, MetaStore metaStore,
Runtime runtime) {
this.branch = branch;
this.genesisBlock = genesisBlock;
this.blockStore = blockStore;
this.transactionStore = transactionStore;
this.metaStore = metaStore;
this.runtime = runtime;
this.stateStore = runtime.getStateStore();
this.transactionReceiptStore = runtime.getTransactionReceiptStore();
if (!blockStore.contains(genesisBlock.getHash())) {
initGenesis();
} else {
loadTransaction();
}
}