Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
848 commits
Select commit Hold shift + click to select a range
9cd322f
Merge remote-tracking branch 'origin/v5.1-dev' into fix/pr-5126
lklimek Oct 5, 2026
a2b6f50
fix(wallet-storage): retain unknown claims during startup repair
lklimek Oct 5, 2026
f2e572b
test(wallet-storage): verify clean event-driven spend restoration
lklimek Oct 6, 2026
5ee6f20
chore(platform)!: merge rust-dashcore migration and pin spent-claim API
lklimek Oct 6, 2026
ad2b8c2
chore: port rust-dashcore migration to v5.1
lklimek Oct 6, 2026
d397edb
chore: stack wallet accounting repairs on the v5.1 rust-dashcore port
lklimek Oct 6, 2026
d3861e4
chore: merge v5.1-dev into rust-dashcore migration
lklimek Oct 6, 2026
efa487d
fix(sdk)!: require Node 20 for legacy WASM-DPP consumers
lklimek Oct 6, 2026
3271536
chore: move Node runtime requirements to a separate PR
lklimek Oct 6, 2026
d9149f1
chore(platform): pin rust-dashcore to merged dev
lklimek Oct 6, 2026
c0b4b97
chore!: require Node.js >=22 for JS packages and >=24 for dashmate (#…
lklimek Oct 6, 2026
938b60f
Merge branch 'v5.1-dev' into chore/rust-dashcore-1112-v5.1
lklimek Oct 7, 2026
7c73e98
fix(platform-wallet): retain SPV client and track shutdown through ca…
lklimek Oct 7, 2026
4045c13
refactor: share rust-dashcore BLS backend through dpp::bls (#5320)
lklimek Oct 7, 2026
8377b64
fix(platform-wallet)!: tell a retryable SPV stop from one that needs …
Claudius-Maginificent Oct 8, 2026
9af2033
chore(deps)!: pin rust-dashcore to BLS compatibility fix
lklimek Oct 8, 2026
41e9453
chore(deps): pin rust-dashcore to legacy serde restoration
lklimek Oct 9, 2026
1dbcaaf
fix(drive-abci): preserve quorum key storage independently of serde
lklimek Oct 9, 2026
d8b911d
fix(wallet-ffi): adapt platform node ID hashing to rust-dashcore
lklimek Oct 9, 2026
c1c7b09
fix(test-suite): wait for rotated quorum publication before retrying …
lklimek Oct 9, 2026
069a5ca
fix(dpp): require WASM-compatible blst for external consumers
lklimek Oct 9, 2026
cbb694d
test(platform): freeze historical storage and signing vectors
lklimek Oct 9, 2026
f475f72
chore(deps): pin rust-dashcore to PR 1149
lklimek Oct 9, 2026
7ee8f7b
feat(platform-wallet): return dash-spv's verification status with an …
PastaPastaPasta Oct 11, 2026
6744658
chore: merge v5.1-dev and preserve historical compatibility tests
lklimek Oct 12, 2026
f29c092
chore: merge remote quorum verification status update
lklimek Oct 12, 2026
3265fad
chore: merge fix/pr-5126 into fix/sqlite-asset-lock-reconciliation
lklimek Oct 12, 2026
206e86c
fix(platform-wallet-storage): cache the replay claim and swept asset-…
lklimek Oct 12, 2026
dfe9064
fix(platform-wallet-storage): record the spender of a new mempool res…
lklimek Oct 12, 2026
9e41acd
fix(platform-wallet-storage): keep unsafe unconfirmed amounts from fa…
lklimek Oct 12, 2026
981141e
test(platform-wallet-storage): plant writer-encoded outpoints in reco…
lklimek Oct 12, 2026
b30a09e
chore: merge fix/pr-5126 into fix/sqlite-asset-lock-reconciliation
lklimek Oct 12, 2026
e733d9e
chore: merge fix/sqlite-asset-lock-reconciliation into feat/sqlite-wa…
lklimek Oct 12, 2026
728006c
docs(wallet-storage): drop comments that predate SQLite pool restore
lklimek Oct 12, 2026
94d6c32
test(wallet-storage): pin typed load failures and per-address accounting
lklimek Oct 12, 2026
958e930
fix(wallet-storage): check restored pool rows against their derivation
lklimek Oct 12, 2026
9183842
build!: pin rust-dashcore to dev d036d844
lklimek Oct 12, 2026
0c6e418
fix(wallet-storage): mark funded addresses used on restored pool entries
lklimek Oct 12, 2026
ef731e3
fix(wallet-storage): refuse pool rows filed under a pool the account …
lklimek Oct 12, 2026
c1bb8cd
perf(wallet-storage): restore pools without per-row and per-pool rework
lklimek Oct 12, 2026
3a3a013
test(wallet-storage): cover contact pools and the pool conflict guards
lklimek Oct 12, 2026
7ada303
chore: merge chore/rust-dashcore-1112-v5.1 into fix/pr-5126
lklimek Oct 12, 2026
d280e72
fix(platform-wallet): keep restored spend claims for accounts added l…
lklimek Oct 12, 2026
bc3f563
fix(wallet-storage): cache the pool restore statements
lklimek Oct 12, 2026
d3247db
chore: merge fix/pr-5126 into fix/sqlite-asset-lock-reconciliation
lklimek Oct 12, 2026
4917d07
perf(platform-wallet-storage): reuse cached statements in the replay …
lklimek Oct 12, 2026
251a9b6
fix(platform-wallet-storage): settle set-aside mempool records agains…
lklimek Oct 12, 2026
f29dbd4
fix(platform-wallet-storage): let V019 migrate past an unaccountable …
lklimek Oct 12, 2026
1c86da2
fix(platform-wallet-storage): store a mempool record whose net does n…
lklimek Oct 12, 2026
8624543
docs: name the rust-dashcore#1112 pin in the changelog
lklimek Oct 12, 2026
0c32443
fix(wallet-storage): budget pool derivation by stored rows, not by depth
lklimek Oct 12, 2026
f49527f
fix(platform-wallet-storage): attribute a held sweep input to its sur…
lklimek Oct 12, 2026
80749c6
fix(wallet-storage): report stored reservations no restored pool take…
lklimek Oct 12, 2026
055727f
chore: merge fix/pr-5126 into fix/sqlite-asset-lock-reconciliation
lklimek Oct 12, 2026
b1f0f10
test(wallet-storage): restore an operator key pool past its derived w…
lklimek Oct 12, 2026
eba7096
chore: merge fix/sqlite-asset-lock-reconciliation into feat/sqlite-wa…
lklimek Oct 12, 2026
921dbb8
test(wallet-storage): build the provider payload fixture for the pinn…
lklimek Oct 12, 2026
8c654db
fix(wallet-storage): refill the gap window of a pool restored as used
lklimek Oct 12, 2026
75bed6c
fix(wallet-storage): count a wallet's load incidents once across star…
lklimek Oct 12, 2026
85b5b45
fix(wallet-storage): log where a refused wallet or pool row sits
lklimek Oct 12, 2026
895bff9
feat(wallet-storage)!: mark LoadSite non-exhaustive
lklimek Oct 12, 2026
f1bcefe
fix(platform-wallet-storage): keep a mempool record with unsafe owned…
lklimek Oct 12, 2026
4b149b6
test(wallet-storage): restore the pools of an account registered as `…
lklimek Oct 12, 2026
8acdf9b
fix(wallet-storage): fail a wallet whose one-time funding key row is …
lklimek Oct 12, 2026
ce03450
test(wallet-storage): drop an unused import from the funding-key helper
lklimek Oct 12, 2026
c225ab6
fix(platform-wallet-storage): gate spent-claim blob lengths before re…
lklimek Oct 12, 2026
60ca7e2
perf(platform-wallet-storage): sweep at load only where an unconfirme…
lklimek Oct 12, 2026
3b3e073
fix(platform-wallet-storage): gate spent-claim lengths in the reading…
lklimek Oct 12, 2026
a3c1e23
perf(platform-wallet-storage): replay InstantSend-locked records befo…
lklimek Oct 12, 2026
2ee7daf
perf(platform-wallet-storage): hand each planned sweep only what it c…
lklimek Oct 12, 2026
9d29de2
perf(platform-wallet-storage): replay the mempool ancestors of a fina…
lklimek Oct 13, 2026
6633010
perf(platform-wallet-storage): plan conflict sweeps without the walle…
lklimek Oct 13, 2026
484b196
fix(platform-wallet-storage): restore a set-aside record into every a…
lklimek Oct 13, 2026
d6465c1
fix(platform-wallet-storage): restore a record with unsafe input amou…
lklimek Oct 13, 2026
3d4ef96
perf(platform-wallet-storage): cache the contact-ownership probe stat…
lklimek Oct 13, 2026
4db12aa
perf(platform-wallet-storage): cache the prior spend-state probe stat…
lklimek Oct 13, 2026
7d192bf
refactor(swift-sdk): move the SwiftData transaction accounting to its…
lklimek Oct 13, 2026
1b749e9
chore(platform)!: port rust-dashcore migration (secp256k1 0.33) to v5.1
PastaPastaPasta Sep 23, 2026
1aba0bd
chore(platform): pin rust-dashcore to merged dev
lklimek Oct 6, 2026
6e022c0
chore!: require Node.js >=22 for JS packages and >=24 for dashmate (#…
lklimek Oct 6, 2026
70c02af
fix(platform-wallet): retain SPV client and track shutdown through ca…
lklimek Oct 7, 2026
cdbeec5
refactor: share rust-dashcore BLS backend through dpp::bls (#5320)
lklimek Oct 7, 2026
80ee8f5
fix(platform-wallet)!: tell a retryable SPV stop from one that needs …
Claudius-Maginificent Oct 8, 2026
fc62159
chore(deps)!: pin rust-dashcore to BLS compatibility fix
lklimek Oct 8, 2026
1b804dd
chore(deps): pin rust-dashcore to legacy serde restoration
lklimek Oct 9, 2026
007a51f
fix(drive-abci): preserve quorum key storage independently of serde
lklimek Oct 9, 2026
b7a246c
fix(wallet-ffi): adapt platform node ID hashing to rust-dashcore
lklimek Oct 9, 2026
835f6af
fix(test-suite): wait for rotated quorum publication before retrying …
lklimek Oct 9, 2026
0a4ade5
fix(dpp): require WASM-compatible blst for external consumers
lklimek Oct 9, 2026
00b1c6c
test(platform): freeze historical storage and signing vectors
lklimek Oct 9, 2026
dd29a05
chore(deps): pin rust-dashcore to PR 1149
lklimek Oct 9, 2026
97baf6b
feat(platform-wallet): return dash-spv's verification status with an …
PastaPastaPasta Oct 11, 2026
8743c62
Merge branch 'v5.1-dev' into chore/rust-dashcore-1112-v5.1
lklimek Oct 12, 2026
50b28de
build!: pin rust-dashcore to dev d036d844
lklimek Oct 12, 2026
1bc426d
docs(platform-wallet): mark the unvalidated fork rewind in dash-spv
lklimek Oct 12, 2026
e26de73
chore: adopt the rewritten history of the base branch
lklimek Oct 13, 2026
7a48ab6
Merge branch 'chore/rust-dashcore-1112-v5.1' into fix/pr-5126
lklimek Oct 13, 2026
4f30e10
build!: pin rust-dashcore to dev 90359ed5
lklimek Oct 13, 2026
266f76b
feat(dpp): tell whether a BLS public key is the identity point
lklimek Oct 13, 2026
765c7e4
fix(platform-wallet-storage): gate stored widths before the claim sca…
lklimek Oct 13, 2026
691541a
chore: merge v5.1-dev into chore/rust-dashcore-1112-v5.1
lklimek Oct 13, 2026
912e06b
fix(platform-wallet): forward a noted chain-lock height to the core w…
lklimek Oct 13, 2026
39a6de0
chore: merge chore/rust-dashcore-1112-v5.1 and pin rust-dashcore to 9…
lklimek Oct 13, 2026
9774c72
revert(test-suite): drop the rotated-quorum proof retry
PastaPastaPasta Oct 13, 2026
e51d1ec
chore: merge final head of #5307 (9774c72d3c) into fix/pr-5126
lklimek Oct 14, 2026
6aacbf3
chore: merge v5.1-dev before the #5307 squash (6a3f081113) into fix/p…
lklimek Oct 14, 2026
35554cb
chore: record the #5307 squash merge (3b5e4a7dfb) in fix/pr-5126
lklimek Oct 14, 2026
1d003a9
docs(changelog): name the rust-dashcore#1112 revision fix/pr-5126 pins
lklimek Oct 14, 2026
052f100
feat(platform-wallet): expose the verdict a sweep gives a DashPay pay…
lklimek Oct 14, 2026
28158c6
fix(platform-wallet-storage): fail the sent payment of a transaction …
lklimek Oct 14, 2026
80332fa
test(platform-wallet): add shared core fixtures and table-drive proje…
lklimek Oct 14, 2026
3c44f56
test(platform-wallet-storage): share migrated wallet-db fixtures in h…
lklimek Oct 14, 2026
d8828e1
test(platform-wallet-storage): DRY the V019 migration tests
lklimek Oct 14, 2026
a7d8016
test(platform-wallet-storage): build replay tests from shared fixtures
lklimek Oct 14, 2026
cc24eed
test(platform-wallet-storage): table-drive the spent-rehydration scen…
lklimek Oct 14, 2026
3d1d0ee
test(platform-wallet-storage): table-drive clean-restart and constrai…
lklimek Oct 14, 2026
cf9fe4b
test(platform-wallet-storage): compact the replay-amount staging helper
lklimek Oct 14, 2026
f991080
refactor(platform-wallet-storage): share the frozen V019 history repa…
lklimek Oct 14, 2026
34deed4
refactor(platform-wallet-storage): reuse the live repair helpers in V019
lklimek Oct 14, 2026
bbd98f5
docs(platform-wallet-storage): name both guards of the shared V019 re…
lklimek Oct 14, 2026
19b2008
test(platform-wallet-storage): pin V019's repair of an asset lock wit…
lklimek Oct 14, 2026
6e63275
test(platform-wallet-storage): rescan a wallet whose Core history was…
lklimek Oct 14, 2026
4c450e7
fix(platform-wallet-storage)!: rebuild pre-V019 Core history by resca…
lklimek Oct 14, 2026
486e6a2
fix(platform-wallet-storage)!: renumber the Core rescan migration to …
lklimek Oct 14, 2026
62582b0
test(platform-wallet-storage): pin which asset-lock rows a conflict r…
lklimek Oct 14, 2026
6c3b7f8
docs(changelog): note the non-exhaustive WalletStorageError API change
lklimek Oct 14, 2026
8182993
chore: merge v5.1-dev into fix/pr-5126
lklimek Oct 16, 2026
a437848
build!: pin rust-dashcore to the rust-dashcore#1112 head 214f7d3e
lklimek Oct 16, 2026
fa110a1
test(platform-wallet-storage): rescan an upgraded wallet below its re…
lklimek Oct 16, 2026
3d0a7c3
chore: pin rust-dashcore for crypto API migration
lklimek Oct 21, 2026
34d93ec
refactor(wallet): adapt native crypto keys and preserve signature bytes
lklimek Oct 21, 2026
cccf3cc
refactor(ffi): adapt native bindings to typed Core cryptography
lklimek Oct 21, 2026
069207d
test(ffi): pin signer bytes across deterministic digests
lklimek Oct 21, 2026
f17cfde
refactor!: migrate Platform consumers to typed Core cryptography
lklimek Oct 21, 2026
43795f5
fix: adapt zeroizing key exports to signing slices
lklimek Oct 21, 2026
1e87670
fix(dpp): preserve identity public key parse errors
lklimek Oct 21, 2026
4625a62
fix(sdk): remove redundant voucher key reference
lklimek Oct 21, 2026
374d0c6
fix(wallet): convert provider keys at crypto API boundaries
lklimek Oct 21, 2026
dde93e9
fix(wallet): use native secret export autoderef
lklimek Oct 21, 2026
6aee11e
fix: adapt WASM encryption keys and seeded node test keys
lklimek Oct 21, 2026
4ad35d0
fix(wasm): retain private key owner during scalar conversion
lklimek Oct 21, 2026
a9018cd
fix(ffi): preserve key ownership and use typed scalar parsers
lklimek Oct 21, 2026
5c5dfa0
style(wasm): apply crate edition import ordering
lklimek Oct 21, 2026
549d013
test(dpp): assert transparent legacy key parsing errors
lklimek Oct 21, 2026
675a7ea
refactor(dpp): use Core ECDSA verification directly
lklimek Oct 21, 2026
9f28131
test(dpp): assert typed crypto errors and clarify nonce parity
lklimek Oct 21, 2026
d14aa58
test(swift-sdk): retain fixture writer while taking migration snapshot
lklimek Oct 21, 2026
eac4f4c
fix(wallet): merge typed crypto base into transaction accounting
lklimek Oct 21, 2026
0044a40
chore(deps): update rust-dashcore to latest 0.46 dev
lklimek Oct 21, 2026
c653e46
Merge updated rust-dashcore prerequisite into wallet recovery
lklimek Oct 21, 2026
5441a2b
test(wallet-storage): derive sweep fixture IDs from transaction bodies
lklimek Oct 21, 2026
f750022
fix(wallet-storage): reject inconsistent transaction bodies before re…
lklimek Oct 21, 2026
292b510
Merge released crypto prerequisite into wallet recovery
lklimek Oct 21, 2026
f56c12f
fix(platform-wallet): preserve drain restore requirements across stac…
lklimek Oct 21, 2026
89ad051
merge(wallet-storage): refresh Core wallet restore from PR5207
lklimek Oct 21, 2026
dae6045
fix(wallet-storage): withhold unsupported drain operation capability
lklimek Oct 21, 2026
0410b5a
Merge commit 'dae60456ec08feb6baa52f4155670988961b271b' into refresh/…
lklimek Oct 21, 2026
52a15fa
merge(wallet-storage): inherit PR5150 review follow-up
lklimek Oct 21, 2026
c480a7d
feat(wallet)!: retain drain operation evidence through funding conflicts
lklimek Oct 21, 2026
918f0a7
refactor(wallet): share asset-lock persistence decisions
lklimek Oct 21, 2026
6e00e2e
fix(ffi): preserve ordered drain conflict evidence across hosts
lklimek Oct 21, 2026
519f7a8
fix(platform-wallet): verify pending coin reservation authorization
lklimek Oct 21, 2026
cdaf796
fix(platform-wallet): preserve noncanonical signed spend authorization
lklimek Oct 21, 2026
06cf4f8
test(platform-wallet): cover nonstandard signed reservation hash flags
lklimek Oct 21, 2026
c7d09cb
fix(wallet-storage): authenticate restored claims and checkpoint prom…
lklimek Oct 22, 2026
6b254b6
fix(wallet-storage): index spend-claim ownership once per load
lklimek Oct 22, 2026
449d31b
fix(wallet-storage)!: keep unmined spend evidence through the V021 re…
lklimek Oct 22, 2026
4766303
test(wallet-storage): pin how kept unmined spends settle after the V0…
lklimek Oct 22, 2026
4e135b8
Merge remote-tracking branch 'origin/v5.1-dev' into merge/pr5150-v51-…
lklimek Oct 23, 2026
7d2d6ed
Merge remote-tracking branch 'origin/v5.1-dev' into feat/rs-platform-…
lklimek Oct 23, 2026
1f84154
Merge PR #5150 head (fix/pr-5126) into feat/rs-platform-wallet-e2e
lklimek Oct 23, 2026
661f68c
ci: make .cargo/config.toml the single source of RUST_MIN_STACK
lklimek Oct 23, 2026
b1d19ac
refactor(platform-wallet-storage)!: renumber core transaction account…
lklimek Oct 23, 2026
80c680a
Merge commit 'b1d19ac07d' into mig/5207
lklimek Oct 23, 2026
d602bde
chore(sdk): drop the duplicate ciborium dev-dependency
lklimek Oct 23, 2026
3287633
refactor(dash-platform-macros): drop the never-shipped multi_thread s…
lklimek Oct 23, 2026
96fde2f
refactor(simple-signer): carry typed key-wallet errors from the deriv…
lklimek Oct 23, 2026
d58fe9a
ci: run dash-platform-macros and simple-signer tests in the workspace…
lklimek Oct 23, 2026
cd6c188
Merge commit '80c680affc' into mig/5210
lklimek Oct 23, 2026
21bbd7a
test(platform-wallet-storage): sign the wallet's pending sends in the…
lklimek Oct 23, 2026
dc0e478
test(platform-wallet): size e2e fees with the network-agreed protocol…
lklimek Oct 23, 2026
e004bd2
refactor(platform-wallet): drop the redundant async tracked_asset_loc…
lklimek Oct 23, 2026
346eb22
refactor(platform-wallet): remove the guard-free Type-18 broadcast en…
lklimek Oct 23, 2026
1721cb7
test(platform-wallet): pin the wallet-drain persistence gate as an ex…
lklimek Oct 23, 2026
336f624
chore(platform-wallet): restore sibling-only derive helper visibility…
lklimek Oct 23, 2026
d16a512
Merge commit '21bbd7a826' into mig/5528
lklimek Oct 23, 2026
b25b721
refactor(platform-wallet-storage)!: renumber asset lock conflict evid…
lklimek Oct 23, 2026
f8d4656
Merge #5150 (fix/pr-5126) V020 renumber into feat/rs-platform-wallet-e2e
lklimek Oct 23, 2026
29c1abe
fix(platform-wallet-storage): index every input of kept pending recor…
lklimek Oct 23, 2026
3ff702d
fix(platform-wallet-storage): index retained coins by funding txid an…
lklimek Oct 23, 2026
19f60d2
fix(platform-wallet-storage): restore set-aside records where their c…
lklimek Oct 23, 2026
841ede2
docs(changelog): note the breaking WalletStorageError change
lklimek Oct 23, 2026
fd8b8ee
test(platform-wallet-storage): widen scaling bounds and pin the V020 …
lklimek Oct 23, 2026
ef7910e
fix(platform-wallet-storage): make V020 honour the load policy on unr…
lklimek Oct 23, 2026
4247fed
Merge commit '132ae31a1356d035cd8326f27c1109685090a71d' into stack/5150
lklimek Oct 23, 2026
2b5cc1f
Merge commit '132ae31a1356d035cd8326f27c1109685090a71d' into stack/5207
lklimek Oct 23, 2026
6d1107d
Merge commit '132ae31a1356d035cd8326f27c1109685090a71d' into stack/5210
lklimek Oct 23, 2026
98bdd41
Merge commit '132ae31a1356d035cd8326f27c1109685090a71d' into stack/5528
lklimek Oct 23, 2026
a9ac347
Merge commit '98bdd41d3ecc61b16c0160191d069b320432a69d' into feat/rs-…
lklimek Oct 23, 2026
d4b6de2
test(platform-wallet): run e2e on the real SqlitePersister capabiliti…
lklimek Oct 23, 2026
dba7cae
test(platform-wallet): trace every stored wallet-level record in the …
lklimek Oct 23, 2026
5b26750
test(platform-wallet): pin a no-change asset lock's row when a block …
lklimek Oct 23, 2026
48dad85
fix(platform-wallet): fold the manager's held slices into a block's w…
lklimek Oct 23, 2026
8dbc128
test(wallet-storage): an intact store with burned one-time funding ke…
lklimek Oct 23, 2026
d2395b5
test(platform-wallet): pin which held slices a block's wallet-level r…
lklimek Oct 23, 2026
ed3e1a3
Merge #5150 (local 48dad855eb) into feat/rs-platform-wallet-e2e
lklimek Oct 23, 2026
495e9e8
Merge commit 'd2395b509c' into feat/rs-platform-wallet-e2e
lklimek Oct 23, 2026
5461281
fix(wallet-storage): stop routing a restored keys account's used addr…
lklimek Oct 23, 2026
241d385
test(platform-wallet): let the asset-lock build provision IdentityTop…
lklimek Oct 23, 2026
32b5dfc
Merge commit 'd2395b509c' into stack/5207
lklimek Oct 23, 2026
d0ae403
Merge commit '32b5dfcbe8a1e43e56b0fc7f8202b9cbde4d595b' into stack/5210
lklimek Oct 23, 2026
cc5d498
Merge stack/5210 (local d0ae403f70) into stack/5528
lklimek Oct 23, 2026
ba93e6b
Merge commit 'cc5d498837' into feat/rs-platform-wallet-e2e
lklimek Oct 23, 2026
ae5b045
test(platform-wallet): derive e2e signer keys in the harness instead …
lklimek Oct 23, 2026
8513709
Merge harness-side signer derivation (simple-signer back to base) int…
lklimek Oct 23, 2026
fbf54c6
test(platform-wallet): derive the AL-002 drain fee from the record, n…
lklimek Oct 23, 2026
0f14276
test(platform-wallet): fix SH-035 and SH-031 expectations and correct…
lklimek Oct 23, 2026
66ef21d
Merge SH-035/SH-031 test fixes into feat/rs-platform-wallet-e2e
lklimek Oct 23, 2026
97da5ed
test(sdk): reproduce address nonce mismatch on sequential address-fun…
lklimek Oct 23, 2026
e66df27
fix(platform-wallet-storage): harden V020 reads and preserve its hist…
lklimek Oct 23, 2026
f573d63
fix(platform-wallet-storage): repair authorization by persisted trans…
lklimek Oct 23, 2026
480dd28
fix(sdk): retry address nonce skew on another node using existing sta…
lklimek Oct 23, 2026
5867e38
Merge #5562 (SDK address nonce skew fix) into feat/rs-platform-wallet…
lklimek Oct 23, 2026
a7c29d5
test(platform-wallet): cover identity, cross-wallet and top-up shield…
lklimek Oct 23, 2026
09abc40
fix(platform-wallet-storage): freeze V019 codec and recover corrupt m…
lklimek Oct 23, 2026
08f7c55
fix(platform-wallet-storage): preserve survivor evidence across doubl…
lklimek Oct 23, 2026
ea5ce6b
test(platform-wallet): make SH-004 independent of concurrent shielded…
lklimek Oct 23, 2026
f72313e
fix(platform-wallet-storage): guard live migration codec with immutab…
lklimek Oct 23, 2026
5a2204c
Merge commit 'f72313e48b' into stack/5207
lklimek Oct 23, 2026
beadf9b
Merge commit '5a2204c5a3' into stack/5210
lklimek Oct 23, 2026
23258a2
Merge stack/5210 (local beadf9b600) into stack/5528
lklimek Oct 23, 2026
f030a7d
Merge commit '23258a2df8' into wip/3549-next
lklimek Oct 23, 2026
2e2fee8
test(platform-wallet): wait for SH-002 change and read SH-042 consume…
lklimek Oct 23, 2026
96ff22e
test(platform-wallet): use a 5 s base DAPI ban period in the e2e SDK
lklimek Oct 23, 2026
f1b03f3
test(platform-wallet): reproduce duplicate commitment appends from co…
lklimek Oct 23, 2026
ac9693e
fix(platform-wallet): take the shielded store write lock before snaps…
lklimek Oct 23, 2026
1896a57
Merge shielded sync race fix into feat/rs-platform-wallet-e2e
lklimek Oct 23, 2026
e3d42b2
test(platform-wallet): reproduce inconsistent shielded trees and spec…
lklimek Oct 23, 2026
7ff9831
feat(platform-wallet)!: detect inconsistent shielded commitment trees…
lklimek Oct 23, 2026
746f44e
Merge shielded tree consistency check into feat/rs-platform-wallet-e2e
lklimek Oct 23, 2026
472ed65
test(platform-wallet): fail e2e shielded syncs on an inconsistent com…
lklimek Oct 23, 2026
908b992
test(platform-wallet): reject zero-amount shielded spends before rese…
lklimek Oct 24, 2026
f3079e1
fix(platform-wallet): reject zero-amount shielded spends before reser…
lklimek Oct 24, 2026
99ac326
test(platform-wallet): make shielded e2e cases prove their claims
lklimek Oct 24, 2026
2347f48
Merge branch 'fix/shielded-zero-amount-guard' into feat/rs-platform-w…
lklimek Oct 24, 2026
8562521
test(platform-wallet): derive the SH-036 funding floor from versioned…
lklimek Oct 24, 2026
990212c
test(sdk): fill the verified protocol version in identities contract …
lklimek Oct 24, 2026
d817fc4
test(sdk): reproduce the skipped compacted phase when the recent proo…
lklimek Oct 24, 2026
ddbcda1
fix(sdk): query compacted address balances when the recent proof has …
lklimek Oct 24, 2026
f8c380c
Merge branch 'fix/sdk-address-sync-compacted' into feat/rs-platform-w…
lklimek Oct 24, 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
6 changes: 6 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# Debug-build e2e setup async-frame inflation needs ~8 MiB: tokio-shared-rt block_on polls the root future on the libtest caller, not a sized worker.
# force prevents a smaller shell-exported RUST_MIN_STACK from overriding this empirically measured workspace value.
# Single source of truth: cargo and cargo-nextest both apply [env] with force, so CI workflows must not set RUST_MIN_STACK.
[env]
RUST_MIN_STACK = { value = "8388608", force = true }

[target.aarch64-unknown-linux-musl]
rustflags = ["-C", "target-feature=-crt-static"]

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/tests-rs-nightly-long-running.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ jobs:
- name: Run nightly-only upgrade fork tests
run: |
ulimit -c unlimited
RUST_MIN_STACK=4194304 cargo test \
cargo test \
--package drive-abci \
--test strategy_tests \
--all-features \
Expand All @@ -135,7 +135,7 @@ jobs:
if: ${{ !cancelled() }}
run: |
ulimit -c unlimited
RUST_MIN_STACK=4194304 cargo test \
cargo test \
--package drive \
--package drive-abci \
--package platform-wallet-storage \
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/tests-rs-wallet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,6 @@ jobs:
--no-tests fail \
-E 'not test(~wallet::shielded::)'
env:
RUST_MIN_STACK: 4194304
CARGO_PROFILE_DEV_DEBUG: "0"
CARGO_PROFILE_DEV_CODEGEN_UNITS: "256"

Expand All @@ -264,6 +263,5 @@ jobs:
--all-features \
--locked
env:
RUST_MIN_STACK: 4194304
CARGO_PROFILE_DEV_DEBUG: "0"
CARGO_PROFILE_DEV_CODEGEN_UNITS: "256"
4 changes: 1 addition & 3 deletions .github/workflows/tests-rs-workspace.yml
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,7 @@ jobs:
--package dash-async \
--package platform-value \
--package platform-encryption \
--package dash-platform-macros \
--package rs-dapi \
--package platform-wallet \
--package platform-wallet-storage \
Expand All @@ -480,7 +481,6 @@ jobs:
--locked \
-E '(not test(~shield) or (package(=platform-wallet-storage) and not test(~wallet::shielded::))) and (not binary_id(=drive-abci::strategy_tests) or test(~comprehensive_mixed_operations) or test(~process_proposal_collision))'
env:
RUST_MIN_STACK: 4194304
CARGO_PROFILE_DEV_DEBUG: "0"
CARGO_PROFILE_DEV_CODEGEN_UNITS: "256"

Expand Down Expand Up @@ -516,7 +516,6 @@ jobs:
--locked \
-E 'binary_id(=drive-abci::strategy_tests) and not test(~comprehensive_mixed_operations) and not test(~process_proposal_collision) and not test(~shield)'
env:
RUST_MIN_STACK: 4194304
CARGO_PROFILE_DEV_DEBUG: "0"
CARGO_PROFILE_DEV_CODEGEN_UNITS: "256"

Expand Down Expand Up @@ -554,7 +553,6 @@ jobs:
--locked \
-- shield
env:
RUST_MIN_STACK: 4194304
CARGO_PROFILE_DEV_DEBUG: "0"
CARGO_PROFILE_DEV_CODEGEN_UNITS: "256"

Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@

### Changed

- **platform-wallet-storage (breaking, Rust API):** `WalletStorageError` is
`#[non_exhaustive]`, so a `match` on it outside the crate needs a wildcard
arm. New failure modes: `SpendAuthorization` (a stored pending spend needs
authorization rules the wallet cannot verify), `TransactionBodyConflict` (a
record reuses a stored txid with a different body), `UnknownWalletNetwork`
(an unknown `wallets.network` label) and `NetAmountOverflow` (a net amount
outside `i64`). See [#5150](https://github.com/dashpay/platform/pull/5150).

- **Rust dependencies:** pin rust-dashcore to `dev` at `280b3f2c`, which includes
[rust-dashcore#1175](https://github.com/dashpay/rust-dashcore/pull/1175):
every transaction payload keeps its stored serde variant index, so wallet rows
Expand Down
67 changes: 55 additions & 12 deletions Cargo.lock

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

Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ val AssetLockEntity.statusLabel: String
// Core finality proven, Platform-side consumption unknown.
// Rendered as "Unknown(5)" before this branch existed.
5 -> "RecoveredFromChain"
6 -> "DrainCompleted"
7 -> "Funding conflicted"
else -> "Unknown($statusRaw)"
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,9 @@ class AssetLockDisplayTest {
assertEquals("Consumed", lock(4).statusLabel)
// Regression: rendered as "Unknown(5)" before the branch existed.
assertEquals("RecoveredFromChain", lock(5).statusLabel)
assertEquals("Unknown(7)", lock(7).statusLabel)
assertEquals("Funding conflicted", lock(7).statusLabel)
assertFalse(lock(7).isVisibleAsResumable)
assertFalse(lock(7).canFundIdentity)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2383,7 +2383,7 @@ class PlatformWalletPersistenceHandler(
// InstantSendLocked (2) the network has locked the inputs, so
// flip the linked TXOs here. Monotonic, and keyed strictly to
// TXOs already linked to THIS lock's funding txid.
if (incomingStatus >= ASSET_LOCK_STATUS_INSTANT_SEND_LOCKED) {
if (incomingStatus in ASSET_LOCK_STATUS_INSTANT_SEND_LOCKED..6) {
val fundingTxid = outpointTxid(outPoint)
db.txoDao().markSpentBySpendingTxid(fundingTxid, now())
}
Expand Down Expand Up @@ -3196,7 +3196,7 @@ class PlatformWalletPersistenceHandler(
private suspend fun spendByFinalizedAssetLock(spendingTxid: ByteArray): Boolean {
val status = database.assetLockDao()
.maxStatusForTxid(spendingTxid.reversedArray().toHex())
return status != null && status >= ASSET_LOCK_STATUS_INSTANT_SEND_LOCKED
return status != null && status in ASSET_LOCK_STATUS_INSTANT_SEND_LOCKED..6
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ interface AssetLockDao {
suspend fun getByOutPointHex(outPointHex: String): AssetLockEntity?

/**
* Strongest lifecycle status any asset lock funded by [txidHex] has
* Strongest finalized status any asset lock funded by [txidHex] has
* reached, or null when the transaction funds no tracked lock.
*
* [txidHex] is the explorer DISPLAY txid hex (64 chars, wire order
Expand All @@ -131,8 +131,8 @@ interface AssetLockDao {
* arbitrary rows.
*/
@Query(
"SELECT MAX(statusRaw) FROM asset_locks " +
"WHERE length(:txidHex) = 64 " +
"SELECT MAX(statusRaw) FROM asset_locks WHERE statusRaw IN (2, 3, 4, 5, 6) " +
"AND length(:txidHex) = 64 " +
"AND lower(:txidHex) NOT GLOB '*[^0-9a-f]*' " +
"AND substr(outPointHex, 1, 65) = lower(:txidHex) || ':'"
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ data class AssetLockEntity(
/**
* `AssetLockStatus` discriminant: 0 Built, 1 Broadcast,
* 2 InstantSendLocked, 3 ChainLocked, 4 Consumed,
* 5 RecoveredFromChain.
* 5 RecoveredFromChain, 6 DrainCompleted, 7 Conflicted.
* Conflicted is not finalized or resumable.
*
* `4` is terminal; `5` is NOT, its higher discriminant
* notwithstanding. `5` means Core finality is proven while
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,16 @@ class AssetLockResumableDaoTest {
.map { it.outPointHex }
.sorted()

@Test
fun `conflicted output does not prove finality or hide another finalized output`() = runTest {
val txid = "ab".repeat(32)
insert("$txid:0", 7)
assertEquals(null, db.assetLockDao().maxStatusForTxid(txid))
assertEquals(emptyList<String>(), resumableAddressOutpoints())
insert("$txid:1", 2)
assertEquals(2, db.assetLockDao().maxStatusForTxid(txid))
}

// ── observeResumableAddressTopUps ─────────────────────────────────

/**
Expand Down
5 changes: 5 additions & 0 deletions packages/rs-dash-platform-macros/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,8 @@ proc-macro = true
quote = "1.0.37"
syn = { version = "2.0.75", features = ["full"] }
heck = "0.5.0"

[dev-dependencies]
# Exercises the runtime the `stack_size` macro drives async bodies on; needs
# `rt-multi-thread` so tests can call `block_in_place` (issue #3535 regression).
tokio = { version = "1.40", features = ["rt", "rt-multi-thread"] }
Loading
Loading