class StoreTransaction implements UpdatableStore.StoreTransaction {

  @Override
  public SafeFuture<Optional<SignedBlockAndState>> retrieveBlockAndState(Bytes32 blockRoot) {
    if (blockAndStates.containsKey(blockRoot)) {
      final SignedBlockAndState result = blockAndStates.get(blockRoot);
      return SafeFuture.completedFuture(Optional.of(result));
    }
    return store.retrieveBlockAndState(blockRoot);
  }

    StoreTransaction(
      final Store store,
      final ReadWriteLock lock,
      final StorageUpdateChannel storageUpdateChannel,
      final UpdatableStore.StoreUpdateHandler updateHandler);

}