0076 XLS-76d: Min Incoming Amount #219
Replies: 6 comments 37 replies
-
When doing a token swap, meaning Account=Destination Payment, there would be no need to check using the new field. |
Beta Was this translation helpful? Give feedback.
-
What about other transactions with a destination that also send funds, like |
Beta Was this translation helpful? Give feedback.
-
Congrats on the first spec 🤗 Would this be easier done on the wallet UI/UX level? It's a cool spec! |
Beta Was this translation helpful? Give feedback.
-
I've actually talked to some people about the xrp dusting attacks and they literally thought it carried the same security risks that it would on the Ethereum network, but we don't have smart contracts, so on the xrpl you just received an asset(unwanted.) I do wonder the percentage of people who think that. However I think this amendment would have a positive affect on the perception of preventing dusting attacks. But also create other negative feedback. In an environment where there is open permissionless participation you just can't stop people from doing negative things. So everyone sets a minimum xrp acceptance, what if they start sending dusting attacks on other token trustlines, not as many holders but still possible even with this amendment. This is what the fee escalation is suppose to prevent right, the spamming of the ledger. Overall I don't think this amendment would hurt anything. Unless creating an extra check on accounts and transactions would slow it. Just some thoughts. |
Beta Was this translation helpful? Give feedback.
-
If the big wallets like Xaman backed this and encouraged their users to set such a minimum amount, it could effectively eliminate the spam problem. |
Beta Was this translation helpful? Give feedback.
-
Wonderful idea LGTM +1 for "no limit" on Maximum limit as this also opens up other use cases for businesses. |
Beta Was this translation helpful? Give feedback.
-
XLS-76d - Min Incoming Amount
Abstract
Based on an original idea by Khaled Elawadi @KhaledElawadi, this proposal introduces a new feature to the XRP Ledger that allows an account holder to specify a minimum amount of XRP that can be received.
This feature is designed to prevent what is commonly referred to as "dusting," where small amounts of XRP are sent to an account, potentially cluttering an account with unwanted transactions.
Rationale
Dusting attacks involve sending tiny amounts of value to a large number of wallets. Currently, XRP Ledger accounts can receive any amount of XRP, regardless of how small. While this might seem harmless, dusting can lead to cluttered transaction histories, potential privacy risks, and significant ledger memo spam.
The Min Incoming Amount feature aims to mitigate these issues by allowing account owners to set a threshold for incoming transactions. Any transaction below the specified minimum amount will be automatically rejected, ensuring that the account only receives transactions of value that meet or exceed the defined threshold.
Amendment
The proposed change introduces a new field on the
AccountRoot
ledger object calledsfIncomingMin
, which is of typeSF_AMOUNT
.This field allows users to define the minimum amount of XRP that their account is willing to accept.
New Field on
AccountRoot
sfIncomingMin
Updating the
AccountSet
TransactionTo set, update or remove the
sfIncomingMin
field, users would use the existingAccountSet
transaction, so it would be updated to store the new field.Omitting the optional field would do nothing, it would not change any setting that currently exists.
Setting
sfIncomingMin
to zero would remove it from the object, essentially disabling the feature.Failure Conditions
State Changes
sfIncomingMin
on AccountRoot Ledger Entry.Examples
Setting a Minimum Incoming Amount:
Removing the Minimum Incoming Amount:
Implementation
Flows
Flow 1: Setting a Minimum Incoming Amount
Scenario: Sarah wants to prevent her account from receiving small, insignificant XRP transactions (commonly known as dusting).
Flow 2: Receiving a Transaction Greater than the Minimum Incoming Amount
Scenario: John, unaware of Sarah’s new setting, tries to send her 100 XRP as a token of appreciation.
Flow 3: Receiving a Transaction Less than the Minimum Incoming Amount
Scenario: "Nasty Nick", a known duster, unaware of Sarah’s new setting, tries to send her 0.00001 XRP, along with a tricky memo.
Flow 4: Removing the Minimum Incoming Amount
Scenario: After some time, Sarah decides she no longer needs the minimum incoming amount restriction on her account.
Flow 5: Transaction Handling with Min Incoming Amount Set
Scenario: "Nasty Nick", is back, and once again he tries to send her 0.00001 XRP, along with a tricky memo.
Flow 6: Setting a Minimum Incoming Amount with Incorrect Values
Scenario: Sarah wants to re-enable the protection on her account, after the nasty surprise from Nick.
Considerations
Backward Compatibility
The addition of the
sfIncomingMin
field will be optional. Accounts that do not set this field will continue to accept all incoming amounts as usual.Usability
The Min Incoming Amount feature is simple to configure and will be integrated seamlessly into existing wallet interfaces using the familiar
AccountSet
transaction type.Potential Misuse
While this feature prevents dusting, users should be cautious about setting the threshold too high, as it might prevent legitimate small transactions from being accepted.
Partial Payments
Partial payments allow a sender to specify a maximum amount they are willing to spend, and the transaction delivers as much as possible of the destination amount, potentially less than the full amount specified by the sender. If a partial payment is made and the amount delivered is less than the specified
sfIncomingMin
threshold, this creates an edge-case where the tiny amount may be legitimate, yet be rejected. It makes sense for thesfIncomingMin
to apply to the actual amount received, as this aligns with the goal of preventing dusting, but means the code will need to use the delivered_amount to prevent partial payments from being used as a work-around to this amendment.Effect on Reserves
If an account's balance marginally drops below the account reserve, this creates an edge-case where the user will not be able to receive a tiny amount as it is blocked by
sfIncomingMin
and being below the account reserve would mean they cannot perform an AccountSet to temporarily remove the limit. The only option would be to receive an amount greater thansfIncomingMin
which in 99.9% of cases should not be problematic given the it would ideally be set at 1 XRP or less, however in a scenario where the limit was set artificially high...Maximum limit
This spec does not allow for a maximum value on the
sfIncomingMin
field. Adding such a limit may be seen as protecting a user from setting an overly high value, however on balance given the ease at which a limit can be reduced or even removed, it is felt that the arbitrary limit removes user choice.Account Locking - Reserve & No Maximum Limit.
There is an edge case where a user is not prevented from setting a very high limit and the account balance drops below the reserve creating a situation where the account would essentially be rendered unusable. If this edge-case were considered serious enough to require a solution, either a sensible maximum limit could be introduced OR an additional step on transaction rejection to check the account balance is not below the reserve. A maximum amount limit adds very minimal overhead to the amendment but does remove user choice. Testing for account balance would introduce a more intensive test that needs to be applied to every rejected transaction. On balance the arbitrary minimum does offer protection against the ege-case and does not conflict with fundamental principle of the proposal.
Conclusion
The Min Incoming Amount feature provides a straightforward solution to the problem of dusting on the XRP Ledger.
By introducing the
sfIncomingMin
field on theAccountRoot
ledger object and utilizing the existingAccountSet
transaction for configuration, account holders gain the ability to reject small, potentially unwanted transactions.This enhances account security and reduces clutter, making the XRP Ledger more user-friendly and secure.
Beta Was this translation helpful? Give feedback.
All reactions