Skip to content

Conversation

@nicholaspai
Copy link
Member

Emitting both the original and the updated relayerFeePct allows off-chain clients to distinguish between correctly and incorrectly sped up fillRelay calls with updated relayer fee %'s. Currently, the client has no way to determine if a FillRelay event emitted by a speed up relay (i.e. calling fillRelayWithUpdatedFee) was a valid fill or not.

The current exploit would be to call fillRelay for a deposit with ALL of the correct params except for relayerFeePct, which the attacker would set to something lower than expected like 0. Clients would not be able to easily detect if this modified relayerFeePct=0 came from a correct fillRelayWithUpdatedFee call.

bool isSlowRelay
) internal {
emit FilledRelay(
relayHash,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed this to get around a stack too deep error but also realized we don't use relayHash in the current client code so its a reasonable delete

@nicholaspai
Copy link
Member Author

Note, this PR will require changing the Fill object interface in relayer-v2/interfaces/SpokePool and adding a test that valid speed up fills are included in fillsToRefund while invalid fill calls with all matching params except for the relayerFeePct are ignored.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants