Skip to content

fix(op-reth): install default rustls CryptoProvider for flashblocks TLS#21605

Open
tuan-phan wants to merge 1 commit into
ethereum-optimism:developfrom
tuan-phan:fix/op-reth-rustls-cryptoprovider
Open

fix(op-reth): install default rustls CryptoProvider for flashblocks TLS#21605
tuan-phan wants to merge 1 commit into
ethereum-optimism:developfrom
tuan-phan:fix/op-reth-rustls-cryptoprovider

Conversation

@tuan-phan

Copy link
Copy Markdown

Description

op-reth panics on startup when it opens the flashblocks websocket (wss://) connection:

Could not automatically determine the process-level CryptoProvider from Rustls crate features.

rustls 0.23 no longer auto-selects a process-level CryptoProvider when more than one provider feature is present in the dependency graph. The panic kills the flashblocks service, so pre-confirmation RPCs such as eth_sendRawTransactionSync never receive flashblocks and time out (~30s) even though the transaction is mined normally.

This installs the aws-lc-rs default provider in main() before any TLS is used, matching reth's default provider selection.

Tests

Built op-reth with this patch and ran it against Unichain mainnet and sepolia. Confirmed:

  • no CryptoProvider panic on startup
  • the flashblocks websocket connects and flashblock metrics increment
  • eth_sendRawTransactionSync returns within pre-confirmation latency instead of timing out after 30s

Additional context

Same root cause and fix as #20145, which was auto-closed as stale. This variant uses the aws-lc-rs provider.

Metadata

Fixes #19322

rustls 0.23 no longer auto-selects a process-level CryptoProvider when
multiple provider features are present in the dependency graph, so op-reth
panics on startup when it opens the flashblocks wss connection:

    Could not automatically determine the process-level CryptoProvider
    from Rustls crate features.

This kills the flashblocks service, so pre-confirmation RPCs such as
eth_sendRawTransactionSync never receive flashblocks and time out (~30s)
even though the transaction is mined normally.

Install the aws-lc-rs default provider in main() before any TLS is used,
matching reth's default provider selection.
@tuan-phan tuan-phan requested a review from a team as a code owner July 1, 2026 12:43
@tuan-phan

Copy link
Copy Markdown
Author

@ajsutton Can you have a look?

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.

op-reth v1.11.0 tls issue

1 participant