Skip to content

chore(platform)!: update rust-dashcore past the FFI removal - #5729

Merged
shumkov merged 7 commits into
v5.1-devfrom
chore/update-rust-dashcore-past-ffi-removal
Nov 6, 2026
Merged

shumkov merged 7 commits into
v5.1-devfrom
chore/update-rust-dashcore-past-ffi-removal

Conversation

@xdustinface

@xdustinface xdustinface commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Issue being fixed or feature implemented

dashpay/rust-dashcore#776 deletes key-wallet-ffi and the ffi feature of dash-network. Platform could only move its rust-dashcore pin past that once nothing linked them, which #5727 and #5728 took care of. This PR is that bump.

It also clears the workarounds that #5726 (merged) could not drop at 7329126e, as the review on #5717 pointed out: dashpay/rust-dashcore#1224, dashpay/rust-dashcore#1250 and dashpay/rust-dashcore#1226 all landed after that commit, and this pin contains all three.

What was done?

These upstream changes needed nothing in Platform: dashpay/rust-dashcore#400 (SegWit and Taproot removed), dashpay/rust-dashcore#1288 (bitcoin_units re-exports), dashpay/rust-dashcore#1289 (dependency maintenance), dashpay/rust-dashcore#1318 (bitcoinconsensus removed), dashpay/rust-dashcore#1307 (partial merkle trees bounded by Dash's block size) and dashpay/rust-dashcore#1258 (masternode sync kept live on bad or missing diffs).

Not in this PR: #5629's port and duplicate checks can switch to ExtNetInfo::validate_ports_and_duplicates (dashpay/rust-dashcore#1226) only after the next v5.0-dev forward merge brings them to v5.1-dev.

How Has This Been Tested?

Locally, all green:

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-features --all-targets -- -D warnings
  • cargo check --target wasm32-unknown-unknown for wasm-sdk, wasm-dpp, wasm-dpp2 and rs-sdk-trusted-context-provider (lib and tests), and the transport-free feature cuts CI checks
  • cargo machete and cargo vendor --locked
  • cargo test --lib for platform-wallet, platform-wallet-ffi, platform-wallet-storage, rs-sdk-trusted-context-provider and dpp, platform-wallet-storage's integration tests, and the drive-abci chain lock tests

The Swift and Kotlin SDKs and the full workspace test suite are left to CI.

Breaking Changes

Breaking for Rust consumers of rust-dashcore types, and for apps that used the Swift KeyWallet classes #5728 deleted. Consensus and persisted formats are unchanged, apart from upstream behaviour: an existing SPV store resyncs its masternode lists once, because dashpay/rust-dashcore#1227 changed the snapshot format, and the default user agent becomes /dash-spv:<version>/.

Checklist:

  • I have performed a self-review of my own code
  • My Rust, FFI, WASM, Swift or Kotlin changes follow the coding conventions
  • 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
  • If I added or changed GroveDB structure, I described it in the area's structure.rs, regenerated grovedb-structure.json, and checked the structure viewer link posted on this pull request
  • If I added or changed a system contract's document schemas, I checked the contract viewer link posted on this pull request

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

PR Hygiene · 70abc13

  • Bots — thepastaclaw ✓, 2 threads unresolved — resolve them
  • Self-review — posted; again after any push
  • Build green
  • Approvals
    • files with no dedicated owner (Cargo.lock, Cargo.toml, packages/rs-drive-proof-verifier/src/proof.rs and 14 more) — QuantumExplorer or shumkov
    • rust-dapi (packages/rs-dapi/Cargo.toml, packages/rs-dapi/src/services/core_service.rs, packages/rs-dapi/src/services/streaming_service/block_header_stream.rs and 5 more) — QuantumExplorer or lklimek or shumkov
    • dpp (packages/rs-dpp/src/address_funds/platform_address.rs, packages/rs-dpp/src/core_types/validator/mod.rs, packages/rs-dpp/src/core_types/validator/v0/mod.rs and 11 more) — QuantumExplorer or shumkov
    • rs-drive-abci (packages/rs-drive-abci/src/abci/handler/prepare_proposal.rs, packages/rs-drive-abci/src/execution/platform_events/block_end/validator_set_update/v0/mod.rs, packages/rs-drive-abci/src/execution/platform_events/block_end/validator_set_update/v1/mod.rs and 40 more) — QuantumExplorer or shumkov
    • rs-platform-wallet-ffi (packages/rs-platform-wallet-ffi/src/asset_lock/built_callback.rs, packages/rs-platform-wallet-ffi/src/asset_lock/sync.rs, packages/rs-platform-wallet-ffi/src/core_wallet/broadcast.rs and 21 more) — HashEngineering or ZocoLini or llbartekll or romchornyi
    • wallet-storage (packages/rs-platform-wallet-storage/src/sqlite/provider_accounts.rs, packages/rs-platform-wallet-storage/src/sqlite/rehydrate.rs, packages/rs-platform-wallet-storage/src/sqlite/schema/asset_locks.rs and 26 more) — lklimek
    • rs-platform-wallet (packages/rs-platform-wallet/examples/dpns_marketplace_testnet.rs, packages/rs-platform-wallet/src/changeset/changeset.rs, packages/rs-platform-wallet/src/changeset/core_bridge.rs and 42 more) — HashEngineering or ZocoLini or llbartekll or romchornyi
    • rust-sdk-ffi (packages/rs-sdk-ffi/src/mnemonic_resolver_core_signer.rs, packages/rs-sdk-ffi/src/signer_simple.rs, packages/rs-sdk-ffi/src/voting/masternode_vote.rs) — lklimek or shumkov
    • rust-sdk (packages/rs-sdk/src/core/dash_core_client.rs, packages/rs-sdk/src/core/transaction.rs, packages/rs-sdk/src/error.rs and 10 more) — lklimek or shumkov
    • js-wasm-sdk (packages/wasm-sdk/src/queries/epoch.rs, packages/wasm-sdk/src/wallet/dip14.rs, packages/wasm-sdk/src/wallet/key_generation.rs) — shumkov

When every merge requirement is met, the PR Hygiene check passes. Reviewer limits do not block merging; other required GitHub checks and protections still apply.

@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 198 files, which is 98 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 9766bab and 70abc13.

Files ignored due to path filters: 1

  • Cargo.lock is excluded by !**/*.lock
Files selected for processing: 198

  • Cargo.toml
  • packages/rs-dapi/Cargo.toml
  • packages/rs-dapi/src/services/core_service.rs
  • packages/rs-dapi/src/services/streaming_service/block_header_stream.rs
  • packages/rs-dapi/src/services/streaming_service/bloom.rs
  • packages/rs-dapi/src/services/streaming_service/masternode_list_sync.rs
  • packages/rs-dapi/src/services/streaming_service/mod.rs
  • packages/rs-dapi/src/services/streaming_service/subscriber_manager.rs
  • packages/rs-dapi/src/services/streaming_service/transaction_stream.rs
  • packages/rs-dpp/src/address_funds/platform_address.rs
  • packages/rs-dpp/src/core_types/validator/mod.rs
  • packages/rs-dpp/src/core_types/validator/v0/mod.rs
  • packages/rs-dpp/src/core_types/validator_set/mod.rs
  • packages/rs-dpp/src/core_types/validator_set/v0/mod.rs
  • packages/rs-dpp/src/identity/identity_public_key/v0/methods/mod.rs
  • packages/rs-dpp/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs
  • packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/signing_tests.rs
  • packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/signing_tests.rs
  • packages/rs-dpp/src/tests/utils/mod.rs
  • packages/rs-dpp/src/util/hash.rs
  • packages/rs-dpp/tests/ecdsa_compatibility.rs
  • packages/rs-dpp/tests/historical_hash_compatibility.rs
  • packages/rs-dpp/tests/untrusted_decode.rs
  • packages/rs-drive-abci/src/abci/handler/prepare_proposal.rs
  • packages/rs-drive-abci/src/execution/platform_events/block_end/validator_set_update/v0/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/block_end/validator_set_update/v1/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/block_end/validator_set_update/v2/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/core_based_updates/update_masternode_identities/create_owner_identity/v2/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/core_based_updates/update_masternode_identities/create_voter_identity/v0/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/core_based_updates/update_masternode_identities/update_masternode_identities/v0/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/core_based_updates/update_masternode_identities/update_masternode_identities/v1/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/core_based_updates/update_masternode_identities/update_operator_identity/v0/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/core_based_updates/update_masternode_identities/update_voter_identity/v0/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/core_based_updates/update_masternode_identities/update_voter_identity/v1/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/core_chain_lock/choose_quorum/v0/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/core_chain_lock/verify_chain_lock_locally/v0/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/core_chain_lock/verify_chain_lock_locally/v1/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/core_instant_send_lock/verify_recent_signature_locally/v0/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/protocol_upgrade/perform_events_on_first_block_of_protocol_change/v0/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/voting/keep_record_of_vote_poll/v0/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/voting/remove_votes_for_removed_masternodes/v0/mod.rs
  • packages/rs-drive-abci/src/execution/platform_events/withdrawals/dequeue_and_build_unsigned_withdrawal_transactions/v0/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/common/asset_lock/transaction/fetch_asset_lock_transaction_output_sync/v0/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/address_funding_from_asset_lock/transform_into_action/v0/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_create/state/v0/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_top_up/transform_into_action/v0/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/transform_into_action/v0/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/shield_from_asset_lock/transform_into_action/v0/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/shield_from_asset_lock/transform_into_action/v1/mod.rs
  • packages/rs-drive-abci/src/mimic/mod.rs
  • packages/rs-drive-abci/src/mimic/test_quorum.rs
  • packages/rs-drive-abci/src/platform_types/block_proposal/v0.rs
  • packages/rs-drive-abci/src/platform_types/platform_state/mod.rs
  • packages/rs-drive-abci/src/platform_types/platform_state/platform_state_for_saving/v0/mod.rs
  • packages/rs-drive-abci/src/platform_types/platform_state/platform_state_for_saving/v1/mod.rs
  • packages/rs-drive-abci/src/platform_types/platform_state/recent.rs
  • packages/rs-drive-abci/src/platform_types/signature_verification_quorum_set/v0/for_saving_v0.rs
  • packages/rs-drive-abci/src/platform_types/signature_verification_quorum_set/v0/for_saving_v1.rs
  • packages/rs-drive-abci/src/platform_types/signature_verification_quorum_set/v0/quorums.rs
  • packages/rs-drive-abci/src/platform_types/validator/v0/mod.rs
  • packages/rs-drive-abci/src/platform_types/validator_set/v0/mod.rs
  • packages/rs-drive-abci/src/platform_types/withdrawal/unsigned_withdrawal_txs/v0/mod.rs
  • packages/rs-drive-abci/src/query/system/current_quorums_info/v0/mod.rs
  • packages/rs-drive-abci/src/test/helpers/chain_lock_quorums.rs
  • packages/rs-drive-abci/src/test/helpers/withdrawals.rs
  • packages/rs-drive-abci/tests/strategy_tests/execution.rs
  • packages/rs-drive-proof-verifier/src/proof.rs
  • packages/rs-drive-proof-verifier/src/types.rs
  • packages/rs-drive-proof-verifier/src/unproved.rs
  • packages/rs-platform-wallet-ffi/src/asset_lock/built_callback.rs
  • packages/rs-platform-wallet-ffi/src/asset_lock/sync.rs
  • packages/rs-platform-wallet-ffi/src/core_wallet/broadcast.rs
  • packages/rs-platform-wallet-ffi/src/core_wallet/transaction_builder.rs
  • packages/rs-platform-wallet-ffi/src/core_wallet_types.rs
  • packages/rs-platform-wallet-ffi/src/dashpay.rs
  • packages/rs-platform-wallet-ffi/src/derivation.rs
  • packages/rs-platform-wallet-ffi/src/derive_connect_key.rs
  • packages/rs-platform-wallet-ffi/src/derive_identity_key_at_slot.rs
  • packages/rs-platform-wallet-ffi/src/error.rs
  • packages/rs-platform-wallet-ffi/src/identity_derive_and_persist.rs
  • packages/rs-platform-wallet-ffi/src/identity_keys_from_mnemonic.rs
  • packages/rs-platform-wallet-ffi/src/identity_registration_funded_with_signer.rs
  • packages/rs-platform-wallet-ffi/src/invitation_persistence.rs
  • packages/rs-platform-wallet-ffi/src/masternode_update_service.rs
  • packages/rs-platform-wallet-ffi/src/mnemonic_words.rs
  • packages/rs-platform-wallet-ffi/src/persistence.rs
  • packages/rs-platform-wallet-ffi/src/platform_addresses/fund_from_asset_lock.rs
  • packages/rs-platform-wallet-ffi/src/shielded_send.rs
  • packages/rs-platform-wallet-ffi/src/shielded_wallet_drain.rs
  • packages/rs-platform-wallet-ffi/src/sign_with_mnemonic_resolver.rs
  • packages/rs-platform-wallet-ffi/src/spv.rs
  • packages/rs-platform-wallet-ffi/src/tx_decode.rs
  • packages/rs-platform-wallet-ffi/src/utils.rs
  • packages/rs-platform-wallet-storage/src/sqlite/provider_accounts.rs
  • packages/rs-platform-wallet-storage/src/sqlite/rehydrate.rs
  • packages/rs-platform-wallet-storage/src/sqlite/schema/asset_locks.rs
  • packages/rs-platform-wallet-storage/src/sqlite/schema/blob.rs
  • packages/rs-platform-wallet-storage/src/sqlite/schema/core_pool.rs
  • packages/rs-platform-wallet-storage/src/sqlite/schema/core_state.rs
  • packages/rs-platform-wallet-storage/src/sqlite/schema/invitations.rs
  • packages/rs-platform-wallet-storage/tests/integration/fixture_gen.rs
  • packages/rs-platform-wallet-storage/tests/integration/review_4651_concurrent_payment.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_account_zero_attribution.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_asset_locks_filter.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_blob_roundtrip_coverage.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_buffer_semantics.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_core_pool_writer.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_core_state_reader.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_error_classification.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_identity_key_restore.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_load_reconstruction.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_load_wiring.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_migration_execution.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_money_column_overflow_on_read.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_persist_roundtrip.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_pool_reader.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_recovery_mode.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_sent_payment_verdict_durability.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_structural_hardening.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_transaction_sweeps.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_used_core_addresses.rs
  • packages/rs-platform-wallet-storage/tests/integration/sqlite_version_bump.rs
  • packages/rs-platform-wallet/examples/dpns_marketplace_testnet.rs
  • packages/rs-platform-wallet/src/changeset/changeset.rs
  • packages/rs-platform-wallet/src/changeset/core_bridge.rs
  • packages/rs-platform-wallet/src/error.rs
  • packages/rs-platform-wallet/src/events.rs
  • packages/rs-platform-wallet/src/manager/accessors.rs
  • packages/rs-platform-wallet/src/manager/mod.rs
  • packages/rs-platform-wallet/src/manager/startup.rs
  • packages/rs-platform-wallet/src/manager/wallet_lifecycle.rs
  • packages/rs-platform-wallet/src/masternode/list.rs
  • packages/rs-platform-wallet/src/masternode/locator.rs
  • packages/rs-platform-wallet/src/masternode/record.rs
  • packages/rs-platform-wallet/src/masternode/tracked.rs
  • packages/rs-platform-wallet/src/masternode/update_service.rs
  • packages/rs-platform-wallet/src/spv/mod.rs
  • packages/rs-platform-wallet/src/spv/peers.rs
  • packages/rs-platform-wallet/src/spv/runtime.rs
  • packages/rs-platform-wallet/src/test_support.rs
  • packages/rs-platform-wallet/src/wallet/asset_lock/build.rs
  • packages/rs-platform-wallet/src/wallet/asset_lock/lock_notify_handler.rs
  • packages/rs-platform-wallet/src/wallet/asset_lock/sync/locate.rs
  • packages/rs-platform-wallet/src/wallet/asset_lock/sync/proof.rs
  • packages/rs-platform-wallet/src/wallet/asset_lock/sync/reconstruction.rs
  • packages/rs-platform-wallet/src/wallet/asset_lock/sync/recovery.rs
  • packages/rs-platform-wallet/src/wallet/core/sign_message.rs
  • packages/rs-platform-wallet/src/wallet/core/spend_observer.rs
  • packages/rs-platform-wallet/src/wallet/core/transaction.rs
  • packages/rs-platform-wallet/src/wallet/core/transaction_decode.rs
  • packages/rs-platform-wallet/src/wallet/core_address_key.rs
  • packages/rs-platform-wallet/src/wallet/identity/crypto/auto_accept.rs
  • packages/rs-platform-wallet/src/wallet/identity/network/contact_requests.rs
  • packages/rs-platform-wallet/src/wallet/identity/network/discovery.rs
  • packages/rs-platform-wallet/src/wallet/identity/network/identity_handle.rs
  • packages/rs-platform-wallet/src/wallet/identity/network/invitation.rs
  • packages/rs-platform-wallet/src/wallet/identity/network/loading.rs
  • packages/rs-platform-wallet/src/wallet/identity/network/payments.rs
  • packages/rs-platform-wallet/src/wallet/identity/network/seed_binding.rs
  • packages/rs-platform-wallet/src/wallet/identity/state/managed_identity/contact_requests.rs
  • packages/rs-platform-wallet/src/wallet/masternode_withdrawal.rs
  • packages/rs-platform-wallet/src/wallet/mnemonic.rs
  • packages/rs-platform-wallet/src/wallet/platform_wallet_traits.rs
  • packages/rs-platform-wallet/src/wallet/provider_ecdsa_key_tests.rs
  • packages/rs-platform-wallet/src/wallet/provider_key_at_index.rs
  • packages/rs-platform-wallet/src/wallet/shielded/activity.rs
  • packages/rs-platform-wallet/src/wallet/shielded/wallet_drain.rs
  • packages/rs-sdk-ffi/src/mnemonic_resolver_core_signer.rs
  • packages/rs-sdk-ffi/src/signer_simple.rs
  • packages/rs-sdk-ffi/src/voting/masternode_vote.rs
  • packages/rs-sdk-trusted-context-provider/examples/refresh_checkpoints.rs
  • packages/rs-sdk-trusted-context-provider/src/verified_provider.rs
  • packages/rs-sdk/src/core/dash_core_client.rs
  • packages/rs-sdk/src/core/transaction.rs
  • packages/rs-sdk/src/error.rs
  • packages/rs-sdk/src/platform/dashpay/invitation.rs
  • packages/rs-sdk/src/platform/dpns_usernames/mod.rs
  • packages/rs-sdk/src/platform/query.rs
  • packages/rs-sdk/src/platform/transition/asset_lock_submission.rs
  • packages/rs-sdk/src/platform/transition/masternode_vote_keys.rs
  • packages/rs-sdk/tests/fetch/config.rs
  • packages/rs-sdk/tests/fetch/contested_resource_identity_votes.rs
  • packages/rs-sdk/tests/fetch/protocol_version_votes.rs
  • packages/rs-sdk/tests/fetch/vote_poll_default_limit.rs
  • packages/rs-sdk/tests/proof_options.rs
  • packages/rs-unified-sdk-jni/src/persistence.rs
  • packages/rs-unified-sdk-jni/src/tx_decode.rs
  • packages/simple-signer/src/single_key_signer.rs
  • packages/wasm-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs
  • packages/wasm-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs
  • packages/wasm-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs
  • packages/wasm-dpp/src/errors/consensus/basic/identity/invalid_asset_transaction_out_point_not_enough_balance_error.rs
  • packages/wasm-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs
  • packages/wasm-dpp2/src/core/pro_tx_hash.rs
  • packages/wasm-dpp2/src/identity/signer.rs
  • packages/wasm-sdk/src/queries/epoch.rs
  • packages/wasm-sdk/src/wallet/dip14.rs
  • packages/wasm-sdk/src/wallet/key_generation.rs

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@thepastaclaw

thepastaclaw commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

✅ Final review complete — no blockers (commit 70abc13) · triage: normal

@xdustinface
xdustinface force-pushed the refactor/drop-key-wallet-ffi-dependency branch from 8671039 to 46685b3 Compare November 3, 2026 05:35
@xdustinface
xdustinface force-pushed the chore/update-rust-dashcore-past-ffi-removal branch 2 times, most recently from 9176fc6 to fda1e70 Compare November 3, 2026 05:42
@xdustinface
xdustinface force-pushed the refactor/drop-key-wallet-ffi-dependency branch 2 times, most recently from 6a82cbb to d3acb2c Compare November 3, 2026 09:10
@xdustinface
xdustinface force-pushed the chore/update-rust-dashcore-past-ffi-removal branch 2 times, most recently from 444bb7e to 7377b8e Compare November 3, 2026 09:15
@xdustinface
xdustinface force-pushed the refactor/drop-key-wallet-ffi-dependency branch from d3acb2c to 9a638e9 Compare November 3, 2026 10:14
@xdustinface
xdustinface force-pushed the chore/update-rust-dashcore-past-ffi-removal branch from 7377b8e to 70aa0a1 Compare November 3, 2026 10:15
@xdustinface
xdustinface force-pushed the refactor/drop-key-wallet-ffi-dependency branch from 9a638e9 to 2887bfd Compare November 3, 2026 14:02
@xdustinface
xdustinface force-pushed the chore/update-rust-dashcore-past-ffi-removal branch from 70aa0a1 to d0345d5 Compare November 3, 2026 14:14
@xdustinface
xdustinface force-pushed the refactor/drop-key-wallet-ffi-dependency branch from 2887bfd to ac71375 Compare November 3, 2026 14:46
@xdustinface
xdustinface force-pushed the chore/update-rust-dashcore-past-ffi-removal branch from d0345d5 to a103d30 Compare November 3, 2026 14:47
@xdustinface
xdustinface force-pushed the refactor/drop-key-wallet-ffi-dependency branch from ac71375 to 6a737ac Compare November 3, 2026 23:14
@xdustinface
xdustinface force-pushed the chore/update-rust-dashcore-past-ffi-removal branch from a103d30 to 105aae2 Compare November 3, 2026 23:14
@xdustinface
xdustinface force-pushed the refactor/drop-key-wallet-ffi-dependency branch 2 times, most recently from d001e3e to 56e4ea2 Compare November 4, 2026 10:22
Base automatically changed from refactor/drop-key-wallet-ffi-dependency to v5.1-dev November 4, 2026 12:58
@github-actions github-actions Bot added this to the v5.1.0 milestone Nov 4, 2026
@xdustinface
xdustinface force-pushed the chore/update-rust-dashcore-past-ffi-removal branch from 105aae2 to dbc10ad Compare November 5, 2026 02:23
@xdustinface
xdustinface marked this pull request as ready for review November 5, 2026 02:24
@github-actions

github-actions Bot commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Waiting for bot review — thepastaclaw not yet. Wait for the missing reviews, or a writer can post /skip-bots to proceed without them; blocking findings still need addressing.
Full checklist in the description.

@github-actions github-actions Bot added the waiting-bots Waiting for the review bots to report on this head label Nov 5, 2026

@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 1 + Phase 2

Verified the findings against exact head dbc10ad and the pinned rust-dashcore source. Two blocking regressions remain: standalone DAPI loses X11 block hashing, and peer tracking can retain disconnected peers across internal SPV recovery, incorrectly reporting broadcast readiness. This was a static review; current CI reports successful code checks, including Rust, WASM, Docker, Swift, Kotlin, and end-to-end tests.

🔴 2 blocking

Review provenance

Source: reviewer 1: muse-spark-1.3-contributor (agent: phase1-reviewer, role: general); reviewer 2: muse-spark-1.3-contributor (agent: phase1-reviewer, role: rust-quality); reviewer 3: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 4: gpt-6.1-sol (agent: phase2-reviewer, role: architecture-layering); reviewer 5: gpt-6.1-sol (agent: phase2-reviewer, role: ffi-engineer); reviewer 6: gpt-6.1-sol (agent: phase2-reviewer, role: platform-versioning); reviewer 7: gpt-6.1-sol (agent: phase2-reviewer, role: rust-quality); reviewer 8: gpt-6.1-sol (agent: phase2-reviewer, role: security-auditor); reviewer 9: gpt-6.1-sol (agent: phase2-reviewer, role: tenderdash-consensus-security); final verifier: gpt-6.1-sol (agent: sol-verifier, role: final-verifier)

  • Triage: normal by gpt-6.1-sol (effort low) — Despite its broad reach, the diff is primarily a dependency/API migration with equivalence-preserving hash and key adaptations and contained finality-error handling, rather than a clearly large or intricate change to critical behavior.
  • Phase 1 reviewers: muse-spark-1.3-contributor — general (completed, effort xhigh); agent phase1-reviewer, muse-spark-1.3-contributor — rust-quality (completed, effort xhigh); agent phase1-reviewer
  • Phase 1 model: muse-spark-1.3-contributor — not quota-gated; passed over gemini-3.8-flash-high (antigravity quota lookup failed), glm-5.3-flash (not used above high effort; tier asks max)
  • Fresh verifier: gpt-6.1-sol — final-verifier; agent sol-verifier
  • Phase 2 reviewers: gpt-6.1-sol — general (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — architecture-layering (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — ffi-engineer (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — platform-versioning (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — rust-quality (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — security-auditor (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — tenderdash-consensus-security (completed, effort high); agent phase2-reviewer
🤖 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-dapi/Cargo.toml`:
- [BLOCKING] packages/rs-dapi/Cargo.toml:89-92: Preserve X11 block hashing when removing dash-spv
  Removing dash-spv also removes the dependency that enabled dashcore's `core-block-hash-use-x11` feature. The remaining standalone rs-dapi dependency closure does not enable it: dashcore defaults to bincode, rpc-json enables rand-std/signer/serde, and neither DPP's selected features nor key-wallet enables X11. The production Dockerfile builds only `--package rs-dapi --locked`, so upstream `dash/src/hash_types.rs` now selects SHA256d for BlockHash instead of X11. Consequently, `block_hash_from_block_bytes` computes incorrect Dash block IDs. Historical streaming records the actual RPC block hash, while live streaming records this SHA256d hash, defeating historical/live duplicate suppression in both block-header and transaction-with-proofs streams. Explicitly enable X11 through a directly used dashcore dependency in rs-dapi. Add a test against an independently pinned Core block hash: the existing vector test compares two calls to the same feature-dependent hashing implementation and passes with either algorithm.

In `packages/rs-platform-wallet/src/spv/peers.rs`:
- [BLOCKING] packages/rs-platform-wallet/src/spv/peers.rs:87-99: Resynchronize peer tracking across internal SPV restarts
  The per-peer event stream is not continuous across dash-spv's internal fork recovery. At the pinned revision, sync_coordinator cancels and joins its network-event monitor before lifecycle::handle_fork stops the network, truncates storage, and starts another run. PeerNetworkManager::stop clears its connected set during that unmonitored interval, so departures can be lost before the new subscription starts. Platform clears this tracker only on its own stop or startup failure. Thus connect A → internal recovery → connect B → disconnect B can leave A in this set indefinitely; ignoring PeersUpdated, including a zero connected_count, cannot reconcile it. This affects operation recovery, not just display: SpvRuntime::is_broadcast_ready trusts this set, allowing pending sends to exhaust retries without waiting for actual peers. Asset-lock recovery also leaves its transport_missed flag false and skips the readiness-deferred retry. Use authoritative client peer counts for readiness and restore reset-aware peer synchronization. The lifecycle snapshot/reset capability belongs in rust-dashcore's dash-spv and should be consumed here. Add coverage for an internal restart with different replacement peers followed by loss of all peers.

Comment on lines 89 to 92
# Dash Core RPC client
dashcore-rpc = { workspace = true }
dash-spv = { workspace = true }

rs-dash-event-bus = { path = "../rs-dash-event-bus" }

@thepastaclaw thepastaclaw Nov 5, 2026 •

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.

✅ Resolved at 70abc134; see the replies below.

🔴 Blocking: Preserve X11 block hashing when removing dash-spv

Removing dash-spv also removes the dependency that enabled dashcore's core-block-hash-use-x11 feature. The remaining standalone rs-dapi dependency closure does not enable it: dashcore defaults to bincode, rpc-json enables rand-std/signer/serde, and neither DPP's selected features nor key-wallet enables X11. The production Dockerfile builds only --package rs-dapi --locked, so upstream dash/src/hash_types.rs now selects SHA256d for BlockHash instead of X11. Consequently, block_hash_from_block_bytes computes incorrect Dash block IDs. Historical streaming records the actual RPC block hash, while live streaming records this SHA256d hash, defeating historical/live duplicate suppression in both block-header and transaction-with-proofs streams. Explicitly enable X11 through a directly used dashcore dependency in rs-dapi. Add a test against an independently pinned Core block hash: the existing vector test compares two calls to the same feature-dependent hashing implementation and passes with either algorithm.

source: gpt-6.1-sol (phase2-reviewer: general)

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.

Resolved (re-reviewed at 70abc134): Your direct rs-dapi dependency now explicitly enables dashcore/core-block-hash-use-x11, preserving X11 block hashing when rs-dapi builds independently of dash-spv. The updated regression test computes its expected X11 digest directly from the header bytes, and the standalone RS-DAPI image check passes.

Comment on lines +87 to +99
match event {
NetworkEvent::PeerConnected(address) => {
let mut connected = self.connected();
// dash-spv can reconnect an address before the old
// connection's departure, which it then leaves unannounced.
if !connected.contains(address) {
connected.push(*address);
}
}
NetworkEvent::PeerDisconnected(address) => {
self.connected().retain(|connected| connected != address);
}
NetworkEvent::PeersUpdated { .. } => return,

@thepastaclaw thepastaclaw Nov 5, 2026 •

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.

✅ Resolved at 70abc134; see the replies below.

🔴 Blocking: Resynchronize peer tracking across internal SPV restarts

The per-peer event stream is not continuous across dash-spv's internal fork recovery. At the pinned revision, sync_coordinator cancels and joins its network-event monitor before lifecycle::handle_fork stops the network, truncates storage, and starts another run. PeerNetworkManager::stop clears its connected set during that unmonitored interval, so departures can be lost before the new subscription starts. Platform clears this tracker only on its own stop or startup failure. Thus connect A → internal recovery → connect B → disconnect B can leave A in this set indefinitely; ignoring PeersUpdated, including a zero connected_count, cannot reconcile it. This affects operation recovery, not just display: SpvRuntime::is_broadcast_ready trusts this set, allowing pending sends to exhaust retries without waiting for actual peers. Asset-lock recovery also leaves its transport_missed flag false and skips the readiness-deferred retry. Use authoritative client peer counts for readiness and restore reset-aware peer synchronization. The lifecycle snapshot/reset capability belongs in rust-dashcore's dash-spv and should be consumed here. Add coverage for an internal restart with different replacement peers followed by loss of all peers.

source: gpt-6.1-sol (phase2-reviewer: general)

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.

Resolved (re-reviewed at 70abc134): Your c9aeac0d repin addresses the internal-restart sequence upstream: network shutdown cancels admissions, clears connected peers, and emits an empty PeersUpdated snapshot before cancelling and joining the event monitors, which drain queued events. Platform's PeerTracker replaces its cached addresses from those authoritative snapshots, so departed peers no longer remain cached through the fork restart.

@github-actions

github-actions Bot commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Your move: thepastaclaw requested changes on this head; dismiss the review or push a fix; thepastaclaw left review threads unresolved; resolve them.
Full checklist in the description.

@github-actions github-actions Bot added the waiting-self-review Waiting for the author to post /self-reviewed label Nov 5, 2026
@xdustinface
xdustinface force-pushed the chore/update-rust-dashcore-past-ffi-removal branch from fa85397 to 1677942 Compare November 5, 2026 11:07
@xdustinface
xdustinface marked this pull request as ready for review November 5, 2026 11:14
@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Your move: thepastaclaw left review threads unresolved; resolve them.
Full checklist in the description.

@github-actions github-actions Bot added the waiting-self-review Waiting for the author to post /self-reviewed label Nov 5, 2026
@xdustinface
xdustinface marked this pull request as draft November 5, 2026 11:28
@github-actions github-actions Bot removed the waiting-self-review Waiting for the author to post /self-reviewed label Nov 5, 2026
Moves every rust-dashcore pin from `7329126e` to `a319c0a3`, the current `dev` of dashpay/rust-dashcore. It includes dashpay/rust-dashcore#776 (FFI crates removed) and `TxIn::claimed_p2pkh_address`. Base SDK moves to 89828032.

Adapted:
- #1266: seeds and phrases come back as `Zeroizing` buffers and are borrowed, not copied
- #1250: `AppEncryption` uses `application_encryption_path`, `AppEncryptionLegacy` the `_without_rotation` variant, so derived keys and paths are byte-identical
- #902: `PeersUpdated` no longer lists addresses, so `PeerTracker` builds the connected set from `PeerConnected` / `PeerDisconnected`
- #1223: devnet LLMQ size and threshold are `u16`, and larger values are now refused
- #1189: `dash-spv`'s `sync` module is private, so imports use the public re-exports
- #1223: the Base SDK's `LlmqParams` keeps the DKG fields flat as `u16`, so the verified context provider and the `refresh_checkpoints` example read `dkg_interval` and widen both counts to `u32`, giving the same fetch window and depth
- #1320: hash newtypes no longer have `engine` or `from_engine`, so the ChainLock request id in `drive-abci` and the ProUpServTx payload hash in `platform-wallet` hash through `sha256d::Hash` and wrap the result, which gives the same bytes
- #1320: upstream hash types no longer index into bytes or have `from_slice`, so callers read `as_byte_array` and use the newtypes' own `from_slice` and `all_zeros`
- #1320: the newtypes' conversions are inherent functions, so the `Hash` trait imports that only served them go, and `rs-dapi` drops `dash-spv`, whose only use was that import

dash-spv applies the `/name:version/` form and the 256-byte bound to the user agent again (#1311), so `platform_wallet_manager_spv_start` passes the configured user agent through.

Behaviour that changes upstream: an existing SPV store resyncs its masternode lists once, because #1227 changed the snapshot format. The default user agent becomes `/dash-spv:<version>/`. #1273 (payload written only from version 3) and #1269 (`OP_CODESEPARATOR` in the legacy sighash) do not affect transactions Platform builds or verifies. #400 (SegWit and Taproot removed), #1288 (`bitcoin_units` re-exports), #1289 (dependency maintenance), #1318 (`bitcoinconsensus` removed), #1307 (partial merkle trees bounded by Dash's block size) and #1258 (masternode sync kept live on bad or missing diffs) need no change in Platform.
rust-dashcore now has the P2PKH sender check that `decode_transaction` carried a copy of, so it calls that instead. The script shape test goes with the copy, because rust-dashcore's `test_claimed_p2pkh_address` covers every case it had.
key-wallet now refuses an asset lock build with `BuilderError::FundsAwaitingFinality` when only coins that are not final yet would fund it. `map_builder_error` let that fall into the generic `AssetLockTransaction` string, so a caller could not tell "wait for confirmation" from a hard failure.

Map it to a new `PlatformWalletError::AssetLockFundsAwaitingFinality { waiting }`. The FFI maps the new variant to the existing `ErrorAssetLockInsufficientFunds` (29) code, so iOS and Android behave as before until hosts get a dedicated code.
`map_asset_lock_funding_result` passed only `AssetLockInsufficientFunds` to the typed conversion, so `AssetLockFundsAwaitingFinality` from the shielded fund-from-asset-lock path flattened to `ErrorWalletOperation` (6) while the non-shielded entry point returns 29.
dashpay/rust-dashcore#1320 moves `dashcore_hashes` onto `bitcoin_hashes` 1.x from the rust-bitcoin rev that `bitcoin-crypto` uses. The crates.io `bitcoin_hashes` 0.14 no longer gets its `io` feature, so the crates.io `bitcoin-io` and `bitcoin-consensus-encoding` 1.3.0 that took `bitcoin-internals` 0.7.0 from crates.io leave the graph. Since dashpay/rust-dashcore#1224 the same already held for `base58ck`, `bitcoin_hashes` and `bitcoin-units`. No crates.io dependency asks for a version the git rev provides, so the whole patch section goes.

`Cargo.lock` is unchanged and `cargo vendor --locked` succeeds. Closes #5648.
Dropping `dash-spv` from `rs-dapi` also dropped the only thing in its dependency graph that enabled `dashcore`'s `core-block-hash-use-x11` feature. The Docker image builds `--package rs-dapi` alone, so `BlockHash` fell back to SHA256d and `block_hash_from_block_bytes` returned wrong Dash block hashes.

`rs-dapi` now depends on `dashcore` with the feature enabled and decodes blocks through it. The Core v24 block test compares against an X11 hash computed directly from the header bytes, so it fails when the feature is missing.
Moves every rust-dashcore pin from `a319c0a3` to `c9aeac0d`, which adds dashpay/rust-dashcore#1325, #1327, #1308 and #1202.

- #1325: dash-spv announces every peer it drops when it stops, including its internal restart after a fork, and keeps delivering events to handlers until the network has stopped. Before, `PeerTracker` kept departed peers after a fork restart, so `SpvRuntime::is_broadcast_ready` could report peers while none were connected.
- #1327: `PeersUpdated` lists the connected peers again and drops `connected_count`. `PeerTracker` goes back to storing the latest list, so a missed event cannot leave its copy wrong. The tests build the event with `addresses` and a plain `best_height`.
- #1308 and #1202 need no change: Platform converts quorum types only through `LLMQType::from(u8)`.
@xdustinface
xdustinface force-pushed the chore/update-rust-dashcore-past-ffi-removal branch from 703d703 to 70abc13 Compare November 5, 2026 12:39
@xdustinface
xdustinface marked this pull request as ready for review November 5, 2026 12:40
@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Your move: thepastaclaw left review threads unresolved; resolve them.
Full checklist in the description.

@github-actions github-actions Bot added the waiting-self-review Waiting for the author to post /self-reviewed label Nov 5, 2026

@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.

Re-review — Final validation — Phase 1 + Phase 2

Static verification of the complete diff at 70abc13 and relevant pinned upstream implementations found no actionable in-scope defects; both prior blocking findings are fixed. Current CI reports successful Rust workspace, wasm32, Swift, Kotlin, Evo SDK, Docker image, functional, and Dashmate E2E checks, with no failed code checks; two Test Suite checks and PR Hygiene remain pending. No builds or tests were run locally.

🔴 0 blocking | 🟡 0 suggestion(s) | 💬 0 nitpick(s)

Review provenance

Source: reviewer 1: muse-spark-1.3-contributor (agent: phase1-reviewer, role: general); reviewer 2: muse-spark-1.3-contributor (agent: phase1-reviewer, role: rust-quality); reviewer 3: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 4: gpt-6.1-sol (agent: phase2-reviewer, role: architecture-layering); reviewer 5: gpt-6.1-sol (agent: phase2-reviewer, role: ffi-engineer); reviewer 6: gpt-6.1-sol (agent: phase2-reviewer, role: platform-versioning); reviewer 7: gpt-6.1-sol (agent: phase2-reviewer, role: rust-quality); reviewer 8: gpt-6.1-sol (agent: phase2-reviewer, role: security-auditor); reviewer 9: gpt-6.1-sol (agent: phase2-reviewer, role: tenderdash-consensus-security); reviewer 10: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 11: gpt-6.1-sol (agent: phase2-reviewer, role: architecture-layering); reviewer 12: gpt-6.1-sol (agent: phase2-reviewer, role: ffi-engineer); reviewer 13: gpt-6.1-sol (agent: phase2-reviewer, role: platform-versioning); reviewer 14: gpt-6.1-sol (agent: phase2-reviewer, role: rust-quality); reviewer 15: gpt-6.1-sol (agent: phase2-reviewer, role: security-auditor); reviewer 16: gpt-6.1-sol (agent: phase2-reviewer, role: tenderdash-consensus-security); final verifier: gpt-6.1-sol (agent: sol-verifier, role: final-verifier)

  • Triage: normal by gpt-6.1-sol (effort low) — Despite its breadth, the diff primarily adapts dependency APIs while preserving hash bytes and derived keys, with contained finality-error handling rather than an intricate change to critical behavior.
  • Phase 1 reviewers: muse-spark-1.3-contributor — general (completed, effort xhigh); agent phase1-reviewer, muse-spark-1.3-contributor — rust-quality (completed, effort xhigh); agent phase1-reviewer
  • Phase 1 model: muse-spark-1.3-contributor — not quota-gated; passed over gemini-3.8-flash-high (antigravity quota lookup failed), glm-5.3-flash (not used above high effort; tier asks max)
  • Fresh final gate: an independent Phase-2 review ran after iterative findings were reconciled
  • Fresh verifier: gpt-6.1-sol — final-verifier; agent sol-verifier
  • Phase 2 reviewers: gpt-6.1-sol — general (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — architecture-layering (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — ffi-engineer (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — platform-versioning (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — rust-quality (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — security-auditor (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — tenderdash-consensus-security (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — general (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — architecture-layering (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — ffi-engineer (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — platform-versioning (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — rust-quality (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — security-auditor (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — tenderdash-consensus-security (completed, effort high); agent phase2-reviewer
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify the current code and confirm that no unresolved issues remain.

No unresolved findings remain from the prior review on this head.

@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Your move: thepastaclaw left review threads unresolved; resolve them.
Full checklist in the description.

@xdustinface xdustinface closed this Nov 5, 2026
@xdustinface xdustinface reopened this Nov 5, 2026
@xdustinface

Copy link
Copy Markdown
Contributor Author

/self-reviewed

@xdustinface
xdustinface requested a review from shumkov November 5, 2026 14:15
@shumkov
shumkov merged commit 46c26cb into v5.1-dev Nov 6, 2026
87 of 88 checks passed
@shumkov
shumkov deleted the chore/update-rust-dashcore-past-ffi-removal branch November 6, 2026 02:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

waiting-self-review Waiting for the author to post /self-reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

build: shrink the vendoring [patch.crates-io] on the next rust-dashcore bump

3 participants