add cli decode + fix crash when mint is offline (#709)

This commit is contained in:
lollerfirst
2025-03-04 12:38:47 +01:00
committed by GitHub
parent 0c40bbbc08
commit 77de51f336
3 changed files with 27 additions and 3 deletions

View File

@@ -922,6 +922,9 @@ class Token(ABC):
@abstractmethod
def unit(self, unit: str): ...
@abstractmethod
def serialize_to_dict(self, include_dleq: bool): ...
class TokenV3Token(BaseModel):
mint: Optional[str] = None

View File

@@ -2,6 +2,7 @@
import asyncio
import getpass
import json
import os
import time
from datetime import datetime, timezone
@@ -760,6 +761,26 @@ async def receive_cli(
return
await print_balance(ctx)
@cli.command("decode", help="Decode a cashu token and print in JSON format.")
@click.option(
"--no-dleq", default=False, is_flag=True, help="Do not include DLEQ proofs."
)
@click.option(
"--indent", "-i", default=2, is_flag=False, help="Number of spaces to indent JSON with."
)
@click.argument("token", type=str, default="")
def decode_to_json(token: str, no_dleq: bool, indent: int):
include_dleq = not no_dleq
if token:
token_obj = deserialize_token_from_string(token)
token_json = json.dumps(
token_obj.serialize_to_dict(include_dleq),
default=lambda obj: obj.hex() if isinstance(obj, bytes) else obj,
indent=indent,
)
print(token_json)
else:
print("Error: enter a token")
@cli.command("burn", help="Burn spent tokens.")
@click.argument("token", required=False, type=str)

View File

@@ -400,12 +400,12 @@ class Wallet(
Defaults to False.
"""
logger.trace(f"Loading mint {self.url}")
await self.load_mint_keysets(force_old_keysets)
await self.activate_keyset(keyset_id)
try:
await self.load_mint_keysets(force_old_keysets)
await self.activate_keyset(keyset_id)
await self.load_mint_info(reload=True)
except Exception as e:
logger.debug(f"Could not load mint info: {e}")
logger.error(f"Could not load mint info: {e}")
pass
async def load_proofs(self, reload: bool = False, all_keysets=False) -> None: