mirror of
https://github.com/aljazceru/nutshell.git
synced 2026-01-04 01:14:21 +01:00
output_data -> outputs
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user