Skip to content
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

Multicast sending Ethereum transactions #5452

Open
ameten opened this issue Feb 12, 2025 · 0 comments
Open

Multicast sending Ethereum transactions #5452

ameten opened this issue Feb 12, 2025 · 0 comments
Assignees

Comments

@ameten
Copy link
Contributor

ameten commented Feb 12, 2025

  • any RPCs we make other than sending a tx, we still have normal fallback provider
  • any time eth_sendRawTransaction is sent, multicast it and require at least one success
@ameten ameten self-assigned this Feb 12, 2025
@ameten ameten converted this from a draft issue Feb 12, 2025
@ameten ameten moved this from In Progress to In Review in Hyperlane Tasks Feb 18, 2025
github-merge-queue bot pushed a commit that referenced this issue Feb 20, 2025
### Description

Add multicast tx submission for Ethereum fallback provider.

`EthereumFallbackProvider` will use different strategies to query chain
RPCs:
1. If the method is `eth_sendRawTransaction`, it will make a parallel
query to all RPC endpoints and return the first successful result. If no
success, it will retry 4 times.
2. For other methods, the current functionality does not change: it will
sequentially query RPC endpoints according to their priorities and
adjust priorities depending on success/failure. It also retries 4 times.

### Related issues

- Contributes into
#5452

### Backward compatibility

Yes

### Testing

Added unit tests

---------

Co-authored-by: Danil Nemirovsky <[email protected]>
fmorency pushed a commit to fmorency/hyperlane-agents that referenced this issue Feb 20, 2025
### Description

Add multicast tx submission for Ethereum fallback provider.

`EthereumFallbackProvider` will use different strategies to query chain
RPCs:
1. If the method is `eth_sendRawTransaction`, it will make a parallel
query to all RPC endpoints and return the first successful result. If no
success, it will retry 4 times.
2. For other methods, the current functionality does not change: it will
sequentially query RPC endpoints according to their priorities and
adjust priorities depending on success/failure. It also retries 4 times.

### Related issues

- Contributes into
hyperlane-xyz/hyperlane-monorepo#5452

### Backward compatibility

Yes

### Testing

Added unit tests

---------

Co-authored-by: Danil Nemirovsky <[email protected]>
github-merge-queue bot pushed a commit that referenced this issue Feb 21, 2025
)

### Description

Make only one retrying attempt if we get non-retryable error.

At the moment, we are doing 12 RPC calls even if all of them returned a
non-retryable error in multicast approach of EthereumFallbackProvider.
While we still would like to wait for all providers to return their
result when we do multicast, we would like to avoid retrying since it
produces a lot of requests with the same failure result. It leads to
elevated RPC failure metrics and higher number of alerts.

### Related issues

- Contributes into
#5452

### Backward compatibility

Yes

### Testing

TBD

---------

Co-authored-by: Danil Nemirovsky <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Review
Development

No branches or pull requests

1 participant