* with postgres
* postgres test explicit
* make format
* start postgres only if needed
* remove if again
* print db
* db in matrix
* delete schema
* use new env var MINT_TEST_DATABASE for tests
* add db path to regtest
* storage y db
* for proofs_pending as well
* pending check with Y
* fix pending table
* test_race_pending
* skip race condition test on github
* skip test on github actions
* move test_cli.py -> test_wallet_cli.py
* get full proof from memory
* add domain separation wallet
* 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
* index on db and read spent proofs from db
* add benchmark for testing
* remove benchmark
* add option to disable cached secrets
* disable python 3.9 tests
* update
* working
* test with lnd
* update action
* cache poetry
* add lndrest
* enable regtest
* add regtests.yml
* poetry version
* add helpers
* save
* run legend regtest fork
* actually start
* use bash
* give rights
* remove cache?
* change order
* tests succeed with lndrestwallet
* check if wallet is set
* settings for regtest
* fix fakewallet test
* remove wacky balance check
* adjust permissions
* try with sudo
* adjust example
* remove eclair
* remove balance view before childredn
* update readme
* CI with postgres
* install postgres in CI
* run postgres tests in CI?
* disable postgres tests for now
* 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
* 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>
* first working version but some sats go missing
* back at it
* make format
* restore to main
* move mint database
* fix some tests
* make format
* remove old _construct_outputs we reintroduced in merge with main
* add type annotations
* add wallet private key to tests
* wallet: load proofs
* fix tests
* _generate_secrets with deterministic generation (temporary)
* allow wallet initialization with custom private key
* add pk to wallet api test
* mint scope=module
* remove private_key from test_wallet.py to see if it helps with the github tests
* readd private keys to tests
* workflow without env
* add more private key!
* readd env
* ledger scope session
* add default private key for testing
* generate private keys if not available
* testing
* its working!!!
* first iteration of bip32 working
* get mint info and add many type annotations
* tests
* fix tests with bip32
* restore from multiple mints
* disable profiler
* make format
* failed POST /mint do not increment secret counter
* store derivation path in each token
* fix tests
* refactor migrations so private keys can be generated by the wallet with .with_db() classmethod
* start fixing tests
* all tests passing except those that need to set a specific private key
* bip39 mnemonic to seed - with db but restore doesnt work yet with custom seed
* mnemonic restore works
* enter mnemonic in cli
* fix tests to use different mnemonic
* properly ask user for seed input
* tests: dont ask for inputs
* try to fix tests
* fix cashu -d
* fixing
* bump version and add more text to mnemonic enter
* add more comments
* add many more comments and type annotations in the wallet
* dont print generated mnemonic and dont wait for input
* fix test
* does this fix tests?
* sigh....
* make format
* do not restore from an initialized wallet
* fix mnemonics
* fix nitpicks
* print wallet name if nonstandard wallet
* fix merge error and remove comments
* poetry lock and requirements
* remove unused code
* fix tests
* mnemonic.lower() and add keyset id if not present for backwards compat
* edit comment
* add pending state
* proofs spendable check and tests
* bump version to 0.12.3
* remove sleep for testing
* comment clarify
* use list comprehension in pending list
* p2pk with nostr privatekey and timelocks
* add p2pk
* fix test
* fix test with custom secret
* sign whole split transaction
* p2pk signature now commits to entire secret and thus to a nonce
* use schnorr signatures
* revamp P2SH and P2PK with new Secret model
* test p2pk
* add comments
* add nostr private key to tests
* fix nostr receive
* make format
* test redemption after timelock
* refactor Server.serialize()
* sign sha256(secret)
* add optional refund pubkey that triggers after timelock
* use nostr private key for now (including nsec parser)
* use nostr private key and fix tests
* bump version to 0.12.2
* Add REST API for Cashu wallet
* Add simple way to start REST API server
* Add simple tests for wallet REST API
* Add TokenV3 to REST API
* Improve tests for wallet REST API
* Make format
* Remove unused import
* Rename nostr module for API
* Unify helper functions for CLI and API
* Make format
* Move error handling from helper functions to API
* Remove 'is_api' flag where possible
* Make format, cleanup, add comments
* Fix typo for burn also in API
* Improve error handling for API
* Add flag 'trust_new_mint' to receive command
To enable trusting or mistrusting unknown mints via API
* Allow selecting mint for sending from API
* Fix: set specific mint via API
* Fix: select mint with maximum balance via CLI
* Use different variables for mint_nr
* Allow selecting mint when sending via nostr via API
* Remove unnessecary 'is_api' flags from 'send_nostr'
* Remove HTTPException from nostr.py
* Allow selecting mint for sending with parameter also via CLI
* Allow trusting unknown mint for receiving also via CLI
* Make format
* Enable trusting unknown mint also when receiving via nostr
* Fix: wrong indentation of in receive function
* Use relative imports for wallet API
* Unify get_mint_wallet for CLI and API
* Unify send command for CLI and API
* Unify receive for CLI and API
* Catch errors in nostr via API
* Remove flag 'is_api' from verify_mints_tokenv2
* Remove cli_helpers left from last merge
* refactor cli selection
* load mint in nostr_send
* cleanup
* add cli_helpers.py
* legacy deserialization in cli
* make format
* clean up api response
* fix tests
* try pk
* verify mints in api
* try github tests
* Fix: verify_mints for API
* Uncomment verify_mints in receive of API
* update README
* Show mint url in pending
* clean up balance response
* fix test
* mint selection in api
* clean up API
* CLI: verify mint for receive -a
* clean up
* Rest -> REST
* Remove unused imports
---------
Co-authored-by: sihamon <sihamon@proton.me>
Co-authored-by: sihamon <126967444+sihamon@users.noreply.github.com>
* 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
* annotate context
* remove whitespace
* test CLI
* make format
* github action with submodule checkout
* maybe now
* vllt ja nu
* und no?
* back to normal mint running
* githuuuuub
* COME OOOON!
* SO. CLOSE.
* make format
* new test
* fix it
* make format
* receive v1 token test