mirror of
https://github.com/aljazceru/nutshell.git
synced 2025-12-21 19:14:19 +01:00
mint start
This commit is contained in:
@@ -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())
|
||||||
|
|||||||
13
mint/crud.py
13
mint/crud.py
@@ -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,
|
||||||
|
|||||||
@@ -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."""
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user