Commit Graph

834 Commits

Author SHA1 Message Date
callebtc
7dea6040cc add derivation paths to example (#389) 2024-01-19 18:15:08 +01:00
callebtc
a518274f7e Nutshell cleanup wishlist (#332)
* 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
2024-01-08 00:57:15 +01:00
callebtc
375b27833a fix missing dleq proof in db (#380) 2023-12-06 13:04:47 +01:00
callebtc
e6ed8fdb46 Mint: verify outputs first during mint (#379)
* verify outputs first during mint

* verify outputs during melt as well
2023-12-03 19:57:49 +01:00
callebtc
7d4ed959e3 Mint/verify_outputs_not_already_signed (#377)
* test output duplication in mint

* add comments to the db connection reuse
2023-12-03 19:26:07 +01:00
callebtc
6c8b1a858f Wallet/fix_nostr_timeout (#376)
* fix nostr receive

* split with amount pre 0.13

* drop 0.13.0 amount with split compatibility
2023-12-03 01:56:58 +01:00
callebtc
74c9317277 mint: fix postgres migrations (#375) 2023-12-03 00:02:05 +01:00
callebtc
34a2e7e5da Mint: invalidate and generate promises in single db transaction for split (#374)
* test for spending output again

* first gernerate (which can fail) then invalidate (db and memory)

* use external get_db_connection function to be compatible with existing Database class in LNbits
2023-12-02 22:54:28 +01:00
callebtc
0ec3af9bf1 Test/mint_add_verification_balance (#373)
* add verification balance

* verify input and outputs amounts before flow

* adjust tests
2023-12-02 18:55:19 +01:00
callebtc
bb51567e72 add test private key (#372) 2023-11-29 17:56:13 -03:00
callebtc
063a9d296d docker mint listen on 0.0.0.0 (#371) 2023-11-29 17:55:18 -03:00
callebtc
fa5193cd8f index on db and read spent proofs from db (#370)
* 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
2023-11-26 06:07:38 -03:00
callebtc
bff30d493d tests failing? (#369) 2023-11-24 15:26:42 -03:00
callebtc
f7d0126805 Fix: Cast keyset keys (amount) to int (#368)
* load keys as integers

* add tests

* make format

* revert format from newer branch
2023-11-24 14:47:36 -03:00
callebtc
b519c7db34 Upadte to c-lightning-REST v0.10.5 (#364) 2023-11-16 12:18:00 -03:00
callebtc
84453f5dbe add CoreLightningRestWallet (#362)
* add CoreLightningRestWallet

* add macaroon loader

* add correct config
2023-11-16 09:50:34 -03:00
callebtc
45d3059c2d Mint: Add LndRest and regtest tests (#359)
* 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
2023-11-14 21:46:06 -03:00
callebtc
286f850de8 fix mint migrations for balance view (#361) 2023-11-14 16:25:27 -03:00
callebtc
2de9adf362 update requirements to 0.14.0 (#360) 2023-11-14 13:04:52 -03:00
callebtc
63bb8ef8bd fakewallet: return preimage (#358) 2023-11-13 18:11:38 -03:00
callebtc
3348ffa139 proof.do_tict() minor fixup (#357) 2023-11-13 07:47:03 -03:00
callebtc
0c3777dd17 ensure that mint keys are loaded before calling appropriate api methods (#356) 2023-11-09 20:42:05 -03:00
callebtc
84cbeb6d30 fix proxy keys (#355)
* fix proxy keys

* fix all tests

* fix tor test
2023-11-09 17:03:45 -03:00
callebtc
a4abbc2eee Postgres migrations: remove balance view before children (#353)
* remove balance view before childredn

* update readme

* CI with postgres

* install postgres in CI

* run postgres tests in CI?

* disable postgres tests for now
2023-11-01 20:55:52 -03:00
callebtc
aa36651629 Fix LNbits backend to use proper BaseModels (#352) 2023-11-01 08:59:32 -03:00
callebtc
22e0ad4b57 use specific keyset for returned change (#351) 2023-10-29 08:57:25 -03:00
callebtc
48f732e9e7 Refactor secret conditions (#350)
* refactor spending conditions and add comments

* fix kind enum deserialization
2023-10-21 16:51:12 +02:00
callebtc
0490f20932 Wallet: Lightning interface (#318)
* 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
2023-10-21 14:38:16 +02:00
callebtc
8a4813aee6 Zero amount invoices: throw error before attempting a payment (#349)
* Zero amount invoices: throw error before attempting a payment

* better naming of fee variables during melt
2023-10-18 16:18:57 +02:00
callebtc
cfab668e54 Mint: Allow 0-valued amounts for blank outputs (#348)
* allow 0 amount for blank outputs

* fix precommit as well
2023-10-18 15:18:07 +02:00
callebtc
3e586705cf format cashu (#347) 2023-10-15 16:17:25 +02:00
callebtc
a76f076dbd [Wallet] Add nostr dependency directly to repo (#346)
* adjust nostr imports

* nostr receive split content by words
2023-10-15 16:06:39 +02:00
callebtc
21bb42f294 fees were not returned if the fees were zero (#345) 2023-10-15 15:04:33 +02:00
sihamon
a7cc210874 Join mint URL and endpoint in a safe way (#298)
* Join mint URL and endpoint in a safe way

* Use posixpath.join for joining URLs
2023-10-13 22:00:42 +02:00
callebtc
c444a063c1 Wallet: Cache keysets (#333)
* accept new keyset id calculation, cache keysets, remove duplicate representations

* remove comments

* check if keyset is present for DLEQ

* load keys from db if available

* store new keyset

* make mypy happy

* make mypy happy

* precommit
2023-10-13 21:58:42 +02:00
callebtc
f1cba62640 Update README.md (#344) 2023-10-13 21:58:16 +02:00
callebtc
be7e40cd03 codecov nutshell (#343) 2023-10-13 21:49:17 +02:00
callebtc
744807b6f4 Remove P2SH (#341)
* remove p2sh

* Fix WalletAPI LockResponse
2023-10-13 21:41:54 +02:00
callebtc
d827579e65 Coalesce all witness fields to Proof.witness (#342)
* call proofs field witness

* test p2pk sig_all=True

* outputs also use witness field
2023-10-13 21:33:21 +02:00
callebtc
c3b3a45436 readme: fix links (#337) 2023-10-09 00:45:02 +02:00
callebtc
1d0394e466 update readme (#336) 2023-10-09 00:40:02 +02:00
callebtc
1149533e82 Wallet: fix secret derivation & new CLI command cashu selfpay (#331)
* refactor wallet restore tests

* fix secret derivation

* selfpay to refresh tokens
2023-10-03 18:34:12 +02:00
callebtc
0959314786 Docker: Add wallet daemon and docker-compose.yml (#321)
* add wallet dockerfile

* add wallet to docker compose

* add dockerfile

* remove expose
2023-09-25 18:09:08 +02:00
callebtc
1f8d328354 more type hints (#330) 2023-09-25 00:47:16 +02:00
callebtc
64805e4a9a Bump to 0.14.0-rc1 (#329)
* bump to 0.14.0

* bump python version

* use python 3.10.4 in check workflow
2023-09-24 19:10:25 +02:00
callebtc
2d3a9234f5 Tests: mint operations (#328)
* mint operations

* fix spelling

* add pending test

* fix tag

* make htlc tests less likelyto fail
2023-09-24 18:54:49 +02:00
callebtc
638324940a Tests: Test with LIGHTNING=True and refactor mint (#326)
* refactor mint verification

* test with lightning=true

* rename proofs_used to secrets_used and refactor

* test with lightning

* spelling fixes
2023-09-24 14:35:13 +02:00
callebtc
f1b621fa90 HTLCs (#325)
* add htlc files

* refactor mint into several components

* add hash lock signatures

* add refund signature checks

* simplify hash lock signature check

* clean up
2023-09-23 19:08:38 +02:00
callebtc
6282e0a22a [Wallet/Mint] DLEQ proofs (#175)
* 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>
2023-09-23 19:06:37 +02:00
callebtc
a1802b2d81 Refactor: P2PKSecret (#323)
* port changes from dleq branch

* adjust tests

* fix tag serialization

* refactor p2pk and secrets into a new Protocol class

* clean up code

* refactor p2pk types from base

* test second refund pubkey
2023-09-21 14:58:42 +02:00