Description
Turso is an in-process SQL database, compatible with SQLite. Besides being implemented natively in Rust it also provides on-disk/at-rest data encryption. It would be useful to add turso as a WalletPersister implementation that also includes an option to enable on-disk encryption.
Expected Outcomes
- Create a new
bdk_turso crate similar to the bdk_redb crate.
- Add an implementation of the WalletPersister trait for the new
bdk_turso data store.
- In the
bdk_turso crate include a feature to enable on-disk encryption. It should also include helper function to securely generate a 256 bit encryption key, re-key an existing database with a new key and add encryption to an unencrypted database.
- Add tests in
bdk_turso to confirm data is accurately stored and retrieved with and without encryption enabled.
- Create an example similar to SQLite Database that demonstrates using
bdk_turso instead of sqlite, with and without encryption enabled.
Resources
Skills Required
- Experience with git. Guide
- Experience with rust. First seven chapters of the book
- Able to setup a local core node in regtest and testnet mode.
- Familiarity with database technologies like SQL and SQLite.
Mentor(s)
@notmandatory
Difficulty
Hard
Competency Test
- Install rust, compile and run all bdk examples and tests.
- Setup a local Bitcoin Core node daemon in regtest mode.
- Make a wallet with
bitcoind_rpc example wallet and receive and send regtest bitcoin.
Description
Turso is an in-process SQL database, compatible with SQLite. Besides being implemented natively in Rust it also provides on-disk/at-rest data encryption. It would be useful to add
tursoas aWalletPersisterimplementation that also includes an option to enable on-disk encryption.Expected Outcomes
bdk_tursocrate similar to thebdk_redbcrate.bdk_tursodata store.bdk_tursocrate include a feature to enable on-disk encryption. It should also include helper function to securely generate a 256 bit encryption key, re-key an existing database with a new key and add encryption to an unencrypted database.bdk_tursoto confirm data is accurately stored and retrieved with and without encryption enabled.bdk_tursoinstead ofsqlite, with and without encryption enabled.Resources
Skills Required
Mentor(s)
@notmandatory
Difficulty
Hard
Competency Test
bitcoind_rpcexample wallet and receive and send regtest bitcoin.