From f5ab0a2d74c2216c8d7aaad5d01c5c0de1fbaca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Duchesneau?= Date: Tue, 15 Oct 2024 16:39:27 -0400 Subject: [PATCH 1/2] add supported-networks list with firehose protocol info --- SUPPORTED-NETWORKS.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 SUPPORTED-NETWORKS.md diff --git a/SUPPORTED-NETWORKS.md b/SUPPORTED-NETWORKS.md new file mode 100644 index 0000000..3c6e962 --- /dev/null +++ b/SUPPORTED-NETWORKS.md @@ -0,0 +1,35 @@ +# Firehose Ethereum Instrumentation + +Firehose provides TWO mechanisms to extract data from an ethereum-like blockchain to `sf.ethereum.type.v2.Block` message: + +1. Running an instrumented node (data is extracted while the EVM actually executes the transactions) -> produces EXTENDED blocks +2. Polling an standard node with a series of RPC calls (ex: get_block) -> produces BASE blocks + +The "Extended" vs "Base" distinction appears in the "DetailLevel" field of the Block message + ref: https://github.com/streamingfast/firehose-ethereum/blob/develop/proto/sf/ethereum/type/v2/type.proto#L85 + +## Instrumented nodes + +### Description + +Most instrumented nodes for ethereum-like networks have parts of their codebase coming from geth (https://github.com/ethereum/go-ethereum) + +Nodes that are based on geth versions prior to [v1.14.0](https://github.com/ethereum/go-ethereum/releases/tag/v1.14.0) contain a lot of firehose-specific instrumentation hooks send each 'event' to the firehose reader which then assembles the block. (firehose protocol < fh3) + +Nodes that are based on geth versions >= v1.14.0 can use the "Live tracing" feature (https://github.com/ethereum/go-ethereum/blob/master/core/tracing/CHANGELOG.md) to send fully-formed blocks to the firehose reader (firehose protocol == fh3) + +### Supported networks status + +| Protocol | Networks | Upstream has v1.14 tracing | Firehose protocol version | +| -------- | ------------------------------------ | -------------------------- | ------------------------- | +| Ethereum | Mainnet
Sepolia
Holesky | Yes | fh2.4 | +| Polygon | Matic (mainnet)
Mumbai (testnet) | Yes (Coming in v1.5.0) | fh2.4 | +| Arbitrum | arb-one*
sepolia
nova | No (Patched in SF github ) | fh3 | +| Optimism | Mainnet**
Sepolia
Base | Yes | fh3 | + + * `*` arb-one is not supported by the instrumented node below block 22207818 + * `**` optimism mainnet is not supported by the instrumented node below block 105235064 + +## RPC-polled + +Most ethereum-like networks can work directly using the RPC poller From d55b80e96b611ce7e14375b3f5385f2a9d9ec84b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Duchesneau?= Date: Wed, 16 Oct 2024 09:28:56 -0400 Subject: [PATCH 2/2] adjust some supported networks --- SUPPORTED-NETWORKS.md | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/SUPPORTED-NETWORKS.md b/SUPPORTED-NETWORKS.md index 3c6e962..f130143 100644 --- a/SUPPORTED-NETWORKS.md +++ b/SUPPORTED-NETWORKS.md @@ -1,9 +1,9 @@ # Firehose Ethereum Instrumentation -Firehose provides TWO mechanisms to extract data from an ethereum-like blockchain to `sf.ethereum.type.v2.Block` message: +Firehose provides **two** mechanisms to extract data from an ethereum-like blockchain to `sf.ethereum.type.v2.Block` message: -1. Running an instrumented node (data is extracted while the EVM actually executes the transactions) -> produces EXTENDED blocks -2. Polling an standard node with a series of RPC calls (ex: get_block) -> produces BASE blocks +1. Running an instrumented node (data is extracted while the node actually executes the transactions) -> produces `EXTENDED` blocks +2. Polling an standard node with a series of RPC calls (ex: `eth_getBlock`) -> produces BASE blocks The "Extended" vs "Base" distinction appears in the "DetailLevel" field of the Block message ref: https://github.com/streamingfast/firehose-ethereum/blob/develop/proto/sf/ethereum/type/v2/type.proto#L85 @@ -12,24 +12,30 @@ The "Extended" vs "Base" distinction appears in the "DetailLevel" field of the B ### Description -Most instrumented nodes for ethereum-like networks have parts of their codebase coming from geth (https://github.com/ethereum/go-ethereum) +Most instrumented nodes for Ethereum-like networks have parts of their codebase coming from geth (https://github.com/ethereum/go-ethereum) -Nodes that are based on geth versions prior to [v1.14.0](https://github.com/ethereum/go-ethereum/releases/tag/v1.14.0) contain a lot of firehose-specific instrumentation hooks send each 'event' to the firehose reader which then assembles the block. (firehose protocol < fh3) +Nodes that are based on geth versions prior to [v1.14.0](https://github.com/ethereum/go-ethereum/releases/tag/v1.14.0) contain a lot of Firehose-specific instrumentation hooks send each 'event' to the firehose reader which then assembles the block. (firehose protocol < `3.0`) -Nodes that are based on geth versions >= v1.14.0 can use the "Live tracing" feature (https://github.com/ethereum/go-ethereum/blob/master/core/tracing/CHANGELOG.md) to send fully-formed blocks to the firehose reader (firehose protocol == fh3) +Nodes that are based on `geth` versions >= v1.14.0 can use the "Live tracing" feature (https://github.com/ethereum/go-ethereum/blob/master/core/tracing/CHANGELOG.md) to send fully-formed blocks to the firehose reader (firehose protocol == `3.0`) ### Supported networks status -| Protocol | Networks | Upstream has v1.14 tracing | Firehose protocol version | -| -------- | ------------------------------------ | -------------------------- | ------------------------- | -| Ethereum | Mainnet
Sepolia
Holesky | Yes | fh2.4 | -| Polygon | Matic (mainnet)
Mumbai (testnet) | Yes (Coming in v1.5.0) | fh2.4 | -| Arbitrum | arb-one*
sepolia
nova | No (Patched in SF github ) | fh3 | -| Optimism | Mainnet**
Sepolia
Base | Yes | fh3 | +| Protocol | Networks (not exhaustive) | Upstream has v1.14 tracing | Firehose protocol version | +| -------- | ------------------------------------ | ----------------------------------------- | -------------| +| Ethereum | mainnet
sepolia (testnet)
holesky (testnet) | Yes | fh2.4 | +| BSC | bsc (aka bnb, mainnet)
chapel (testnet) | No (Patched in SF github) | fh2.5 | +| Polygon | matic (mainnet)
amoy (testnet) | Yes (Coming in v1.5.0) | fh2.4 | +| Arbitrum | arbitrum-one*
arbitrum-nova
arbitrum-sepolia | No (Patched in SF github) | fh3.0 | +| Optimism | optimism (mainnet)**
optimism-sepolia
base
base-sepolia | Yes | fh3.0 | +| SEI | sei-mainnet | No (Patched in SEI codebase) | fh3.0 | - * `*` arb-one is not supported by the instrumented node below block 22207818 + * `*` arbitrum-one is not supported by the instrumented node below block 22207818 (pre-nitro) * `**` optimism mainnet is not supported by the instrumented node below block 105235064 ## RPC-polled -Most ethereum-like networks can work directly using the RPC poller +Most ethereum-like networks can work directly using the RPC poller. + +This is useful for +* networks without a full instrumentation (ex: Avalanche, fuji) +* segments of networks that don't support instrumented nodes (ex: early arb-one and optimism-mainnet) \ No newline at end of file