Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
bcb17a4
fix(platform-wallet-storage): restore UTXOs into the account that der…
PastaPastaPasta Nov 4, 2026
ea1d6e4
fix(platform-wallet-storage): look for stored addresses past every fu…
PastaPastaPasta Nov 5, 2026
fc2568b
docs(platform-wallet-storage): describe derivation-based placement fo…
PastaPastaPasta Nov 5, 2026
b55854f
fix(platform-wallet-storage): carry every stored used address through…
PastaPastaPasta Nov 5, 2026
670bc99
test(platform-wallet-storage): count a refill both reporters refuse once
PastaPastaPasta Nov 5, 2026
afdad71
fix(platform-wallet-storage): leave used addresses alone without a fu…
PastaPastaPasta Nov 5, 2026
f81e08e
fix(platform-wallet-storage): mark spent addresses a live coin's refi…
PastaPastaPasta Nov 5, 2026
8e299c6
fix(platform-wallet-storage): end the marking rounds only at a true f…
PastaPastaPasta Nov 5, 2026
b1378f7
fix(platform-wallet-storage): place held coins when a gap refill cann…
PastaPastaPasta Nov 5, 2026
f695ad1
docs(platform-wallet-storage): say where a held coin goes after a ref…
PastaPastaPasta Nov 5, 2026
7ba0044
fix(platform-wallet-storage): offer every coin again after discovery
PastaPastaPasta Nov 6, 2026
3b5fe74
test(platform-wallet-storage): one test per contact-overlap variant
PastaPastaPasta Nov 6, 2026
a02eb40
docs(platform-wallet-storage): say why the key-less placement can't fail
PastaPastaPasta Nov 6, 2026
28fb7e8
fix(platform-wallet-storage): bound every refill the final restore wo…
PastaPastaPasta Nov 6, 2026
907a5d2
docs(platform-wallet-storage): say the orphaned-owner fallback follow…
PastaPastaPasta Nov 6, 2026
fda74f7
fix(platform-wallet-storage): leave provider-owned used addresses out…
PastaPastaPasta Nov 7, 2026
a61f9d4
refactor(platform-wallet-storage): treat only known non-funds owners …
PastaPastaPasta Nov 7, 2026
b3a1f7f
fix(platform-wallet-storage): keep DashPay contact-owned used address…
PastaPastaPasta Nov 7, 2026
4f72546
fix(platform-wallet-storage): say what happens to each owner kind at …
PastaPastaPasta Nov 7, 2026
86e7952
test(platform-wallet-storage): pin the non-funds labels and the unpla…
PastaPastaPasta Nov 7, 2026
a1c09e2
test(platform-wallet-storage): store a payment between two of a walle…
PastaPastaPasta Nov 7, 2026
a35b2b6
test(platform-wallet-storage): pick the sibling payment's shape with …
PastaPastaPasta Nov 7, 2026
1822835
test(platform-wallet-storage): reopen the sibling payment's own file …
PastaPastaPasta Nov 7, 2026
db54b74
test(platform-wallet-storage): look for a contact-owned used address …
PastaPastaPasta Nov 7, 2026
fe9d308
fix(platform-wallet-storage): shorten the orphaned owner explanation
PastaPastaPasta Nov 7, 2026
c94c9ec
docs(platform-wallet-storage): cite the old contact window and name t…
PastaPastaPasta Nov 7, 2026
858e068
fix(platform-wallet-storage): don't count unplaced DashPay contact ad…
PastaPastaPasta Nov 7, 2026
d250a7d
test(platform-wallet-storage): check the sibling payment's coin is he…
PastaPastaPasta Nov 7, 2026
2992b0c
fix(platform-wallet-storage): keep counting shared contact addresses …
PastaPastaPasta Nov 7, 2026
8e2ede2
docs(platform-wallet-storage): put the outside-funds-pools doc back o…
PastaPastaPasta Nov 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 9 additions & 2 deletions packages/rs-platform-wallet-storage/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,11 @@ windows-native-keyring-store = { version = "=1.0.0", optional = true }
platform-wallet = { path = "../rs-platform-wallet", features = ["test-utils"] }
proptest = "1"
assert_cmd = "2"
# `sqlite_dashpay_sibling_payment.rs` encrypts the contact request a DashPay
# external account is built from, and implements the contact-crypto provider
# trait a payment-address reservation takes.
platform-encryption = { path = "../rs-platform-encryption" }
async-trait = "0.1"
static_assertions = "1"
filetime = "0.2"
# Test-only: construct the `Zeroizing<[u8; 32]>` secret on an
Expand All @@ -199,8 +204,10 @@ serial_test = "3"
# outside — `cfg(test)` alone would satisfy it from within the crate.
platform-wallet-storage = { path = ".", default-features = false, features = ["sqlite", "cli", "secrets", "kv", "__test-helpers", "test-util"] }
# The adapter is a tokio task; the durability test drives it and awaits its
# join handle. Current-thread runtime only — nothing here needs threads.
tokio = { version = "1", features = ["rt", "macros", "sync"] }
# join handle. `sqlite_dashpay_sibling_payment.rs` shuts a whole
# `PlatformWalletManager` down, whose OS-thread workers need a multi-thread
# runtime.
tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros", "sync"] }
# The adapter's cancellation handle — the test passes a never-fired token, but
# the parameter is part of the public signature.
tokio-util = { version = "0.7", default-features = false }
Expand Down
11 changes: 7 additions & 4 deletions packages/rs-platform-wallet-storage/src/sqlite/load_ctx.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,11 @@ pub enum LoadSite {
RehydrationGapLimit,
/// Rehydration could not maintain an address pool's gap limit.
RehydrationMaintainGapLimit,
/// A restored UTXO or used address names an account this wallet lacks.
/// Counted per address, though one record covers a whole account's.
/// A restored UTXO or used address names an owner that is not a funds
/// account of this wallet: a funds account it lacks, or a DashPay
/// contact, identity, provider-key, asset-lock or Platform payment
/// account. Counted per address, though one record covers a whole
/// account's.
OrphanedUtxoOwner,
/// A restored address did not resolve against its account's xpub.
/// Counted per address, though one record covers a whole account's.
Expand Down Expand Up @@ -165,7 +168,7 @@ impl LoadSite {
// describes an accepted-as-is degradation rather than a
// tolerated inconsistency.
Self::OrphanedUtxoOwner => {
"load degraded: routing addresses from an unavailable owner to the first funds account"
"load degraded: owners that aren't this wallet's funds accounts (one it lacks, or a non-funds kind); coins go to the funds account deriving them, else the DashPay contact account holding them, off-balance, else the first; contacts' are the only non-funds used addresses sought"
}
Comment thread
PastaPastaPasta marked this conversation as resolved.
Resolved
Self::UnresolvedUtxoAddress => {
"load degraded: deferring addresses that did not resolve against the account xpub"
Expand Down Expand Up @@ -678,7 +681,7 @@ mod tests {
"ambiguous owner",
);
assert!(logs_contain(
"load degraded: routing addresses from an unavailable owner to the first funds account"
"load degraded: owners that aren't this wallet's funds accounts (one it lacks, or a non-funds kind); coins go to the funds account deriving them, else the DashPay contact account holding them, off-balance, else the first; contacts' are the only non-funds used addresses sought"
));
}

Expand Down
Loading
Loading