Skip to content

chore: bump rust-dashcore to dev head (#1000 merged: a known transaction is not announced new twice) - #4627

Open
romchornyi wants to merge 1 commit into
v4.2-devfrom
chore/bump-rust-dashcore-1000
Open

chore: bump rust-dashcore to dev head (#1000 merged: a known transaction is not announced new twice)#4627
romchornyi wants to merge 1 commit into
v4.2-devfrom
chore/bump-rust-dashcore-1000

Conversation

@romchornyi

@romchornyi romchornyi commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Issue being fixed or feature implemented

The pin has been one commit behind rust-dashcore's dev since #4560 landed, and the
commit it is missing is a sync-accounting fix worth having: dashpay/rust-dashcore#1000.

Upstream's is_new polled only affected_accounts. That set is not stable across
deliveries — an account that matched solely because the transaction spent its coin drops
out of it on every later delivery, the coin having left utxos when the spend was
recorded. Once the account holding the record stops matching, the remaining candidates
have no record, and a transaction the wallet has held all along is announced as new a
second time. The counter is fed new_txids, so the transaction total a sync reports
disagreed between runs whose wallet state was identical.

Upstream measured 13-14 double counts per full mainnet restore — a reported total of 6800
or 6801 over the same 6787 transactions. With the fix the total is 6787 on every run.

What was done?

The delta is dashpay/rust-dashcore#1000 alone, touching one file
(key-wallet/src/transaction_checking/wallet_checker.rs): is_new now asks every account
rather than only the matched ones, behind the existing relevance early-return, so it runs
only for transactions that already matched.

No platform code changes. Nothing here reads is_new_transaction outside two assertions
in packages/rs-platform-wallet/src/test_support.rs, both of which cover a first delivery
and are unaffected by the change.

How Has This Been Tested?

  • cargo check -p platform-wallet -p platform-wallet-ffi -p platform-wallet-storage --tests — clean.
  • cargo test -p platform-wallet -p platform-wallet-ffi -p platform-wallet-storage — 1744 passed, 0 failed.

The upstream change ships with its own regression test
(known_transaction_is_not_new_again_when_its_holder_stops_matching), which runs in
rust-dashcore's suite rather than here.

Breaking Changes

None. The delta carries no API change — the modified function is internal to
wallet_checker, and its signature and return type are unchanged.

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have added "!" to the title and described breaking changes in the corresponding section if my code contains any
  • I have made corresponding changes to the documentation if needed

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

Summary by CodeRabbit

  • Chores
    • Updated underlying Dash components to newer revisions.
    • No direct user-facing features or behavior changes are included in this update.

…ion is not announced new twice)

Moves the pin from 93260bf3 (#998) to 7e315af5, one commit ahead and the
current head of `dev`. The delta is dashpay/rust-dashcore#1000 alone,
touching one file, `key-wallet/src/transaction_checking/wallet_checker.rs`.

Upstream's `is_new` polled only `affected_accounts`, a set that is not
stable across deliveries: an account that matched solely because the
transaction spent its coin drops out on every later delivery, the coin
having left `utxos` when the spend was recorded. Once the account holding
the record stops matching, a transaction the wallet has held all along is
announced as new a second time. It now asks every account, behind the
existing relevance early-return. Upstream measured 13-14 double counts per
full mainnet restore, a reported total of 6800 or 6801 over the same 6787
transactions; with the fix the total is 6787 on every run.

Nothing in platform reads `is_new_transaction` outside two assertions in
`test_support.rs`, so the surface here is the pin itself.
@github-actions github-actions Bot added this to the v4.2.0 milestone Sep 8, 2026
@coderabbitai

coderabbitai Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 8efb6aa5-6ede-4d85-8994-c6ef615cc824

📥 Commits

Reviewing files that changed from the base of the PR and between 8bd3e53 and c1d5218.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • Cargo.toml

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The workspace updates the pinned git revision for eight rust-dashcore dependencies. Dependency names, repository URLs, and other configuration values remain unchanged.

Changes

Rust Dashcore Revision Update

Layer / File(s) Summary
Update workspace dependency pins
Cargo.toml
The eight rust-dashcore workspace dependencies now use revision 7e315af582bc6ec9c088447a7699099b5fbf0f96 instead of 93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to c1d52

This updates rust-dashcore to include the duplicate transaction-announcement fix while retaining consistent workspace and lockfile resolution. The change is ready to merge.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: updating the rust-dashcore dependency to its development head. It also states the relevant upstream fix for duplicate transaction announcements.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/bump-rust-dashcore-1000

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@thepastaclaw

thepastaclaw commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

✅ Final review complete — no blockers (commit c1d5218) · triage: critical · Phase 2 only (queue backlog)

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Final validation — Phase 2 only (queue backlog)

At the exact head, all eight workspace dependency pins and twelve lockfile entries consistently reference the new rust-dashcore revision, with no platform source changes. The cached upstream source confirms wallet-wide transaction detection behind the relevance guard and includes the stated regression test; no actionable in-scope findings were identified. Independent validation passed the diff check and built the targeted test suites, but test execution exceeded the timeout, so the reported 1,744 passing tests were not independently reconfirmed.

Source: reviewer 1: gpt-6-astra (agent: phase2-reviewer, role: general); final verifier: gpt-6-astra (agent: astra-verifier, role: final-verifier)

Review provenance

  • Triage: critical by gpt-6-astra (effort low) — Although limited to dependency pins, this changes wallet transaction classification in shared Core/SPV dependencies, where regressions could affect transaction notifications and sync accounting across funds-handling consumers.
  • Phase 1 reviewers: not run (skipped for throughput: 32 PRs queued, above the 10 limit)
  • Fresh verifier: gpt-6-astra — final-verifier; agent astra-verifier
  • Phase 2 reviewers: gpt-6-astra — general (completed, effort xhigh); agent phase2-reviewer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants