usawa

Signed, immutable accounting.
Log | Files | Refs | Submodules | LICENSE

commit f9ebd99a7bebae320546762c2a9f42616ea6c6fd
parent ee61483fe63863944ef1ee651999920f69e06cea
Author: Carlosokumu <carlosokumu254@gmail.com>
Date:   Fri, 13 Mar 2026 19:54:55 +0300

add logic to load usawa wallet

Diffstat:
Mdummy/usawa/storage/ledger_repository.py | 58++++++++++++++++++++++------------------------------------
1 file changed, 22 insertions(+), 36 deletions(-)

diff --git a/dummy/usawa/storage/ledger_repository.py b/dummy/usawa/storage/ledger_repository.py @@ -1,6 +1,7 @@ import hashlib import logging from typing import List +from usawa.core.usawa_wallet import UsawaWallet import hexathon from usawa.storage.xml_utils import ( _build_export_root, @@ -59,6 +60,7 @@ class LedgerRepository: unix_client: UnixClient = None, valkey_store: ValkeyStore = None, cfg=None, + wallet=None, ): """ Initialize the LedgerRepository. @@ -72,57 +74,36 @@ class LedgerRepository: """ self.valkey_store = valkey_store self.unix_client = unix_client - self._wallet = None + self._wallet = wallet self._store = None self.ledger_path = ledger_path self.cfg = cfg - self.resolver = FSResolver( - self.cfg.get("FS_RESOLVER_STORE_PATH"), verifier=sha256_verify - ) + self.resolver = FSResolver(self.cfg.get("FS_RESOLVER_STORE_PATH")) + logg.info("Initailized wallet, pubkey: %s", self._wallet.pubkey().hex()) def _init_store(self, write=False) -> tuple[LedgerStore, Ledger, DemoWallet]: ledger_tree = load(self.ledger_path) ledger = Ledger.from_tree(ledger_tree) + ledger.set_wallet(self._wallet) + if write: logg.info("init store for write") self.store = LedgerStore(self.valkey_store, ledger) - if self._wallet is None: - pk = self.store.get_key() - if pk is None: - raise ValueError("No private key found in store") - self._wallet = DemoWallet(privatekey=pk) else: logg.info("init store for read") self.store = LedgerStore(self.valkey_store, ledger) - - if self._wallet is None: - try: - pk = self.store.get_key() - self._wallet = DemoWallet(privatekey=pk) - logg.info( - f"Loaded wallet, pubkey: {self._wallet.pubkey().hex()[:16]}..." - ) - - except FileNotFoundError: - logg.warning( - "No private key found in store, initializing a a default one" - ) - privkey = bytes.fromhex(self.cfg.get("SIGS_DEFAULT_PRIVATE_KEY")) - self._wallet = DemoWallet(privatekey=privkey) - - # Add key to store - try: - self.store.add_key(wallet=self._wallet) - logg.info("Stored new private key successfully") - except Exception as e: - logg.warning(f"Could not store new key: {e}") - - except Exception as e: - raise ValueError( - f"Could not retrieve or create private key: {e}" - ) from e + try: + _ = self.store.get_key() + logg.info(f"Loaded wallet, pubkey: {self._wallet.pubkey().hex()[:16]}...") + except FileNotFoundError: + logg.warning("No private key found in store, initializing a a default one") + try: + self.store.add_key(wallet=self._wallet) + logg.info("Stored new private key successfully") + except Exception as e: + logg.warning(f"Could not store new key: {e}") logg.debug( "wallet pk: %s pubk: %s", @@ -286,6 +267,11 @@ class LedgerRepository: incoming = _build_incoming_element(ns_uri, target_entry, xml_tree) root = _build_export_root(xml_tree, ns_uri, target_entry, incoming) _write_xml_to_file(root, output_path) + self.store.ledger.truncate() + logg.debug( + "Ledger entries after truncate: %d", len(self.store.ledger.entries) + ) + self.resolver.put_entry(entry=storage_entry, lookup="sha512") logg.info(f"Successfully exported entry #{serial} -> {output_path}") return True, ""