Filtering
We filter the potential transaction pairs with following goals:
- Remove potential attacks, that do not make sense (eg self-attacks)
- Remove duplicated attacks, where the analysis outcome would (likely) be the same
Non-attack filtering
Self-attack
If both transactions are sent by the same actor (A_from == B_from).
Ether-transfer
If the 2nd transaction is only an Ether transfer (B_call_stack has length 0 or smth like that).
We allow, that the first transaction is just an Ether transfer, as it could influence the second transaction if it accesses this balance (directly/indirectly).
...
Deduplication
Some ideas:
- only trace some attacks per contract
- only trace some attacks per function call
- only trace some attacks per source-to-sink contract group
- same as above, but rather look at contract/function skeletons