0xsequence / bundler

ERC5189 p2p transaction bundler
14 stars 1 forks source link

Detect lying endorsers after simulations #21

Open Agusx1211 opened 3 months ago

Agusx1211 commented 3 months ago

An endorser may "lie" in two different ways:

1) By providing a list of "incomplete" dependencies, this can be detected if an operation goes from valid to invalid while all dependencies remain the same.

2) By returning ready = true to an operation that does not pay enough fees.


Support for (1) already exists, but (2) is not fully implemented yet.

Right now, the built-in senders simulate the operation before doing the relay; if the simulation pays enough fee, they proceed to execute the operation. If the executed operation didn't pay enough fee, then the endorser may get banned.

But if the simulation says that the operation doesn't pay enough fee, the operation is discarded right away. An additional step must be performed to verify that the endorser is in fact returning ready = false.

This must be done carefully, as there are scenarios in which the sender may decide that the operation does not pay enough, but the endorser may say it does. In these cases, the endorser must not be banned.

i.e., the sender may be asking for a minimum higher priority fee, or for a higher markup on the token fee conversion ratio.