mint start

This commit is contained in:
callebtc
2022-09-11 14:46:23 +03:00
parent 283e3a74aa
commit 6b470080eb
5 changed files with 21 additions and 4 deletions

View File

@@ -21,6 +21,8 @@ class MyFlaskApp(Flask):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
async def create_tasks_func(): async def create_tasks_func():
await asyncio.wait([m001_initial(ledger.db)]) await asyncio.wait([m001_initial(ledger.db)])
await ledger.load_used_proofs()
print("Mint started.")
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
loop.run_until_complete(create_tasks_func()) loop.run_until_complete(create_tasks_func())

View File

@@ -29,6 +29,19 @@ async def store_promise(
) )
async def get_proofs_used(
db: Database,
conn: Optional[Connection] = None,
):
rows = await (conn or db).fetchall(
"""
SELECT secret from proofs_used
"""
)
return [row[0] for row in rows]
async def invalidate_proof( async def invalidate_proof(
proof: dict, proof: dict,
db: Database, db: Database,

View File

@@ -11,16 +11,19 @@ import core.b_dhke as b_dhke
from core.db import Database from core.db import Database
from core.split import amount_split from core.split import amount_split
from core.settings import MAX_ORDER from core.settings import MAX_ORDER
from mint.crud import store_promise, invalidate_proof from mint.crud import store_promise, invalidate_proof, get_proofs_used
class Ledger: class Ledger:
def __init__(self, secret_key: str, db: str): def __init__(self, secret_key: str, db: str):
self.master_key = secret_key self.master_key = secret_key
self.proofs_used = set() # no promise proofs have been used self.proofs_used = set()
self.keys = self._derive_keys(self.master_key) self.keys = self._derive_keys(self.master_key)
self.db = Database("mint", db) self.db = Database("mint", db)
async def load_used_proofs(self):
self.proofs_used = await get_proofs_used(db=self.db)
@staticmethod @staticmethod
def _derive_keys(master_key): def _derive_keys(master_key):
"""Deterministic derivation of keys for 2^n values.""" """Deterministic derivation of keys for 2^n values."""

View File

@@ -24,7 +24,7 @@ MarkupSafe = "2.1.1"
urllib3 = "1.26.9" urllib3 = "1.26.9"
Werkzeug = "2.0.3" Werkzeug = "2.0.3"
ecc-pycrypto = {git = "https://github.com/lc6chang/ecc-pycrypto.git", rev = "v1.0.1"} ecc-pycrypto = {git = "https://github.com/lc6chang/ecc-pycrypto.git", rev = "v1.0.1"}
psycopg2-binary = "^2.9.3" psycopg2 = "^2.9.3"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]

View File

@@ -1,5 +1,4 @@
ecc==0.0.1 ecc==0.0.1
ecc_pycrypto==1.0.0
psycopg2==2.9.3 psycopg2==2.9.3
pytest_asyncio==0.19.0 pytest_asyncio==0.19.0
SQLAlchemy==1.3.24 SQLAlchemy==1.3.24