# Ethereum & EVM Data Source – Streams

These schemas apply to Ethereum and EVM-compatible networks, including Base, Hyperliquid, Arbitrum, Optimism, and Polygon. Use the table of contents to jump to a dataset.

## Block [​](/content/docs/streams/data-sources/ethereum-evm#block "Direct link to Block"/index.html)

The data returned is an `array` of block objects as returned by [eth_getBlockByNumber](/content/docs/ethereum/eth_getBlockByNumber/index.html). The **Block** schema models the structure of individual blocks on a chain, including fields like `hash`, `number`, `nonce`, and other relevant block data.

Additionally, it supports configuration options for re-org handling and batch sizes, allowing for customized data management and retrieval.

_Note: Please review the chain specific documentation for the RPC method indicated above for more details about that chain's expected payload shape._

**JSON Spec**

```json
{
    "data": [
        {
            "gasUsed": "0xd0d11a",
            "hash": "0xd964c5deacbea3e3df775ad1ed49744882d95dbdd1ae058b813cece959676820",
            "number": "0x125d3e5",
            "parentHash": "0xf31bcd75d2bebfe97a9aabae5c644c8d137552d2be3d8ff9f01278624d911011",
            "timestamp": "0x65d2444f",
            "transactions": [
                {
                    "blockHash": "0xd964c5deacbea3e3df775ad1ed49744882d95dbdd1ae058b813cece959676820",
                    "blockNumber": "0x125d3e5"
                }
            ],
            "...": "..."
        }
    ],
    "metadata": {
        "dataset": "block",
        "end_range": -1,
        "network": "ethereum-mainnet",
        "stream_id": "f6ad6459-b5ad-4183-b370-1c1388e47e83",
        "...": "..."
    }
}
```

## Receipts [​](/content/docs/streams/data-sources/ethereum-evm#receipts "Direct link to Receipts"/index.html)

The data returned is an `array` of arrays, each containing receipt objects as returned by [eth_getBlockReceipts](/content/docs/ethereum/eth_getBlockReceipts/index.html). The **Receipts** schema corresponds to transaction receipts, focusing solely on transactions and excluding block details. These receipts serve as proof of transaction execution, detailing outcomes and specifics like gas usage.

_Note: Please review the chain specific documentation for the RPC method indicated above for more details about that chain's expected payload shape._

**JSON Spec**

```json
{
  "data": [
    [
      {
        "blockHash": "0xd010dbc965455076441782aa97a7aa1f526fe9da73b9af6ad319b87e84703475",
        "blockNumber": "0x16263bb",
        "contractAddress": null,
        "cumulativeGasUsed": "0x5208",
        "effectiveGasPrice": "0x2646fc5db",
        "from": "0xab4f2fdca7521012edfee6e916778c6dae719bd3",
        "gasUsed": "0x5208",
        "logs": [],
        "logsBloom": "0x000...000",
        "status": "0x1",
        "to": "0x82268e2cb7ac9ab32e3a99c68e5c13fbde1ae1f8",
        "transactionHash": "0xfd3b28c03c750477a8451aa0fd66dad27ed06065bdcd21b092ebecd14c12649b",
        "transactionIndex": "0x0",
        "type": "0x0"
      }
    ]
  ]
}
```

## Block with Receipts [​](/content/docs/streams/data-sources/ethereum-evm#block-with-receipts "Direct link to Block with Receipts"/index.html)

The data returned is an `array` of objects containing a composite dataset with:

- `block`: as returned by [eth_getBlockByNumber](/content/docs/ethereum/eth_getBlockByNumber/index.html)
- `receipts`: array of receipts as returned by [eth_getBlockReceipts](/content/docs/ethereum/eth_getBlockReceipts/index.html)

The **Block with Receipts** schema represents comprehensive details on individual blocks and their transaction receipts, including transaction status, gas utilized, value transferred, logs generated, and more.

_Note: Please review the chain specific documentation for the RPC method indicated above for more details about that chain's expected payload shape._

**JSON Spec**

```json
{
  "data": [
    {
      "block": {
        "baseFeePerGas": "0xfd069ed",
        "blobGasUsed": "0x120000",
        "parentHash": "0x590857a38b05fead84006130b330716de40d87d054266d2c2589fb6c4d7ac4b0",
        "timestamp": "0x68ada7e3",
        "transactions": [
          {
            "blockHash": "0xd010dbc965455076441782aa97a7aa1f526fe9da73b9af6ad319b87e84703475",
            "blockNumber": "0x16263bb",
            "from": "0xab4f2fdca7521012edfee6e916778c6dae719bd3",
            "gas": "0x186a0",
            "...": "..."
          }
        ]
      }
    }
  ]
}
```

## Logs [​](/content/docs/streams/data-sources/ethereum-evm#logs "Direct link to Logs"/index.html)

The data returned is an `array` of arrays of log objects, as they appear within the `logs` array in transaction receipts. The **Logs** data schema corresponds to event logs generated by smart contract transactions, documenting significant events, function calls, or other relevant activities occurring within smart contracts. This data is associated with the [eth_getLogs](/content/docs/ethereum/eth_getLogs/index.html) JSON-RPC method.

_Note: Please review the chain specific documentation for the RPC method indicated above for more details about that chain's expected payload shape._

**JSON Spec**

```json
{
  "data": [
    [
      [
        {
          "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
          "topics": [
            "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
            "0x000000000000000000000000d4bc53434c5e12cb41381a556c3c47e1a86e80e3",
            "0x00000000000000000000000011b815efb8f581194ae79006d24e0d814b7697f6"
          ],
          "data": "0x0000000000000000000000000000000000000000000000144cb0059dd91ec491",
          "blockNumber": "0x16263be",
          "transactionHash": "0x4cda2112bfb02ff07b3a88eced7e5f972ea2827bdcab448ae07d6330d62b30a2",
          "transactionIndex": "0x0",
          "blockHash": "0xb0587a2035660384c0a2f31bc2977f2dc60408618f67be97149d14b5fbc0741b",
          "logIndex": "0x0",
          "removed": false
        }
      ]
    ]
  ]
}
```

## Transactions [​](/content/docs/streams/data-sources/ethereum-evm#transactions "Direct link to Transactions"/index.html)

The data returned is an `array` of arrays of transaction objects, as they appear in the `transactions` array of block data. The **Transactions** data schema narrows data down to focus on transaction details, similar to each transaction object you would get when using the [eth_getTransactionByHash](/content/docs/ethereum/eth_getTransactionByHash/index.html) method.

_Note: Please review the chain specific documentation for the RPC method indicated above for more details about that chain's expected payload shape._

**JSON Spec**

```json
{
  "data": [
    [
      {
        "blockHash": "0xb0587a2035660384c0a2f31bc2977f2dc60408618f67be97149d14b5fbc0741b",
        "blockNumber": "0x16263be",
        "from": "0xd1fa51f2db23a9fa9d7bb8437b89fb2e70c60cb7",
        "gas": "0x62b01",
        "gasPrice": "0x121f68f4",
        "accessList": [
          {
            "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
            "storageKeys": [
              "0x4407b7e3a4d56c18eef645ef52b0e5371965ec86a7c46343194da25177be0647"
            ]
          }
        ],
        "...": "..."
      }
    ]
  ]
}
```

## Traces (debug_traceBlock) [​](/content/docs/streams/data-sources/ethereum-evm#traces-debug_traceblock "Direct link to Traces (debug_traceBlock/index.html)")

The data returned is an `array` of arrays of trace data as returned by [debug_traceBlock](/content/docs/ethereum/debug_traceBlock/index.html). The **Traces (debug_trace)** data source provides a granular, step-by-step look at transaction executions, including internal calls and state changes, which is critical for debugging and optimizing smart contracts.

_Note: Please review the chain specific documentation for the RPC method indicated above for more details about that chain's expected payload shape._

**JSON Spec**

```json
{
  "data": [
    [
      {
        "txHash": "0x4cda2112bfb02ff07b3a88eced7e5f972ea2827bdcab448ae07d6330d62b30a2",
        "result": {
          "from": "0xd1fa51f2db23a9fa9d7bb8437b89fb2e70c60cb7",
          "gas": "0x62b01",
          "gasUsed": "0x4514e",
          "to": "0xd4bc53434c5e12cb41381a556c3c47e1a86e80e3",
          "calls": [
            {
              "from": "0xd4bc53434c5e12cb41381a556c3c47e1a86e80e3",
              "gas": "0x4d23e",
              "gasUsed": "0x30ba3",
              "to": "0x11b815efb8f581194ae79006d24e0d814b7697f6",
              "type": "CALL",
              "...": "..."
            }
          ]
        }
      }
    ]
  ]
}
```

## Traces (trace_block) [​](/content/docs/streams/data-sources/ethereum-evm#traces-trace_block "Direct link to Traces (trace_block/index.html)")

The data returned is an `array` of arrays of trace data as returned by [trace_block](/content/docs/ethereum/trace_block/index.html). This data source is based on the [trace_block](/content/docs/ethereum/trace_block/index.html) and [trace_transaction](/content/docs/ethereum/trace_transaction/index.html) RPC methods and is served by Erigon blockchain node clients.

_Note: Please review the chain specific documentation for the RPC method indicated above for more details about that chain's expected payload shape._

**JSON Spec**

```json
{
  "data": [
    [
      {
        "action": {
          "from": "0xd1fa51f2db23a9fa9d7bb8437b89fb2e70c60cb7",
          "callType": "call",
          "gas": "0x4e7a9",
          "to": "0xd4bc53434c5e12cb41381a556c3c47e1a86e80e3",
          "value": "0x7"
        },
        "blockHash": "0xb0587a2035660384c0a2f31bc2977f2dc60408618f67be97149d14b5fbc0741b",
        "blockNumber": 23225278,
        "result": {
          "gasUsed": "0x30df6",
          "output": "0x"
        },
        "subtraces": 1,
        "traceAddress": [],
        "transactionHash": "0x4cda2112bfb02ff07b3a88eced7e5f972ea2827bdcab448ae07d6330d62b30a2",
        "type": "call"
      }
    ]
  ]
}
```

## Block with Receipts + debug_traces [​](/content/docs/streams/data-sources/ethereum-evm#block-with-receipts--debug_traces "Direct link to Block with Receipts + debug_traces"/index.html)

The data returned is an `array` of objects containing a composite dataset with:

- `block`
- `receipts`
- `traces` (from `debug_traceBlock`)

If you want to retrieve an all-in-one data source for backfilling historical blockchain data, a data schema like **Block with Receipts and debug_trace** can retrieve block and transaction receipts, along with step-by-step transaction execution traces and internal transactions. This data source uses the [eth_getBlockByNumber](/content/docs/ethereum/eth_getBlockByNumber/index.html), [eth_getBlockReceipts](/content/docs/ethereum/eth_getBlockReceipts/index.html), and [debug_traceBlock](/content/docs/ethereum/debug_traceBlock/index.html) RPC methods.

_Note: Please review the chain specific documentation for the RPC method indicated above for more details about that chain's expected payload shape._

**JSON Spec**

```json
{
  "data": [
    {
      "block": {
        "baseFeePerGas": "0xfd069ed",
        "blobGasUsed": "0x120000",
        "parentHash": "0x590857a38b05fead84006130b330716de40d87d054266d2c2589fb6c4d7ac4b0",
        "timestamp": "0x68ada7e3",
        "transactions": [
          {
            "blockHash": "0xd010dbc965455076441782aa97a7aa1f526fe9da73b9af6ad319b87e84703475",
            "blockNumber": "0x16263bb",
            "from": "0xab4f2fdca7521012edfee6e916778c6dae719bd3",
            "...": "..."
          }
        ]
      },
      "receipts": [
        {
          "blockHash": "0xd010dbc965455076441782aa97a7aa1f526fe9da73b9af6ad319b87e84703475",
          "blockNumber": "0x16263bb",
          "contractAddress": null,
          "cumulativeGasUsed": "0x5208",
          "status": "0x1",
          "transactionHash": "0xfd3b28c03c750477a8451aa0fd66dad27ed06065bdcd21b092ebecd14c12649b",
          "...": "..."
        }
      ],
      "traces": [
        {
          "txHash": "0x4cda2112bfb02ff07b3a88eced7e5f972ea2827bdcab448ae07d6330d62b30a2",
          "result": {
            "from": "0xd1fa51f2db23a9fa9d7bb8437b89fb2e70c60cb7",
            "gas": "0x62b01",
            "gasUsed": "0x4514e",
            "to": "0xd4bc53434c5e12cb41381a556c3c47e1a86e80e3",
            "calls": [
              {
                "from": "0xd4bc53434c5e12cb41381a556c3c47e1a86e80e3",
                "gas": "0x4d23e",
                "gasUsed": "0x30ba3",
                "to": "0x11b815efb8f581194ae79006d24e0d814b7697f6",
                "type": "CALL",
                "...": "..."
              }
            ]
          }
        }
      ]
    }
  ]
}
```

## Block with Receipts + trace_block [​](/content/docs/streams/data-sources/ethereum-evm#block-with-receipts--trace_block "Direct link to Block with Receipts + trace_block"/index.html)

The data returned is an `array` of objects containing a composite dataset with:

- `block`
- `receipts`
- `traces` (from `trace_block`)

> **Note:** This data source is an alternative to the **Block with Receipts + debug_traces** schema above. It utilizes the [trace_transaction](/content/docs/ethereum/trace_transaction/index.html) RPC method from Erigon, instead of using the debug API from Geth.

If you want to backfill historical blockchain data, a data schema like **Block with Receipts and trace_block** is one solution. This data source uses the [trace_transaction](/content/docs/ethereum/trace_transaction/index.html) RPC method to retrieve transaction execution traces and internal transactions along with block and transaction receipt information using [eth_getBlockByNumber](/content/docs/ethereum/eth_getBlockByNumber/index.html), [eth_getBlockReceipts](/content/docs/ethereum/eth_getBlockReceipts/index.html) RPC methods.

_Note: Please review the chain specific documentation for the RPC method indicated above for more details about that chain's expected payload shape._

**JSON Spec**

```json
{
  "data": [
    {
      "block": {
        "baseFeePerGas": "0x11d38b33",
        "blobGasUsed": "0xa0000",
        "difficulty": "0x0",
        "excessBlobGas": "0x100000",
        "extraData": "0x4275696c6465724e65742028466c617368626f747329",
        "gasLimit": "0x2aea515",
        "transactions": [
          {
            "blockHash": "0xda7dc0d852bf5fb4d512a4cd57d341ac908794851ce0b7f169f9963c851bb385",
            "blockNumber": "0x16263c0",
            "from": "0xae2fc483527b8ef99eb5d9b44875f005ba1fae13",
            "gas": "0x453e74",
            "gasPrice": "0x11d38b33",
            "hash": "0x7d3220bd6b43886a3d30262c5b5e5366a16d0597f417e3010bea0a478a3e12e5",
            "accessList": [
              {
                "address": "0x041db0b7aa2237c33ea836ad12c3ee8d0afd5e4d",
                "storageKeys": [
                  "0x000000000000000000000000000000000000000000000000000000000000000e",
                  "0x000000000000000000000000000000000000000000000000000000000000000f"
                ]
              }
            ],
            "...": "..."
          }
        ],
        "...": "..."
      },
      "receipts": [
        {
          "blockHash": "0xda7dc0d852bf5fb4d512a4cd57d341ac908794851ce0b7f169f9963c851bb385",
          "blockNumber": "0x16263c0",
          "status": "0x1",
          "...": "..."
        }
      ],
      "traces": [
        {
          "action": {
            "from": "0xd1fa51f2db23a9fa9d7bb8437b89fb2e70c60cb7",
            "callType": "call",
            "gas": "0x4e7a9",
            "to": "0xd4bc53434c5e12cb41381a556c3c47e1a86e80e3",
            "value": "0x7"
          },
          "blockHash": "0xb0587a2035660384c0a2f31bc2977f2dc60408618f67be97149d14b5fbc0741b",
          "blockNumber": 23225278,
          "result": {
            "gasUsed": "0x30df6",
            "output": "0x"
          },
          "subtraces": 1,
          "traceAddress": [],
          "transactionHash": "0x4cda2112bfb02ff07b3a88eced7e5f972ea2827bdcab448ae07d6330d62b30a2",
          "type": "call"
        }
      ]
    }
  ]
}
```
