Skip to content

improve(SpokePoolClient): Negate non-EVM SpeedUp recipients #1091

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

pxrl
Copy link
Contributor

@pxrl pxrl commented Jun 19, 2025

SpeedUp events are only supported for EVM -> EVM, so any other combination can be discarded immediately.

SpeedUp events are not supported for EVM -> SVM or SVM -> any, so they
can be discarded immediately.
@@ -569,18 +569,23 @@ export abstract class SpokePoolClient extends BaseAbstractClient {

for (const event of speedUpEvents) {
const speedUp = { ...event, originChainId: this.chainId };
assign(this.speedUps, [speedUp.depositor, speedUp.depositId.toString()], [speedUp]);

// Find deposit hash matching this speed up event and update the deposit data associated with the hash,
// if the hash+data exists.
const deposit = this.getDeposit(speedUp.depositId);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

nb. This isn't robust to deterministic deposit IDs. That's wrong, but speed ups are so rarely used that it's a low-priority fix.

Copy link
Member

Choose a reason for hiding this comment

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

what would happen if we try to getDeposit using a deterministic ID? Would it hang? We should probably skip it right?

Copy link
Contributor Author

@pxrl pxrl Jun 24, 2025

Choose a reason for hiding this comment

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

It should work fine to use it with a deterministic deposit ID in isolation; the challenge is if there are duplicate depositIds - in that case we may attach the speedup to the wrong one, and that would cause the eventual fill to fail.

I'll circle back to this PR and add some additional conditions to ensure we only attach a matching speedup to the deposit.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Implemented: 07f480f

Requiring depositor to match should at least prevent incorrectly attaching the wrong speedup to a deposit.

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.

3 participants