-
Notifications
You must be signed in to change notification settings - Fork 1.2k
feat(qt): Add flag to allow duplicate recipient addresses in GUI #7012
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
✅ No Merge Conflicts DetectedThis PR currently has no conflicts with other open PRs. |
WalkthroughAdds a GUI command-line option Sequence DiagramsequenceDiagram
participant User
participant GUI as "GUI Layer\n(src/qt/bitcoin.cpp)"
participant WalletModel as "WalletModel\n(src/qt/walletmodel.cpp)"
participant TxValidation as "Tx Validation\n(duplicate-address check)"
User->>GUI: Launch app (may set -allowduplicaterecipients)
GUI->>WalletModel: Initialize (passes fAllowDuplicateDestAddr)
User->>GUI: Create transaction with recipients (possible duplicates)
GUI->>WalletModel: PrepareTransaction request
WalletModel->>TxValidation: Check for duplicate recipient addresses
alt fAllowDuplicateDestAddr == true
TxValidation-->>WalletModel: Duplicate check skipped (allowed)
else fAllowDuplicateDestAddr == false
TxValidation->>TxValidation: Validate no duplicate addresses
TxValidation-->>WalletModel: Return validation result
end
WalletModel-->>GUI: Return prepared transaction / error
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
Areas requiring attention:
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
🧰 Additional context used📓 Path-based instructions (2)src/**/*.{cpp,h,hpp,cc}📄 CodeRabbit inference engine (CLAUDE.md)
Files:
src/qt/**/*.{cpp,h}📄 CodeRabbit inference engine (CLAUDE.md)
Files:
🧠 Learnings (1)📓 Common learnings🧬 Code graph analysis (1)src/qt/bitcoin.cpp (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
🔇 Additional comments (1)
Tip 📝 Customizable high-level summaries are now available in beta!You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.
Example instruction:
Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later. 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 |
This enables users of the Qt wallet to send to the same address in a single transaction. This is useful for setting up multiple MN collateral transactions, but probably only for advanced users and developers. Usage: ./qt/dash-qt -allowduplicaterecipients I'm ok if there's no desire to merge this. I just thought it was a nice feature to send all collateral in a single TX instead of having to send multiple. I presume this is mostly just useful for testnet, as a hardware wallet would be preferred for mainnet, but it may also work to create an unsigned TX which could be signed by a HW wallet w/the right UI.
f51e0d0 to
1808006
Compare
|
Force-pushed w/a GPG-signed commit, no changes to code. |
e14aaa0 feat(qt): warn when sending to duplicate recipients (UdjinM6) Pull request description: ## Issue being fixed or feature implemented Having duplicated recipients is ok on protocol level, we could be less restrictive in GUI. Inspired by #7012 ## What was done? Handle `DuplicateAddress` as a warning status instead of an error. Show a confirmation dialog when duplicates are detected, allowing the transaction to proceed if the user confirms. <img width="532" height="297" alt="Screenshot 2025-11-27 at 22 34 56" src="https://github.com/user-attachments/assets/b76f7204-9127-456b-ba80-72cbd230b7ec" /> ## How Has This Been Tested? Run dash-qt, send a tx ## Breaking Changes n/a ## 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 made corresponding changes to the documentation - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: PastaPastaPasta: utACK e14aaa0 Tree-SHA512: 72b9cba53a2aaecf691c6236e22075205faa36926bbe084802130316caa9e63d9667a4b9ef4e6a2809c5172aafc0578b91c9bd8b96df7df525eed880f368fafb
|
This pull request has conflicts, please rebase. |
|
Feel free to re-open, likely superseded by #7015 |
This enables users of the Qt wallet to send to the same address in a single transaction. This is useful for setting up multiple MN collateral transactions, but probably only for advanced users and developers.
Usage: ./qt/dash-qt -allowduplicaterecipients
I'm ok if there's no desire to merge this. I just thought it was a nice feature to send all collateral in a single TX instead of having to send multiple. I presume this is mostly just useful for testnet, as a hardware wallet would be preferred for mainnet, but it may also work to create an unsigned TX which could be signed by a HW wallet w/the right UI.