Files
cdk/crates/cdk-sqlite
Cesar Rodas abdde307c6 Fix race conditions with proof state updates.
Add a strict set of updates to prevent incorrect state changes and correct
usage. Supporting the transaction at the trait level prevented some cases, but
having a strict set of state change flows is better.

This bug was found while developing the signatory. The keys are read from
memory, triggering race conditions at the database, and some `Pending` states
are selected (instead of just selecting `Unspent`).

This PR also introduces a set of generic database tests to be executed for all
database implementations, this test suite will make sure writing and
maintaining new database drivers
2025-04-19 18:15:42 -03:00
..
2025-03-09 15:08:43 -05:00

Cashu Development Kit SQLite Storage Backend

ALPHA This library is in early development, the api will change and should be used with caution.

cdk-sqlite is the sqlite storage backend for cdk.

Crate Feature Flags

The following crate feature flags are available:

Feature Default Description
wallet Yes Enable cashu wallet features
mint Yes Enable cashu mint wallet features
sqlcipher No Enable encrypted database

Implemented NUTs:

See https://github.com/cashubtc/cdk/blob/main/README.md

Minimum Supported Rust Version (MSRV)

The cdk library should always compile with any combination of features on Rust 1.63.0.

To build and test with the MSRV you will need to pin the below dependency versions:

cargo update -p half --precise 2.2.1
cargo update -p home --precise 0.5.5
cargo update -p tokio --precise 1.38.1
cargo update -p serde_with --precise 3.1.0
cargo update -p reqwest --precise 0.12.4

License

This project is distributed under the MIT software license - see the LICENSE file for details.