-
-
Notifications
You must be signed in to change notification settings - Fork 352
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
Fixed mint too small amount case #1525
base: master
Are you sure you want to change the base?
Conversation
WalkthroughThe pull request updates the CreateSparkMintTransactions method in the CSparkWallet class. It adds error handling to ensure that transaction outputs meet the minimum required amount. Specifically, the method now checks if the output list is empty after adjusting for fees and ensures that fee deductions do not reduce any recipient's amount to zero or negative. If these conditions are not met, an appropriate error is set and the transaction creation is halted. Changes
Sequence Diagram(s)sequenceDiagram
participant Caller
participant Wallet as CSparkWallet::CreateSparkMintTransactions
Caller->>Wallet: Invoke CreateSparkMintTransactions(inputs)
Wallet->>Wallet: Adjust recipient amounts and deduct fees
Wallet->>Wallet: Verify if singleTxOutputs is empty?
alt Valid outputs and amounts
Wallet-->>Caller: Return true (transaction created)
else Invalid: empty outputs or non-positive amounts
Wallet->>Wallet: Set error message "transaction amount too small"
Wallet-->>Caller: Return false (transaction aborted)
end
Poem
✨ Finishing Touches
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
src/spark/sparkwallet.cpp (1)
885-893
: Consider adding validation for negative amounts.While the code handles zero outputs well, it should also validate that output amounts don't become negative after fee subtraction. This could happen if
singleFee
is larger than the output amount.if (singleTxOutputs[i].v <= singleFee) { singleTxOutputs.erase(singleTxOutputs.begin() + i); reminder += singleTxOutputs[i].v - singleFee; if (!singleTxOutputs.size()) { strFailReason = _("Transaction amount too small"); return false; } --i; +} else if (singleTxOutputs[i].v - singleFee < 0) { + strFailReason = _("Fee exceeds transaction amount"); + return false; }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
src/spark/sparkwallet.cpp
(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: Create Source Distribution
- GitHub Check: Create Source Distribution
🔇 Additional comments (1)
src/spark/sparkwallet.cpp (1)
888-891
: LGTM! Good error handling for small transaction amounts.The added check prevents creation of invalid transactions when all outputs become too small after fee deduction. The error message is clear and helpful for users.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if (singleTxOutputs.empty())
would read better
Credits to Petr Vacha @nrsimha for disclosing this bug to us which we have classified as a minor issue. We will award a 100 FIRO bounty for finding and disclosing this bug to us as per our bug bounty program. |
Thank you. This is my address: sm1a00jwsqg8tkd6hk4nxr65dzyaeupt00h09dz8ntepkh0qcchpm8rm83t9jpfx5lljafmlmxj05usnqzmhqh4nh497gp6wtxqdy4w8g6zdfwgrqw4qscafzg0puh80adazgz057scpf7sp |
This has been paid. Please confirm. Not putting the TXID here for privacy. |
Received it. Confirmed. Thank you! |
No description provided.