Commit Graph

770 Commits

Author SHA1 Message Date
callebtc
b196c34427 [WIP] [NUTs] NUT-06 update: deprecate amount field in /split (#263)
* mint upgraded and still backwards compatible

* cleanup

* fix tests

* fix things

* add deprecated message to new struct

* fix test

* fix typo

* readd endpoint that got lost during merge

* version bump in pyproject.toml

* remove wallet backwards compatibility because it makes no sense

* comment for backwards compat

* fix comment
2023-07-25 11:13:20 +02:00
callebtc
27bc2bda06 remove mint_info pubkey (#289) 2023-07-24 21:27:45 +02:00
callebtc
0b2468914d Determinstic secrets / ecash restore (#131)
* 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
2023-07-24 13:42:56 +02:00
callebtc
337456333e P2PK: Sighash flags and multisig ecash because why not (#284)
* 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
2023-07-18 21:38:31 +02:00
callebtc
1b6c68bc47 invalidate proofs before unsetting pending state (#288) 2023-07-18 15:17:15 +02:00
dni ⚡
c7dd582b56 FEAT: improve on workflows and makefile (#276)
* FEAT: improve on workflows and makefile

* update to poetry 1.5.1

* caching needs newer python task

quickfix
2023-07-18 00:13:39 +02:00
callebtc
8a9b0662a1 mint info: catch error (#285) 2023-07-15 00:20:23 +02:00
callebtc
4eb8afe516 Wallet: refactor split (#283)
* refactor split

* add comments

* add witnesses inside /split

* more comments
2023-07-11 00:40:18 +02:00
callebtc
9d5efa6c2e clarify variable names (#279) 2023-07-09 00:43:00 +02:00
callebtc
84793fadca bump pyproject 0.12.3 (#278) 2023-07-08 22:54:44 +02:00
callebtc
73b015b642 Nut07/proof pending (#277)
* 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
2023-07-08 22:50:17 +02:00
callebtc
56040594b7 relative import of secp (#275) 2023-07-05 10:03:02 +02:00
callebtc
01d498309b [Wallet/mint] P2PK with timelocks (#270)
* 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
2023-07-02 01:56:05 +02:00
callebtc
4beaf8ff41 add http proxy option to wallet (#269) 2023-06-29 22:43:45 +02:00
callebtc
77278127ae [Wip] [Wallet] NUT-09: Get mint info and add many type annotations (#262)
* get mint info and add many type annotations

* tests

* make format
2023-06-25 02:21:40 +02:00
callebtc
339c3fb066 Fix/fee_reserve_outputs (#261)
* fix fee reserve

* fix tests
2023-06-23 20:47:56 +02:00
callebtc
5782421343 fee reserve 0 doesnt like log 2023-06-23 20:41:29 +02:00
callebtc
65ab8e8120 fee reserves cant be negative (#260) 2023-06-23 20:37:21 +02:00
callebtc
ae4eb43b8e fix wallet pubkey migration start (#259) 2023-06-23 20:21:21 +02:00
callebtc
205b5b9805 bump version to 0.12.1 (#258) 2023-06-23 20:04:49 +02:00
sihamon
a0df47f13a Add multi-mint swap to CLI and API (#212)
* Add multi-mint swap to CLI and API

* Add confirmation prompt to CLI

* Replace several assert statements

* Define response for API endpoint swap

* Adapt to latest changes on main

* Fix: missing argument after latest changes on main

* API: use local wallet for swap

* Improve swap command

* clean up cli swap

* fix comment

* clean up router

* fix up

* remove outgoing

---------

Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com>
2023-06-23 20:04:28 +02:00
callebtc
25385f1f16 [Wallet] store public keys of each keyset (#165)
* 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>
2023-06-23 19:30:45 +02:00
callebtc
a3e67d21aa Use m̶u̶l̶t̶i̶p̶r̶o̶c̶e̶s̶s̶i̶n̶g̶ asyncio locks instead of db locks (#256)
* use mp locks instead of db locks

* replace mp.Lock with asyncio.Lock

* make format

* push

* remove db connection (and lock) and delete asyncio locks
2023-06-23 19:10:32 +02:00
callebtc
62a6ec34b0 no async for deserialization functions (#255) 2023-06-23 00:21:31 +02:00
callebtc
c61971b268 balance: await wallet.load_proofs() (#254) 2023-06-18 15:12:32 +02:00
callebtc
12bc0c23cb [Mint] Fix: check keyset id in mint and allow custom split amounts for LIGHTNING=False (#253)
* check keyset existence and return error

* fix split specific amounts for LIGHTNING=False

* wallet loading

* remove wallet balance checks
2023-06-18 14:00:34 +02:00
callebtc
67caf5f532 update readme (#251) 2023-06-11 00:16:00 +02:00
callebtc
defcf7aac4 [Wallet] DB optimization for faster payments (#250)
* get rid of redundant proof loads

* fix test?

* fix one test?

* api: load_mint for invoice

* clean up tests
2023-06-11 00:10:07 +02:00
callebtc
959cc00c8a [Wallet] send without split (#249)
* send without split

* change test amount for nosplit send
2023-06-10 21:45:47 +02:00
callebtc
af3e82691e [Wallet] Allow minting of specific amounts (#248)
* 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

* fix: add missing amount

* refactor mint

* cli and api for splitting and tests

* invoice balance?

* remove balance checks until I know why it doesnt update

* remove all balance checks from tests

* delete old code

* remove debug logs

---------

Co-authored-by: sihamon <sihamon@proton.me>
2023-06-10 20:45:03 +02:00
sihamon
786fbf2856 Allow to start wallet API by cashu --daemon (#243)
* 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>
2023-06-08 14:42:37 +02:00
callebtc
5c820f9469 fix typo (#239) 2023-05-26 12:51:36 +02:00
callebtc
f052e2e788 update .env example to reflect latest flags (#238) 2023-05-26 12:49:59 +02:00
callebtc
7ed2161dba [Wallet] API: optional amount in InvoiceResponse (#236)
* fix missing value in InvoiceResponse API

* wallet api: optional amount in invoiceresponse

* skip tor test again
2023-05-23 18:30:33 +02:00
xphade
21069fb61a Implement dynamic amount of tokens for change (#223)
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.
2023-05-23 17:40:48 +02:00
sihamon
5df0a9aa59 Catch all exceptions in wallet API (#220)
* Catch all exceptions in wallet API

* Use middleware instead of route class to catch exceptions

* Wallet API: simplify load_mint
2023-05-22 21:06:31 +02:00
sihamon
08ceeda36f [Wallet] Define responses for API (#233)
* Define responses for wallet API

* Make format
2023-05-22 14:31:29 +02:00
Erik Brakke
a3ded1cd94 Add secp256k1 deps to dockerfile (#235)
Co-authored-by: Erik Brakke <erik@datasembly.com>
2023-05-22 14:25:26 +02:00
callebtc
151fa1421a db: postgres cast int to bigint (#231)
* db: postgres cast int to bigint

* migrations: use db.big_int
2023-05-19 08:59:13 +02:00
Angus Pearson
730772d6a7 [Mint] LNBits backend refactor httpx (#234) 2023-05-19 08:55:19 +02:00
Angus Pearson
e25100c1e0 Mint API: Check ?amount is within a sensible range (#226) 2023-05-18 22:31:20 +02:00
callebtc
5f3f88c8ed [Mint] rewrite lnbits backend with httpx (#230)
* rewrite lnbits backend with httpx

* add httpx
2023-05-18 19:47:44 +02:00
callebtc
f0735cfc4a fix postgres views, closes #206 (#222) 2023-05-16 22:14:13 +02:00
callebtc
d0283670d3 Refactor Compat and Database for LNbits comaptibility (#219)
* remove changes to Compat and Database so its compatible with the classes from LNbits

* ledger.py: Annotate Connection type

* fix invoice memp
2023-05-15 22:15:56 +02:00
callebtc
6272aee189 make format (#218) 2023-05-15 17:11:02 +02:00
Semisol
d4c7a15e89 add transactions and locking for certain operations (#217) 2023-05-15 17:09:28 +02:00
callebtc
ddd8cebdb0 more logging (#216) 2023-05-15 00:37:46 +02:00
callebtc
4789e2a504 Mint/moremore_traces (#215)
* more trace logging

* a lot more logging
2023-05-15 00:15:07 +02:00
callebtc
352f77f9e9 more traces (#214) 2023-05-14 23:39:03 +02:00
callebtc
68d9020cb3 mint: add trace logs (#213) 2023-05-14 23:06:35 +02:00