* NUT-04: add description
* skip test for deprecated api
* fix for lndgrpc
* add test for cli
* add two random tests
* add max length to request model validator
* skip cli test with description for deprecated api
* add cli test for invoice command
* default value to None
* clean up db
* db: table lock
* db.table_with_schema
* fix encrypt.py
* postgres nowait
* add timeout to lock
* melt quote state in db
* kinda working
* kinda working with postgres
* remove dispose
* getting there
* porperly clean up db for tests
* faster tests
* configure connection pooling
* try github with connection pool
* invoice dispatcher does not lock db
* fakewallet: pay_if_regtest waits
* pay fakewallet invoices
* add more
* faster
* slower
* pay_if_regtest async
* do not lock the invoice dispatcher
* test: do I get disk I/O errors if we disable the invoice_callback_dispatcher?
* fix fake so it workss without a callback dispatchert
* test on github
* readd tasks
* refactor
* increase time for lock invoice disatcher
* try avoiding a race
* remove task
* github actions: test regtest with postgres
* mint per module
* no connection pool for testing
* enable pool
* do not resend paid event
* reuse connection
* close db connections
* sessions
* enable debug
* dispose engine
* disable connection pool for tests
* enable connection pool for postgres only
* clean up shutdown routine
* remove wait for lightning fakewallet lightning invoice
* cancel invoice listener tasks on shutdown
* fakewallet conftest: decrease outgoing delay
* delay payment and set postgres only if needed
* disable fail fast for regtest
* clean up regtest.yml
* change order of tests_db.py
* row-specific mint_quote locking
* refactor
* fix lock statement
* refactor swap
* refactor
* remove psycopg2
* add connection string example to .env.example
* remove unnecessary pay
* shorter sleep in test_wallet_subscription_swap
* wip
* wip
* model
* refactor wallet transactions
* refactor wallet
* sending with fees works and outputs fill up the wallet
* wip work
* ok
* comments
* receive with amount=0
* correctly import postmeltrequest
* fix melt amount
* tests working
* remove mint_loaded decorator in deprecated wallet api
* wallet works with units
* refactor: melt_quote
* fix fees
* add file
* fees for melt inputs
* set default input fee for internal quotes to 0
* fix coinselect
* coin selection working
* yo
* fix all tests
* clean up
* last commit added fees for inputs for melt transactions - this commit adds a blanace too low exception
* fix fee return and melt quote max allowed amount check during creation of melt quote
* clean up code
* add tests for fees
* add melt tests
* update wallet fee information
* fix keys
* fix tests
* backwards compatible api upgrade
* upgrade seems to work
* fix tests
* add deprecated api functions
* add more tests of backwards compat
* add test serialization for nut00
* remove a redundant test
* move mint and melt to new api
* mypy works
* CI: mypy --check-untyped-defs
* add deprecated router
* add hints and remove logs
* fix tests
* cleanup
* use new mint and melt endpoints
* tests passing?
* fix mypy
* make format
* make format
* make format
* commit
* errors gone
* save
* adjust the API
* store quotes in db
* make mypy happy
* add fakewallet settings
* remove LIGHTNING=True and pass quote id for melt
* format
* tests passing
* add CoreLightningRestWallet
* add macaroon loader
* add correct config
* preimage -> proof
* move wallet.status() to cli.helpers.print_status()
* remove statuses from tests
* remove
* make format
* Use httpx in deprecated wallet
* fix cln interface
* create invoice before quote
* internal transactions and deprecated api testing
* fix tests
* add deprecated API tests
* fastapi type hints break things
* fix duplicate wallet error
* make format
* update poetry in CI to 1.7.1
* precommit restore
* remove bolt11
* oops
* default poetry
* store fee reserve for melt quotes and refactor melt()
* works?
* make format
* test
* finally
* fix deprecated models
* rename v1 endpoints to bolt11
* raise restore and check to v1, bump version to 0.15.0
* add version byte to keyset id
* remove redundant fields in json
* checks
* generate bip32 keyset wip
* migrate old keysets
* load duplicate keys
* duplicate old keysets
* revert router changes
* add deprecated /check and /restore endpoints
* try except invalidate
* parse unit from derivation path, adjust keyset id calculation with bytes
* remove keyest id from functions again and rely on self.keyset_id
* mosts tests work
* mint loads multiple derivation paths
* make format
* properly print units
* fix tests
* wallet works with multiple units
* add strike wallet and choose backend dynamically
* fix mypy
* add get_payment_quote to lightning backends
* make format
* fix startup
* fix lnbitswallet
* fix tests
* LightningWallet -> LightningBackend
* remove comments
* make format
* remove msat conversion
* add Amount type
* fix regtest
* use melt_quote as argument for pay_invoice
* test old api
* fees in sats
* fix deprecated fees
* fixes
* print balance correctly
* internally index keyset response by int
* add pydantic validation to input models
* add timestamps to mint db
* store timestamps for invoices, promises, proofs_used
* fix wallet migration
* rotate keys correctly for testing
* remove print
* update latest keyset
* fix tests
* fix test
* make format
* make format with correct black version
* remove nsat and cheese
* test against deprecated mint
* fix tests?
* actually use env var
* mint run with env vars
* moar test
* cleanup
* simplify tests, load all keys
* try out testing with internal invoices
* fix internal melt test
* fix test
* deprecated checkfees expects appropriate fees
* adjust comment
* drop lightning table
* split migration for testing for now, remove it later
* remove unused lightning table
* skip_private_key -> skip_db_read
* throw error on migration error
* reorder
* fix migrations
* fix lnbits fee return value negative
* fix typo
* comments
* add type
* make format
* split must use correct amount
* fix tests
* test deprecated api with internal/external melts
* do not split if not necessary
* refactor
* fix test
* make format with new black
* cleanup and add comments
* add quote state check endpoints
* fix deprecated wallet response
* split -> swap endpoint
* make format
* add expiry to quotes, get quote endpoints, and adjust to nut review comments
* allow overpayment of melt
* add lightning wallet tests
* commiting to save
* fix tests a bit
* make format
* remove comments
* get mint info
* check_spendable default False, and return payment quote checking id
* make format
* bump version in pyproject
* update to /v1/checkstate
* make format
* fix mint api checks
* return witness on /v1/checkstate
* no failfast
* try fail-fast: false in ci.yaml
* fix db lookup
* clean up literals
* mint does not start yet
* fix import
* revert mint db migrations
* handle zero fee case
* cli: adjust fee message
* wallet: replace requests with httpx
* clean up
* rename http client decorator
* fix pending check in main, todo: TEST PROXIES WITH HTTPX
* fix up
* use httpx for nostr as well
* update packages to same versions as https://github.com/lnbits/lnbits/pull/1609/files
* fix proof deserialization
* check for string
* tests passing
* adjust wallet api tests
* lockfile
* add correct responses to Lightning interface and delete melt_id for proofs for which the payent has failed
* fix create_invoice checking_id response
* migrations atomic
* proofs are stored automatically when created
* make format
* use bolt11 lib
* stricter type checking
* add fee response to payments
* assert fees in test_melt
* test that mint_id and melt_id is stored correctly in proofs and proofs_used
* remove traces
* refactor: Lightning interface into own file and LedgerCrud with typing
* fix tests
* fix payment response
* rename variable
* produce dleq
* start working on verification
* wip dleq
* Use C_ instead of C in verify DLEQ! (#176)
* Fix comments (DLEQ sign error)
* Fix alice_verify_dleq in d_dhke.py
* Fix_generate_promise in ledger.py
* Fix verify_proofs_dleq in wallet.py
* Fix: invalid public key (#182)
* Use C_ instead of C in verify DLEQ!
* Fix comments (DLEQ sign error)
* Fix alice_verify_dleq in d_dhke.py
* Fix_generate_promise in ledger.py
* Fix verify_proofs_dleq in wallet.py
* Fix: invalid public key
* Exception: Mint Error: invalid public key
* Update cashu/wallet/wallet.py
---------
Co-authored-by: calle <93376500+callebtc@users.noreply.github.com>
* Update cashu/core/b_dhke.py
* Update tests/test_cli.py
* verify all constructed proofs
* dleq upon receive
* serialize without dleq
* all tests passing
* make format
* remove print
* remove debug
* option to send with dleq
* add tests
* fix test
* deterministic p in step2_dleq and fix mypy error for hash_to_curve
* test crypto/hash_e and crypto/step2_bob_dleq
* rename A to K in b_dhke.py and test_alice_verify_dleq
* rename tests
* make format
* store dleq in mint db (and readd balance view)
* remove `r` from dleq in tests
* add pending output
* make format
* works with pre-dleq mints
* fix comments
* make format
* fix some tests
* fix last test
* test serialize dleq fix
* flake
* flake
* keyset.id must be str
* fix test decorators
* start removing the duplicate fields from the dleq
* format
* remove print
* cleanup
* add type anotations to dleq functions
* remove unnecessary fields from BlindedSignature
* tests not working yet
* spelling mistakes
* spelling mistakes
* fix more spelling mistakes
* revert to normal
* add comments
* bdhke: generalize hash_e
* remove P2PKSecret changes
* revert tests for P2PKSecret
* revert tests
* revert test fully
* revert p2pksecret changes
* refactor proof invalidation
* store dleq proofs in wallet db
* make mypy happy
---------
Co-authored-by: moonsettler <moonsettler@protonmail.com>
* test cli arent async tests
* unused SERVER_ENDPOINT var
* async test werent marked async
* make test didnt use correct ports
* enable more verbose test logging
* refactor conftest variable
* not needed anymore are set in conftest
* using test_data now for conftest
* formatting
* comment out invalid hex
* remove test dir before creating it to be sure
* keep data from altest testrun and ad test_data to ignore
* ignore error for CI
* add duplicate env var
* fix confest
* Update pyproject.toml
* fix up tests
* short p2pk locktimes for faster tests
---------
Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com>
* init flake8
* exclude nostr client, and add ds_store to gitignore
* fix flake8 F811 issue, redefinition of unused variables
* add flake8 to workflow
* F401 unused imports
* F541 f-string is missing placeholders
* E501 line too long > 150 characters
* E722 no bare except
* E402 module level import not at top of file
* F405 no star imports
* E712 comparison to False should be 'if cond is False:'
* F841 local variable is assigned to but never used
* E266 too many leading '#' for block comment
* E265, E261
* E713 test for membership should be 'not in'
* E711, E741
E741 ambiguous variable name 'l'
E711 comparison to None should be 'if cond is None:'
* flake config
* isort
* refactor makefile flake8 usage
* reflaking the rebase
* black
* fix tests?
* black
* fix line lenght it test_cli
* sort out makefile
* fix strings
* reintroduce black-check
* reflake and mypy
* isort
* Update cashu/wallet/wallet.py
Co-authored-by: Angus Pearson <angus@toaster.cc>
* Update cashu/mint/ledger.py
Co-authored-by: Angus Pearson <angus@toaster.cc>
---------
Co-authored-by: Angus Pearson <angus@toaster.cc>
With the recent update to NUT-08, we can ensure that the amount of blank
outputs is always enough to cover any overpaid lightning fees. This
change implements this functionality for both the wallet and the mint.
The mint updateis backwards-compatible with respect to old wallets.
* fix private key derivation
* add backwards compatilibity for old keysets
* bump version
* test pubkeys and private keys
* make format
* reset keys for tests
* fix cli tests