* refactor split
* add sigflag to Secret base model
* add better comments
* add comments
* add witnesses inside /split
* more comments
* sign outputs if proofs indicate it
* add signature to outputs but mint does not check it yet
* multiple scriptsigs
* signatures on outputs
* add multisig tests
* rename test
* timelock -> locktime
* move parameters to tags
* convert back to List[List[str]]
* errors are back!
* fix all the stuff
* more testing
* make format
* 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
* store public keys of each keyset
* deserialize public keys from db
* Fix: import accidentally removed during merge
* Sort imports correctly
---------
Co-authored-by: sihamon <sihamon@proton.me>
* Allow to start wallet API by cashu --daemon
* Provide access to wallet name via settings
* Make format
* Use flag is_eager for daemon option
* add setting api_host
---------
Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com>
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.
* Assert `mint_private_key` is available at startup
If the mint's private key is not available, the ledger cannot be created
because no pubkey can be derived. We now explicitly assert this with a
descriptive error message.
Additionally fixed some typing errors.
* Shorten error message
* Allow to set maximum peg in/out for mint
* Make format
* remove duplicate error
* move business logic to ledger
---------
Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com>
* 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>
* payment_hash -> hash
* add aes encryption
* urlsafe base64 for free
* move files to crypto
* use random hash instead of encryption
* get rid of useless code
* simplify
* 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
* relative import all the things
* make format
* add __init__.py to cli/
* fix mypy errors
* get rid of more mypy
* mypy fix crud.py
* fix another mypy error
* fix PostMeltRequest and /checkfees to GET
* POST /check -> GET /check
* fix GetCheckSpendableResponse
* rename models
* make format
* revert GET
* bump version to 0.9
* skip nostr test
* adjust tokenv2 and make it backwards compatible
* fix dict to list
* use pydantic object and not the dtoken
* make format
* fix typo in _meltrequest_include_fields
* reorder functions
* fixes and tests working
* bump version to 0.8.3