Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
334 commits
Select commit Hold shift + click to select a range
2aefa6e
perf(llmq): deserialize DKG messages once
PastaPastaPasta Aug 7, 2026
90bf725
test: add dkg_message_framing fuzz target
PastaPastaPasta Aug 7, 2026
5d46561
test: cover DKG pending-queue quotas and worker-deferred BLS rejection
PastaPastaPasta Aug 7, 2026
9d93f74
fix: more fixes for RPCHelp: getcoinjoininfo, getwalletinfo
knst Aug 12, 2026
498a1ae
fix(util): handle the UINT64_MAX-containing range in CRangesSet
PastaPastaPasta Aug 12, 2026
583a330
Merge #7587: fix(util): handle the UINT64_MAX-containing range in CRa…
PastaPastaPasta Aug 12, 2026
0d092f5
fix: avoid maybe-uninitialized warning in ScopedBLSLegacyScheme
PastaPastaPasta Aug 12, 2026
76c38fa
Merge #7586: fix: avoid maybe-uninitialized warning in ScopedBLSLegac…
PastaPastaPasta Aug 12, 2026
8b200cd
fix: make the wrapped successor explicit in CRangesSet under -fsaniti…
PastaPastaPasta Aug 12, 2026
4b2ec38
build: confine Rust support to validated hosts
PastaPastaPasta Aug 12, 2026
594f394
fix: match Rust macOS deployment target to the C++ toolchain
PastaPastaPasta Aug 12, 2026
eeb3b91
build: dist the cxxbridge stamp before generated sources
PastaPastaPasta Aug 12, 2026
981a25d
Merge #7590: fix: make the wrapped successor explicit in CRangesSet u…
PastaPastaPasta Aug 13, 2026
150d0a9
feat(wallet): add Platform (DIP-9/13/14/15) key derivation helpers
PastaPastaPasta Aug 12, 2026
f908fa0
feat(wallet): add generic per-wallet Platform data records
PastaPastaPasta Aug 12, 2026
2b11d77
feat(wallet): add DIP-15 friendship keychain import and platform key …
PastaPastaPasta Aug 12, 2026
1474489
fix(wallet): validate parent pubkey before DIP-14 public derivation
PastaPastaPasta Aug 12, 2026
47aefb4
fix(wallet): fail platform seed selection when the pinned seed is una…
PastaPastaPasta Aug 12, 2026
f64d46c
fix(wallet): preserve friendship descriptor state on re-import
PastaPastaPasta Aug 12, 2026
293a144
fix(wallet): drop platform data from memory only after the database e…
PastaPastaPasta Aug 12, 2026
4863f44
fix(wallet): fail platform seed selection on a malformed seed pin
PastaPastaPasta Aug 12, 2026
ef5fad6
fix(wallet): require a full unlock before serving the legacy platform…
PastaPastaPasta Aug 12, 2026
9d1015e
test(wallet): pin friendship derivation against rust-dashcore key-wallet
PastaPastaPasta Aug 13, 2026
b7c04f8
chore(wallet): annotate m_platform_data locking, add missing includes
PastaPastaPasta Aug 13, 2026
2974474
fix: make CoinJoin nSessionDenom atomic
PastaPastaPasta Aug 3, 2026
ea1deec
fix(coinjoin): snapshot collaterals before random fee charging
PastaPastaPasta Aug 13, 2026
3f4eadd
fix(coinjoin): revalidate DSA session before admission
PastaPastaPasta Aug 13, 2026
9bf0816
fix: changed type of mapped_as for rpc help
knst Aug 13, 2026
2addaf8
fix: skip old budget block value checks while not synced
UdjinM6 Aug 13, 2026
c00067d
test: cover old budget window block values during and after sync
UdjinM6 Aug 13, 2026
ec52988
Merge #7577: fix(rpc): refuse to pay Platform addresses before the v2…
PastaPastaPasta Aug 13, 2026
4511cc4
Merge #7502: backport: bitcoin/bitcoin#23083: rpc: Fail to return und…
PastaPastaPasta Aug 13, 2026
dc4e364
Merge bitcoin/bitcoin#25122: rpc: getreceivedbylabel, return early if…
knst May 23, 2022
88be189
Merge bitcoin/bitcoin#25504: RPC: allow to track coins by parent desc…
knst Aug 16, 2022
7589268
Merge bitcoin/bitcoin#25647: wallet: return change from SelectionResult
knst Aug 22, 2022
9024c33
Merge bitcoin/bitcoin#25924: scripted-diff: rpc: fix rescan RPC name …
knst Aug 25, 2022
3a54613
Merge bitcoin/bitcoin#25768: wallet: Properly rebroadcast unconfirmed…
knst Sep 5, 2022
c2d21b5
Merge bitcoin/bitcoin#26091: test: Fix syncwithvalidationinterfaceque…
knst Sep 15, 2022
9f7bae5
Merge bitcoin/bitcoin#26037: test: Fix `wallet_{basic,listsinceblock}…
knst Sep 8, 2022
427067d
Merge bitcoin/bitcoin#25990: test: apply fixed feerate to avoid varia…
knst Sep 9, 2022
ad13ec2
Merge bitcoin/bitcoin#26021: wallet: bugfix, load a wallet with an un…
knst Sep 13, 2022
b4dab95
Merge bitcoin/bitcoin#26205: wallet: #25768 follow ups
knst Oct 13, 2022
6d1968b
Merge bitcoin/bitcoin#26203: wallet: Use correct effective value when…
knst Oct 4, 2022
7e03275
Merge #7596: fix: revalidate CoinJoin DSA session before admission
PastaPastaPasta Aug 13, 2026
3e2bc49
Merge #7598: fix: snapshot CoinJoin collaterals before random fee cha…
PastaPastaPasta Aug 13, 2026
7ac4cdd
fix(wallet): skip empty-mnemonic descriptors in platform seed selection
PastaPastaPasta Aug 13, 2026
9ceadf0
fix(wallet): reject unknown platform key types before derivation
PastaPastaPasta Aug 13, 2026
f7788bf
fix(wallet): treat corrupt platform data records as wallet corruption
PastaPastaPasta Aug 13, 2026
35e6936
refactor(wallet): drop the unused friendship import label parameter
PastaPastaPasta Aug 13, 2026
9297f19
Merge #7550: backport: bitcoin#25122, #25504, #25647, #25768, #25924,…
PastaPastaPasta Aug 13, 2026
a325fdb
test: suppress QDBus watcher QThread leak in lsan
PastaPastaPasta Aug 12, 2026
b2a0e47
Merge #7597: fix: make CoinJoin session denomination atomic
PastaPastaPasta Aug 13, 2026
b3e5295
Merge #7499: test: reduce nodes in LLMQ connections test
PastaPastaPasta Aug 13, 2026
82a1cc7
fix(llmq): reject response errors in QGETDATA requests
PastaPastaPasta Aug 13, 2026
9c3f4ff
fix(bls): cleanse generated secret candidate
PastaPastaPasta Aug 13, 2026
956e1e0
fix(wallet): serialize mixing-only lock state
PastaPastaPasta Aug 13, 2026
c42c883
Merge #7607: fix(wallet): serialize mixing-only lock state
PastaPastaPasta Aug 13, 2026
1a32e0e
test: cover special QGETDATA error bytes
PastaPastaPasta Aug 13, 2026
51496f0
Merge #7604: fix: skip old budget block value checks while not synced
PastaPastaPasta Aug 13, 2026
aa6eaa8
test: suppress leaks from Qt binaries
PastaPastaPasta Aug 13, 2026
837a7da
Merge #7606: fix: cleanse generated BLS secret candidate
PastaPastaPasta Aug 13, 2026
892281e
fix(coinjoin): bind entry admission to session snapshot
PastaPastaPasta Aug 13, 2026
06501c3
Merge #7605: fix(net): reject response errors in QGETDATA requests
PastaPastaPasta Aug 13, 2026
ada242d
Merge #7589: test: suppress Qt executable leaks in lsan
PastaPastaPasta Aug 13, 2026
3b865cf
Merge #7557: perf: deserialize DKG messages once (framing-only intake)
PastaPastaPasta Aug 15, 2026
ec3d0ef
feat(qt): identify masternode transactions in history
PastaPastaPasta Aug 15, 2026
314a3d5
docs: add release notes for masternode history
PastaPastaPasta Aug 15, 2026
acb01a2
refactor(evo): extract shared provider network-field validation
PastaPastaPasta Aug 15, 2026
107171b
test: wait for MN disconnect after in-place ProUpServ migration
PastaPastaPasta Aug 13, 2026
b7da66f
Merge #7595: feat(qt): identify masternode transactions in history
PastaPastaPasta Aug 15, 2026
b2a42d2
Merge #7610: test: wait for MN disconnect after in-place ProUpServ mi…
PastaPastaPasta Aug 16, 2026
ca442a6
test: call IsValidInOuts directly in denom-snapshot regression test
PastaPastaPasta Aug 16, 2026
dc08f2f
fix(qt): remove regression test that depends on filter entry order
knst Aug 16, 2026
75df77a
fix(qt): persist transaction type filter by value instead of combo index
knst Aug 16, 2026
2bcb6c4
test(qt): drop transaction long-description rendering checks
knst Aug 16, 2026
e5d1c57
test(qt): drop redundant TxPlainTextRole checks
knst Aug 16, 2026
11fd254
test: tighten error message in masternode_payments_tests
knst Aug 16, 2026
bde93a4
feat(interfaces): add wallet fund, sign and coin-lock primitives
PastaPastaPasta Aug 15, 2026
f2e0ed5
refactor(evo): expose typed provider transaction operations
PastaPastaPasta Aug 15, 2026
63c1d8b
Merge #7613: test: tighten error message in masternode_payments_tests
PastaPastaPasta Aug 17, 2026
93c47eb
refactor(coinjoin): use static_cast for entry count checks
PastaPastaPasta Aug 17, 2026
5809821
fix: re-ordering list of filters to put Masternode between "Mined" an…
knst Aug 16, 2026
ad7a524
Merge #7599: fix: bind CoinJoin entry admission to session snapshot
PastaPastaPasta Aug 17, 2026
885a46c
fix(rpc): reject incompletely signed provider transactions
PastaPastaPasta Aug 15, 2026
bb24dc8
test(qt): match CoinJoin type-filter entries by title, not a copied list
knst Aug 17, 2026
12e6389
docs: clarify when to use assert vs Assert vs Assume vs CHECK_NONFATAL
PastaPastaPasta Aug 17, 2026
12f5ba2
Merge #7600: refactor(interfaces): expose typed provider transaction …
PastaPastaPasta Aug 17, 2026
a1de5f6
refactor(rpc, wallet): address review feedback on provider transactio…
PastaPastaPasta Aug 17, 2026
e454918
refactor: replace C-style and functional casts in Dash code
PastaPastaPasta Aug 17, 2026
9fbc7e2
lint: prohibit C-style and functional casts in Dash code
PastaPastaPasta Aug 17, 2026
047aa52
refactor: expose masternode Platform endpoints, quorum keys and isloc…
PastaPastaPasta Aug 13, 2026
fef7914
fix(wallet): keep damaged Platform cache records noncritical on load
PastaPastaPasta Aug 17, 2026
d4a5a22
fix(wallet): validate mnemonics before deriving the platform seed
PastaPastaPasta Aug 17, 2026
ecafbb8
build: accept equal-mtime cxxbridge artifacts from source tarballs
PastaPastaPasta Aug 17, 2026
480126c
docs: describe the optional Rust build support
PastaPastaPasta Aug 17, 2026
340be85
test: move mined-commitment EvoDB helpers into llmq test utils
PastaPastaPasta Aug 17, 2026
ae11a9d
test: cover Platform endpoint, quorum and islock node interface seams
PastaPastaPasta Aug 17, 2026
3b8fc64
feat(wallet): add Platform (DIP-9/13/14/15) key derivation helpers
PastaPastaPasta Aug 12, 2026
c6fe429
feat(wallet): add generic per-wallet Platform data records
PastaPastaPasta Aug 12, 2026
01c8a8a
feat(wallet): add DIP-15 friendship keychain import and platform key …
PastaPastaPasta Aug 12, 2026
a67dbc2
fix(wallet): validate parent pubkey before DIP-14 public derivation
PastaPastaPasta Aug 12, 2026
d583a42
fix(wallet): fail platform seed selection when the pinned seed is una…
PastaPastaPasta Aug 12, 2026
2cd5bcd
fix(wallet): preserve friendship descriptor state on re-import
PastaPastaPasta Aug 12, 2026
005459f
fix(wallet): drop platform data from memory only after the database e…
PastaPastaPasta Aug 12, 2026
31637d7
fix(wallet): fail platform seed selection on a malformed seed pin
PastaPastaPasta Aug 12, 2026
3a430b5
fix(wallet): require a full unlock before serving the legacy platform…
PastaPastaPasta Aug 12, 2026
47c0751
test(wallet): pin friendship derivation against rust-dashcore key-wallet
PastaPastaPasta Aug 13, 2026
b78f3cf
chore(wallet): annotate m_platform_data locking, add missing includes
PastaPastaPasta Aug 13, 2026
80a46ec
fix(wallet): skip empty-mnemonic descriptors in platform seed selection
PastaPastaPasta Aug 13, 2026
3f954b4
fix(wallet): reject unknown platform key types before derivation
PastaPastaPasta Aug 13, 2026
b1da3d4
fix(wallet): treat corrupt platform data records as wallet corruption
PastaPastaPasta Aug 13, 2026
d5e41f4
refactor(wallet): drop the unused friendship import label parameter
PastaPastaPasta Aug 13, 2026
71225cf
Merge branch 'feat/optional-rust-components' (dash#7580) into platfor…
PastaPastaPasta Aug 17, 2026
f89b4d8
Merge branch 'wallet-seams' (dash#7581) into platform-gui-rust
PastaPastaPasta Aug 17, 2026
f1e2681
Merge branch 'platform-node-seams' (dash#7591) into platform-gui-rust
PastaPastaPasta Aug 17, 2026
f80ac5a
docs: add Platform Rust crate scope investigation for platform-gui-ru…
PastaPastaPasta Aug 7, 2026
7742d50
feat(qt): add Dash Platform GUI scaffolding behind --enable-platform-gui
PastaPastaPasta Jul 10, 2026
d0d1d32
feat: asset lock creation and node platform data seams
PastaPastaPasta Jul 10, 2026
d6bc8c4
feat(platform): define PlatformClient interface and shared GUI types
PastaPastaPasta Jul 10, 2026
aa794df
feat(platform): define state transition builder contract
PastaPastaPasta Jul 10, 2026
0096fbe
feat(platform): GroveDB merk proof verifier (C++ port of grovedb v5.0.0)
PastaPastaPasta Jul 10, 2026
7c844a6
feat(platform): DPP codecs and state transition construction
PastaPastaPasta Jul 10, 2026
988ac9e
feat(platform): gRPC-Web/TLS transport primitives
PastaPastaPasta Jul 10, 2026
3bcdc58
test(platform): live testnet end-to-end harness (identity + username)
PastaPastaPasta Jul 10, 2026
b3f0d2f
feat(platform): stored-document decoders for DPNS and DashPay
PastaPastaPasta Jul 10, 2026
eaa6d2f
feat: drive verifiers, DAPI client, and DashPay GUI integration
PastaPastaPasta Jul 10, 2026
72145c5
fix(platform): correct getIdentityKeys request; add read-path E2E har…
PastaPastaPasta Jul 10, 2026
9d01807
feat(qt): contacts list, username search, and profile editing
PastaPastaPasta Jul 10, 2026
0bf118b
lint: whitelist platform service/flow cycles; drop duplicate include
PastaPastaPasta Jul 10, 2026
e93e69a
fix(platform): proof-backed nonce queries, retained-quorum keys, exac…
PastaPastaPasta Jul 10, 2026
e28b38a
feat(qt): DashPay contact payments, send-to-username, and dashboard UX
PastaPastaPasta Jul 10, 2026
c0f4626
chore: move platform test-vector generators to a standalone repository
PastaPastaPasta Jul 11, 2026
13ac835
chore: move live-testnet platform E2E harness to a standalone repository
PastaPastaPasta Jul 11, 2026
f74fe31
test(platform): cover right-to-left and conditional-subquery proof paths
PastaPastaPasta Jul 11, 2026
934f40c
feat(platform): proof-verified contested-name vote state query
PastaPastaPasta Jul 11, 2026
45527d7
feat(qt): surface contested-name vote state in flow and dashboard
PastaPastaPasta Jul 11, 2026
1b10b34
fix(platform): reject overflowing protobuf length-delimited fields
PastaPastaPasta Jul 11, 2026
2d15801
fix(qt): abort username registration if the flow record fails to persist
PastaPastaPasta Jul 11, 2026
a26f587
fix(platform): enforce root consistency, proof freshness, and V1 enve…
PastaPastaPasta Jul 11, 2026
c648d1a
fix(qt): include bitcoin-config.h in send-coins headers for MOC
PastaPastaPasta Jul 11, 2026
f7e8ff8
lint(platform): remove locale-dependent calls and cppcheck warnings
PastaPastaPasta Jul 11, 2026
73cdf2c
ci: add a --enable-platform-gui build and unit-test job
PastaPastaPasta Jul 11, 2026
e7b4adc
doc(platform): correct V0-rejection comment to protocol >= 12
PastaPastaPasta Jul 11, 2026
5ff849c
fix(platform): pin one endpoint per query and scope freshness per end…
PastaPastaPasta Jul 11, 2026
bd14c14
fix(platform): accept HTTP chunk extensions in the gRPC-Web dechunker
PastaPastaPasta Jul 11, 2026
f0f5689
lint(platform): narrow scope of discarded contested-vote winner id
PastaPastaPasta Jul 11, 2026
ed58fc1
fix(platform): resolve GCC -Werror=range-loop-construct in dpns_domai…
PastaPastaPasta Jul 11, 2026
85e36ae
fix(qt): drop QWizard from the username registration flow
PastaPastaPasta Aug 2, 2026
ae34a17
fix(qt): keep wrapped DashPay intro labels tall enough for their content
PastaPastaPasta Aug 2, 2026
437d8cf
fix(qt): show the typed username alongside its DPNS-normalized form
PastaPastaPasta Aug 2, 2026
07c65d1
qt: pass the contact request creation time to friendship keychain import
PastaPastaPasta Aug 13, 2026
762aa85
build: make --enable-platform-gui imply the shared Rust machinery
PastaPastaPasta Aug 13, 2026
d002e33
platform: add dash-platform-ffi crate bridging grovedb/drive/dpp
PastaPastaPasta Aug 7, 2026
3744395
platform: back proof, DPP, and drive layers with the Rust bridge
PastaPastaPasta Aug 7, 2026
cf7123b
platform: harden bridge boundary per review
PastaPastaPasta Aug 7, 2026
1fd1427
build: pin rust/platform to dashpay/platform feat/transport-free-embe…
PastaPastaPasta Aug 8, 2026
d3febbd
platform: add ContextProvider-backed FromProof verification layer
PastaPastaPasta Aug 8, 2026
7f0b45e
platform: build DPNS and contact-request documents with the upstream …
PastaPastaPasta Aug 8, 2026
39315b1
platform: verify proved DAPI responses through FromProof end to end
PastaPastaPasta Aug 8, 2026
5681f93
platform: pin identity proof paths with clean-rejection tests
PastaPastaPasta Aug 8, 2026
b1da6ee
build(platform): update transport-free core pin
PastaPastaPasta Aug 10, 2026
3e1124f
style(platform): apply current rustfmt
PastaPastaPasta Aug 10, 2026
0f5bcc2
fix(platform): harden transport and optional build
PastaPastaPasta Aug 10, 2026
2f22270
fix(platform): harden DashPay flows and UI
PastaPastaPasta Aug 11, 2026
965f204
fix(platform): fully initialize interrupted call result
PastaPastaPasta Aug 11, 2026
a424a3a
qt: expand DashPay profile fields
PastaPastaPasta Aug 11, 2026
93c320c
build(platform): repin dashpay/platform crates to the v4.2-dev decode…
PastaPastaPasta Aug 13, 2026
c89ad07
qt: thread the friendship creation time through prepareReceivingKeychain
PastaPastaPasta Aug 13, 2026
9d02c7c
build: restore the platform client library in the test_dash link
PastaPastaPasta Aug 13, 2026
432992a
build: allow Platform GUI Rust components in Guix builds
PastaPastaPasta Aug 13, 2026
1e8a1a7
qt: prepare platform flows for seed-only recovery
PastaPastaPasta Aug 13, 2026
ac03f98
qt: recover Platform state from seed via on-chain probes
PastaPastaPasta Aug 13, 2026
6c6809f
qt: surface recovered identities in the Platform page
PastaPastaPasta Aug 13, 2026
daec668
test: cover identity record round-trip and payment cursor rebuild
PastaPastaPasta Aug 13, 2026
437e8be
guix: add patchelf to manifest for native_rust interpreter fix
PastaPastaPasta Aug 13, 2026
4330d06
guix: provide zlib runtime for prebuilt rust toolchain
PastaPastaPasta Aug 13, 2026
3a3fd85
guix: add lbzip2 for bzip2 depends archives
PastaPastaPasta Aug 13, 2026
6f394eb
build: expose rustc sysroot libs to cargo build scripts
PastaPastaPasta Aug 13, 2026
cdd7124
build: rescan cxxbridge and dashrust archives to resolve cross-refere…
PastaPastaPasta Aug 13, 2026
972d33b
ci: add workflow_dispatch to Guix build with platform_gui support
PastaPastaPasta Aug 13, 2026
0e8adf4
build: repin platform crates to the rebased query-core series
PastaPastaPasta Aug 13, 2026
e41f192
build: repin platform crates onto current v4.2-dev
PastaPastaPasta Aug 13, 2026
6b17135
build: repin platform crates to the restacked query-core series
PastaPastaPasta Aug 13, 2026
6b0d10c
build: repin platform crates to the hardened query-core series
PastaPastaPasta Aug 13, 2026
990a6a3
build: repin platform crates to the final query-core head
PastaPastaPasta Aug 18, 2026
aacbd32
lint: whitelist the wallet platformseed seed-pin cycle from dash#7581
PastaPastaPasta Aug 18, 2026
bd66a25
qt: drop the friendship import label argument per dash#7581
PastaPastaPasta Aug 18, 2026
d58facb
fix(wallet): keep damaged Platform cache records noncritical on load
PastaPastaPasta Aug 17, 2026
6a92a1c
fix(wallet): validate mnemonics before deriving the platform seed
PastaPastaPasta Aug 17, 2026
d67eae5
merge: update composite to final wallet seams head
PastaPastaPasta Aug 18, 2026
703ec57
build: repin platform crates to the review-polished query head
PastaPastaPasta Aug 18, 2026
f77b9e1
Merge #7616: refactor(rpc, wallet): address review feedback on provid…
PastaPastaPasta Aug 18, 2026
9291823
Merge #7591: refactor: expose masternode Platform endpoints, quorum k…
PastaPastaPasta Aug 18, 2026
91fe040
fix(wallet): build asset-lock payloads at the version consensus accepts
PastaPastaPasta Aug 18, 2026
7697d50
fix(qt): fail the identity flow when its funding transaction is rejected
PastaPastaPasta Aug 18, 2026
ffa4fbc
Merge #7615: docs: clarify when to use assert vs Assert vs Assume vs …
PastaPastaPasta Aug 18, 2026
6b2e8dd
build: repin platform crates to the restacked query head
PastaPastaPasta Aug 18, 2026
8b6371a
Merge #7614: refactor: prohibit C-style and functional casts in Dash …
PastaPastaPasta Aug 18, 2026
f03aac1
Merge #7612: fix: re-ordering list of filters to put Masternode betwe…
PastaPastaPasta Aug 18, 2026
dde18c9
fix(wallet): restore spendability of inputs freed by abandoning a tra…
PastaPastaPasta Aug 18, 2026
49d7d5f
feat: coinjoin promotion / demotion
PastaPastaPasta Jul 10, 2026
3d6d49a
test: cover CoinJoin promotion/demotion validation and decision logic
PastaPastaPasta Jul 10, 2026
33702b4
docs: add release notes for pr 7052
PastaPastaPasta Jul 10, 2026
9c29052
feat(coinjoin): gate rebalance sessions and require session-denom cover
PastaPastaPasta Aug 1, 2026
363d305
fix(coinjoin): tolerate one-block tip skew only at the V24 boundary
PastaPastaPasta Aug 1, 2026
efff25c
fix(coinjoin): only announce unbalanced DSTXes to peers that support …
PastaPastaPasta Aug 1, 2026
9cae6f4
feat(coinjoin): reset mixing rounds on promotion/demotion outputs
PastaPastaPasta Aug 1, 2026
9e83d6a
fix(coinjoin): don't announce oversized balanced DSTXes to legacy peers
PastaPastaPasta Aug 17, 2026
88d4e6b
fix(coinjoin): guard against null prevtx in GetRealOutpointCoinJoinRo…
PastaPastaPasta Aug 17, 2026
9727337
fix(coinjoin): keep relaying islocks when withholding a DSTX from leg…
PastaPastaPasta Aug 17, 2026
50c62c9
fix(coinjoin): annotate m_fRebalanceSession as GUARDED_BY(cs_coinjoin)
PastaPastaPasta Aug 17, 2026
255b20b
test: fuzz the Platform bridge's decode and verify entry points
PastaPastaPasta Aug 18, 2026
f7d2bbb
fix(coinjoin): bind entry admission and charging to the validated ses…
PastaPastaPasta Aug 18, 2026
1ff74e9
fix(coinjoin): latch rebalance capability on admission, not on creato…
PastaPastaPasta Aug 18, 2026
032bc99
fix(coinjoin): widen the V24 DSTX skew tolerance and downgrade withhe…
PastaPastaPasta Aug 18, 2026
428eb97
fix(coinjoin): recognize unbalanced mixing transactions as denominated
PastaPastaPasta Aug 18, 2026
6af461c
fix(coinjoin): scale the rebalance gap threshold with the denoms goal
PastaPastaPasta Aug 18, 2026
e78b965
test(coinjoin): cover session finalization race and gap-threshold bou…
PastaPastaPasta Aug 18, 2026
5748316
refactor(coinjoin): use static_cast in new promotion/demotion code
PastaPastaPasta Aug 18, 2026
0dc132f
docs: describe rebalance session gating and DSTX downgrade accurately
PastaPastaPasta Aug 18, 2026
3646c95
fix(coinjoin): tolerate DSTX tip skew from V24 lock-in, and address r…
PastaPastaPasta Aug 18, 2026
3b9198b
wallet: make the Platform seed provider descriptor-wallet-only
PastaPastaPasta Aug 18, 2026
7d182ef
qt: gate the DashPay tab on descriptor wallets
PastaPastaPasta Aug 18, 2026
449da14
wallet: make the Platform seed provider descriptor-wallet-only
PastaPastaPasta Aug 18, 2026
e6687d9
fix(coinjoin): tolerate arbitrary tip skew when validating a final tr…
PastaPastaPasta Aug 18, 2026
f232f02
fix(coinjoin): keep the V24 tip-skew tolerance at one block
PastaPastaPasta Aug 18, 2026
dfbcff3
fix(wallet): reconcile UTXOs across transaction state changes
PastaPastaPasta Aug 18, 2026
123858d
fix(coinjoin): don't burn queue announcements a rebalance pass skips
UdjinM6 Aug 17, 2026
26d0a98
fix(coinjoin): tell participants when an uncovered session is reset
UdjinM6 Aug 17, 2026
adb2765
fix(coinjoin): bound the sides of a post-V24 DSTX against each other
UdjinM6 Aug 18, 2026
81ba952
refactor(wallet): confine Platform derivation to key managers
PastaPastaPasta Aug 18, 2026
939ee20
refactor(wallet): avoid serializing friendship xprv
PastaPastaPasta Aug 18, 2026
78a130d
build(platform): consume Platform CXX bindings from depends
PastaPastaPasta Aug 18, 2026
13edbb4
fix(depends): resolve Rust stdlib target eagerly
PastaPastaPasta Aug 18, 2026
126bc9a
ci: align Rust vendor cache keys
PastaPastaPasta Aug 18, 2026
d1fca89
fix(coinjoin): decide the pool state from one consistent snapshot
PastaPastaPasta Aug 19, 2026
b2a3c40
fix(wallet): derive Platform keys from descriptor root
PastaPastaPasta Aug 19, 2026
f4e6aa2
test: merge multiple core_write instances to one module for circular …
knst Aug 17, 2026
6c67fc3
refactor: drop unused core_io.h include from evo/smldiff
knst Aug 18, 2026
99464cf
refactor: move RPC help definitions out of core_io module into rpc/
knst Aug 18, 2026
bbeeeb3
refactor: dissolve governance/core_write.cpp into class home files
knst Aug 18, 2026
520a669
refactor: dissolve rpc/evo_util.cpp into rpc/evo.cpp
knst Aug 18, 2026
8e5805e
docs: explain CDeterministicMN::ToJson() placement in rpc/evo.cpp
knst Aug 18, 2026
7c1f653
refactor: absorb netinfo legacy-field helpers into the core_io module
knst Aug 18, 2026
ef7ba7b
fix: add one more splitted module: qt/guiutil + qqt/guiutil_font
knst Aug 19, 2026
6f9a7ad
fix: add one more module merge for circular linter: evo/providertx_util
knst Aug 19, 2026
dd8b9e6
Merge #7581: feat(wallet): add Platform key provider, data records an…
PastaPastaPasta Aug 19, 2026
6605ed5
Merge #7052: feat: coinjoin promotion / demotion
PastaPastaPasta Aug 19, 2026
fc8d0dd
Merge #7620: fix: circular dependency linter for core_io and related …
PastaPastaPasta Aug 19, 2026
119a023
merge: sync composite with develop after dash#7581 landed
PastaPastaPasta Aug 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
32 changes: 32 additions & 0 deletions .cargo/config.toml.offline
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Linux
[target.aarch64-unknown-linux-musl]
linker = "aarch64-linux-gnu-gcc"

[target.armv7-unknown-linux-musleabihf]
linker = "arm-linux-gnueabihf-gcc"

[target.powerpc64le-unknown-linux-musl]
linker = "powerpc64le-linux-gnu-gcc"

[target.riscv64gc-unknown-linux-musl]
linker = "riscv64-linux-gnu-gcc"

[target.x86_64-unknown-linux-musl]
linker = "x86_64-linux-gnu-gcc"

# Windows
[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"

# macOS
# [target.aarch64-apple-darwin]
# linker = "aarch64-apple-darwin-gcc"

# [target.x86_64-apple-darwin]
# linker = "x86_64-apple-darwin-gcc"

[source.crates-io]
replace-with = "vendored-sources"

[source.vendored-sources]
# The directory for this source is set to RUST_VENDORED_SOURCES by rust/Makefile.am
34 changes: 32 additions & 2 deletions .github/workflows/build-depends.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ on:
description: "Short hash of the CI base image manifest for cache busting"
required: true
type: string
rust-vendor-artifact:
description: "Artifact holding freshly generated Rust vendor archives"
required: false
type: string
default: ""
runs-on:
description: "Runner label to use (e.g., ubuntu-24.04 or ubuntu-24.04-arm)"
required: true
Expand Down Expand Up @@ -141,8 +146,33 @@ jobs:
uses: actions/cache/restore@v5
with:
path: depends/sources
key: depends-sources-${{ hashFiles('depends/packages/*') }}
restore-keys: depends-sources-
key: depends-sources-v2-${{ hashFiles('depends/packages/*', 'depends/patches/native_cxxbridge/Cargo.lock', 'Cargo.lock') }}
restore-keys: depends-sources-v2-

- name: Restore Rust vendor sources
id: rust-vendor-cache
if: inputs.build-target == 'linux64_rust' || inputs.build-target == 'linux64_platform_gui'
uses: actions/cache/restore@v5
with:
path: |
depends/sources/native_cxxbridge-*-vendored.tar.gz
depends/sources/platform-cxx-*-vendored.tar.gz
depends/sources/vendored-crates-*.tar.gz
key: depends-rust-vendor-sources-${{ hashFiles('depends/Makefile', 'depends/funcs.mk', 'depends/packages/native_cxxbridge.mk', 'depends/packages/native_rust.mk', 'depends/packages/platform_cxx.mk', 'depends/patches/native_cxxbridge/Cargo.lock', 'depends/patches/platform_cxx/cargo-config.toml', 'Cargo.lock') }}

- name: Download Rust vendor sources
if: (inputs.build-target == 'linux64_rust' || inputs.build-target == 'linux64_platform_gui') && steps.rust-vendor-cache.outputs.cache-hit != 'true' && inputs.rust-vendor-artifact != ''
uses: actions/download-artifact@v8
with:
name: ${{ inputs.rust-vendor-artifact }}
path: depends/sources

- name: Check Rust vendor sources are present
if: (inputs.build-target == 'linux64_rust' || inputs.build-target == 'linux64_platform_gui') && steps.rust-vendor-cache.outputs.cache-hit != 'true' && inputs.rust-vendor-artifact == ''
run: |
echo "::error::Rust vendor source cache missed and no same-run artifact was provided"
exit 1
shell: bash

- name: Restore SDKs cache
id: sdk-cache
Expand Down
30 changes: 30 additions & 0 deletions .github/workflows/build-src.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ on:
required: false
type: string
default: ""
rust-vendor-artifact:
description: "Artifact holding freshly generated Rust vendor archives"
required: false
type: string
default: ""
sdk-artifact:
description: "Artifact holding prepared SDKs, used if the cache restore misses"
required: false
Expand Down Expand Up @@ -97,6 +102,31 @@ jobs:
exit 1
shell: bash

- name: Restore Rust vendor sources
id: rust-vendor-cache
if: inputs.build-target == 'linux64_rust'
uses: actions/cache/restore@v5
with:
path: |
depends/sources/native_cxxbridge-*-vendored.tar.gz
depends/sources/platform-cxx-*-vendored.tar.gz
depends/sources/vendored-crates-*.tar.gz
key: depends-rust-vendor-sources-${{ hashFiles('depends/Makefile', 'depends/funcs.mk', 'depends/packages/native_cxxbridge.mk', 'depends/packages/native_rust.mk', 'depends/packages/platform_cxx.mk', 'depends/patches/native_cxxbridge/Cargo.lock', 'depends/patches/platform_cxx/cargo-config.toml', 'Cargo.lock') }}

- name: Download Rust vendor sources
if: inputs.build-target == 'linux64_rust' && steps.rust-vendor-cache.outputs.cache-hit != 'true' && inputs.rust-vendor-artifact != ''
uses: actions/download-artifact@v8
with:
name: ${{ inputs.rust-vendor-artifact }}
path: depends/sources

- name: Check Rust vendor sources are present
if: inputs.build-target == 'linux64_rust' && steps.rust-vendor-cache.outputs.cache-hit != 'true' && inputs.rust-vendor-artifact == ''
run: |
echo "::error::Rust vendor source cache missed and no same-run artifact was provided"
exit 1
shell: bash

- name: Restore depends cache
id: depends-cache
uses: actions/cache/restore@v5
Expand Down
64 changes: 64 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,18 @@ jobs:
base-image-digest: ${{ needs.check-skip.outputs.base-image-digest }}
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}

depends-linux64_rust:
name: x86_64-pc-linux-gnu_rust
uses: ./.github/workflows/build-depends.yml
needs: [check-skip, container, cache-sources]
if: ${{ vars.SKIP_LINUX64_RUST == '' }}
with:
build-target: linux64_rust
container-path: ${{ needs.container.outputs.path }}
base-image-digest: ${{ needs.check-skip.outputs.base-image-digest }}
rust-vendor-artifact: ${{ needs.cache-sources.outputs.rust-vendor-artifact }}
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}

depends-linux64_multiprocess:
name: linux64_multiprocess
uses: ./.github/workflows/build-depends.yml
Expand All @@ -165,6 +177,18 @@ jobs:
base-image-digest: ${{ needs.check-skip.outputs.base-image-digest }}
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}

depends-linux64_platform_gui:
name: x86_64-pc-linux-gnu_platform_gui
uses: ./.github/workflows/build-depends.yml
needs: [check-skip, container, cache-sources]
if: ${{ vars.SKIP_LINUX64_PLATFORM_GUI == '' }}
with:
build-target: linux64_platform_gui
container-path: ${{ needs.container.outputs.path }}
base-image-digest: ${{ needs.check-skip.outputs.base-image-digest }}
rust-vendor-artifact: ${{ needs.cache-sources.outputs.rust-vendor-artifact }}
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}

depends-mac:
name: x86_64-apple-darwin
uses: ./.github/workflows/build-depends.yml
Expand Down Expand Up @@ -222,6 +246,21 @@ jobs:
depends-artifact: ${{ needs.depends-linux64.outputs.built-artifact }}
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}

src-linux64_rust:
name: linux64_rust-build
uses: ./.github/workflows/build-src.yml
needs: [check-skip, container, cache-sources, depends-linux64_rust]
if: ${{ vars.SKIP_LINUX64_RUST == '' }}
with:
build-target: linux64_rust
container-path: ${{ needs.container.outputs.path }}
depends-key: ${{ needs.depends-linux64_rust.outputs.key }}
depends-host: ${{ needs.depends-linux64_rust.outputs.host }}
depends-dep-opts: ${{ needs.depends-linux64_rust.outputs.dep-opts }}
depends-artifact: ${{ needs.depends-linux64_rust.outputs.built-artifact }}
rust-vendor-artifact: ${{ needs.cache-sources.outputs.rust-vendor-artifact }}
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}

src-linux64_asan:
name: linux64_asan-build
uses: ./.github/workflows/build-src.yml
Expand Down Expand Up @@ -277,6 +316,20 @@ jobs:
depends-artifact: ${{ needs.depends-linux64_nowallet.outputs.built-artifact }}
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}

src-linux64_platform_gui:
name: linux64_platform_gui-build
uses: ./.github/workflows/build-src.yml
needs: [check-skip, container, depends-linux64_platform_gui, lint]
if: ${{ vars.SKIP_LINUX64_PLATFORM_GUI == '' }}
with:
build-target: linux64_platform_gui
container-path: ${{ needs.container.outputs.path }}
depends-key: ${{ needs.depends-linux64_platform_gui.outputs.key }}
depends-host: ${{ needs.depends-linux64_platform_gui.outputs.host }}
depends-dep-opts: ${{ needs.depends-linux64_platform_gui.outputs.dep-opts }}
depends-artifact: ${{ needs.depends-linux64_platform_gui.outputs.built-artifact }}
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}

src-linux64_sqlite:
name: linux64_sqlite-build
uses: ./.github/workflows/build-src.yml
Expand Down Expand Up @@ -372,6 +425,17 @@ jobs:
container-path: ${{ needs.container-slim.outputs.path }}
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}

test-linux64_platform_gui:
name: linux64_platform_gui-test
uses: ./.github/workflows/test-src.yml
needs: [check-skip, container-slim, src-linux64_platform_gui, lint]
if: ${{ vars.SKIP_LINUX64_PLATFORM_GUI == '' }}
with:
bundle-key: ${{ needs.src-linux64_platform_gui.outputs.key }}
build-target: linux64_platform_gui
container-path: ${{ needs.container-slim.outputs.path }}
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}

test-linux64_sqlite:
name: linux64_sqlite-test
uses: ./.github/workflows/test-src.yml
Expand Down
50 changes: 46 additions & 4 deletions .github/workflows/cache-depends-sources.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ on:
required: false
type: string
default: ubuntu-24.04-arm
outputs:
rust-vendor-artifact:
description: "Artifact holding freshly generated Rust vendor archives"
value: ${{ jobs.cache-sources.outputs.rust-vendor-artifact }}
schedule:
# Run daily at 6 AM UTC on the default branch to keep cache warm
- cron: '0 6 * * *'
Expand All @@ -18,6 +22,8 @@ jobs:
# Intentionally keep scheduled cache warming on GitHub-hosted ARM runners.
# Blacksmith caches are expected to persist long enough without a warmup cron.
runs-on: ${{ inputs.runs-on || 'ubuntu-24.04-arm' }}
outputs:
rust-vendor-artifact: ${{ steps.vendor-artifact.outputs.name }}
steps:
- name: Checkout code
uses: actions/checkout@v6
Expand All @@ -31,10 +37,46 @@ jobs:
uses: actions/cache@v5
with:
path: depends/sources
key: depends-sources-${{ hashFiles('depends/packages/*') }}
restore-keys: depends-sources-
key: depends-sources-v2-${{ hashFiles('depends/packages/*', 'depends/patches/native_cxxbridge/Cargo.lock', 'Cargo.lock') }}
restore-keys: depends-sources-v2-
lookup-only: true

- name: Cache Rust vendor sources
id: rust-vendor-cache
uses: actions/cache@v5
with:
path: |
depends/sources/native_cxxbridge-*-vendored.tar.gz
depends/sources/platform-cxx-*-vendored.tar.gz
depends/sources/vendored-crates-*.tar.gz
key: depends-rust-vendor-sources-${{ hashFiles('depends/Makefile', 'depends/funcs.mk', 'depends/packages/native_cxxbridge.mk', 'depends/packages/native_rust.mk', 'depends/packages/platform_cxx.mk', 'depends/patches/native_cxxbridge/Cargo.lock', 'depends/patches/platform_cxx/cargo-config.toml', 'Cargo.lock') }}

- name: Download sources
if: steps.cache-check.outputs.cache-hit != 'true'
run: make -C depends download
if: |
steps.cache-check.outputs.cache-hit != 'true' ||
steps.rust-vendor-cache.outputs.cache-hit != 'true'
run: |
make -C depends RUST=1 download
make -C depends PLATFORM_GUI=1 vendor-platform_cxx-crates
# The cache producer normally runs on ARM, while the Rust consumer
# runs on x86_64. Native Rust is selected from the build architecture,
# so fetch the x86_64 compiler archive explicitly as well.
make -C depends BUILD=x86_64-pc-linux-gnu RUST=1 download-one

- name: Select Rust vendor artifact
id: vendor-artifact
if: github.event_name != 'schedule' && steps.rust-vendor-cache.outputs.cache-hit != 'true'
run: echo "name=depends-rust-vendor-sources-${{ github.run_id }}" >> "$GITHUB_OUTPUT"

- name: Upload Rust vendor sources
if: steps.vendor-artifact.outputs.name != ''
uses: actions/upload-artifact@v6
with:
name: ${{ steps.vendor-artifact.outputs.name }}
path: |
depends/sources/native_cxxbridge-*-vendored.tar.gz
depends/sources/platform-cxx-*-vendored.tar.gz
depends/sources/vendored-crates-*.tar.gz
compression-level: 0
retention-days: 1
overwrite: true
20 changes: 16 additions & 4 deletions .github/workflows/guix-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,26 @@ on:
schedule:
# Run weekly at 3 AM UTC on Sunday on the default branch
- cron: '0 3 * * 0'
workflow_dispatch:
inputs:
hosts:
description: 'Host triplet to build (single host)'
required: false
default: 'x86_64-linux-gnu'
platform_gui:
description: 'Build with PLATFORM_GUI=1 (Platform GUI + vendored Rust crates)'
type: boolean
required: false
default: false

jobs:
build-image:
runs-on: ubuntu-24.04-arm
if: |
(github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/') || vars.RUN_GUIX_ON_ALL_PUSH == 'true')) ||
contains(github.event.pull_request.labels.*.name, 'guix-build') ||
github.event_name == 'schedule'
github.event_name == 'schedule' ||
github.event_name == 'workflow_dispatch'
outputs:
image-tag: ${{ steps.prepare.outputs.image-tag }}
repo-name: ${{ steps.prepare.outputs.repo-name }}
Expand Down Expand Up @@ -77,7 +89,7 @@ jobs:
runs-on: ubuntu-24.04-arm
strategy:
matrix:
build_target: [x86_64-linux-gnu, aarch64-linux-gnu, riscv64-linux-gnu, powerpc64-linux-gnu, x86_64-w64-mingw32, x86_64-apple-darwin, arm64-apple-darwin]
build_target: ${{ github.event_name == 'workflow_dispatch' && fromJSON(format('["{0}"]', inputs.hosts)) || fromJSON('["x86_64-linux-gnu", "aarch64-linux-gnu", "riscv64-linux-gnu", "powerpc64-linux-gnu", "x86_64-w64-mingw32", "x86_64-apple-darwin", "arm64-apple-darwin"]') }}

timeout-minutes: 480
steps:
Expand All @@ -98,7 +110,7 @@ jobs:
uses: actions/cache@v5
with:
path: dash/depends/sources
key: depends-sources-${{ hashFiles('dash/depends/packages/*') }}
key: depends-sources-${{ hashFiles('dash/depends/packages/*', 'dash/depends/patches/native_cxxbridge/Cargo.lock', 'dash/Cargo.lock') }}
restore-keys: |
depends-sources-

Expand Down Expand Up @@ -129,7 +141,7 @@ jobs:
-v ${{ github.workspace }}/.cache:/home/ubuntu/.cache \
-w /src/dash \
ghcr.io/${{ needs.build-image.outputs.repo-name }}/dashcore-guix-builder:${{ needs.build-image.outputs.image-tag }} && \
docker exec guix-daemon bash -c 'HOSTS=${{ matrix.build_target }} /usr/local/bin/guix-start /src/dash'
docker exec guix-daemon bash -c 'HOSTS=${{ matrix.build_target }} PLATFORM_GUI=${{ inputs.platform_gui && '1' || '' }} /usr/local/bin/guix-start /src/dash'

- name: Ensure build passes
run: |
Expand Down
26 changes: 26 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -181,3 +181,29 @@ compile_commands.json
# Linux perf profiling artifacts
perf.data
perf.data.old

# Generated by Cargo
/target/
/rust/target/

# Cargo configuration
/.cargo/.configured-for-*
/.cargo/config
/.cargo/config.toml
/.cargo/dash-build.toml
/.cargo/*-linker

# These are backup files generated by rustfmt
**/*.rs.bk

# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb

# Generated by cargo mutants
# Contains mutation testing data
**/mutants.out*/

# FFI bridge
/rust/*/gen/

src/qt/platform/moc_*.cpp
Loading