feat(platform-wallet): reserve DashPay payout addresses without Core funding - #4614
Closed
PastaPastaPasta wants to merge 3 commits into
Closed
feat(platform-wallet): reserve DashPay payout addresses without Core funding#4614PastaPastaPasta wants to merge 3 commits into
PastaPastaPasta wants to merge 3 commits into
Conversation
PastaPastaPasta
requested review from
QuantumExplorer,
ZocoLini,
lklimek,
llbartekll and
shumkov
as code owners
September 7, 2026 20:24
Contributor
|
Warning Review limit reachedNext included review available in 38 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (4)
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. Comment |
5 tasks
Pin the minimal backport of dashpay/rust-dashcore#1004 on the existing 393b612 dependency baseline so Platform withdrawals to DIP-15 contact addresses are discovered by the recipient. Use the published signed fork commit without changing dependency versions or importing unrelated wallet APIs.
Restore Cargo.toml and Cargo.lock to the dependency baseline used by the DashPay payout address reservation implementation. Keep the asset unlock receipt discovery fix in dashpay/rust-dashcore#1004 as a separate prerequisite instead of pinning this SDK change to a personal fork.
6 tasks
Member
Author
|
Superseded by #4623 so the Rust workspace and Swift SDK CI jobs run (they skip fork heads). 🤖 Posted autonomously by Claude on behalf of pasta. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue being fixed or feature implemented
DashPay contact payments currently expose a combined address-resolution and Core-funded send operation. Wallets with Platform or shielded funds cannot obtain a fresh DIP-15 contact destination without selecting transparent Core inputs.
What was done?
Add
DashPayView::reserve_payment_addressand the SwiftManagedPlatformWallet.reserveDashPayPaymentAddress(fromIdentityId:toContactIdentityId:)wrapper through the C FFI. The operation completes the seed-verified deferred contact-crypto drain, consumes an address from the authoritative wallet/owner/contact external account pool, and persists and flushes its used flag before returning it.Core sends and external payout reservations share the derivation helper and a per-wallet gate that keeps their pool snapshots ordered. Core broadcasts release the gate while awaiting the network, then reacquire it before a definitive rejection's address rollback. The Swift wrapper retains its mnemonic resolver throughout the FFI call and frees the returned string.
Callers reserve only when submitting a confirmed payment. Exposed addresses stay consumed after cancellation, rejected withdrawal, or an unknown outcome; this API does not submit the withdrawal or record payment history. The companion iOS change owns the submitted-withdrawal history.
How Has This Been Tested?
cargo clippy -p platform-wallet -p platform-wallet-ffi --lib(only pre-existing upstream warnings).cargo fmt -p platform-wallet -p platform-wallet-ffi --checkandgit diff --check.Real testnet validation used two registered DashPay contacts: a 0.02 DASH Platform withdrawal with zero Transparent balance and a user-submitted 0.1 DASH Shielded withdrawal paid the reserved addresses. Recipient receipt verification used a combined test build with the separate AssetUnlock discovery fix in dashpay/rust-dashcore#1004. Screenshots and exact build provenance.
The receipt fix needs a separate upstream SDK dependency update. This PR only adds address reservation and leaves the existing rust-dashcore dependencies unchanged.
Breaking Changes
None. The existing Core-funded send API remains available.
Checklist:
For repository code-owners and collaborators only
This pull request was created by Codex.