-
Notifications
You must be signed in to change notification settings - Fork 56
feat(platform-wallet-storage): embeddable SQLite persistence backend with seedless rehydration #3968
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Claudius-Maginificent
wants to merge
141
commits into
v4.1-dev
Choose a base branch
from
feat/platform-wallet-storage-rehydration
base: v4.1-dev
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
feat(platform-wallet-storage): embeddable SQLite persistence backend with seedless rehydration #3968
Changes from 1 commit
Commits
Show all changes
141 commits
Select commit
Hold shift + click to select a range
83f7d4f
feat(platform-wallet): seedless watch-only rehydration via load_from_…
lklimek 2f2a74a
feat(platform-wallet-storage): seedless load() + rehydration readers …
lklimek 35bd291
refactor(platform-wallet): drop backward-compat on_platform_event; co…
lklimek a5b7032
docs(platform-wallet): point seedless-load notes at the resolver wron…
lklimek 22ff11c
perf(platform-wallet): O(n) UTXO spent-filter on rehydrate via outpoi…
lklimek 2e71027
fix(platform-wallet)!: restore persisted address-pool used-state on r…
lklimek 8832f6f
fix(platform-wallet): idempotent repeat restore — skip already-presen…
lklimek 2c6e3e8
fix(platform-wallet-ffi): skip corrupt wallet on load instead of abor…
lklimek 3876d0e
refactor(platform-wallet): mark unreleased #3692 load enums non_exhau…
lklimek 1f8d6b6
test(platform-wallet): cover used-state-survives-spent-UTXO + deep-in…
lklimek f60160e
test(platform-wallet): drop duplicate deep-index rehydration test (#3…
lklimek 8d88d49
refactor(platform-wallet): drop vestigial PlatformEvent enum (#3692 r…
lklimek d08abc2
fix(platform-wallet-storage): widen account-registration PK with disc…
lklimek 9c41458
fix(platform-wallet-storage): reject restore_from onto an in-process …
lklimek d257320
fix(platform-wallet-storage): cross-check identity_keys decoded ids a…
lklimek 8e7fd66
fix(platform-wallet-storage): scope identities upsert overwrite to th…
lklimek 6365be7
fix(platform-wallet-storage): restore used_core_addresses from core_u…
lklimek 163656f
fix(platform-wallet)!: return typed errors from the #3692 stubs inste…
lklimek d00d59b
fix(platform-wallet-storage): rollback-safe restore ordering + keep_l…
lklimek f3ca134
fix(platform-wallet-storage): reject a foreign SQLite DB at open + co…
lklimek 7ae801b
fix(platform-wallet-storage): reader cross-checks + decode hardening …
lklimek c9a2683
fix(platform-wallet-storage): reject embedded-NUL kv keys (#3968 review)
lklimek 1a9a17e
docs(platform-wallet-storage): re-sync changeset doc, correct cascade…
lklimek f4ac7f5
fix(platform-wallet-storage): secrets hardening — atomic reprotect, s…
lklimek 860ea7f
fix(platform-wallet-storage): surface unconfirmed vault-write durabil…
lklimek b304268
fix(platform-wallet): restore background-sync generation guard droppe…
lklimek 664c6bf
fix(platform-wallet): count skipped rows in ClientStartState::is_empt…
lklimek 61c9fd7
fix(platform-wallet-ffi): surface MalformedXpub skip code for bad acc…
lklimek 08b2884
fix(platform-wallet-storage): require full ChainLock consumption in m…
lklimek 73df060
fix(platform-wallet-storage): pre-read BLOB size-gate on rehydration …
lklimek 1454394
fix(platform-wallet-storage): DRY blob size-gate helper + close remai…
lklimek 6ba6d4a
fix(platform-wallet-storage): SQLITE_LIMIT_LENGTH global blob floor +…
lklimek 53b7d26
chore(platform-wallet-storage): compile-time assert SQLITE_MAX_BLOB_B…
lklimek 58aac14
Merge v4.1-dev into feat/platform-wallet-storage-rehydration
lklimek 2ab0bed
Merge v4.1-dev into feat/platform-wallet-rehydration
lklimek ef7cdf2
chore(deps): bump rust-dashcore to dev head 78d10022
lklimek 27d235f
fix(dpp): implement extended_public_key on shielded FixedKeySigner te…
lklimek 36e2fed
chore(deps): bump rust-dashcore to PR #833 (Zeroize for ExtendedPrivKey)
lklimek 3be6885
refactor(rs-sdk-ffi): wrap ExtendedPrivKey in Zeroizing, drop manual …
lklimek b175d50
refactor(rs-sdk-ffi): confine ExtendedPrivKey to resolve_and_derive v…
lklimek 5a2b2b5
test(rs-sdk-ffi): make extended_public_key metadata asserts load-bear…
lklimek 56612fd
chore(deps): bump rust-dashcore to a8c57fe (drop Copy, zeroize Extend…
lklimek 374df98
refactor(rs-sdk-ffi): rely on ExtendedPrivKey Drop, drop redundant Ze…
lklimek 35e5c46
Merge remote-tracking branch 'origin/v4.1-dev' into chore/bump-rust-d…
lklimek 71678ad
Merge branch 'v4.1-dev' into feat/platform-wallet-storage-rehydration
lklimek 1aac44a
fix(deps): stage regenerated Cargo.lock for rust-dashcore a8a0968 bump
lklimek defa249
build: sync Cargo.lock to rust-dashcore a8a0968 (0.45.0)
lklimek f669691
docs(rs-sdk-ffi): correct ExtendedPrivKey zeroization comments for a8…
lklimek 43b57af
Merge commit 'f669691f7a22f50f4fab7a056036a53ebf781b9b' into chore/bu…
lklimek 5dfd441
fix(deps): bump quinn-proto 0.11.14 -> 0.11.15 (RUSTSEC-2026-0185)
lklimek 0feb7d6
docs(platform-wallet): fix dead doc-links and stale references in reh…
lklimek 59dc04d
fix(platform-wallet-ffi): harden load-outcome FFI surface (findings #…
lklimek cd6807a
docs(platform-wallet): fix dead MnemonicResolverHandle doc-link in lo…
lklimek a9d3a76
refactor(platform-wallet-ffi): typed corrupt-kind discriminator + hon…
lklimek 284a3aa
fix(platform-wallet): harden watch-only rehydration guards + document…
lklimek ee717c8
Merge branch 'fix/3692-b' into fix/3692-consolidated
lklimek 037c7d2
Merge branch 'fix/3692-c' into fix/3692-consolidated
lklimek f73e40a
Merge branch 'fix/3692-d' into fix/3692-consolidated
lklimek 127c565
Merge branch 'fix/3692-e' into fix/3692-consolidated
lklimek 0b53866
docs(platform-wallet): document manifest-authentication trust boundar…
lklimek c6d58f0
Merge branch 'v4.1-dev' into feat/platform-wallet-rehydration
lklimek 12979b5
Merge remote-tracking branch 'origin/feat/platform-wallet-rehydration…
lklimek 3a791c2
merge: #3976 Signer::extended_public_key (rs-sdk-ffi) into #3692
lklimek 9dbca2f
fix(platform-wallet): update CoinJoin pool-topology test for key-wall…
lklimek fa6a031
merge: catch up with #3692's latest (rust-dashcore 0.45 bump + CoinJo…
lklimek 7a2e06e
fix(platform-wallet): preserve persisted wallet state through seedles…
QuantumExplorer 5460c0e
fix(platform-wallet): snapshot identity cross-check + typed persister…
Claudius-Maginificent 0205123
Merge branch 'feat/platform-wallet-rehydration' into feat/platform-wa…
lklimek 8bcb192
Apply suggestions from code review
lklimek 87f4b42
refactor(platform-wallet)!: require core_wallet_info, drop keyless-pr…
lklimek f36e191
refactor(platform-wallet): drop obsolete non-default-account warn com…
lklimek ed5fb78
feat(platform-wallet)!: 3-state LoadOutcome, report already-registere…
lklimek f8504f6
docs(platform-wallet): reframe manifest trust boundary, detail the at…
lklimek 157410a
fix(platform-wallet-ffi): xpub-error classification, overflow guard, …
lklimek f4ab467
test(platform-wallet): rollback, empty-first-run, and concurrency reg…
lklimek 60d48f6
merge: #3692 triage fix batch (7 waves) into feat/platform-wallet-reh…
lklimek 14d83af
Merge remote-tracking branch 'origin/v4.1-dev' into feat/platform-wal…
lklimek e65c123
test(platform-wallet-ffi): cover slice_from_raw guard and end-to-end …
lklimek 518c8d1
refactor(platform-wallet): drop latent LoadIncomplete conversion and …
lklimek 3abc385
refactor(platform-wallet): make manager::rehydrate module private
lklimek f8c9722
merge: QA follow-up fixes for #3692 (test coverage, dead-code cleanup…
lklimek 83d9eff
fix(dpp): drop stale extended_public_key impls broken by rust-dashcor…
lklimek df6955e
merge: reconcile #3692 with v4.1-dev; preserve ignored/unignored on r…
lklimek 7246946
feat(platform-wallet): add IdentityManagerStartState::merge_contacts_…
lklimek 46f765c
feat(platform-wallet-storage): pre-key identities in SQLite load()
lklimek 3b3b3eb
test(platform-wallet-storage): assert pre-keyed rehydration on Manage…
lklimek 960228e
docs(platform-wallet): trim merge_contacts_and_keys rustdoc
lklimek 0af850a
refactor(platform-wallet): drop dead identity_keys/contacts from Clie…
lklimek 19570ad
Merge remote-tracking branch 'origin/v4.1-dev' into claudius/pr3692-f…
lklimek cf33f83
fix(platform-wallet-storage): cross-check inner public_key.id() in id…
lklimek 29a3853
docs(platform-wallet): correct apply_contacts_and_keys + FFI build co…
lklimek d6b789e
docs(platform-wallet-ffi): mark missing end-to-end build_wallet_ident…
lklimek adec4b7
docs(platform-wallet-ffi): enrich build_wallet_identity_bucket TODO w…
lklimek a814932
fix(platform-wallet): fund asset-lock test fixtures via confirmed UTX…
lklimek 6436891
Merge commit 'a814932d97' into claudius/pr3692-field-cleanup
lklimek 269449b
Merge #3692 tip (d6b789e865) into #3968 prekeyed-join branch
lklimek df080ff
Merge commit '6436891518' into claudius/pr3968-prekeyed-join
lklimek 04b93e4
docs(platform-wallet-storage): correct empty-manifest branch comment
lklimek 1a332ad
feat(platform-wallet): snapshot readers + unified V002 schema migrati…
Claudius-Maginificent 4624cec
fix(platform-wallet-storage): DashPay pool PK collision + V002 migrat…
lklimek 05bc921
docs(platform-wallet-storage): mark wallet-row-orphaning as an open p…
lklimek 36d84b6
test(platform-wallet-storage): rewrite pool_reader used-set tests aga…
lklimek 1fa145a
test(platform-wallet-storage): rewrite migration_execution used-set t…
lklimek d7c6846
Merge branch 'v4.1-dev' into feat/platform-wallet-rehydration
lklimek f4c2218
Merge branch 'feat/platform-wallet-rehydration' into feat/platform-wa…
lklimek cec6d3b
Merge remote-tracking branch 'origin/v4.1-dev' into feat/platform-wal…
lklimek e9e98cc
feat(platform-wallet): deliver typed AddressNonceMismatch error to ca…
lklimek 650c32a
fix(platform-wallet-ffi): deliver AddressNonceMismatch across FFI + r…
lklimek 069ee6a
fix(swift-sdk): mirror ErrorAddressNonceMismatch (=21); pin FFI nonce…
lklimek 6103ab6
Merge branch 'v4.1-dev' into feat/platform-wallet-rehydration
lklimek 062caea
chore(deps): bump rust-dashcore pin to key-wallet asset-lock override…
lklimek a985d23
chore(deps): switch rust-dashcore pin from PR #850 to PR #851
lklimek d9ee8d5
Merge branch 'feat/platform-wallet-rehydration' into feat/platform-wa…
lklimek b70062b
test(swift-sdk): replace removed sendToAddresses with builder+broadcast
lklimek dc77493
fix(swift-sdk): stop funding core-to-core sends from a Platform-Payme…
lklimek eb3c7ae
fix(platform-wallet-ffi): surface persister-load retry class across t…
lklimek ccc95e3
Merge remote-tracking branch 'origin/v4.1-dev' into feat/platform-wal…
lklimek c8c6a93
refactor(platform-wallet): apply PR #3692 self-review notes
lklimek f8ee551
Merge branch 'v4.1-dev' into feat/platform-wallet-rehydration
lklimek eacc851
Merge remote-tracking branch 'origin/feat/platform-wallet-rehydration…
lklimek 0503f80
refactor: move persistance to platform wallet storage - human work
lklimek ee8390b
Merge branch 'v4.1-dev' into feat/platform-wallet-storage-rehydration
lklimek 4e8a122
fix(platform-wallet-storage): pre-materialization size gate on outpoi…
lklimek a9c500f
style(platform-wallet-storage): fix doc_lazy_continuation in rehydrat…
lklimek f503797
fix(platform-wallet-storage): move RUSTSEC-2025-0141 ack to root audi…
lklimek fa9f337
Merge remote-tracking branch 'origin/v4.1-dev' into feat/platform-wal…
lklimek 4ce099e
style(platform-wallet-storage): satisfy rustfmt in error.rs + wallet.…
lklimek 3629884
fix(platform-wallet-storage): compile rehydration-apply test target
lklimek dd39ce5
docs(platform-wallet-storage): correct stale rehydration docs post-move
lklimek 79e20d2
fix(swift-sdk): reconcile PlatformWallet load FFI to shipped 1-arg co…
lklimek 47a45f0
test(platform-wallet-storage): sync prepare_cached allow-list to gate…
lklimek 258b184
docs(platform-wallet-storage): correct stale core-attribution rehydra…
lklimek b68c5a8
docs(platform-wallet-storage): correct empty-manifest rehydration com…
lklimek 8ec2ea3
ci(swift-sdk): tolerate runner with no user default keychain in run_t…
lklimek 728f480
fix(platform-wallet): restore From<PersistenceError> for PlatformWall…
lklimek a503bd7
ci: accept platform-wallet-storage as a conventional-commit scope
lklimek 2045a36
Merge remote-tracking branch 'origin/v4.1-dev' into feat/platform-wal…
lklimek f2779ca
chore(deps): bump rust-dashcore pin to #851 head; fix importWallet bi…
lklimek 95d28a6
fix(platform-wallet-storage): route restored UTXOs to their true owni…
lklimek 5283236
fix(platform-wallet-storage): warn on orphaned UTXO owner; add end-to…
lklimek 7cdaa65
fix(platform-wallet-storage): route restored used addresses to their …
lklimek File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| [advisories] | ||
| # Each entry MUST point at a live advisory in this crate's resolved graph | ||
| # and carry a dated rationale + remediation plan. Do not blanket-ignore. | ||
| ignore = [ | ||
| # RUSTSEC-2025-0141 — bincode is unmaintained (informational advisory, | ||
| # not an exploitable CVE; published 2025-12-16, no patched release). | ||
| # Acknowledged 2026-06-08. | ||
| # | ||
| # Why this is acceptable for now: | ||
| # - bincode 2.0.1 is the BLOB-codec trust boundary for every | ||
| # persisted column and backup. The known risk class for an | ||
| # unmaintained deserializer is unbounded allocation (OOM) on a | ||
| # crafted/corrupt input. | ||
| # - In-crate size bounds defang that class: MAX_VALUE_LEN / | ||
| # BLOB_SIZE_LIMIT_BYTES (kv/blob), the per-secret SecretTooLarge | ||
| # write cap, and the MAX_VAULT_SIZE_BYTES read ceiling all reject | ||
| # oversized inputs before bincode ever allocates from them. | ||
| # - load() is fail-hard: a malformed/over-large row aborts the call | ||
| # with a typed error rather than silently over-allocating. | ||
| # | ||
| # Residual risk: a future bincode defect would go unpatched upstream. | ||
| # Remediation plan: migrate the BLOB codec to a maintained equivalent | ||
| # (postcard / bitcode candidates) once the wire format is frozen at | ||
| # release; revisit this ignore at that time. | ||
| "RUSTSEC-2025-0141", | ||
| ] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.