Skip to content

chore: bump rust-dashcore to eb889af#3762

Merged
QuantumExplorer merged 1 commit into
v3.1-devfrom
claude/vigilant-bassi-1ea59f
May 28, 2026
Merged

chore: bump rust-dashcore to eb889af#3762
QuantumExplorer merged 1 commit into
v3.1-devfrom
claude/vigilant-bassi-1ea59f

Conversation

@QuantumExplorer
Copy link
Copy Markdown
Member

@QuantumExplorer QuantumExplorer commented May 28, 2026

Issue being fixed or feature implemented

Picks up two upstream rust-dashcore changes on top of 58d61ea:

  • dashpay/rust-dashcore#781refactor: avoid rebuilding script_pubkeys for BIP158 filter matching. Adds monitored_script_pubkeystoWalletInfoInterfaceand threads cachedScriptBufs through the rescan path so a full testnet sync no longer rebuilds ~7M P2PKH ScriptBuf`s.
  • dashpay/rust-dashcore#788feat(dash-spv): consolidate devnet config into DevnetConfig struct. Replaces ClientConfig.llmq_devnet_params with ClientConfig.devnet: Option<DevnetConfig>, which also holds the -llmq{chainlocks,instantsenddip0024,platform} routing overrides. ClientConfig::validate now enforces devnet.is_some() == (network == Network::Devnet).

What was done?

  • Cargo.toml / Cargo.lock: bump all rust-dashcore git deps from 58d61eaeb889af.
  • packages/rs-platform-wallet/src/wallet/platform_wallet_traits.rs: implement the new monitored_script_pubkeys trait method by delegating to the inner ManagedWalletInfo, and import ScriptBuf.
  • packages/rs-platform-wallet-ffi/src/spv.rs: in platform_wallet_manager_spv_start, build a DevnetConfig whenever devnet_name is non-null and hang the optional LlmqDevnetParams off it, replacing the removed ClientConfig.llmq_devnet_params write. The FFI signature is unchanged.
  • packages/rs-platform-wallet/src/spv/mod.rs: re-export DevnetConfig alongside ClientConfig so the FFI doesn't reach into dash_spv directly.

How Has This Been Tested?

  • cargo check --workspace --tests — clean.
  • cargo clippy -p platform-wallet -p platform-wallet-ffi --all-targets — clean.
  • cargo fmt --all -- --check — clean.

Breaking Changes

None for consensus or external API. The platform_wallet_manager_spv_start FFI signature is unchanged; the existing devnet_name + llmq_devnet_size/threshold arguments still drive the same behavior, just routed through DevnetConfig instead of ClientConfig.llmq_devnet_params.

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

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Refactor

    • Improved wallet information interface by exposing script pubkey monitoring capabilities for enhanced wallet transparency
    • Restructured devnet configuration initialization to provide more flexible network-specific parameter handling
  • Chores

    • Updated core workspace dependencies to latest git revision for rust-dashcore family packages

Review Change Stack

Picks up two upstream changes:

- `refactor: avoid rebuilding script_pubkey`s for BIP158 filter matching`
  (#781). Adds `monitored_script_pubkeys` to `WalletInfoInterface` so
  filter matching reads cached `ScriptBuf`s instead of rebuilding P2PKH
  scripts per address per batch. Delegated through `PlatformWalletInfo`.

- `feat(dash-spv): consolidate devnet config into DevnetConfig struct`
  (#788). `ClientConfig.llmq_devnet_params` is gone; devnet knobs now
  live on `ClientConfig.devnet: Option<DevnetConfig>` whose presence
  must match `network == Network::Devnet`. `platform_wallet_manager_spv_start`
  now builds a `DevnetConfig` whenever `devnet_name` is provided and
  hangs the optional `LlmqDevnetParams` off it, keeping the FFI surface
  unchanged. Re-export `DevnetConfig` from `platform_wallet::spv` so the
  FFI doesn't reach into `dash_spv` directly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added this to the v3.1.0 milestone May 28, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 28, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c4e32e70-7762-4a16-822a-7d5182efb701

📥 Commits

Reviewing files that changed from the base of the PR and between 551241e and 55bb326.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (4)
  • Cargo.toml
  • packages/rs-platform-wallet-ffi/src/spv.rs
  • packages/rs-platform-wallet/src/spv/mod.rs
  • packages/rs-platform-wallet/src/wallet/platform_wallet_traits.rs

📝 Walkthrough

Walkthrough

This PR updates the workspace dependencies for rust-dashcore crates to a new git revision, then refactors SPV FFI devnet configuration to construct and wrap LLMQ parameters in a DevnetConfig struct before assignment. The SPV module re-exports are expanded to include DevnetConfig, and PlatformWalletInfo adds a monitored_script_pubkeys method delegation.

Changes

DevnetConfig Refactoring

Layer / File(s) Summary
Dependencies and SPV devnet configuration
Cargo.toml, packages/rs-platform-wallet-ffi/src/spv.rs
Workspace dependencies for rust-dashcore crates are bumped to a new git revision. The SPV FFI module imports DevnetConfig and refactors platform_wallet_manager_spv_start to construct a DevnetConfig from devnet_name, optionally assign llmq_params when llmq_devnet_size > 0, and attach it to the client config via config.devnet = Some(devnet).
SPV module public API
packages/rs-platform-wallet/src/spv/mod.rs
The SPV module re-exports are updated to expose both ClientConfig and DevnetConfig from dash_spv in a combined import statement.

Wallet Information Interface Extension

Layer / File(s) Summary
Monitored script pubkeys method
packages/rs-platform-wallet/src/wallet/platform_wallet_traits.rs
The dashcore imports are updated to include ScriptBuf. The PlatformWalletInfo type adds a monitored_script_pubkeys() method that delegates to self.core_wallet.

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • dashpay/platform#3758: Direct dependency — both PRs modify the SPV FFI devnet configuration in platform_wallet_manager_spv_start to wrap LLMQ overrides in DevnetConfig.
  • dashpay/platform#3634: Both PRs update the SPV FFI startup path in platform_wallet_manager_spv_start, with overlapping function-level code changes.
  • dashpay/platform#3757: Both PRs update the same Cargo.toml workspace dependency rev for the rust-dashcore crate family.

Suggested reviewers

  • shumkov

Poem

🐰 DevnetConfigs wrap with grace,
LLMQ params find their place,
Wallets now know which keys they guard,
All aligned—no task too hard!

🚥 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 accurately summarizes the primary change: bumping the rust-dashcore dependency to a specific commit hash.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/vigilant-bassi-1ea59f

Warning

Review ran into problems

🔥 Problems

Stopped waiting for pipeline failures after 30000ms. One of your pipelines takes longer than our 30000ms fetch window to run, so review may not consider pipeline-failure results for inline comments if any failures occurred after the fetch window. Increase the timeout if you want to wait longer or run a @coderabbit review after the pipeline has finished.


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 and usage tips.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 28, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.17%. Comparing base (405f7aa) to head (55bb326).
⚠️ Report is 2 commits behind head on v3.1-dev.

Additional details and impacted files
@@            Coverage Diff             @@
##           v3.1-dev    #3762    +/-   ##
==========================================
  Coverage     87.17%   87.17%            
==========================================
  Files          2607     2607            
  Lines        319484   319589   +105     
==========================================
+ Hits         278500   278602   +102     
- Misses        40984    40987     +3     
Components Coverage Δ
dpp 87.73% <ø> (+0.01%) ⬆️
drive 85.95% <ø> (ø)
drive-abci 89.60% <ø> (ø)
sdk ∅ <ø> (∅)
dapi-client ∅ <ø> (∅)
platform-version ∅ <ø> (∅)
platform-value 92.17% <ø> (ø)
platform-wallet ∅ <ø> (∅)
drive-proof-verifier 49.14% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Copy Markdown
Contributor

✅ DashSDKFFI.xcframework built for this PR.

SwiftPM (host the zip at a stable URL, then use):

.binaryTarget(
  name: "DashSDKFFI",
  url: "https://your.cdn.example/DashSDKFFI.xcframework.zip",
  checksum: "2c2a78b5f88cc382387f6acab1d949cc215a5532de6871bc6bd407b74f069fcf"
)

Xcode manual integration:

  • Download 'DashSDKFFI.xcframework' artifact from the run link above.
  • Drag it into your app target (Frameworks, Libraries & Embedded Content) and set Embed & Sign.
  • If using the Swift wrapper package, point its binaryTarget to the xcframework location or add the package and place the xcframework at the expected path.

@QuantumExplorer QuantumExplorer merged commit 472315a into v3.1-dev May 28, 2026
22 checks passed
@QuantumExplorer QuantumExplorer deleted the claude/vigilant-bassi-1ea59f branch May 28, 2026 08:26
Copy link
Copy Markdown
Collaborator

@thepastaclaw thepastaclaw left a comment

Choose a reason for hiding this comment

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

Code Review

Clean rust-dashcore dependency bump with two narrow FFI adaptations: a passthrough monitored_script_pubkeys delegate and migration to Option<DevnetConfig>. No consensus, security, or memory-safety issues found. One in-scope suggestion: extend the pre-existing FFI validation block to mirror the new upstream DevnetConfig::validate() constraints (empty/slash names), matching the pattern already used for the devnet.is_some() == (network == Devnet) invariant.

🟡 1 suggestion(s)

1 additional finding(s) omitted (not in diff).

🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify each finding against the current code and only fix it if needed.

In `packages/rs-platform-wallet-ffi/src/spv.rs`:
- [SUGGESTION] packages/rs-platform-wallet-ffi/src/spv.rs:245-268: Mirror new DevnetConfig::validate() constraints in FFI pre-checks
  Upstream `DevnetConfig::validate()` (in dash-spv) now rejects empty `devnet_name` and names containing `/`. `platform_wallet_manager_spv_start` only null-checks the pointer and then hands the config to `spawn_in_background`, which logs but does not surface startup failures synchronously. The result is a successful FFI return followed by a background spawn that immediately fails validation — a new failure mode introduced by this PR's adoption of `DevnetConfig`. The existing validation block at lines 245-268 already mirrors the upstream `devnet.is_some() == (network == Devnet)` invariant for synchronous reporting; extending it for empty/slash names keeps the FFI's error surface consistent and matches the established pattern. Not blocking — the failure is devnet-only and fails closed.

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.

2 participants