Commit Graph

218 Commits

Author SHA1 Message Date
David Caseria
8d32af740e Add Amount::convert_unit convenience method 2025-06-27 15:28:39 -04:00
thesimplekid
ae84c61a03 fix: cdk-cli create wallets for units mint supports 2025-06-25 19:45:20 +01:00
lollerfirst
c61fd3830a Keysets V2 (#702)
---------
Co-authored-by: thesimplekid <tsk@thesimplekid.com>
2025-06-19 15:36:16 +01:00
thesimplekid
9c3a64b029 fix: handle old nut15 spec 2025-06-06 23:36:45 +01:00
asmo
548bbf1b40 Secret remove pub properties (#782)
* refactor: add getters to Secret and SecretData

* refactor: use new getters for Secret and SecretData in wallet receive

* refactor: using SecretData constructor

---------

Co-authored-by: thesimplekid <tsk@thesimplekid.com>
2025-06-05 12:25:56 +01:00
C
ade48cd8a9 Introduce a SignatoryManager service. (#509)
* WIP: Introduce a SignatoryManager service.

The SignatoryManager manager provides an API to interact with keysets, private
keys, and all key-related operations, offering segregation between the mint and
the most sensible part of the mind: the private keys.

Although the default signatory runs in memory, it is completely isolated from
the rest of the system and can only be communicated through the interface
offered by the signatory manager. Only messages can be sent from the mintd to
the Signatory trait through the Signatory Manager.

This pull request sets the foundation for eventually being able to run the
Signatory and all the key-related operations in a separate service, possibly in
a foreign service, to offload risks, as described in #476.

The Signatory manager is concurrent and deferred any mechanism needed to handle
concurrency to the Signatory trait.

* Fixed missing default feature for signatory

* Do not read keys from the DB

* Removed KeysDatabase Trait from MintDatabase

All Keys operations should be done through the signatory

* Make sure signatory has all the keys in memory

Drop also foreign constraints on sqlite

* Fix race condition

* Adding debug info to failing test

* Add `sleep` in test

* Fixed issue with active auth keyset

* Fixed dependency

* Move all keys and keysets to an ArcSwap.

Since the keys and keysets exist in RAM, most wrapping functions are infallible
and synchronous, improving performance and adding breaking API changes.

The signatory will provide this information on the boot and update when the
`rotate_keyset` is executed.

Todo: Implement a subscription key to reload the keys when the GRPC server
changes the keys. For the embedded mode, that makes no sense since there is a
single way to rotate keys, and that bit is already covered.

* Implementing https://github.com/cashubtc/nuts/pull/250

* Add CLI for cdk-signatory to spawn an external signatory

Add to the pipeline the external signatory

* Update tests

* Apply suggestions from code review

Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
Co-authored-by: thesimplekid <tsk@thesimplekid.com>

* Minor change

* Update proto buf to use the newest format

* Rename binary

* Add instrumentations

* Add more comments

* Use a single database for the signatory

Store all keys, even auth keys, in a single database. Leave the MintAuthDatabse
trait implementation for the CDK but not the signagtory

This commit also moves the cli mod to its own file

* Update dep

* Add `test_mint_keyset_gen` test

---------

Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
Co-authored-by: thesimplekid <tsk@thesimplekid.com>
2025-05-28 11:43:30 -04:00
David Caseria
0e250af87a Export NUT-06 supported settings field (#764)
* Export NUT-06 supported settings field

* Fix doc test
2025-05-24 05:57:36 -04:00
thesimplekid
b63dc1045d refactor: nut04 and nut05 (#749) 2025-05-19 09:49:11 +01:00
thesimplekid
3920c6f9bc fix: nut18 payment request encoding/decoding (#758)
* fix: nut18 payment request encoding/decoding

* refactor: reorder nut18fns

* refactor: reorder nut18
2025-05-18 10:04:02 +01:00
thesimplekid
70944500fc chore: clippy mint_url (#759) 2025-05-18 09:05:44 +01:00
thesimplekid
c001375b32 fix: mint url trailing slash (#757) 2025-05-17 20:01:16 +01:00
thesimplekid
df0de05571 fix: get spendable to return witness (#756) 2025-05-17 20:00:49 +01:00
thesimplekid
67342ec793 feat: htlc from hash (#753)
* feat: htlc from hash

* chore: typos
2025-05-17 14:21:49 +01:00
thesimplekid
385ec4d295 feat: optional transport and nut10 secret on payment request (#744)
* feat: optional transport on payment request

* feat: create token for payment rquest

* feat: create payment request

* feat: arg append
2025-05-15 09:06:10 +01:00
thesimplekid
e268866446 chore: clippy (#750)
* chore: clippy

* chore: fmt
2025-05-14 15:55:37 +01:00
thesimplekid
d880bb13cc refactor: Update SupportedMethods with WsCommand enum and new constructor 2025-04-29 08:53:55 +01:00
thesimplekid
570782e3b6 chore: clippy 2025-04-22 11:29:36 +01:00
thesimplekid
8379da2655 fix: only could sigs from unique pubkeys 2025-04-22 11:29:36 +01:00
thesimplekid
48fd3c652b test: multiple sigs 2025-04-22 11:29:36 +01:00
thesimplekid (aider)
3b5c8b5c5e refactor: Ensure unique proofs when calculating token value 2025-04-10 23:21:58 +01:00
thesimplekid
d224cc57b5 Melt to amountless invoice (#497)
* feat: melt token with amountless

* fix: docs

* fix: extra migration
2025-04-04 13:16:27 +01:00
thesimplekid
5484e7c33a Merge pull request #690 from thesimplekid/request_without_dleq
Request without dleq
2025-03-27 08:45:02 +00:00
thesimplekid
7b4951041e Rust docs (#681) 2025-03-25 23:27:38 +00:00
thesimplekid
d1c9dbae28 refactor: cashu wallet moved to cdk-common 2025-03-25 12:55:05 +00:00
benthecarman
b8fbd83772 fix: Fix MintUrls with a path 2025-03-25 00:49:52 -05:00
thesimplekid
c63fc02a5a Prepare v0.8.0 (#672)
* chore: Bump cdk dependency to v0.8.0

* chore: add docker publish to ci

* chore: add doc test build to ci
2025-03-24 18:40:08 +00:00
thesimplekid
b3ae76d6c7 Fix dleq logging (#670)
* fix: dleq logging

* feat: log wallet auth for request
2025-03-24 12:50:54 +00:00
thesimplekid
be93ff2384 Clear and Blind Auth (#510)
* feat: auth

* chore: corret error codes

* chore: corret error codes

* fix: feature auth in cdk-axum

* refactor: auth logging

* feat: include dleq in auth proof

* feat: mint max auth proofs

* chore: clippy
2025-03-24 11:13:22 +00:00
thesimplekid
c48b5202f0 refactor: move Mint and Melt quote to cdk common 2025-03-22 17:04:46 +00:00
David Caseria
db1db86509 Prepared Send (#596)
Co-authored-by: thesimplekid <tsk@thesimplekid.com>
Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
2025-03-20 11:44:44 +00:00
ok300
558024d7fe Ser/Deserialize SecretKey either as bytes or string 2025-03-19 12:34:23 +01:00
thesimplekid
0155962d11 Update crates/cashu/src/nuts/nut18.rs
Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
2025-03-13 14:46:22 +00:00
thesimplekid
be1e048f2c Update crates/cashu/src/nuts/nut18.rs
Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
2025-03-13 14:46:15 +00:00
thesimplekid
eb5899843a feat: export transport type 2025-03-13 14:14:56 +00:00
thesimplekid (aider)
32ded596cd feat: payments request builder 2025-03-13 14:09:14 +00:00
thesimplekid
162507c492 feat: payment processor 2025-03-10 14:44:57 +00:00
thesimplekid
22beade553 Amount and unit nut04/05 (#635)
* feat: return amount and unit in mint response


Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com>
2025-03-08 22:41:21 +00:00
NodlAndHodl
fcf2e9d603 feat: adding tos to mint (#604)
* feat: adding tos(terms of service) to mint and update cdk-sqlite migration
2025-03-07 20:29:10 +00:00
ok300
813794353a Add ensure_cdk macro 2025-03-05 17:39:08 +01:00
thesimplekid
e84d6ea7ab chore: Update rust-version (MSRV) to 1.75.0 (#623) 2025-03-05 10:32:41 +00:00
C
d5df413d6b Drop AmountStr (#612)
* Drop AmountStr

Fixes #609

Instead write a customer serializer for Keys to serialize amounts as strings

* Add a custom error for invalid amounts
2025-02-22 17:46:02 +00:00
codingpeanut157
606385f44a fix openApi attributes to keyset id to present it as a string
The attribute `schema(as = String)` does not result in the expected
behaviour.
It does not convert Id to being represented as a simple string, but
rather simply rename the type `Id` to `String`.

This commit removes the attribute that implements utoipa::ToSchema trait
for type `Id` and adds attribute to all the types that have a keyset id
    as inner type to represent it as string.
2025-02-20 16:27:43 +01:00
thesimplekid
7b7def17ee chore: release v0.7.1 2025-02-13 10:44:09 +00:00
thesimplekid
3a4c363309 feat: debug print to hide seed and print version 2025-02-09 11:16:33 +00:00
thesimplekid
be5e5d2371 chore: prepare v0.7.0 2025-02-06 13:12:16 +00:00
thesimplekid
47ee54d7f5 feat: mint management rpc server and client cli 2025-02-06 12:05:13 +00:00
thesimplekid
4cbf833999 chore: pin uuid 2025-02-05 14:00:58 +00:00
thesimplekid
0674144001 refactor: remove mint url from config 2025-01-29 20:38:53 +00:00
ok300
fe223c4ce6 Remove dependency on rand 2025-01-24 16:46:59 +01:00
thesimplekid
b3a1c9fa36 fix: multi mint check 2025-01-24 11:15:40 +00:00