From 7271f982a48a4b4ce018af66c5b2741b353fc781 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Wed, 5 Oct 2022 18:57:04 +0200 Subject: [PATCH] output_data -> outputs --- cashu/core/base.py | 12 +++++++++++- cashu/mint/ledger.py | 12 ++++-------- cashu/mint/router.py | 7 +++---- cashu/wallet/wallet.py | 2 +- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/cashu/core/base.py b/cashu/core/base.py index 00c9a0e..143905e 100644 --- a/cashu/core/base.py +++ b/cashu/core/base.py @@ -113,7 +113,17 @@ class MintPayloads(BaseModel): class SplitPayload(BaseModel): proofs: List[Proof] amount: int - output_data: MintPayloads + output_data: MintPayloads = None # backwards compatibility with clients < v0.2.1 + outputs: MintPayloads = None + + def __init__(self): + self.backwards_compatibility_v021() + + def backwards_compatibility_v021(self): + # before v0.2.1: output_data, after: outputs + if self.output_data: + self.outputs = self.output_data + self.output_data = None class CheckPayload(BaseModel): diff --git a/cashu/mint/ledger.py b/cashu/mint/ledger.py index 5419aed..7260c22 100644 --- a/cashu/mint/ledger.py +++ b/cashu/mint/ledger.py @@ -124,24 +124,20 @@ class Ledger: ), f"secret does not contain correct P2SH address: {proof.secret.split(':')[1]}!={txin_p2sh_address}." return valid - def _verify_outputs( - self, total: int, amount: int, output_data: List[BlindedMessage] - ): + def _verify_outputs(self, total: int, amount: int, outputs: List[BlindedMessage]): """Verifies the expected split was correctly computed""" fst_amt, snd_amt = total - amount, amount # we have two amounts to split to fst_outputs = amount_split(fst_amt) snd_outputs = amount_split(snd_amt) expected = fst_outputs + snd_outputs - given = [o.amount for o in output_data] + given = [o.amount for o in outputs] return given == expected - def _verify_no_duplicates( - self, proofs: List[Proof], output_data: List[BlindedMessage] - ): + def _verify_no_duplicates(self, proofs: List[Proof], outputs: List[BlindedMessage]): secrets = [p.secret for p in proofs] if len(secrets) != len(list(set(secrets))): return False - B_s = [od.B_ for od in output_data] + B_s = [od.B_ for od in outputs] if len(B_s) != len(list(set(B_s))): return False return True diff --git a/cashu/mint/router.py b/cashu/mint/router.py index be656df..5fb7b63 100644 --- a/cashu/mint/router.py +++ b/cashu/mint/router.py @@ -3,8 +3,7 @@ from typing import Union from fastapi import APIRouter from secp256k1 import PublicKey -from cashu.core.base import (CheckPayload, MeltPayload, MintPayloads, - SplitPayload) +from cashu.core.base import CheckPayload, MeltPayload, MintPayloads, SplitPayload from cashu.mint import ledger router: APIRouter = APIRouter() @@ -77,9 +76,9 @@ async def split(payload: SplitPayload): """ proofs = payload.proofs amount = payload.amount - output_data = payload.output_data.blinded_messages + outputs = payload.outputs.blinded_messages try: - split_return = await ledger.split(proofs, amount, output_data) + split_return = await ledger.split(proofs, amount, outputs) except Exception as exc: return {"error": str(exc)} if not split_return: diff --git a/cashu/wallet/wallet.py b/cashu/wallet/wallet.py index b941869..a177e7f 100644 --- a/cashu/wallet/wallet.py +++ b/cashu/wallet/wallet.py @@ -174,7 +174,7 @@ class LedgerAPI: ), "number of secrets does not match number of outputs" await self._check_used_secrets(secrets) payloads, rs = self._construct_outputs(amounts, secrets) - split_payload = SplitPayload(proofs=proofs, amount=amount, output_data=payloads) + split_payload = SplitPayload(proofs=proofs, amount=amount, outputs=payloads) resp = requests.post( self.url + "/split", json=split_payload.dict(),