use compressed secret

This commit is contained in:
callebtc
2022-09-22 11:52:40 +03:00
parent edaedf01b4
commit 43e7889cab
9 changed files with 85 additions and 46 deletions

View File

@@ -5,7 +5,6 @@ import base64
import json
import math
from datetime import datetime
from functools import wraps
from itertools import groupby
from operator import itemgetter
@@ -18,7 +17,7 @@ from core.base import Proof
from core.bolt11 import Invoice
from core.helpers import fee_reserve
from core.migrations import migrate_databases
from core.settings import CASHU_DIR, LIGHTNING, MINT_URL
from core.settings import CASHU_DIR, DEBUG, LIGHTNING, MINT_URL
from wallet import migrations
from wallet.crud import get_reserved_proofs
from wallet.wallet import Wallet as Wallet

View File

@@ -1,25 +1,21 @@
import base64
import json
import random
import secrets as scrts
import uuid
from typing import List
import requests
import core.b_dhke as b_dhke
from core.base import (
BlindedMessage,
BlindedSignature,
CheckPayload,
MeltPayload,
MintPayloads,
Proof,
SplitPayload,
)
from core.base import (BlindedMessage, BlindedSignature, CheckPayload,
MeltPayload, MintPayloads, Proof, SplitPayload)
from core.db import Database
from core.secp import PublicKey
from core.settings import DEBUG
from core.split import amount_split
from wallet.crud import get_proofs, invalidate_proof, store_proof, update_proof_reserved
from wallet.crud import (get_proofs, invalidate_proof, store_proof,
update_proof_reserved)
class LedgerAPI:
@@ -55,6 +51,10 @@ class LedgerAPI:
proofs.append(proof)
return proofs
def _generate_secret(self, randombits=128):
"""Returns base64 encoded random string."""
return scrts.token_urlsafe(randombits // 8)
def request_mint(self, amount):
"""Requests a mint from the server and returns Lightning invoice."""
r = requests.get(self.url + "/mint", params={"amount": amount})
@@ -66,7 +66,7 @@ class LedgerAPI:
secrets = []
rs = []
for amount in amounts:
secret = str(random.getrandbits(128))
secret = self._generate_secret()
secrets.append(secret)
B_, r = b_dhke.step1_bob(secret)
rs.append(r)
@@ -94,7 +94,7 @@ class LedgerAPI:
secrets = []
payloads: MintPayloads = MintPayloads()
for output_amt in fst_outputs + snd_outputs:
secret = str(random.getrandbits(128))
secret = self._generate_secret()
B_, r = b_dhke.step1_bob(secret)
secrets.append((r, secret))
payload: BlindedMessage = BlindedMessage(
@@ -191,7 +191,9 @@ class Wallet(LedgerAPI):
@staticmethod
async def serialize_proofs(proofs: List[Proof]):
proofs_serialized = [p.dict() for p in proofs]
proofs_serialized = [p.to_dict() for p in proofs]
if DEBUG:
print(proofs_serialized)
token = base64.urlsafe_b64encode(
json.dumps(proofs_serialized).encode()
).decode()