> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blockscout.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Backend ENVs: Chain Specific

> ENVS for specific chains and rollups

## Chain Specific ENVs

The following ENVs are specific to different types of chains and rollups. To use these specific variables you will also need to set the `CHAIN_TYPE` variable to the appropriate value.

| Variable    | Description                                                             | Parameters                                                                 |
| ----------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| CHAIN\_TYPE | Specifies the model of data and enables fetchers specific to the chain. | Version: v5.3.0+ <br />Default: `default` <br />Applications: API, Indexer |

### Runtime vs Compile-time Chain Types

<Warning>
  Prior to v8.0.0, updating `CHAIN_TYPE` variable required recompilation. Starting with v8.0.0, many chain types can be configured at runtime.
</Warning>

#### Runtime-Configurable Chain Types

These chain types can be configured by simply setting an environment variable with the standard image:

* `default` (standard EVM chain)
* `neon`
* `stability`
* `blackfort`
* `shibarium`

**Example:**

```swift theme={null}
docker run -e CHAIN_TYPE=shibarium ghcr.io/blockscout/blockscout:latest
```

#### Compile-time Chain Types

These specialized chain types still require recompilation and dedicated images:

* `ethereum`
* `optimism`
* `optimism-celo` (Celo on OP Stack)
* `arbitrum`
* `rsk`
* `scroll`
* `suave`
* `zetachain`
* `filecoin`

**Example:**

```sh theme={null}
docker run -e CHAIN_TYPE=optimism ghcr.io/blockscout/blockscout-optimism:latest
```

<Info>
  You can browse all available image variants in the [Blockscout GitHub Packages repository](https://github.com/orgs/blockscout/packages). Each image variant includes specific tags and documentation for deployment options.
</Info>

## Time format

Can be set in format `1h` for 1 hour, `1m` for 1 minute, `1s` or `1` for 1 second, `1ms` for 1 millisecond

<Warning>
  ***Note*** **: Before release 5.1.2, all environment variables of time format supported only integers in seconds (without dimensions) as values.**
</Warning>

## Ethereum Management

| Variable                                                    | Description                                                                                                                                                                                                                                                                                                                                                      | Parameters                                                                          |
| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `INDEXER_BEACON_RPC_URL`                                    | Beacon Chain RPC endpoint used to fetch blob sidecars. Required if `INDEXER_OPTIMISM_L1_BATCH_BLOCKSCOUT_BLOBS_API_URL` is defined. Implemented in [#9168](https://github.com/blockscout/blockscout/pull/9168).                                                                                                                                                  | Version: v6.2.0+ <br />Default: `http://localhost:5052` <br />Applications: Indexer |
| `INDEXER_DISABLE_BEACON_BLOB_FETCHER`                       | If `true` the Beacon data blobs fetcher won't be started, new transaction and block fields will still be extracted. Implemented in [#9168](https://github.com/blockscout/blockscout/pull/9168).                                                                                                                                                                  | Version: v6.2.0+ <br />Default: `false` <br />Applications: Indexer                 |
| `INDEXER_BEACON_BLOB_FETCHER_SLOT_DURATION`                 | Slot duration in the Beacon Chain in seconds. Implemented in [#9168](https://github.com/blockscout/blockscout/pull/9168). Required if `INDEXER_OPTIMISM_L1_BATCH_BLOCKSCOUT_BLOBS_API_URL` is not empty and L1 is neither Mainnet, Sepolia, Holesky.                                                                                                             | Version: v6.2.0+ <br />Default: `12` <br />Applications: Indexer                    |
| `INDEXER_BEACON_BLOB_FETCHER_REFERENCE_SLOT`                | Any past finalized Beacon Chain slot number. Used as reference for blob inclusion slot calculations. Implemented in [#9168](https://github.com/blockscout/blockscout/pull/9168). Required if `INDEXER_OPTIMISM_L1_BATCH_BLOCKSCOUT_BLOBS_API_URL` is not empty and L1 is neither Mainnet, Sepolia, Holesky.                                                      | Version: v6.2.0+ <br />Default: `8000000` <br />Applications: Indexer               |
| `INDEXER_BEACON_BLOB_FETCHER_REFERENCE_TIMESTAMP`           | UTC timestamp of the Beacon Chain slot specified in `INDEXER_BEACON_BLOB_FETCHER_REFERENCE_SLOT`. Used as reference for blob inclusion slot calculations. Implemented in [#9168](https://github.com/blockscout/blockscout/pull/9168). Required if `INDEXER_OPTIMISM_L1_BATCH_BLOCKSCOUT_BLOBS_API_URL` is not empty and L1 is neither Mainnet, Sepolia, Holesky. | Version: v6.2.0+ <br />Default: `1702824023` <br />Applications: Indexer            |
| `INDEXER_BEACON_BLOB_FETCHER_START_BLOCK`                   | Beacon Chain blob fetcher start block. On start-up, indexer will only look for missed blobs beyond this block number. It's recommended to set this block to the first block after the Dencun hardfork. Implemented in [#9168](https://github.com/blockscout/blockscout/pull/9168).                                                                               | Version: v6.2.0+ <br />Default: `19200000` <br />Applications: Indexer              |
| `INDEXER_BEACON_BLOB_FETCHER_END_BLOCK`                     | Beacon Chain blob fetcher end block. On start-up, indexer will only look for missed blobs before this block number. If set to `0`, then all recent till `latest` will be traversed. Implemented in [#9168](https://github.com/blockscout/blockscout/pull/9168).                                                                                                  | Version: v6.2.0+ <br />Default: `0` <br />Applications: Indexer                     |
| `INDEXER_DISABLE_BEACON_DEPOSIT_FETCHER`                    | If `true`, the Beacon deposit fetcher won't be started. Implemented in [#12985](https://github.com/blockscout/blockscout/pull/12985).                                                                                                                                                                                                                            | Version: v9.1.0+ <br />Default: `false` <br />Applications: Indexer                 |
| `INDEXER_BEACON_DEPOSIT_FETCHER_INTERVAL`                   | The interval indicating how often deposit events should be queried. [Time format](/setup/env-variables/backend-envs-chain-specific#time-format). Implemented in [#12985](https://github.com/blockscout/blockscout/pull/12985).                                                                                                                                   | Version: v9.1.0+ <br />Default: `6s` <br />Applications: Indexer                    |
| `INDEXER_BEACON_DEPOSIT_FETCHER_BATCH_SIZE`                 | The batch size specifies how many events are retrieved in a single database query. Implemented in [#12985](https://github.com/blockscout/blockscout/pull/12985).                                                                                                                                                                                                 | Version: v9.1.0+ <br />Default: `1000` <br />Applications: Indexer                  |
| `INDEXER_DISABLE_BEACON_DEPOSIT_STATUS_FETCHER`             | If `true`, the Beacon deposit status fetcher won't be started. Implemented in [#12985](https://github.com/blockscout/blockscout/pull/12985).                                                                                                                                                                                                                     | Version: v9.1.0+ <br />Default: `false` <br />Applications: Indexer                 |
| `INDEXER_BEACON_DEPOSIT_STATUS_FETCHER_EPOCH_DURATION`      | Epoch duration in the Beacon chain in seconds. Implemented in [#12985](https://github.com/blockscout/blockscout/pull/12985).                                                                                                                                                                                                                                     | Version: v9.1.0+ <br />Default: `384` <br />Applications: Indexer                   |
| `INDEXER_BEACON_DEPOSIT_STATUS_FETCHER_REFERENCE_TIMESTAMP` | Any past finalized Beacon Chain epoch UTC timestamp. Used as reference for status fetcher scheduling. Implemented in [#12985](https://github.com/blockscout/blockscout/pull/12985).                                                                                                                                                                              | Version: v9.1.0+ <br />Default: `1722024023` <br />Applications: Indexer            |

## Rootstock Management

| Variable                                                    | Description                                                                                                                                                                                                                                                            | Parameters                                                          |
| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| `ROOTSTOCK_REMASC_ADDRESS`                                  | The address hash of remasc address on Rootstock chain. Implemented in [#8542](https://github.com/blockscout/blockscout/pull/8542).                                                                                                                                     | Version: v5.3.0+ <br />Default: (empty) <br />Applications: API     |
| `ROOTSTOCK_BRIDGE_ADDRESS`                                  | The address hash of bridge address on Rootstock chain. Implemented in [#8542](https://github.com/blockscout/blockscout/pull/8542).                                                                                                                                     | Version: v5.3.0+ <br />Default: (empty) <br />Applications: API     |
| `INDEXER_DISABLE_ROOTSTOCK_DATA_FETCHER`                    | If `true` the fetcher of Rootstock specific fields for blocks that are already in the database won't be started, fields from new blocks will be extracted. Implemented in [#8742](https://github.com/blockscout/blockscout/pull/8742).                                 | Version: v5.3.2+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_ROOTSTOCK_DATA_FETCHER_INTERVAL`                   | The interval between fetching the next `INDEXER_ROOTSTOCK_DATA_FETCHER_DB_BATCH_SIZE` blocks from the database and the node, used to configure the load on the database and JSON-RPC node. Implemented in [#8742](https://github.com/blockscout/blockscout/pull/8742). | Version: v5.3.2+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_ROOTSTOCK_DATA_FETCHER_BATCH_SIZE`                 | The number of requests in one JSON-RPC batch request, used to configure the load or RPS on JSON-RPC node. Implemented in [#8742](https://github.com/blockscout/blockscout/pull/8742).                                                                                  | Version: v5.3.2+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_ROOTSTOCK_DATA_FETCHER_CONCURRENCY`                | The number of simultaneous requests to the JSON-RPC node, used to configure the load or RPS on JSON-RPC node. Implemented in [#8742](https://github.com/blockscout/blockscout/pull/8742).                                                                              | Version: v5.3.2+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_ROOTSTOCK_DATA_FETCHER_DB_BATCH_SIZE`              | The number of blocks fetched from the database in one database query. Implemented in [#8742](https://github.com/blockscout/blockscout/pull/8742).                                                                                                                      | Version: v5.3.2+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_TOKEN_TRANSFER_BLOCK_CONSENSUS_SANITIZER_INTERVAL` | Interval between token transfer block\_consensus sanitizing. Implemented in [#14144](https://github.com/blockscout/blockscout/pull/14144).                                                                                                                             | Version: v10.2.2+ <br />Default: `20m` <br />Applications: Indexer  |

## Scroll management

| Variable                                           | Description                                                                                                                                                                                                                                                       | Parameters                                                                |
| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| `INDEXER_SCROLL_L1_RPC`                            | The RPC endpoint for L1 used to fetch Deposit and Withdrawal messages. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                                              | Version: v6.9.0+ <br />Default: (empty) <br />Applications: Indexer       |
| `INDEXER_SCROLL_L1_CHAIN_CONTRACT`                 | The address of ScrollChain contract on L1. Used to fetch batch and bundle events. Implemented in [#10819](https://github.com/blockscout/blockscout/pull/10819).                                                                                                   | Version: v6.9.0+ <br />Default: (empty) <br />Applications: Indexer       |
| `INDEXER_SCROLL_L1_BATCH_START_BLOCK`              | The number of a start block on L1 to index L1 batches and bundles. If the table of batches is not empty, the process will continue indexing from the last indexed batch. Implemented in [#10819](https://github.com/blockscout/blockscout/pull/10819).            | Version: v6.9.0+ <br />Default: (empty) <br />Applications: Indexer       |
| `INDEXER_SCROLL_L1_BATCH_BLOCKSCOUT_BLOBS_API_URL` | Defines a URL to Blockscout Blobs API to retrieve L1 blobs from that. Example for Sepolia: `https://eth-sepolia.blockscout.com/api/v2/blobs`. Implemented in [#12294](https://github.com/blockscout/blockscout/pull/12294).                                       | Version: v8.1.0+ <br />Default: (empty) <br />Applications: Indexer       |
| `INDEXER_SCROLL_L1_MESSENGER_CONTRACT`             | The address of L1 Scroll Messenger contract on L1 used to fetch Deposit and Withdrawal messages. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                    | Version: v6.9.0+ <br />Default: (empty) <br />Applications: Indexer       |
| `INDEXER_SCROLL_L1_MESSENGER_START_BLOCK`          | The number of a start block on L1 to index L1 bridge messages. If the table of bridge operations is not empty, the process will continue indexing from the last indexed L1 message. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484). | Version: v6.9.0+ <br />Default: (empty) <br />Applications: Indexer       |
| `INDEXER_SCROLL_L2_MESSENGER_CONTRACT`             | The address of L2 Scroll Messenger contract on L2 used to fetch Deposit and Withdrawal messages. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                    | Version: v6.9.0+ <br />Default: (empty) <br />Applications: Indexer       |
| `INDEXER_SCROLL_L2_MESSENGER_START_BLOCK`          | The number of a start block on L2 to index L2 bridge messages. If the table of bridge operations is not empty, the process will continue indexing from the last indexed L2 message. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484). | Version: v6.9.0+ <br />Default: `FIRST_BLOCK` <br />Applications: Indexer |
| `INDEXER_SCROLL_L2_GAS_ORACLE_CONTRACT`            | The address of L1 Gas Oracle contract on L2. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                                                                        | Version: v6.9.0+ <br />Default: (empty) <br />Applications: Indexer       |
| `INDEXER_SCROLL_L1_ETH_GET_LOGS_RANGE_SIZE`        | Block range size for eth\_getLogs request in Scroll indexer modules for Layer 1. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                                    | Version: v6.9.0+ <br />Default: `250` <br />Applications: Indexer         |
| `INDEXER_SCROLL_L2_ETH_GET_LOGS_RANGE_SIZE`        | Block range size for eth\_getLogs request in Scroll indexer modules for Layer 2. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                                    | Version: v6.9.0+ <br />Default: `1000` <br />Applications: Indexer        |
| `SCROLL_L2_CURIE_UPGRADE_BLOCK`                    | L2 block number of the Curie upgrade. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                                                                               | Version: v6.9.0+ <br />Default: `0` <br />Applications: API               |
| `SCROLL_L1_SCALAR_INIT`                            | Initial value for `scalar` parameter. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                                                                               | Version: v6.9.0+ <br />Default: `0` <br />Applications: API               |
| `SCROLL_L1_OVERHEAD_INIT`                          | Initial value for `overhead` parameter. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                                                                             | Version: v6.9.0+ <br />Default: `0` <br />Applications: API               |
| `SCROLL_L1_COMMIT_SCALAR_INIT`                     | Initial value for `commit_scalar` parameter. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                                                                        | Version: v6.9.0+ <br />Default: `0` <br />Applications: API               |
| `SCROLL_L1_BLOB_SCALAR_INIT`                       | Initial value for `blob_scalar` parameter. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                                                                          | Version: v6.9.0+ <br />Default: `0` <br />Applications: API               |
| `SCROLL_L1_BASE_FEE_INIT`                          | Initial value for `l1_base_fee` parameter. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                                                                          | Version: v6.9.0+ <br />Default: `0` <br />Applications: API               |
| `SCROLL_L1_BLOB_BASE_FEE_INIT`                     | Initial value for `l1_blob_base_fee` parameter. Implemented in [#10484](https://github.com/blockscout/blockscout/pull/10484).                                                                                                                                     | Version: v6.9.0+ <br />Default: `0` <br />Applications: API               |

## Shibarium Management

| Variable                                          | Description                                                                                                                                                                                                                                                                                                | Parameters                                                          |
| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| `INDEXER_SHIBARIUM_L1_RPC`                        | The RPC endpoint for L1 used to fetch deposit or withdrawal events. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929).                                                                                                                                                            | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_SHIBARIUM_L1_START_BLOCK`                | The number of start block on L1 to index L1 events. If the table of bridge operations is not empty, the process will continue indexing from the last indexed L1 event. If empty or not defined, the L1 events are not handled. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929). | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_SHIBARIUM_L1_DEPOSIT_MANAGER_CONTRACT`   | The address of DepositManagerProxy contract on L1 used to fetch BONE token deposits. Required for L1 events indexing. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929).                                                                                                          | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_SHIBARIUM_L1_ETHER_PREDICATE_CONTRACT`   | The address of EtherPredicateProxy contract on L1 used to fetch ETH deposits and withdrawals. Required for L1 events indexing. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929).                                                                                                 | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_SHIBARIUM_L1_ERC20_PREDICATE_CONTRACT`   | The address of ERC20PredicateProxy contract on L1 used to fetch ERC20 token deposits and withdrawals. Required for L1 events indexing. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929).                                                                                         | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_SHIBARIUM_L1_ERC721_PREDICATE_CONTRACT`  | The address of ERC721PredicateProxy contract on L1 used to fetch ERC721 token deposits and withdrawals. Optional for L1 events indexing. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929).                                                                                       | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_SHIBARIUM_L1_ERC1155_PREDICATE_CONTRACT` | The address of ERC1155PredicateProxy contract on L1 used to fetch ERC1155 token deposits and withdrawals. Optional for L1 events indexing. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929).                                                                                     | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_SHIBARIUM_L1_WITHDRAW_MANAGER_CONTRACT`  | The address of WithdrawManagerProxy contract on L1 used to fetch BONE token withdrawals. Required for L1 events indexing. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929).                                                                                                      | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_SHIBARIUM_L2_START_BLOCK`                | The number of start block on L2 to index L2 events. If the table of bridge operations is not empty, the process will continue indexing from the last indexed L2 event. If empty or not defined, the L2 events are not handled. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929). | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_SHIBARIUM_L2_CHILD_CHAIN_CONTRACT`       | The address of ChildChain contract on L2 used to fetch BONE token deposits. Required for L2 events indexing. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929).                                                                                                                   | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_SHIBARIUM_L2_WETH_CONTRACT`              | The address of WETH contract on L2 used to fetch ETH deposits and withdrawals. Required for L2 events indexing. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929).                                                                                                                | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_SHIBARIUM_L2_BONE_WITHDRAW_CONTRACT`     | The address of a contract which emits `Withdraw` event on L2. Used to fetch BONE token withdrawals. Required for L2 events indexing. Implemented in [#8929](https://github.com/blockscout/blockscout/pull/8929).                                                                                           | Version: v6.1.0+ <br />Default: (empty) <br />Applications: Indexer |

## Optimism Rollup Management

<Info>
  Supported together with ENV setting `CHAIN_TYPE=optimism`
</Info>

| Variable                                                           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Parameters                                                                                               |
| ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| `INDEXER_OPTIMISM_L1_RPC`                                          | The RPC endpoint for L1 used to fetch transaction batches, dispute games, output roots, deposits, or withdrawal events. Implemented in [#6980](https://github.com/blockscout/blockscout/pull/6980).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Version: v6.3.0+ <br />Default: (empty) <br />Applications: Indexer                                      |
| `INDEXER_OPTIMISM_SUPERCHAIN_CONFIG_FILE_PATH`                     | Points to a Superchain TOML source (local file path or http(s) URL, including GitHub blob URLs) used to auto-load Optimism network parameters at startup and persist them into constants; empty/blank values are treated as unset. When provided, TOML values take priority and legacy envs are used only as per-field fallback; if neither TOML nor fallback provides a valid value, the stored constant is cleared to avoid stale config. This single variable can replace manual setup of: `INDEXER_OPTIMISM_L2_HOLOCENE_TIMESTAMP`, `INDEXER_OPTIMISM_L2_ISTHMUS_TIMESTAMP`, `INDEXER_OPTIMISM_L2_JOVIAN_TIMESTAMP`, `EIP_1559_BASE_FEE_MAX_CHANGE_DENOMINATOR`, `EIP_1559_ELASTICITY_MULTIPLIER`, `INDEXER_OPTIMISM_L1_SYSTEM_CONFIG_CONTRACT`, `INDEXER_OPTIMISM_L1_PORTAL_CONTRACT`, `INDEXER_OPTIMISM_L1_BATCH_SUBMITTER`, `INDEXER_OPTIMISM_L1_BATCH_INBOX`, `INDEXER_OPTIMISM_L1_START_BLOCK`, and `INDEXER_OPTIMISM_L2_BATCH_GENESIS_BLOCK_NUMBER`. | Version: master <br />Default: (empty) <br />Applications: Indexer                                       |
| `INDEXER_OPTIMISM_L1_SYSTEM_CONFIG_CONTRACT`                       | The address of `SystemConfig` contract on L1 required for almost all Optimism fetchers. Implemented in [#10199](https://github.com/blockscout/blockscout/pull/10199).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Version: v6.8.0+ <br />Default: (empty) <br />Applications: Indexer                                      |
| `INDEXER_OPTIMISM_L1_BATCH_BLOCKSCOUT_BLOBS_API_URL`               | Defines a URL to Blockscout Blobs API to retrieve L1 blobs from that. Example for Sepolia: `https://eth-sepolia.blockscout.com/api/v2/blobs`. Implemented in [#9571](https://github.com/blockscout/blockscout/pull/9571).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Version: v6.3.0+ <br />Default: (empty) <br />Applications: Indexer                                      |
| `INDEXER_OPTIMISM_L1_BATCH_CELESTIA_BLOBS_API_URL`                 | Defines a URL to Celestia blobs indexer to retrieve L1 blobs from that. Example: `http://example.com/api/v1/celestia/blob`. Implemented in [#10199](https://github.com/blockscout/blockscout/pull/10199).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Version: v6.8.0+ <br />Default: (empty) <br />Applications: Indexer                                      |
| `INDEXER_OPTIMISM_L1_BATCH_EIGENDA_BLOBS_API_URL`                  | Defines a URL to DA indexer supporting EigenDA layer to retrieve L1 blobs from that. Example: `https://da-indexer-dev.k8s-prod-3.blockscout.com/api/v1/eigenda/v2/blobs`. Implemented in [#13709](https://github.com/blockscout/blockscout/pull/13709).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Version: v10.0.0+ <br />Default: (empty) <br />Applications: Indexer                                     |
| `INDEXER_OPTIMISM_L1_BATCH_EIGENDA_PROXY_BASE_URL`                 | Defines a URL to EigenDA proxy node which is used by the DA indexer (planned to be optional in the future). Example for MegaETH: `http://megaeth-eigenda-proxy.node.blockscout.com:3100`. Implemented in [#13709](https://github.com/blockscout/blockscout/pull/13709).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Version: v10.0.0+ <br />Default: (empty) <br />Applications: Indexer                                     |
| `INDEXER_OPTIMISM_L1_BATCH_ALT_DA_SERVER_URL`                      | Defines a URL to Alt-DA server to retrieve L1 data from that. Example for Redstone: `https://da.redstonechain.com/get`. Implemented in [#13179](https://github.com/blockscout/blockscout/pull/13179).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Version: v9.2.0+ <br />Default: (empty) <br />Applications: Indexer                                      |
| `INDEXER_OPTIMISM_L1_BATCH_BLOCKS_CHUNK_SIZE`                      | Blocks chunk size to send batch RPC requests. Implemented in [#6980](https://github.com/blockscout/blockscout/pull/6980).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Version: v6.3.0+ <br />Default: `4` <br />Applications: Indexer                                          |
| `INDEXER_OPTIMISM_L2_BATCH_GENESIS_BLOCK_NUMBER`                   | L2 genesis block number. This is the first block of Optimism BedRock upgrade. Equals to 0 if the new chain starts being already upgraded. The block number can be found at [superchain registry](https://github.com/ethereum-optimism/superchain-registry/tree/main/superchain/configs). [Example](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/mainnet/op.yaml). Implemented in [#9260](https://github.com/blockscout/blockscout/pull/9260).                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Version: v6.3.0+ <br />Default: (empty) <br />Applications: Indexer                                      |
| `INDEXER_OPTIMISM_L1_OUTPUT_ORACLE_CONTRACT`                       | The address of `L2OutputOracle` contract on L1 used to fetch output roots. Required for output roots indexing. Implemented in [#6980](https://github.com/blockscout/blockscout/pull/6980).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Version: v6.3.0+ <br />Default: (empty) <br />Applications: Indexer                                      |
| `INDEXER_OPTIMISM_L1_DEPOSITS_TRANSACTION_TYPE`                    | Defines OP Deposit transaction type (numeric value) which is needed for correct L2 transaction hash calculation by the Deposits indexing module. Implemented in [#10674](https://github.com/blockscout/blockscout/pull/10674).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Version: v6.9.0+ <br />Default: `126` <br />Applications: Indexer                                        |
| `INDEXER_OPTIMISM_L2_WITHDRAWALS_START_BLOCK`                      | The number of start block on L2 to index withdrawals. If the table of withdrawals is not empty, the process will continue indexing from the last indexed withdrawal. Implemented in [#6980](https://github.com/blockscout/blockscout/pull/6980).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Version: v6.3.0+ <br />Default: `1` <br />Applications: Indexer                                          |
| `INDEXER_OPTIMISM_L2_MESSAGE_PASSER_CONTRACT`                      | The address of `L2ToL1MessagePasser` contract on L2 to index withdrawals. Implemented in [#6980](https://github.com/blockscout/blockscout/pull/6980).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Version: v6.3.0+ <br />Default: `0x4200000000000000000000000000000000000016` <br />Applications: Indexer |
| `INDEXER_OPTIMISM_L1_ETH_GET_LOGS_RANGE_SIZE`                      | Block range size for eth\_getLogs request in OP indexer modules for Layer 1. Implemented in [#11073](https://github.com/blockscout/blockscout/pull/11073).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Version: v6.10.0+ <br />Default: `250` <br />Applications: Indexer                                       |
| `INDEXER_OPTIMISM_L2_ETH_GET_LOGS_RANGE_SIZE`                      | Block range size for eth\_getLogs request in OP indexer modules for Layer 2. Implemented in [#11073](https://github.com/blockscout/blockscout/pull/11073).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Version: v6.10.0+ <br />Default: `250` <br />Applications: Indexer                                       |
| `INDEXER_OPTIMISM_BLOCK_DURATION`                                  | Block time in seconds for the OP chain. Used by the indexer modules. Implemented in [#11073](https://github.com/blockscout/blockscout/pull/11073).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Version: v6.10.0+ <br />Default: `2` <br />Applications: Indexer                                         |
| `INDEXER_OPTIMISM_L1_PORTAL_CONTRACT`                              | Optional. The address of `OptimismPortal` contract on L1 used to fetch deposit and withdrawal events. Used as a fallback address (when it cannot be read from the `SystemConfig` contract) for deposit and withdrawal events indexing. Implemented in [#11073](https://github.com/blockscout/blockscout/pull/11073).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | Version: v6.10.0+ <br />Default: (empty) <br />Applications: Indexer                                     |
| `INDEXER_OPTIMISM_L1_START_BLOCK`                                  | Optional. The number of L1 block from which the logs (events) scanning should start by the indexer. Used as a fallback number (when it cannot be read from the `SystemConfig` contract). Implemented in [#11073](https://github.com/blockscout/blockscout/pull/11073).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Version: v6.10.0+ <br />Default: (empty) <br />Applications: Indexer                                     |
| `INDEXER_OPTIMISM_L1_BATCH_INBOX`                                  | Optional. The inbox address to index transaction batches on L1. Used as a fallback address (when it cannot be read from the `SystemConfig` contract). Implemented in [#11073](https://github.com/blockscout/blockscout/pull/11073).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Version: v6.10.0+ <br />Default: (empty) <br />Applications: Indexer                                     |
| `INDEXER_OPTIMISM_L1_BATCH_SUBMITTER`                              | Optional. The batch submitter address to index transaction batches on L1. Used as a fallback address (when it cannot be read from the `SystemConfig` contract). Implemented in [#11073](https://github.com/blockscout/blockscout/pull/11073).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Version: v6.10.0+ <br />Default: (empty) <br />Applications: Indexer                                     |
| `INDEXER_OPTIMISM_L2_HOLOCENE_TIMESTAMP`                           | Holocene upgrade L2 block timestamp. If not defined, EIP-1559's denominator and multiplier are taken from `EIP_1559_BASE_FEE_MAX_CHANGE_DENOMINATOR` and `EIP_1559_ELASTICITY_MULTIPLIER` envs correspondingly. Implemented in [#11355](https://github.com/blockscout/blockscout/pull/11355).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Version: v6.10.1+ <br />Default: (empty) <br />Applications: Indexer                                     |
| `INDEXER_OPTIMISM_L2_HOLOCENE_BLOCKS_CHUNK_SIZE`                   | Max number of blocks in `eth_getBlockByNumber` batch request. Implemented in [#11355](https://github.com/blockscout/blockscout/pull/11355).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Version: v6.10.1+ <br />Default: `25` <br />Applications: Indexer                                        |
| `INDEXER_OPTIMISM_L2_ISTHMUS_TIMESTAMP`                            | Isthmus upgrade L2 block timestamp. Needed for operator fee determining. If set to `0`, the Isthmus is assumed to be active from genesis block. Implemented in [#13139](https://github.com/blockscout/blockscout/pull/13139).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Version: v9.2.0+ <br />Default: (empty) <br />Applications: API, Indexer                                 |
| `INDEXER_OPTIMISM_L2_JOVIAN_TIMESTAMP`                             | Jovian upgrade L2 block timestamp. If set to `0`, the Jovian is assumed to be active from genesis block. Implemented in [#13538](https://github.com/blockscout/blockscout/pull/13538).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Version: v9.3.0+ <br />Default: (empty) <br />Applications: API, Indexer                                 |
| `INDEXER_OPTIMISM_L2_INTEROP_START_BLOCK`                          | Defines a start block number for indexing interop messages (usually `0`). If not defined, the indexing is turned off. Implemented in [#11903](https://github.com/blockscout/blockscout/pull/11903).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Version: v8.0.0+ <br />Default: (empty) <br />Applications: Indexer                                      |
| `INDEXER_OPTIMISM_L2_INTEROP_BLOCKS_CHUNK_SIZE`                    | Adjusts blocks chunk size when indexing failed relay transactions. Implemented in [#11903](https://github.com/blockscout/blockscout/pull/11903).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Version: v8.0.0+ <br />Default: `4` <br />Applications: Indexer                                          |
| `INDEXER_OPTIMISM_INTEROP_PRIVATE_KEY`                             | 32-byte private key in form of `0x...` string. Required and used to `secp256k1` sign data being sent to `/api/v2/import/optimism/interop/` remote API endpoint. Implemented in [#11903](https://github.com/blockscout/blockscout/pull/11903).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Version: v8.0.0+ <br />Default: (empty) <br />Applications: API, Indexer                                 |
| `INDEXER_OPTIMISM_INTEROP_CONNECT_TIMEOUT`                         | Timeout in seconds for establishing HTTP connection to `/api/v2/import/optimism/interop/` and `/api/v2/optimism/interop/public-key` remote API endpoints. Implemented in [#11903](https://github.com/blockscout/blockscout/pull/11903).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Version: v8.0.0+ <br />Default: `8` <br />Applications: API, Indexer                                     |
| `INDEXER_OPTIMISM_INTEROP_RECV_TIMEOUT`                            | Timeout in seconds for receiving HTTP response from `/api/v2/import/optimism/interop/` or `/api/v2/optimism/interop/public-key` API endpoint. Implemented in [#11903](https://github.com/blockscout/blockscout/pull/11903).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Version: v8.0.0+ <br />Default: `10` <br />Applications: API, Indexer                                    |
| `INDEXER_OPTIMISM_INTEROP_EXPORT_EXPIRATION_DAYS`                  | Limits the number of incomplete messages being sent through API to remote instances. The source or relay transactions older than this number of days (starting from the latest block) won't be considered by the handler of incomplete messages. Implemented in [#11903](https://github.com/blockscout/blockscout/pull/11903).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Version: v8.0.0+ <br />Default: `10` <br />Applications: Indexer                                         |
| `INDEXER_OPTIMISM_CHAINSCOUT_API_URL`                              | URL to Chainscout API to get instance info by chain ID. Must be omitted for local development. For production must be `https://chains.blockscout.com/api/chains/`. Implemented in [#11903](https://github.com/blockscout/blockscout/pull/11903).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Version: v8.0.0+ <br />Default: (empty) <br />Applications: API, Indexer                                 |
| `INDEXER_OPTIMISM_CHAINSCOUT_FALLBACK_MAP`                         | Defines `chain_id -> instance_url` map, for example: `{"10": "https://optimism.blockscout.com/", "8453": "https://base.blockscout.com/"}`. Supports extended format like `{"123": {"api": "https://test.blockscout.com:4000/", "ui": "https://test.blockscout.com:3000/"}}` (when backend and frontend have different URLs). Quotes usually are escaped when defining in config file, e.g.: `INDEXER_OPTIMISM_CHAINSCOUT_FALLBACK_MAP="{\"420120000\":\"http://host.docker.internal:4100/\"}"`. Implemented in [#11903](https://github.com/blockscout/blockscout/pull/11903).                                                                                                                                                                                                                                                                                                                                                                                  | Version: v8.0.0+ <br />Default: (empty) <br />Applications: API, Indexer                                 |
| `INDEXER_OPTIMISM_MULTICHAIN_BATCH_SIZE`                           | Max number of items sent to the Multichain service in one batch. Implemented in [#12387](https://github.com/blockscout/blockscout/pull/12387).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Version: v9.0.0+ <br />Default: `100` <br />Applications: Indexer                                        |
| `INDEXER_DISABLE_OPTIMISM_INTEROP_MULTICHAIN_EXPORT`               | Disables exporting of interop messages to Multichain service. Implemented in [#13051](https://github.com/blockscout/blockscout/pull/13051).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Version: v9.1.0+ <br />Default: `true` <br />Applications: Indexer                                       |
| `INDEXER_OPTIMISM_OPERATOR_FEE_QUEUE_BATCH_SIZE`                   | Batch size for OP operator fee fetcher. Defines max number of transactions handled per batch. Implemented in [#13139](https://github.com/blockscout/blockscout/pull/13139).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Version: v9.2.0+ <br />Default: `100`<br />Applications: Indexer                                         |
| `INDEXER_OPTIMISM_OPERATOR_FEE_QUEUE_CONCURRENCY`                  | Concurrency for OP operator fee fetcher. Implemented in [#13139](https://github.com/blockscout/blockscout/pull/13139).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Version: v9.2.0+ <br />Default: `3`<br />Applications: Indexer                                           |
| `INDEXER_OPTIMISM_OPERATOR_FEE_QUEUE_ENQUEUE_BUSY_WAITING_TIMEOUT` | Timeout before new attempt to append item to OP operator fee fetcher queue if it's full. [Time format](/setup/env-variables/backend-env-variables#time-format). Implemented in [#13139](https://github.com/blockscout/blockscout/pull/13139).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Version: v9.2.0+ <br />Default: `1s`<br />Applications: Indexer                                          |
| `INDEXER_OPTIMISM_OPERATOR_FEE_QUEUE_MAX_QUEUE_SIZE`               | Maximum size of OP operator fee fetcher queue. Implemented in [#13139](https://github.com/blockscout/blockscout/pull/13139).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | Version: v9.2.0+ <br />Default: `1000`<br />Applications: Indexer                                        |
| `INDEXER_OPTIMISM_OPERATOR_FEE_QUEUE_INIT_QUERY_LIMIT`             | Limit of the init query for processing the OP operator fee fetcher queue. Implemented in [#13139](https://github.com/blockscout/blockscout/pull/13139).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Version: v9.2.0+ <br />Default: `1000`<br />Applications: Indexer                                        |

## zkSync Rollup Management

<Info>
  Supported together with setting `CHAIN_TYPE=zksync`
</Info>

| Variable                                         | Description                                                                                                                                                     | Parameters                                                          |
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| `INDEXER_ZKSYNC_BATCHES_ENABLED`                 | Enables zkSync batches fetcher. Implemented in [#9080](https://github.com/blockscout/blockscout/pull/9080).                                                     | Version: v6.3.0+ <br />Default: `false` <br />Applications: Indexer |
| `INDEXER_ZKSYNC_BATCHES_CHUNK_SIZE`              | The number of RPC calls in one request when reading data from RPC. Implemented in [#9080](https://github.com/blockscout/blockscout/pull/9080).                  | Version: v6.3.0+ <br />Default: `50` <br />Applications: Indexer    |
| `INDEXER_ZKSYNC_NEW_BATCHES_MAX_RANGE`           | Maximum amount of batches requested if Blockscout does not have all batches synced. Implemented in [#9080](https://github.com/blockscout/blockscout/pull/9080). | Version: v6.3.0+ <br />Default: `50` <br />Applications: Indexer    |
| `INDEXER_ZKSYNC_NEW_BATCHES_RECHECK_INTERVAL`    | The latest batch rechecking interval, seconds. Implemented in [#9080](https://github.com/blockscout/blockscout/pull/9080).                                      | Version: v6.3.0+ <br />Default: `60` <br />Applications: Indexer    |
| `INDEXER_ZKSYNC_L1_RPC`                          | The RPC endpoint for L1 used to fetch status of batches. Implemented in [#9080](https://github.com/blockscout/blockscout/pull/9080).                            | Version: v6.3.0+ <br />Default: (empty) <br />Applications: Indexer |
| `INDEXER_ZKSYNC_BATCHES_STATUS_RECHECK_INTERVAL` | The batches status rechecking interval, seconds. Implemented in [#9080](https://github.com/blockscout/blockscout/pull/9080).                                    | Version: v6.3.0+ <br />Default: `50` <br />Applications: Indexer    |

## Arbitrum Management

<Info>
  Supported together with setting `CHAIN_TYPE=arbitrum`
</Info>

| Variable                                                           | Description                                                                                                                                                                                                                                                                                                                                                                                                    | Parameters                                                                                               |
| ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| `INDEXER_ARBITRUM_ARBSYS_CONTRACT`                                 | The address of ArbSys contract on the rollup. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                                                                                      | Version: v6.7.0+ <br />Default: `0x0000000000000000000000000000000000000064` <br />Applications: Indexer |
| `INDEXER_ARBITRUM_NODE_INTERFACE_CONTRACT`                         | The address of NodeInterface contract on the rollup. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                                                                               | Version: v6.8.0+ <br />Default: `0x00000000000000000000000000000000000000C8` <br />Applications: Indexer |
| `INDEXER_ARBITRUM_L1_RPC`                                          | The RPC endpoint for L1 used to fetch transaction batches, block confirmations, and cross-chain messages. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                          | Version: v6.7.0+ <br />Default: empty <br />Applications: Indexer                                        |
| `INDEXER_ARBITRUM_L1_RPC_CHUNK_SIZE`                               | The number of RPC calls in one request when reading data from RPC. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                                                                 | Version: v6.7.0+ <br />Default: `20` <br />Applications: Indexer                                         |
| `INDEXER_ARBITRUM_L1_RPC_HISTORICAL_BLOCKS_RANGE`                  | The block range size for the eth\_getLogs request. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                                                                                 | Version: v6.7.0+ <br />Default: `1000` <br />Applications: Indexer                                       |
| `INDEXER_ARBITRUM_L1_ROLLUP_CONTRACT`                              | The Arbitrum Rollup contract address on L1. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                                                                                        | Version: v6.7.0+ <br />Default: empty <br />Applications: Indexer                                        |
| `INDEXER_ARBITRUM_L1_ROLLUP_INIT_BLOCK`                            | The block number where the Arbitrum rollup contract has been deployed. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                                                             | Version: v6.7.0+ <br />Default: `1` <br />Applications: Indexer                                          |
| `INDEXER_ARBITRUM_L1_COMMON_START_BLOCK`                           | The block number at which synchronization will commence. It will proceed in both directions: discovering new batches up to the chain head, and historical batches until `INDEXER_ARBITRUM_L1_ROLLUP_INIT_BLOCK`. If omitted, the synchronization starts from the latest block. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                     | Version: v6.7.0+ <br />Default: `latest block` <br />Applications: Indexer                               |
| `INDEXER_ARBITRUM_L1_FINALIZATION_THRESHOLD`                       | The number of blocks below the blockchain head that are considered not yet finalized in environments where the settlement layer is another rollup, or when the L1 node does not support safe block retrieval. Implemented in [#10482](https://github.com/blockscout/blockscout/pull/10482).                                                                                                                    | Version: v6.8.0+ <br />Default: `1000` <br />Applications: Indexer                                       |
| `INDEXER_ARBITRUM_ROLLUP_CHUNK_SIZE`                               | The number of RPC calls in one request when reading data from RPC. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                                                                 | Version: v6.7.0+ <br />Default: `20` <br />Applications: Indexer                                         |
| `INDEXER_ARBITRUM_BRIDGE_MESSAGES_TRACKING_ENABLED`                | Enables monitoring on L1 of cross-chain messages directed to L2 and catchup on L2 of historical cross-chain messages. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                              | Version: v6.7.0+ <br />Default: (empty) <br />Applications: Indexer                                      |
| `INDEXER_ARBITRUM_MISSED_MESSAGES_RECHECK_INTERVAL`                | Interval to re-check on the rollup historical messages directed to and from the rollup, in seconds. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                                | Version: v6.7.0+ <br />Default: `3600` <br />Applications: Indexer                                       |
| `INDEXER_ARBITRUM_MISSED_MESSAGES_BLOCKS_DEPTH`                    | Amount of L2 blocks to revisit to identify historical cross-chain messages in the messages catchup task. Implemented in [#10374](https://github.com/blockscout/blockscout/pull/10374).                                                                                                                                                                                                                         | Version: v6.8.0+ <br />Default: `10000` <br />Applications: Indexer                                      |
| `INDEXER_ARBITRUM_TRACKING_MESSAGES_ON_L1_RECHECK_INTERVAL`        | Interval to re-check on L1 new messages directed to the rollup, in seconds. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                                                        | Version: v6.7.0+ <br />Default: `20` <br />Applications: Indexer                                         |
| `INDEXER_ARBITRUM_MESSAGES_TRACKING_FAILURE_THRESHOLD`             | The time threshold for L1 message tracking tasks. If a task has not run successfully within this threshold, it is marked as failed and enters a cooldown period before retrying. Implemented in [#13792](https://github.com/blockscout/blockscout/pull/13792).                                                                                                                                                 | Version: v10.0.0+ <br />Default: `10m` <br />Applications: Indexer                                       |
| `INDEXER_ARBITRUM_MISSED_MESSAGE_IDS_RANGE`                        | Size of each message ID range inspected when discovering L1-to-L2 messages with missing L1 origination information. Implemented in [#13792](https://github.com/blockscout/blockscout/pull/13792).                                                                                                                                                                                                              | Version: v10.0.0+ <br />Default: `10000` <br />Applications: Indexer                                     |
| `INDEXER_ARBITRUM_BATCHES_TRACKING_ENABLED`                        | Enables monitoring of transaction batches, block confirmations, and L2-to-L1 messages executions. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                                  | Version: v6.7.0+ <br />Default: (empty) <br />Applications: Indexer                                      |
| `INDEXER_ARBITRUM_BATCHES_TRACKING_RECHECK_INTERVAL`               | Interval to re-check on L1 new and historical batches, confirmations, and executions, in seconds. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                                                  | Version: v6.7.0+ <br />Default: `20` <br />Applications: Indexer                                         |
| `INDEXER_ARBITRUM_BATCHES_TRACKING_L1_FINALIZATION_CHECK_ENABLED`  | Whether L1 transactions related to batches, confirmations, and executions need to be monitored for finalization or not. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                                            | Version: v6.7.0+ <br />Default: `false` <br />Applications: Indexer                                      |
| `INDEXER_ARBITRUM_BATCHES_TRACKING_MESSAGES_TO_BLOCKS_SHIFT`       | Difference between the message count and actual rollup block numbers in the SequencerBatchDelivered event on L1. Applicable for ArbitrumOne only. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                                                                                                                                  | Version: v6.7.0+ <br />Default: `0` <br />Applications: Indexer                                          |
| `INDEXER_ARBITRUM_BATCHES_TRACKING_FAILURE_THRESHOLD`              | The time threshold for transaction batch monitoring tasks. If a task has not run successfully within this threshold, it is marked as failed and enters a cooldown period before retrying. Implemented in [#12192](https://github.com/blockscout/blockscout/pull/12192).                                                                                                                                        | Version: v8.0.0+ <br />Default: `10m` <br />Applications: Indexer                                        |
| `INDEXER_ARBITRUM_MISSING_BATCHES_RANGE`                           | Size of each batch range which will be inspected for the missing batches. Since it is not expected that batches are missed often, it is OK to have this value relatively large. Implemented in [#10466](https://github.com/blockscout/blockscout/pull/10446).                                                                                                                                                  | Version: v6.8.0+ <br />Default: `10000` <br />Applications: Indexer                                      |
| `INDEXER_ARBITRUM_CONFIRMATIONS_TRACKING_FINALIZED`                | Whether to choose `safe` (true) or `latest` (false) block to discover new confirmations. This setting is required to reduce latency between the actual confirmation transaction and its discovery. Recommended to have true on rollups which use Ethereum Mainnet as L1. Determines how fast new confirmations will be discovered. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312). | Version: v6.7.0+ <br />Default: `true` <br />Applications: Indexer                                       |
| `INDEXER_ARBITRUM_NEW_BATCHES_LIMIT`                               | The number of batches to be handled and imported at once. This is applicable for cases when dozens of batches are found in one discovery iteration, and it is necessary to import them in chunks to avoid the entire process being aborted if any errors occur. Implemented in [#9312](https://github.com/blockscout/blockscout/pull/9312).                                                                    | Version: v6.7.0+ <br />Default: `10` <br />Applications: Indexer                                         |
| `INDEXER_ARBITRUM_DATA_BACKFILL_ENABLED`                           | Enables a process to backfill the blocks and transaction with Arbitrum specific data. This should only be enabled for Arbitrum chains where blocks were indexed before upgrading to a version that includes Arbitrum-specific data indexing features. Implemented in [#11163](https://github.com/blockscout/blockscout/pull/11163).                                                                            | Version: v7.0.0+ <br />Default: `false` <br />Applications: Indexer                                      |
| `INDEXER_ARBITRUM_DATA_BACKFILL_UNINDEXED_BLOCKS_RECHECK_INTERVAL` | The number of L2 blocks to look back in one iteration of the backfill process. Implemented in [#11163](https://github.com/blockscout/blockscout/pull/11163).                                                                                                                                                                                                                                                   | Version: v7.0.0+ <br />Default: `120s` <br />Applications: Indexer                                       |
| `INDEXER_ARBITRUM_DATA_BACKFILL_BLOCKS_DEPTH`                      | Interval to retry the backfill task for unindexed blocks. Implemented in [#11163](https://github.com/blockscout/blockscout/pull/11163).                                                                                                                                                                                                                                                                        | Version: v7.0.0+ <br />Default: `500` <br />Applications: Indexer                                        |
| `MIGRATION_ARBITRUM_DA_RECORDS_NORMALIZATION_BATCH_SIZE`           | Specifies the number of address records processed per batch during normalization of batch-to-blob associations by moving them from arbitrum\_da\_multi\_purpose to a dedicated arbitrum\_batches\_to\_da\_blobs table. Implemented in [#11798](https://github.com/blockscout/blockscout/pull/11798).                                                                                                           | Version: v7.0.0+ <br />Default: `500` <br />Applications: Indexer                                        |
| `MIGRATION_ARBITRUM_DA_RECORDS_NORMALIZATION_CONCURRENCY`          | Specifies the number of concurrent processes used during normalization of batch-to-blob associations by moving them from arbitrum\_da\_multi\_purpose to a dedicated arbitrum\_batches\_to\_da\_blobs table. Implemented in [#11798](https://github.com/blockscout/blockscout/pull/11798).                                                                                                                     | Version: v7.0.0+ <br />Default: `1` <br />Applications: Indexer                                          |

## Celo Management

<Info>
  Supported together with setting `CHAIN_TYPE=optimism-celo`

  Starting from v9.3.0, Celo runs on the OP Stack infrastructure while maintaining Celo-specific features including:

  * Epochs
  * Election rewards
  * Token duality
  * All standard Optimism features (deposits, withdrawals, batches, etc.)
</Info>

<Warning>
  **Migration Notice**: Prior to v9.3.0, Celo used `CHAIN_TYPE=celo`. This has been changed to `CHAIN_TYPE=optimism-celo` to reflect Celo's migration to the OP Stack while preserving Celo-specific functionality.

  For instances deployed before v9.3.0, you must:

  1. Update `CHAIN_TYPE` from `celo` to `optimism-celo`
  2. Use the `optimism-celo` Docker image
  3. Configure both Optimism and Celo-specific environment variables
  4. Expect heavy migrations!
</Warning>

| Variable                                             | Description                                                                                                                                                                                                                                               | Parameters                                                               |
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `CELO_CORE_CONTRACTS`                                | JSON dictionary containing the addresses and metadata of core CELO network contracts. Read detailed description down below. Implemented in [#9713](https://github.com/blockscout/blockscout/pull/9713).                                                   | Version: v6.8.0+ <br />Default: (empty) <br />Applications: API, Indexer |
| `CELO_L2_MIGRATION_BLOCK`                            | Specifies the block number at which Celo transitioned from L1 to L2, disabling legacy L1 mechanisms (e.g., L1 epochs, old precompiles) once the migration block is indexed. Implemented in [#11949](https://github.com/blockscout/blockscout/pull/11949). | Version: v8.0.0+ <br />Applications: API, Indexer                        |
| `INDEXER_DISABLE_CELO_EPOCH_FETCHER`                 | If set to `true`, the epoch rewards fetcher will not be started. However, epoch blocks pending to fetch will still be imported into the database. Implemented in [#9944](https://github.com/blockscout/blockscout/pull/9944).                             | Version: v6.8.0+ <br />Default: `false` <br />Applications: Indexer      |
| `INDEXER_DISABLE_CELO_VALIDATOR_GROUP_VOTES_FETCHER` | If set to `true`, the validator group votes fetcher will not be started. Implemented in [#10673](https://github.com/blockscout/blockscout/pull/10673).                                                                                                    | Version: v6.9.0+ <br />Default: `false` <br />Applications: Indexer      |
| `INDEXER_CELO_VALIDATOR_GROUP_VOTES_BATCH_SIZE`      | Specifies the block range size for the `eth_getLogs` request, determining the number of blocks included between `toBlock` and `fromBlock`. Implemented in [#9944](https://github.com/blockscout/blockscout/pull/9944).                                    | Version: v6.8.0+ <br />Default: `200000` <br />Applications: Indexer     |
| `CELO_UNRELEASED_TREASURY_CONTRACT`                  | The address of the `CeloUnreleasedTreasury` core contract. Implemented in [#12373](https://github.com/blockscout/blockscout/pull/12373).                                                                                                                  | Version: v9.0.0+ <br />Default: (empty) <br />Applications: Indexer      |
| `CELO_VALIDATORS_CONTRACT`                           | The address of the `Validators` core contract. Implemented in [#12373](https://github.com/blockscout/blockscout/pull/12373).                                                                                                                              | Version: v9.0.0+ <br />Default: (empty) <br />Applications: Indexer      |
| `CELO_EPOCH_MANAGER_CONTRACT`                        | The address of the `EpochManager` core contract. Implemented in [#12373](https://github.com/blockscout/blockscout/pull/12373).                                                                                                                            | Version: v9.0.0+ <br />Default: (empty) <br />Applications: Indexer      |
| `CELO_LOCKED_GOLD_CONTRACT`                          | The address of the `LockedGold` core contract. Implemented in [#12893](https://github.com/blockscout/blockscout/pull/12893).                                                                                                                              | Version: v9.2.0+ <br />Default: (empty)<br />Applications: Indexer       |
| `CELO_ACCOUNTS_CONTRACT`                             | The address of the `Accounts` core contract. Implemented in [#12893](https://github.com/blockscout/blockscout/pull/12893).                                                                                                                                | Version: v9.2.0+ <br />Default: (empty)<br />Applications: Indexer       |
| `INDEXER_CELO_ACCOUNTS_CONCURRENCY`                  | Sets the maximum number of concurrent requests for fetching Celo accounts.                                                                                                                                                                                | Version: v9.2.0+ <br />Default: `1`<br />Applications: Indexer           |
| `INDEXER_CELO_ACCOUNTS_BATCH_SIZE`                   | Specifies the number of account addresses processed per batch during fetching.                                                                                                                                                                            | Version: v9.2.0+ <br />Default: `100`<br />Applications: Indexer         |

### Required Optimism ENVs for Celo

Since Celo runs on the OP Stack, you must also configure all applicable Optimism environment variables from the [Optimism Rollup Management](#optimism-rollup-management) section above.

<Info>
  For Celo network configurations, contract addresses, and deployment assets, refer to the official [Celo Network Config & Assets documentation](https://docs.celo.org/infra-partners/operators/run-node#network-config-&-assets).
</Info>

<Accordion title="Details on `CELO_CORE_CONTRACTS`">
  The CELO network includes several core contracts that are central to its operation. These core contracts manage various aspects of the Celo network, including its stablecoins, governance, identity, and more.

  All these contracts can be obtained by querying the `Registry` contract, which is deployed at the genesis block with the address `0x000000000000000000000000000000000000ce10`. This contract serves as a repository for the addresses of all core contracts on the Celo network.

  Fortunately, core contracts are not updated frequently, so we store information about core contracts statically under the `CELO_CORE_CONTRACTS` variable, which is a JSON object of a specified structure.

  In case the contracts are updated, maintaining the Blockscout instance will require updating the `CELO_CORE_CONTRACTS` variable and manually setting blocks for refetch (all blocks produced after the core contracts' update).

  The structure of the JSON value for the `CELO_CORE_CONTRACTS` variable is detailed in this [gist](https://gist.github.com/fedor-ivn/c77030d09bd05349710450e0fcf00a1f).

  The JSON structure may change. To assemble the `CELO_CORE_CONTRACTS` environment variable, run `mix fetch_celo_core_contracts` in the root of the Blockscout repository. This task will index the chain from block `0` to the latest block number, providing the most up-to-date values.

  The JSON structure in the gist contains two main sections: `addresses` and `events`.

  * **addresses**: This section maps contract names to the list of respective addresses and the block number at which they were updated. For example:
    * `"Accounts"`: `[{ "address": "0xed7f51a34b4e71fbe69b3091fcf879cd14bd73a9", "updated_at_block_number": 574 }]`
    * `"Election"`: `[{ "address": "0x1c3edf937cfc2f6f51784d20deb1af1f9a8655fa", "updated_at_block_number": 592 }]`
  * **events**: This section maps contract addresses to the events associated with them, including any parameters and the block numbers at which these events were emitted. For example:
    * `"EpochRewards"`: `{ "0xb10ee11244526b94879e1956745ba2e35ae2ba20": { "CarbonOffsettingFundSet": [{ "address": "0x22579ca45ee22e2e16ddf72d955d6cf4c767b0ef", "updated_at_block_number": 15049265 }] } }`
    * `"FeeHandler"`: `{ "0x90d94229623a0a38826a4a7557a6d79acde43f76": { "BurnFractionSet": [{ "updated_at_block_number": 19732579, "value": 0.7999999999999999 }] } }`
</Accordion>

## Filecoin Management

<Info>
  Supported together with setting `CHAIN_TYPE=filecoin`
</Info>

| Variable                                                    | Description                                                                                                                                                                                                                                                                                                                                  | Parameters                                                                                              |
| ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `FILECOIN_NETWORK_PREFIX`                                   | Specifies the expected network prefix for Filecoin addresses. For more details, refer to the [Filecoin Spec](https://spec.filecoin.io/appendix/address/#section-appendix.address.network-prefix). Available values: `f` (for the mainnet), `t` (for testnets). Implemented in [#10468](https://github.com/blockscout/blockscout/pull/10468). | Version: v6.9.0+ <br />Default: `f` <br />Applications: API, Indexer                                    |
| `BERYX_API_TOKEN`                                           | [Beryx API](https://docs.zondax.ch/beryx-api) token, used for retrieving Filecoin native addressing information. Implemented in [#10468](https://github.com/blockscout/blockscout/pull/10468).                                                                                                                                               | Required: ✅ Version: v6.9.0+ <br />Default: (empty) <br />Applications: Indexer                         |
| `BERYX_API_BASE_URL`                                        | [Beryx API](https://docs.zondax.ch/beryx-api) base URL. Implemented in [#10468](https://github.com/blockscout/blockscout/pull/10468).                                                                                                                                                                                                        | Version: v6.9.0+ <br />Default: `https://api.zondax.ch/fil/data/v3/mainnet` <br />Applications: Indexer |
| `FILFOX_API_BASE_URL`                                       | [Filfox API](https://filfox.info/api/v1/docs/static/index.html) base URL. Implemented in [#11412](https://github.com/blockscout/blockscout/pull/11412).                                                                                                                                                                                      | Version: v7.0.0+ <br />Default: `https://filfox.info/api/v1` <br />Applications: Indexer                |
| `INDEXER_DISABLE_FILECOIN_ADDRESS_INFO_FETCHER`             | When set to `true`, Filecoin native addressing information will not be fetched, but addresses pending fetch will still be recorded in the database. Implemented in [#10468](https://github.com/blockscout/blockscout/pull/10468).                                                                                                            | Version: v6.9.0+ <br />Default: `false` <br />Applications: Indexer                                     |
| `INDEXER_FILECOIN_ADDRESS_INFO_CONCURRENCY`                 | Sets the maximum number of concurrent requests made to fetch Filecoin native addressing information. Implemented in [#10468](https://github.com/blockscout/blockscout/pull/10468).                                                                                                                                                           | Version: v6.9.0+ <br />Default: `1` <br />Applications: Indexer                                         |
| `MIGRATION_FILECOIN_PENDING_ADDRESS_OPERATIONS_BATCH_SIZE`  | Specifies the number of address records processed per batch during the backfill of pending address fetch operations. Implemented in [#11798](https://github.com/blockscout/blockscout/pull/11798).                                                                                                                                           | Version: v7.0.0+ <br />Default: `100` <br />Applications: Indexer                                       |
| `MIGRATION_FILECOIN_PENDING_ADDRESS_OPERATIONS_CONCURRENCY` | Specifies the number of concurrent processes used during the backfill of pending address fetch operations. Implemented in [#11798](https://github.com/blockscout/blockscout/pull/11798).                                                                                                                                                     | Version: v7.0.0+ <br />Default: `1` <br />Applications: Indexer                                         |

## Blackfort Management

<Info>
  Supported together with setting `CHAIN_TYPE=blackfort`
</Info>

| Variable                      | Description                                                                                                                              | Parameters                                                               |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `BLACKFORT_VALIDATOR_API_URL` | Variable to define the URL of the Blackfort Validator API. Implemented in [#10744](https://github.com/blockscout/blockscout/pull/10744). | Version: v6.9.0+ <br />Default: (empty) <br />Applications: API, Indexer |

## Arc Management

<Info>
  Supported together with setting `CHAIN_TYPE=arc`
</Info>

| Variable                                   | Description                                                                                                                                             | Parameters                                                                                               |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| `INDEXER_ARC_NATIVE_TOKEN_DECIMALS`        | Defines the number of decimals for Arc chain native token (e.g. USDC). Implemented in [#13452](https://github.com/blockscout/blockscout/pull/13452).    | Version: v9.3.0+ <br />Default: `6` <br />Applications: Indexer                                          |
| `INDEXER_ARC_NATIVE_TOKEN_CONTRACT`        | Arc chain native token contract address. Implemented in [#13452](https://github.com/blockscout/blockscout/pull/13452).                                  | Version: v9.3.0+ <br />Default: `0x3600000000000000000000000000000000000000` <br />Applications: Indexer |
| `INDEXER_ARC_NATIVE_TOKEN_SYSTEM_CONTRACT` | Arc chain system contract address emitting `NativeCoinTransferred` event. Implemented in [#13452](https://github.com/blockscout/blockscout/pull/13452). | Version: v9.3.0+ <br />Default: `0x1800000000000000000000000000000000000000` <br />Applications: Indexer |
