def __init__(self, tree: MerkleTree, dataDir: str, serializer: MappingSerializer = None, fileName: str = None, ensureDurability: bool = True, transactionLogStore: FileStore = None, defaultFile=None): """ :param tree: an implementation of MerkleTree :param dataDir: the directory where the transaction log is stored :param serializer: an object that can serialize the data before hashing it and storing it in the MerkleTree :param fileName: the name of the transaction log file :param defaultFile: file or dir to use for initialization of transaction log store """ assert not transactionLogStore or not defaultFile self.defaultFile = defaultFile self.dataDir = dataDir self.tree = tree self.leafSerializer = serializer or \ JsonSerializer() # type: MappingSerializer self.hasher = TreeHasher() self._transactionLog = None # type: FileStore self._transactionLogName = fileName or "transactions" self.ensureDurability = ensureDurability self._customTransactionLogStore = transactionLogStore self.start() self.seqNo = 0 self.recoverTree()
def __init__(self, tree: MerkleTree, dataDir: str, txn_serializer: MappingSerializer = None, hash_serializer: MappingSerializer = None, fileName: str = None, ensureDurability: bool = True, transactionLogStore: KeyValueStorage = None, genesis_txn_initiator: GenesisTxnInitiator = None): """ :param tree: an implementation of MerkleTree :param dataDir: the directory where the transaction log is stored :param serializer: an object that can serialize the data before hashing it and storing it in the MerkleTree :param fileName: the name of the transaction log file :param genesis_txn_initiator: file or dir to use for initialization of transaction log store """ self.genesis_txn_initiator = genesis_txn_initiator self.dataDir = dataDir self.tree = tree self.txn_serializer = txn_serializer or ledger_txn_serializer # type: MappingSerializer # type: MappingSerializer self.hash_serializer = hash_serializer or ledger_hash_serializer self.hasher = TreeHasher() self._transactionLog = None # type: KeyValueStorage self._transactionLogName = fileName or "transactions" self.ensureDurability = ensureDurability self._customTransactionLogStore = transactionLogStore self.seqNo = 0 self.start() self.recoverTree() if self.genesis_txn_initiator and self.size == 0: self.genesis_txn_initiator.init_ledger_from_genesis_txn(self)
def __init__(self, hasher=TreeHasher(), tree_size=0, hashes=(), hashStore=None): # These two queues should be written to two simple position-accessible # arrays (files, database tables, etc.) self.hashStore = hashStore or MemoryHashStore() # type: HashStore self.__hasher = hasher self._update(tree_size, hashes)
def hasher(): return TreeHasher()
def __init__(self, hasher=TreeHasher()): self.hasher = hasher