fix: honour a dust threshold of 0 and compare addresses case-insensitively (closes #179)
All checks were successful
check / check (push) Successful in 41s
All checks were successful
check / check (push) Successful in 41s
Two defects in the anti-poisoning filters, both silent over-filtering: the wallet hid transactions the user had asked to see. A dust threshold of 0 was read as `filters.dustThresholdGwei || 100000`, so the one value a user would pick to mean "show everything" was swallowed and replaced by the default. It is now `??`, making 0 a real threshold that hides nothing and agrees exactly with clearing the hide-dust checkbox. The Settings input rejects empty, negative, fractional and non-numeric entries outright instead of coercing them, and resyncs the field to the stored value so it never displays a threshold the wallet is not using. isSpoofedSymbol compared the contract address with `===` against a lowercased known address. EIP-55 mixed case is a checksum, not identity, so a genuine token arriving checksummed was classified as a spoof and hidden. All address comparisons in the module now go through one normalizeAddress helper, which also normalises the fraud contracts recorded from a detected spoof. Tests cover threshold 0 versus unset versus a set value, and the contract comparison in lowercase, uppercase and EIP-55 form as well as against a genuinely different address. The two `current behaviour:` tests pinning the old behaviour are inverted into regression guards, and a fixture pairing a real contract address with a null holder count pins the `tx.holders !== null` guard that no fixture previously reached.
This commit is contained in:
@@ -1108,7 +1108,8 @@ indexes it as a real token transfer.
|
||||
it. AutistMask hides transactions below a configurable dust threshold
|
||||
(default: 100,000 gwei / 0.0001 ETH). This is high enough to filter poisoning
|
||||
dust while low enough to preserve any transfer a user would plausibly care
|
||||
about. The threshold is user-configurable in Settings.
|
||||
about. The threshold is user-configurable in Settings; a threshold of `0`
|
||||
hides nothing, exactly as clearing the checkbox does.
|
||||
|
||||
- **User-configurable**: All of the above filters (known symbol verification,
|
||||
low-holder threshold, fraud contract blocklist, dust threshold) are settings
|
||||
|
||||
Reference in New Issue
Block a user