Skip to main content
This page is kept for archival purposes. Please See ENV variables and associated pages for updated info.

Previous ENV Page

The following are backend variables only.Frontend ENVs are available here.
You will find deprecated ENV vars on the Deprecated ENV Variables page.

Set ENV Variables with CLI

Use the export command to set variables. For example:
$ export ETHEREUM_JSONRPC_VARIANT=nethermind
$ export COIN=POA
$ export NETWORK=POA

Example ENV Variables Set

The following variables are set for the Gnosis Chain Blockscout Instance. Note that some variables are not included as they contain private information which should not be exposed.

Gnosis-Chain-Variables.txt

6KB

Full ENV Variables CSV file

Last updated 4 August, 2023.

Blockscout-ENV-variables.csv

50KB

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
Note: Before release 5.1.2, all environment variables of time format supported only integers in seconds (without dimensions) as values.

Available ENV Variables

General

VariableRequiredDescriptionDefaultVersionNeed recompileApplications
DATABASE_URLVariable to define the Postgres Database endpoint.(empty)allAPI, Indexer
TEST_DATABASE_URLVariable to define the endpoint of the Postgres Database that is used during testing. Implemented in #9662.(empty)v6.6.0+API, Indexer
ETHEREUM_JSONRPC_VARIANTTells the application which RPC Client the node is using (i.e. erigon, geth, nethermind, besu, filecoin, or anvil) (See Client Settings for more info)anvilallAPI, Indexer
ETHEREUM_JSONRPC_HTTP_URLThe RPC endpoint used to fetch blocks, transactions, receipts, tokens.localhost:8545allAPI, Indexer
DATABASE_READ_ONLY_API_URLVariable to define the Postgres Database read-only replica endpoint. If it is provided, most of the read queries from API v2 and UI would go through this endpoint.(empty)allAPI
TEST_DATABASE_READ_ONLY_API_URLVariable to define the endpoint of the Postgres Database read-only replica that is used during testing. If it is provided, most of the read queries from API v2 and UI would go through this endpoint. Implemented in #9662.(empty)v6.6.0+API
DATABASE_QUEUE_TARGETManagement of DB queue target. Implemented in #8991.50msv5.4.0+API, Indexer
ETHEREUM_JSONRPC_TRACE_URLThe RPC endpoint specifically for the Erigon/Geth/Nethermind/Besu client used by trace_block and trace_replayTransaction. This can be used to designate a tracing node.localhost:8545allAPI, Indexer
ETHEREUM_JSONRPC_WS_URLThe WebSockets RPC endpoint used to subscribe to the newHeads subscription alerting the indexer to fetch new blocks.ws://localhost:8546allIndexer
ETHEREUM_JSONRPC_TRANSPORTSpecifies the transport for Blockscout to connect to the Ethereum Node. Available transports are http and ipc. If ipc is selected, also set IPC_PATH variable.httpv3.1.0+API, Indexer
ETHEREUM_JSONRPC_HTTP_INSECUREIf true is set, allows insecure HTTP connections to the archive node. For instance, it allows to bypass expired SSL certificate at the archive node endpoint. Implemented in #6573(empty)v5.0.0+API, Indexer
ETHEREUM_JSONRPC_HTTP_TIMEOUTTimeout for ethereum json rpc http requests in seconds. Implemented in #708960v5.1.2+API, Indexer
ETHEREUM_JSONRPC_USERUser in basic auth for JSON RPC endpoint. Implemented in #6897(empty)v5.1.2+API, Indexer
ETHEREUM_JSONRPC_PASSWORDPassword in basic auth for JSON RPC endpoint. Implemented in #6897(empty)v5.1.2+API, Indexer
ETHEREUM_JSONRPC_HTTP_HEADERSCustom headers for JSON RPC endpoint in form of json object, example: {"x-api-key": "nbvkhadvnbkdfav", "x-id": "ndjkfvndfkjv"}. Implemented in #7898(empty)v5.2.1+API, Indexer
ETHEREUM_JSONRPC_FALLBACK_HTTP_URLFallback JSON RPC HTTP url. Implemented in #7246(empty)v5.1.4+API, Indexer
ETHEREUM_JSONRPC_FALLBACK_TRACE_URLFallback JSON RPC trace url. Implemented in #7246(empty)v5.1.4+API, Indexer
ETHEREUM_JSONRPC_FALLBACK_ETH_CALL_URLFallback JSON RPC eth_call url. Implemented in #9511(empty)v6.3.0+API, Indexer
ETHEREUM_JSONRPC_WAIT_PER_TIMEOUTWait time for each recent timeout from node. Implemented in #829220sv5.2.3+API, Indexer
ETHEREUM_JSONRPC_ETH_CALL_URLJSON RPC url for eth_call method. Implemented in #9112(empty)v6.0.0+API, Indexer
NETWORKEnvironment variable for the main EVM network such as Ethereum or POA.POAallAPI
SUBNETWORKEnvironment variable for the subnetwork such as Core or Sokol Network. This will be displayed as selected in the chains list dropdown.POA SokolallAPI
IPC_PATHPath to the IPC file of the running node if IPC transport is chosen.(empty)v2.1.1+API, Indexer
NETWORK_PATHUsed to set a network path other than what is displayed in the root directory. An example would be to add /eth/mainnet/ to the root directory./allAPI
BLOCKSCOUT_HOSTHost for API endpoint examples.localhostv2.1.0+API
BLOCKSCOUT_PROTOCOLUrl scheme for blockscout.in prod env https is used, in dev env http is usedv2.1.0+API
SECRET_KEY_BASEThe value is used to sign cookies. Use mix phx.gen.secret to generate a new Secret Key Base string to protect production assets.(empty)allAPI
CHECK_ORIGINUsed to check the origin of requests when the origin header is present. It defaults to false. In case of true, it will check against the host value.falseallAPI
PORTDefault port the application runs on is 4000.4000allAPI
COINThe coin here is checked via the CoinGecko API to obtain USD prices on graphs and other areas of the UI.POAallAPI, Indexer
COIN_NAMEDisplayed name of the coin. Also used for “Add chain to MetaMask” button and for Account functionality as native coin name in the email letters for watch list.(empty)v4.1.2+API
EMISSION_FORMATShould be set to POA if you have block emission identical to POA Network. This env var is used only if CHAIN_SPEC_PATH is set.DEFAULTv2.0.4+API, Indexer
CHAIN_SPEC_PATHChain specification path (absolute file system path or URL) to import block emission reward ranges and genesis account balances from. Geth- and OpenEthereum-style specs are supported.(empty)v2.0.4+API, Indexer
PRECOMPILED_CONTRACTS_CONFIG_PATHPrecompiled contracts description path (absolute file system path or URL) to import ABI and source code of the precompiled contracts.(empty) or /app/config/assets/precompiles-arbitrum.json for arbitrum chaintypev6.5.0+API, Indexer
SUPPLY_MODULEThis environment variable is used by the RSK in order to tell the application how to calculate the total supply of the chain. Available values is RSK(empty)allAPI, Indexer
POOL_SIZEVariable to define the number of database connections allowed excluding read-only API endpoints requests.50allAPI, Indexer
POOL_SIZE_APIVariable to define the number of database connections allowed for read-only API endpoints requests.50v4.1.0+API
ECTO_USE_SSLProduction environment variable to use SSL on Ecto queries.trueallAPI, Indexer
HEART_BEAT_TIMEOUTProduction environment variable to restart the application in the event of a crash.30allAPI, Indexer
HEART_COMMANDProduction environment variable to restart the application in the event of a crash.(empty)allAPI, Indexer
ELIXIR_VERSIONElixir version to install on the node before Blockscout deploy. It is used in bash script in Terraform / Ansible deployment script(empty)allAPI, Indexer
DISABLE_WEBAPPIf true, endpoints to webapp are hidden (compile-time). Also, enabling it makes notifications go through db_notifyfalsev2.0.3+API, Indexer
API_V1_READ_METHODS_DISABLEDIf true, read-only endpoints to API v1 are hidden (compile-time).falsev5.1.5+API
API_V1_WRITE_METHODS_DISABLEDIf true, write endpoints to API v1 are hidden (compile-time).falsev5.1.5+API
DISABLE_APIIf true, endpoint is not started. Set this if you want to use an indexer-only setup. Implemented in #10032falsev6.6.0+API, Indexer
WEBAPP_URLLink to web application instance, e.g. protocol://host/path(empty)v2.0.3+API
API_URLLink to API instance, e.g. protocol://host/path(empty)v2.0.3+API
API_V2_ENABLEDEnable API V2. Implemented in #6361 (v5.0.0+), default true since #8802truev5.3.2+API
API_SENSITIVE_ENDPOINTS_KEYAPI key to protect some sensitive endpoints. Implemented in #7355(empty)v5.1.5+API
CHECKSUM_ADDRESS_HASHESIf set to true, redirects to checksummed version of address hashes.truev3.1.0+API
RESTRICTED_LISTA comma-separated list of addresses to enable restricted access to them.(empty)v3.3.3+API
RESTRICTED_LIST_KEYA key to access addresses listed inRESTRICTED_LIST variable. Can be passed via query param to the page’s URL: ?key=...(empty)v3.3.3+API
CHAIN_TYPESpecifies the model of data, enables fetchers, specific to the chain. Available values are ethereum, optimism, arbitrum, polygon_zkevm, polygon_edge, rsk, shibarium, stability, suave, zetachain, filecoin, default.defaultv5.3.0+API, Indexer
CHAIN_IDChain ID of the network. For instance, 100 in the case of xDai chain.(empty)v3.7.0+API, Indexer
JSON_RPCJSON RPC endpoint of the chain for the WalletConnect integration. Implemented in #4931(empty)v4.1.0+API, Indexer
HEALTHY_BLOCKS_PERIODNew blocks indexed max delay in /health API endpoint. Time format. Implemented in #22945 mv2.0.2+API, Indexer
NEW_TAGSAdd public tag labels. More info in #6316(empty)v5.0.0+API
CUSTOM_CONTRACT_ADDRESSES_${tag_name}Specify addresses for some label. More info in #6316(empty)v5.0.0+API
SESSION_COOKIE_DOMAINValue of this env will be added to domain of session cookie. Implemented in #6544(empty)v5.0.0+API
DECODE_NOT_A_CONTRACT_CALLSAllows to decode contract calls directed to addresses which are not contracts. Implemented in #6541falsev5.1.0+API
EIP_1559_ELASTICITY_MULTIPLIEREIP-1559 elasticity multiplier. Implemented in #72532v5.1.3+API
EIP_1559_BASE_FEE_MAX_CHANGE_DENOMINATOREIP-1559 base fee max change denominator. Implemented in #92028v6.2.0+API
TOKEN_INSTANCE_OWNER_MIGRATION_CONCURRENCYConcurrency of new fields backfiller implemented in #83865v5.3.0+API, Indexer
TOKEN_INSTANCE_OWNER_MIGRATION_BATCH_SIZEBatch size of new fields backfiller implemented in #838650v5.3.0+API, Indexer
TOKEN_INSTANCE_OWNER_MIGRATION_ENABLEDEnable of backfiller from #8386 implemented in #8752falsev5.3.2+API, Indexer
TOKEN_ID_MIGRATION_FIRST_BLOCKBottom block for token id migration. Implemented in #63910v5.0.0+API, Indexer
TOKEN_ID_MIGRATION_CONCURRENCYNumber of workers performing the token id migration. Implemented in #63911v5.0.0+API, Indexer
TOKEN_ID_MIGRATION_BATCH_SIZEInterval of token transfer block numbers processed by a token id migration worker at a time. Implemented in #6391500v5.0.0+API, Indexer
ADDRESSES_TABS_COUNTERS_TTLTTL for cached tabs counters (works only for counters which are < 51, if counter >= 51, then ttl == :infinity). Implemented in #851210mv5.3.0+API
API_INTERNAL_TRANSACTIONS_INDEXING_FINISHED_THRESHOLDIn the case when the 1st tx in the chain already has internal transactions, If the number of blocks in pending_block_operations is less than the value in this env var, Blockscout will consider, that indexing of internal transactions finished, otherwise, it will consider, that indexing is still taking place and the indexing banner will appear at the top. Implemented in #7576.1000v5.2.0+API
DATABASE_EVENT_URLVariable to define the Postgres Database endpoint that will be used by event listener process. Applicable for separate indexer and API setup. More info in related PR. Implemented in #10164.(empty)v6.7.0+API

Indexer management

VariableRequiredDescriptionDefaultVersionApplication
BLOCK_TRANSFORMERTransformer for blocks: base or clique.basev1.3.4+Indexer
DISABLE_INDEXERIf true, indexer application doesn’t run.falsev2.0.3+API, Indexer
INDEXER_HIDE_INDEXING_PROGRESS_ALERTIf true, indexer progress alert will be disabled even if initial catchup indexing is still in place. Implemented in #7360.falsev5.1.5+API
INDEXER_DISABLE_PENDING_TRANSACTIONS_FETCHERIf true, pending transactions fetcher is disabled.falsev4.1.2+Indexer
INDEXER_DISABLE_INTERNAL_TRANSACTIONS_FETCHERIf true, internal transactions fetcher is disabled.falsev4.1.2+Indexer
INDEXER_DISABLE_BLOCK_REWARD_FETCHERif true, block rewards fetcher is disabled.falsev4.1.3+Indexer
INDEXER_DISABLE_ADDRESS_COIN_BALANCE_FETCHERIf true, coin balances fetcher is disabled.falsev4.1.3+Indexer
INDEXER_DISABLE_CATALOGED_TOKEN_UPDATER_FETCHERIf true, cataloged tokens metadata fetcher is disabled.falsev4.1.3+Indexer
INDEXER_MEMORY_LIMITMemory soft limit for the indexer.1Gbv4.1.3+API, Indexer
INDEXER_EMPTY_BLOCKS_SANITIZER_BATCH_SIZEBatch size for empty block sanitizer (re-fetcher).100v4.1.3+Indexer
INDEXER_CATCHUP_BLOCKS_BATCH_SIZEBatch size for blocks catchup fetcher. Implemented in #6196.10v5.0.0+Indexer
INDEXER_CATCHUP_BLOCKS_CONCURRENCYConcurrency for blocks catchup fetcher. Implemented in #6196.10v5.0.0+Indexer
INDEXER_DISABLE_EMPTY_BLOCKS_SANITIZEREmpty blocks sanitizer is disabled if truefalsev5.1.2+Indexer
DISABLE_REALTIME_INDEXERIf true, realtime fetcher doesn’t runfalsev4.1.6+Indexer
FIRST_BLOCKThe block number, where import of blocks by catchup fetcher begins from.0v1.3.8+API, Indexer
LAST_BLOCKThe block number, where import of blocks by catchup fetcher stops.(empty)v2.0.3+Indexer
TRACE_FIRST_BLOCKThe block number, where indexing of internal transactions begins from.0v4.1.0+API, Indexer
TRACE_LAST_BLOCKThe block number, where indexing of internal transactions stops.(empty)v4.1.0+API, Indexer
BLOCK_RANGESBlock ranges to import by catchup fetcher. Example: BLOCK_RANGES="1..3,123..500,30..50,500..latest". Implemented in #5783v4.1.7+Indexer
FETCH_REWARDS_WAYTells the application how to calculate block rewards, by fetching via json_rpc (trace_block) or manual by block params (manual).trace_blockv4.1.4+Indexer
IPFS_GATEWAY_URLIPFS gateway url for fetching token instances metadata from IPFS including token instance icon.https://ipfs.io/ipfsv5.3.0+Indexer
IPFS_GATEWAY_URL_PARAM_KEYThe key of the parameter to add to IPFS gateway url. Implemented in #9898.(empty))v6.5.0+Indexer
IPFS_GATEWAY_URL_PARAM_VALUEThe value of the parameter to add to IPFS gateway url. Implemented in #9898.(empty))v6.5.0+Indexer
IPFS_GATEWAY_URL_PARAM_LOCATIONWhether to add extra params: to query string or to the headers. Available values: query/header. Implemented in #9898.(empty))v6.5.0+Indexer
ETHEREUM_JSONRPC_DEBUG_TRACE_TRANSACTION_TIMEOUTTimeout for debug_traceTransaction/debug_traceBlockByNumber JSON RPC method requests in case of geth archive node. Supported time formats: https://pkg.go.dev/time#ParseDuration. Introduced in #55055sv4.1.3+Indexer
ETHEREUM_JSONRPC_DISABLE_ARCHIVE_BALANCESIf true, all the requests with the method eth_getBalance with any block as parameter but latest are ignored. Implemented in #6001falsev5.0.0+API, Indexer
ETHEREUM_JSONRPC_PENDING_TRANSACTIONS_TYPEDefines which method will be used for fetching pending transactions: default - default method for fetching internal transactions for current ETHEREUM_JSONRPC_VARIANT, geth - txpool_content method will be used, parity - parity_pendingTransactions will be used. Implemented in #6001defaultv5.0.0+Indexer
INDEXER_INTERNAL_TRANSACTIONS_BATCH_SIZEBatch size for internal transactions fetcher. Implemented in #6450.10v5.0.0+Indexer
INDEXER_INTERNAL_TRANSACTIONS_CONCURRENCYConcurrency for internal transactions fetcher. Implemented in #6450.4v5.0.0+Indexer
INDEXER_BLOCK_REWARD_BATCH_SIZEBatch size for block reward fetcher. Implemented in #6952.10v5.1.2+Indexer
INDEXER_BLOCK_REWARD_CONCURRENCYConcurrency for block reward fetcher. Implemented in #6952.4v5.1.2+Indexer
INDEXER_RECEIPTS_BATCH_SIZEBatch size for transaction receipts fetcher. Implemented in #6454.250v5.0.0+Indexer
INDEXER_RECEIPTS_CONCURRENCYConcurrency for transaction receipts fetcher. Implemented in #6454.10v5.0.0+Indexer
INDEXER_COIN_BALANCES_BATCH_SIZEBatch size for coin balances fetcher. Implemented in #6454.100v5.0.0+Indexer
INDEXER_COIN_BALANCES_CONCURRENCYConcurrency for coin balances fetcher. Implemented in #6454.4v5.0.0+Indexer
INDEXER_TOKEN_CONCURRENCYConcurrency for token fetcher. Implemented in #8167.10v5.2.2Indexer
INDEXER_TOKEN_BALANCES_BATCH_SIZEBatch size for token balances fetcher. Implemented in #7439.100v5.1.5+Indexer
INDEXER_TOKEN_BALANCES_CONCURRENCYConcurrency for token balances fetcher. Implemented in #8167.10v5.2.2Indexer
INDEXER_TX_ACTIONS_ENABLEIf true, transaction action indexer is active. Implemented in #6582.falsev5.1.0+Indexer
INDEXER_TX_ACTIONS_MAX_TOKEN_CACHE_SIZEMaximum number of items in an internal cache of tx actions indexing process (to limit memory consumption). Implemented in #6582.100000v5.1.0+Indexer
INDEXER_TX_ACTIONS_REINDEX_FIRST_BLOCKThe first block of a block range for historical indexing or reindexing of tx actions. Implemented in #6582.(empty)v5.1.0+Indexer
INDEXER_TX_ACTIONS_REINDEX_LAST_BLOCKThe last block of a block range for historical indexing or reindexing of tx actions. Implemented in #6582.(empty)v5.1.0+Indexer
INDEXER_TX_ACTIONS_REINDEX_PROTOCOLSComma-separated names of protocols which should be indexed or reindexed on historical blocks defined by the range. Example: uniswap_v3,zkbob - only these protocols will be indexed or reindexed for the defined block range. If the value is empty string (or not defined), all supported protocols will be indexed/reindexed. This option is not applicable to realtime and catchup fetchers (it always indexes all supported protocols). Implemented in #6582.(empty)v5.1.0+Indexer
INDEXER_TX_ACTIONS_AAVE_V3_POOL_CONTRACTPool contract address for Aave v3 protocol. If not defined, Aave transaction actions are ignored by the indexer. Implemented in #7185.(empty)v5.1.3+Indexer
INDEXER_TX_ACTIONS_UNISWAP_V3_FACTORY_CONTRACTUniswapV3Factory contract address. Implemented in #7312.0x1F98431c8aD98523631AE4a59f267346ea31F984v5.1.4+Indexer
INDEXER_TX_ACTIONS_UNISWAP_V3_NFT_POSITION_MANAGER_CONTRACTNonfungiblePositionManager contract address for Uniswap v3. Implemented in #7312.0xC36442b4a4522E871399CD717aBDD847Ab11FE88v5.1.4+Indexer
INDEXER_CATCHUP_MISSING_RANGES_BATCH_SIZEBatch size for missing ranges collector. Implemented in #6583.100000v5.0.0+Indexer
MIN_MISSING_BLOCK_NUMBER_BATCH_SIZEBatch size for min missing block number updater. Implemented in #6583.100000v5.0.0+API, Indexer
INDEXER_INTERNAL_TRANSACTIONS_TRACER_TYPETracer type for debug_traceTransaction/debug_traceBlockByNumber requests for geth-like nodes. Possible values are: js to use custom Blockscout js tracer, call_tracer to use built-in callTracer geth tracer, opcode to use built-in Struct/opcode logger geth tracer, polygon_edge to work with Polygon edge nodes. Implemented in #6721, #7513call_tracerv5.1.0+Indexer
INDEXER_TOKEN_INSTANCE_RETRY_MAX_REFETCH_INTERVALMaximum interval between attempts to fetch token instance metadata. Time format. Implemented in #10027.168hv6.7.0+Indexer
INDEXER_TOKEN_INSTANCE_RETRY_EXPONENTIAL_TIMEOUT_BASEBase to calculate exponential timeout. Implemented in #10027.2v6.7.0+Indexer
INDEXER_TOKEN_INSTANCE_RETRY_EXPONENTIAL_TIMEOUT_COEFFCoefficient to calculate exponential timeout. Implemented in #10027.100v6.7.0+Indexer
INDEXER_TOKEN_INSTANCE_RETRY_CONCURRENCYConcurrency for retry token instance fetcher. Implemented in #7286.10v5.1.4+Indexer
INDEXER_TOKEN_INSTANCE_REALTIME_CONCURRENCYConcurrency for realtime token instance fetcher. Implemented in #7286.10v5.1.4+Indexer
INDEXER_TOKEN_INSTANCE_SANITIZE_CONCURRENCYConcurrency for sanitize token instance fetcher. Implemented in #7286.10v5.1.4+Indexer
INDEXER_DISABLE_TOKEN_INSTANCE_RETRY_FETCHERIf true, retry token instance fetcher doesn’t runfalsev5.1.4+Indexer
INDEXER_DISABLE_TOKEN_INSTANCE_REALTIME_FETCHERIf true, realtime token instance fetcher doesn’t runfalsev5.1.4+Indexer
INDEXER_TOKEN_INSTANCE_REALTIME_RETRY_ENABLEDIf true, realtime token instance fetcher will retry once on 404 and 500 error. Implemented in #10036.falsev6.6.0+Indexer
INDEXER_TOKEN_INSTANCE_REALTIME_RETRY_TIMEOUTTimeout for retry set by INDEXER_TOKEN_INSTANCE_REALTIME_RETRY_ENABLED. Time format. Implemented in #10036.5sv6.6.0+Indexer
INDEXER_DISABLE_TOKEN_INSTANCE_SANITIZE_FETCHERIf true, sanitize token instance fetcher doesn’t runfalsev5.1.4+Indexer
INDEXER_TOKEN_INSTANCE_USE_BASE_URI_RETRYIf true, and request to tokenURI(tokenId) failed with VM execution error, Blockscout will make request to baseURI and try to request metadata from baseURI + tokenIdfalsev6.2.0+Indexer
INDEXER_REALTIME_FETCHER_MAX_GAPMax gap between consecutive latest blocks that will be filled by realtime fetcher. Implemented in #73931000v5.1.5+Indexer
INDEXER_DISABLE_WITHDRAWALS_FETCHERIf true, withdrawals fetcher is disabled. Implemented in #6694.truev5.1.5+Indexer
WITHDRAWALS_FIRST_BLOCKThe block number, where import of withdrawals by catchup fetcher begins from. Should be the block where withdrawals upgrade occurred on the chain. Implemented in #6694.(empty)v5.1.5+Indexer
INDEXER_CATCHUP_BLOCK_INTERVALInterval between blocks catchup fetcher tasks. Implemented in #7489.5sv5.1.5+Indexer
INDEXER_FETCHER_INIT_QUERY_LIMITLimit for all fetchers init queries. Implemented in #7697.100v5.2.0+Indexer
INDEXER_TOKEN_INSTANCE_RETRY_BATCH_SIZEBatch size for retry token instance fetcher. Implemented in #831310v5.2.3+Indexer
INDEXER_TOKEN_INSTANCE_REALTIME_BATCH_SIZEBatch size for realtime token instance fetcher. Implemented in #8313.1v5.2.3+Indexer
INDEXER_TOKEN_INSTANCE_SANITIZE_BATCH_SIZEBatch size for sanitize token instance fetcher. Implemented in #8313.10v5.2.3+Indexer
INDEXER_TOKEN_BALANCES_FETCHER_INIT_QUERY_LIMITLimit for token balance fetcher init queries. Implemented in #8459.100000v5.2.3+Indexer
INDEXER_COIN_BALANCES_FETCHER_INIT_QUERY_LIMITLimit for coin balance fetcher init queries. Implemented in #7996.2000v5.3.0+Indexer
INDEXER_DISABLE_TOKEN_INSTANCE_LEGACY_SANITIZE_FETCHERIf true, legacy sanitize token instance fetcher doesn’t run. Appeared in #8386truev5.3.0+Indexer
INDEXER_TOKEN_INSTANCE_LEGACY_SANITIZE_CONCURRENCYConcurrency for legacy sanitize token instance fetcher doesn’t run. Appeared in #83862v5.4.0+Indexer
INDEXER_TOKEN_INSTANCE_LEGACY_SANITIZE_BATCH_SIZEBatch size for legacy sanitize token instance fetcher doesn’t run. Appeared in #838610v5.3.0+Indexer
INDEXER_DISABLE_TOKEN_INSTANCE_ERC_1155_SANITIZE_FETCHERIf true, erc-1155-sanitize token instance fetcher doesn’t run. Implemented in #9226.falsev6.2.0+Indexer
INDEXER_DISABLE_TOKEN_INSTANCE_ERC_721_SANITIZE_FETCHERIf true, erc-721-sanitize token instance fetcher doesn’t run. Implemented in #9226.falsev6.2.0+Indexer
INDEXER_TOKEN_INSTANCE_ERC_1155_SANITIZE_CONCURRENCYConcurrency for erc-1155-sanitize token instance fetcher. Implemented in #9226.2v6.2.0+Indexer
INDEXER_TOKEN_INSTANCE_ERC_721_SANITIZE_CONCURRENCYConcurrency for erc-721-sanitize token instance fetcher. Implemented in #9226.2v6.2.0+Indexer
INDEXER_TOKEN_INSTANCE_ERC_1155_SANITIZE_BATCH_SIZEBatch size for erc-1155-sanitize token instance fetcher. Implemented in #9226.10v6.2.0+Indexer
INDEXER_TOKEN_INSTANCE_ERC_721_SANITIZE_BATCH_SIZEBatch size for erc-721-sanitize token instance fetcher. Implemented in #9226.10v6.2.0+Indexer
INDEXER_EMPTY_BLOCKS_SANITIZER_INTERVALInterval for empty block sanitizer. Implemented in #86585mv5.3.0+Indexer
ETHEREUM_JSONRPC_ARCHIVE_BALANCES_WINDOWMax block number gap from latest for which balances requests can be processed when ETHEREUM_JSONRPC_DISABLE_ARCHIVE_BALANCES env var is set to true. Implemented in #8673200v5.3.1+API, Indexer
DISABLE_CATCHUP_INDEXERIf true, catchup fetcher doesn’t runfalsev5.3.2+Indexer
TRACE_BLOCK_RANGESBlock ranges for traceable blocks. Example: TRACE_BLOCK_RANGES="1..3,123..500,30..50,500..latest". Implemented in #8960(empty)v5.4.0+API, Indexer
ETHEREUM_JSONRPC_GETH_TRACE_BY_BLOCKEnable tracing by block for geth variant. Implemented in #9072falsev6.1.0+Indexer
INDEXER_GRACEFUL_SHUTDOWN_PERIODTime that will be given to the block fetchers when stopping the application before they are killed. Implemented in #97295mv6.5.0+Indexer
MISSING_BALANCE_OF_TOKENS_WINDOW_SIZEMinimal blocks count until the next token balance request will be executed for tokens that doesn’t implement balanceOf function. Implemented in #10142100v6.7.0+Indexer
ETHEREUM_JSONRPC_GETH_ALLOW_EMPTY_TRACESAllow transactions to not have internal transactions. Implemented in #10200falsev6.7.0+Indexer
INDEXER_DISABLE_TOKEN_INSTANCE_LEGACY_SANITIZE_FETCHERIf true, legacy sanitize token instance fetcher doesn’t run. Appeared in #8386truev5.3.0+Indexer
INDEXER_TOKEN_INSTANCE_LEGACY_SANITIZE_CONCURRENCYConcurrency for legacy sanitize token instance fetcher doesn’t run. Appeared in #83862v5.4.0+Indexer
INDEXER_TOKEN_INSTANCE_LEGACY_SANITIZE_BATCH_SIZEBatch size for legacy sanitize token instance fetcher doesn’t run. Appeared in #838610v5.3.0+Indexer

Denormalization management

VariableRequiredDescriptionDefaultVersionApplication
DENORMALIZATION_MIGRATION_BATCH_SIZENumber of transactions to denormalize (add block timestamp and consensus) in the batch.500v6.0.0+API, Indexer
DENORMALIZATION_MIGRATION_CONCURRENCYNumber of parallel denormalization transaction batches processing.10v6.0.0+API, Indexer
TOKEN_TRANSFER_TOKEN_TYPE_MIGRATION_BATCH_SIZENumber of token transfers to denormalize (add token_type) in the batch.100v6.3.0+API, Indexer
TOKEN_TRANSFER_TOKEN_TYPE_MIGRATION_CONCURRENCYNumber of parallel denormalization token transfer batches processing.1v6.3.0+API, Indexer
SANITIZE_INCORRECT_NFT_BATCH_SIZENumber of token transfers to sanitize in the batch.100v6.3.0+API, Indexer
SANITIZE_INCORRECT_NFT_CONCURRENCYNumber of parallel sanitizing token transfer batches processing.1v6.3.0+API, Indexer

Sanitizers management

VariableRequiredDescriptionDefaultVersionApplication
SANITIZE_INCORRECT_WETH_BATCH_SIZENumber of token transfers to sanitize in the batch. Implemented in #10134100v6.7.0+API, Indexer
SANITIZE_INCORRECT_WETH_CONCURRENCYNumber of parallel sanitizing token transfer batches processing. Implemented in #101341v6.7.0+API, Indexer

Ethereum Management

VariableRequiredDescriptionDefaultVersionApplication
INDEXER_BEACON_RPC_URLThe Beacon Chain RPC endpoint used to fetch blob sidecars. Required if INDEXER_OPTIMISM_L1_BATCH_START_BLOCK is not empty. Implemented in #9168.http://localhost:5052v6.2.0+Indexer
INDEXER_DISABLE_BEACON_BLOB_FETCHERIf true the fetcher of Beacon data blobs won’t be started, new transaction and block fields still will be extracted. Implemented in #9168.falsev6.2.0+Indexer
INDEXER_BEACON_BLOB_FETCHER_SLOT_DURATIONSlot duration in the Beacon Chain in seconds. Required if INDEXER_OPTIMISM_L1_BATCH_START_BLOCK is not empty. Implemented in #9168.12v6.2.0+Indexer
INDEXER_BEACON_BLOB_FETCHER_REFERENCE_SLOTAny past finalized Beacon Chain slot number. Used as reference for blob inclusion slot calculations. Required if INDEXER_OPTIMISM_L1_BATCH_START_BLOCK is not empty. Implemented in #9168.8000000v6.2.0+Indexer
INDEXER_BEACON_BLOB_FETCHER_REFERENCE_TIMESTAMPUTC timestamp of the Beacon Chain slot specified in INDEXER_BEACON_BLOB_FETCHER_REFERENCE_SLOT. Used as reference for blob inclusion slot calculations. Required if INDEXER_OPTIMISM_L1_BATCH_START_BLOCK is not empty. Implemented in #9168.1702824023v6.2.0+Indexer
INDEXER_BEACON_BLOB_FETCHER_START_BLOCKBeacon 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.19200000v6.2.0+Indexer
INDEXER_BEACON_BLOB_FETCHER_END_BLOCKBeacon 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.0v6.2.0+Indexer

Polygon Edge Management

VariableRequiredDescriptionDefaultVersionApplication
INDEXER_POLYGON_EDGE_L1_RPCThe RPC endpoint for L1 used to fetch deposit or withdrawal events. Implemented in #8180.(empty)v5.3.0+Indexer
INDEXER_POLYGON_EDGE_L1_EXIT_HELPER_CONTRACTThe address of ExitHelper contract on L1 (root chain) used to fetch withdrawal exits. Required for withdrawal events indexing. Implemented in #8180.(empty)v5.3.0+Indexer
INDEXER_POLYGON_EDGE_L1_WITHDRAWALS_START_BLOCKThe number of start block on L1 (root chain) to index withdrawal exits. If the table of withdrawal exits is not empty, the process will continue indexing from the last indexed message. If empty or not defined, the withdrawal exits are not indexed. Implemented in #8180.(empty)v5.3.0+Indexer
INDEXER_POLYGON_EDGE_L1_STATE_SENDER_CONTRACTThe address of StateSender contract on L1 (root chain) used to fetch deposits. Required for deposit events indexing. Implemented in #8180.(empty)v5.3.0+Indexer
INDEXER_POLYGON_EDGE_L1_DEPOSITS_START_BLOCKThe number of start block on L1 (root chain) to index deposits. If the table of deposits is not empty, the process will continue indexing from the last indexed message. If empty or not defined, the deposits are not indexed. Implemented in #8180.(empty)v5.3.0+Indexer
INDEXER_POLYGON_EDGE_L2_STATE_SENDER_CONTRACTThe address of L2StateSender contract on L2 (child chain) used to fetch withdrawals. Required for withdrawal events indexing. Implemented in #8180.(empty)v5.3.0+Indexer
INDEXER_POLYGON_EDGE_L2_WITHDRAWALS_START_BLOCKThe number of start block on L2 (child chain) to index withdrawals. If the table of withdrawals is not empty, the process will fill gaps and then continue indexing from the last indexed message. If empty or not defined, the withdrawals are not indexed. Implemented in #8180.(empty)v5.3.0+Indexer
INDEXER_POLYGON_EDGE_L2_STATE_RECEIVER_CONTRACTThe address of StateReceiver contract on L2 (child chain) used to fetch deposit executes. Required for deposit events indexing. Implemented in #8180.(empty)v5.3.0+Indexer
INDEXER_POLYGON_EDGE_L2_DEPOSITS_START_BLOCKThe number of start block on L2 (child chain) to index deposit executes. If the table of deposit executes is not empty, the process will fill gaps and then continue indexing from the last indexed message. If empty or not defined, the deposit executes are not indexed. Implemented in #8180.(empty)v5.3.0+Indexer
INDEXER_POLYGON_EDGE_ETH_GET_LOGS_RANGE_SIZEBlock range size for eth_getLogs request in Polygon Edge indexer modules. Implemented in #8180.(empty)v5.3.0+Indexer

Rootstock management

VariableRequiredDescriptionDefaultVersionApplication
ROOTSTOCK_REMASC_ADDRESSThe address hash of remasc address on Rootstock chain. Implemented in #8542.v5.3.0+API
ROOTSTOCK_BRIDGE_ADDRESSThe address hash of bridge address on Rootstock chain. Implemented in #8542.v5.3.0+API
INDEXER_DISABLE_ROOTSTOCK_DATA_FETCHERIf 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.v5.3.2+Indexer
INDEXER_ROOTSTOCK_DATA_FETCHER_INTERVALThe 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.v5.3.2+Indexer
INDEXER_ROOTSTOCK_DATA_FETCHER_BATCH_SIZEThe number of requests in one JSON-RPC batch request, used to configure the load or RPS on JSON-RPC node. Implemented in #8742.v5.3.2+Indexer
INDEXER_ROOTSTOCK_DATA_FETCHER_CONCURRENCYThe number of simultaneous requests to the JSON-RPC node, used to configure the load or RPS on JSON-RPC node. Implemented in #8742.v5.3.2+Indexer
INDEXER_ROOTSTOCK_DATA_FETCHER_DB_BATCH_SIZEThe number of blocks that are fetched from the database in one database query. Implemented in #8742.v5.3.2+Indexer

Shibarium Management

VariableRequiredDescriptionDefaultVersionApplication
INDEXER_SHIBARIUM_L1_RPCThe RPC endpoint for L1 used to fetch deposit or withdrawal events. Implemented in #8929.(empty)v6.1.0+Indexer
INDEXER_SHIBARIUM_L1_START_BLOCKThe 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.(empty)v6.1.0+Indexer
INDEXER_SHIBARIUM_L1_DEPOSIT_MANAGER_CONTRACTThe address of DepositManagerProxy contract on L1 used to fetch BONE token deposits. Required for L1 events indexing. Implemented in #8929.(empty)v6.1.0+Indexer
INDEXER_SHIBARIUM_L1_ETHER_PREDICATE_CONTRACTThe address of EtherPredicateProxy contract on L1 used to fetch ETH deposits and withdrawals. Required for L1 events indexing. Implemented in #8929.(empty)v6.1.0+Indexer
INDEXER_SHIBARIUM_L1_ERC20_PREDICATE_CONTRACTThe address of ERC20PredicateProxy contract on L1 used to fetch ERC20 token deposits and withdrawals. Required for L1 events indexing. Implemented in #8929.(empty)v6.1.0+Indexer
INDEXER_SHIBARIUM_L1_ERC721_PREDICATE_CONTRACTThe address of ERC721PredicateProxy contract on L1 used to fetch ERC721 token deposits and withdrawals. Optional for L1 events indexing. Implemented in #8929.(empty)v6.1.0+Indexer
INDEXER_SHIBARIUM_L1_ERC1155_PREDICATE_CONTRACTThe address of ERC1155PredicateProxy contract on L1 used to fetch ERC1155 token deposits and withdrawals. Optional for L1 events indexing. Implemented in #8929.(empty)v6.1.0+Indexer
INDEXER_SHIBARIUM_L1_WITHDRAW_MANAGER_CONTRACTThe address of WithdrawManagerProxy contract on L1 used to fetch BONE token withdrawals. Required for L1 events indexing. Implemented in #8929.(empty)v6.1.0+Indexer
INDEXER_SHIBARIUM_L2_START_BLOCKThe 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.(empty)v6.1.0+Indexer
INDEXER_SHIBARIUM_L2_CHILD_CHAIN_CONTRACTThe address of ChildChain contract on L2 used to fetch BONE token deposits. Required for L2 events indexing. Implemented in #8929.(empty)v6.1.0+Indexer
INDEXER_SHIBARIUM_L2_WETH_CONTRACTThe address of WETH contract on L2 used to fetch ETH deposits and withdrawals. Required for L2 events indexing. Implemented in #8929.(empty)v6.1.0+Indexer
INDEXER_SHIBARIUM_L2_BONE_WITHDRAW_CONTRACTThe address of a contract which emits Withdraw event on L2. Used to fetch BONE token withdrawals. Required for L2 events indexing. Implemented in #8929.(empty)v6.1.0+Indexer

Polygon zkEVM Rollup management

VariableRequiredDescriptionDefaultVersionApplication
INDEXER_POLYGON_ZKEVM_BATCHES_ENABLEDEnables Polygon zkEVM batches fetcher. Implemented in #7584.falsev5.3.1+Indexer
INDEXER_POLYGON_ZKEVM_BATCHES_CHUNK_SIZEThe number of Polygon zkEVM batches in one chunk when reading them from RPC. Implemented in #7584.20v5.3.1+Indexer
INDEXER_POLYGON_ZKEVM_BATCHES_RECHECK_INTERVALThe latest batch rechecking interval, seconds. Implemented in #7584.60v5.3.1+Indexer
INDEXER_POLYGON_ZKEVM_L1_RPCThe RPC endpoint for L1 used to fetch Deposit or Withdrawal bridge events. Implemented in #9098.v6.2.0+Indexer
INDEXER_POLYGON_ZKEVM_L1_BRIDGE_START_BLOCKThe number of a start block on L1 to index L1 bridge 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 #9098.v6.2.0+Indexer
INDEXER_POLYGON_ZKEVM_L1_BRIDGE_CONTRACTThe address of PolygonZkEVMBridgeV2 contract on L1 used to fetch L1 bridge events. Required for L1 bridge events indexing. Implemented in #9098.v6.2.0+Indexer
INDEXER_POLYGON_ZKEVM_L1_BRIDGE_NETWORK_IDL1 Network ID in terms of Polygon zkEVM bridge (0 = Ethereum Mainnet, 1 = Polygon zkEVM, 2 = Astar zkEVM, etc.). Required if INDEXER_POLYGON_ZKEVM_L1_BRIDGE_START_BLOCK or INDEXER_POLYGON_ZKEVM_L2_BRIDGE_START_BLOCK is defined. Implemented in #9637.v6.4.0+Indexer
INDEXER_POLYGON_ZKEVM_L1_BRIDGE_ROLLUP_INDEXL1 Rollup index in terms of Polygon zkEVM bridge (0 = Polygon zkEVM, 1 = Astar zkEVM, etc.). Not defined if L1 is Ethereum Mainnet. Required if L1 is not Ethereum Mainnet and INDEXER_POLYGON_ZKEVM_L1_BRIDGE_START_BLOCK or INDEXER_POLYGON_ZKEVM_L2_BRIDGE_START_BLOCK is defined. Implemented in #9637.v6.4.0+Indexer
INDEXER_POLYGON_ZKEVM_L1_BRIDGE_NATIVE_SYMBOLThe symbol of the native coin on L1 to display it in the table of the bridge Deposits and Withdrawals on UI. Implemented in #9098.ETHv6.2.0+Indexer
INDEXER_POLYGON_ZKEVM_L1_BRIDGE_NATIVE_DECIMALSThe number of decimals to correctly display an amount of native coins for some Deposit or Withdrawal bridge operations on UI. Implemented in #9098.18v6.2.0+Indexer
INDEXER_POLYGON_ZKEVM_L2_BRIDGE_START_BLOCKThe number of a start block on L2 to index L2 bridge 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 #9098.v6.2.0+Indexer
INDEXER_POLYGON_ZKEVM_L2_BRIDGE_CONTRACTThe address of PolygonZkEVMBridgeV2 contract on L2 used to fetch L2 bridge events. Required for L2 bridge events indexing. Implemented in #9098.v6.2.0+Indexer
INDEXER_POLYGON_ZKEVM_L2_BRIDGE_NETWORK_IDL2 Network ID in terms of Polygon zkEVM bridge (1 = Polygon zkEVM, 2 = Astar zkEVM, etc.). Required if INDEXER_POLYGON_ZKEVM_L1_BRIDGE_START_BLOCK or INDEXER_POLYGON_ZKEVM_L2_BRIDGE_START_BLOCK is defined. Implemented in #9637.v6.4.0+Indexer
INDEXER_POLYGON_ZKEVM_L2_BRIDGE_ROLLUP_INDEXL2 Rollup index in terms of Polygon zkEVM bridge (0 = Polygon zkEVM, 1 = Astar zkEVM, etc.). Required if INDEXER_POLYGON_ZKEVM_L1_BRIDGE_START_BLOCK or INDEXER_POLYGON_ZKEVM_L2_BRIDGE_START_BLOCK is defined. Implemented in #9637.v6.4.0+Indexer

Optimism Rollup Management

Please note that these Optimism-related variables are only supported together with setting CHAIN_TYPE=optimism.
VariableRequiredDescriptionDefaultVersionApplication
INDEXER_OPTIMISM_L1_RPCThe RPC endpoint for L1 used to fetch transaction batches, output roots, deposits, or withdrawal events. Implemented in #6980.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L1_PORTAL_CONTRACTThe address of OptimismPortal contract on L1 used to fetch deposits and withdrawal events. Required for deposits and withdrawal events indexing. Implemented in #6980.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L1_BATCH_START_BLOCKThe number of start block on L1 to index transaction batches. If the table of batches is not empty, the process will continue indexing from the last indexed batch. Implemented in #6980.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L1_BATCH_INBOXThe inbox address to index transaction batches on L1. Required if INDEXER_OPTIMISM_L1_BATCH_START_BLOCK is not empty. Implemented in #6980.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L1_BATCH_SUBMITTERThe batch submitter address to index transaction batches on L1. Required if INDEXER_OPTIMISM_L1_BATCH_START_BLOCK is not empty. Implemented in #6980.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L1_BATCH_BLOCKSCOUT_BLOBS_API_URLDefines a URL to Blockscout Blobs API to retrieve L1 blobs from that. Example for Sepolia: https://eth-sepolia.blockscout.com/api/v2/blobs. Required if INDEXER_OPTIMISM_L1_BATCH_START_BLOCK is not empty. Implemented in #9571.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L1_BATCH_BLOCKS_CHUNK_SIZEBlocks chunk size to send batch RPC requests. Implemented in #6980.4v6.3.0+Indexer
INDEXER_OPTIMISM_L2_BATCH_GENESIS_BLOCK_NUMBERL2 genesis block number for Optimism chain. Required if INDEXER_OPTIMISM_L1_BATCH_START_BLOCK is defined. The block number can be found at superchain registry. Example. Implemented in #9260.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L1_OUTPUT_ROOTS_START_BLOCKThe number of start block on L1 to index output roots. If the table of output roots is not empty, the process will continue indexing from the last indexed root. Implemented in #6980.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L1_OUTPUT_ORACLE_CONTRACTThe address of OutputOracle contract on L1 used to fetch output roots. Required for output roots indexing when INDEXER_OPTIMISM_L1_OUTPUT_ROOTS_START_BLOCK is not empty. Implemented in #6980.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L1_DEPOSITS_START_BLOCKThe number of the L1 block from which deposits will be fetched. Implemented in #6993.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L1_DEPOSITS_BATCH_SIZENumber of blocks in a single eth_getLogs request. Implemented in #6993.500v6.3.0+Indexer
INDEXER_OPTIMISM_L1_WITHDRAWALS_START_BLOCKThe number of start block on L1 to index withdrawal events. If the table of withdrawal events is not empty, the process will continue indexing from the last indexed withdrawal event. Implemented in #6980.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L2_WITHDRAWALS_START_BLOCKThe 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.(empty)v6.3.0+Indexer
INDEXER_OPTIMISM_L2_MESSAGE_PASSER_CONTRACTThe address of L2ToL1MessagePasser contract to index withdrawals. Required if INDEXER_OPTIMISM_L2_WITHDRAWALS_START_BLOCK is not empty. Implemented in #6980.(empty)v6.3.0+Indexer

zkSync Rollup Management

Please note that these zkSync-related variables are only supported together with setting CHAIN_TYPE=zksync.
VariableRequiredDescriptionDefaultVersionApplication
INDEXER_ZKSYNC_BATCHES_ENABLEDEnables Polygon zkEVM batches fetcher. Implemented in #9080.falsev6.3.0+Indexer
INDEXER_ZKSYNC_BATCHES_CHUNK_SIZEThe number of RPC calls in one request when reading data from RPC. Implemented in #9080.50v6.3.0+Indexer
INDEXER_ZKSYNC_NEW_BATCHES_MAX_RANGEMaximum amount of batches requested if Blockscout does not have all batches synced. Implemented in #9080.50v6.3.0+Indexer
INDEXER_ZKSYNC_NEW_BATCHES_RECHECK_INTERVALThe latest batch rechecking interval, seconds. Implemented in #9080.60v6.3.0+Indexer
INDEXER_ZKSYNC_L1_RPCThe RPC endpoint for L1 used to fetch status of batches. Implemented in #9080.(empty)v6.3.0+Indexer
INDEXER_ZKSYNC_BATCHES_STATUS_RECHECK_INTERVALThe batches status rechecking interval, seconds. Implemented in #9080.60v6.3.0+Indexer

Arbitrum Rollup Management

Please note that these Arbitrum-related variables are only supported together with setting CHAIN_TYPE=arbitrum.
VariableRequiredDescriptionDefaultVersion
INDEXER_ARBITRUM_ARBSYS_CONTRACTThe address of ArbSys contract on the rollup. Implemented in #9312.0x0000000000000000000000000000000000000064
INDEXER_ARBITRUM_L1_RPCThe RPC endpoint for L1 used to fetch transaction batches, block confirmations, and cross-chain messages. Implemented in #9312.
INDEXER_ARBITRUM_L1_RPC_CHUNK_SIZEThe number of RPC calls in one request when reading data from RPC. Implemented in #9312.20
INDEXER_ARBITRUM_L1_RPC_HISTORICAL_BLOCKS_RANGEThe block range size for the eth_getLogs request. Implemented in #9312.1000
INDEXER_ARBITRUM_L1_ROLLUP_CONTRACTThe Arbitrum Rollup contract address on L1. Implemented in #9312.
INDEXER_ARBITRUM_L1_ROLLUP_INIT_BLOCKThe block number where the Arbitrum rollup contract has been deployed. Implemented in #9312.1
INDEXER_ARBITRUM_L1_COMMON_START_BLOCKThe 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.latest block
INDEXER_ARBITRUM_ROLLUP_CHUNK_SIZEThe number of RPC calls in one request when reading data from RPC. Implemented in #9312.20
INDEXER_ARBITRUM_BRIDGE_MESSAGES_TRACKING_ENABLEDEnables monitoring on L1 of cross-chain messages directed to L2 and catchup on L2 of historical cross-chain messages. Implemented in #9312.
INDEXER_ARBITRUM_MISSED_MESSAGES_RECHECK_INTERVALInterval to re-check on the rollup historical messages directed to and from the rollup, in seconds. Implemented in #9312.3600
INDEXER_ARBITRUM_MISSED_MESSAGES_TO_L2_BLOCK_DEPTHAmount of L2 blocks to revisit to identify historical L1-to-L2 messages in the messages catchup task by handling block transactions. Implemented in #9312.50
INDEXER_ARBITRUM_MISSED_MESSAGES_TO_L1_BLOCK_DEPTHAmount of L2 blocks to revisit to identify historical L2-to-L1 messages in the messages catchup task by handling logs in receipts. Implemented in #9312.1000
INDEXER_ARBITRUM_TRACKING_MESSAGES_ON_L1_RECHECK_INTERVALInterval to re-check on L1 new messages directed to the rollup, in seconds. Implemented in #9312.20
INDEXER_ARBITRUM_BATCHES_TRACKING_ENABLEDEnables monitoring of transaction batches, block confirmations, and L2-to-L1 messages executions. Implemented in #9312.
INDEXER_ARBITRUM_BATCHES_TRACKING_RECHECK_INTERVALInterval to re-check on L1 new and historical batches, confirmations, and executions, in seconds. Implemented in #9312.20
INDEXER_ARBITRUM_BATCHES_TRACKING_L1_FINALIZATION_CHECK_ENABLEDWhether L1 transactions related to batches, confirmations, and executions need to be monitored for finalization or not. Implemented in #9312.false
INDEXER_ARBITRUM_BATCHES_TRACKING_MESSAGES_TO_BLOCKS_SHIFTDifference between the message count and actual rollup block numbers in the SequencerBatchDelivered event on L1. Applicable for ArbitrumOne only. Implemented in #9312.0
INDEXER_ARBITRUM_CONFIRMATIONS_TRACKING_FINALIZEDWhether 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.true
INDEXER_ARBITRUM_NEW_BATCHES_LIMITThe 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.10

Exchange rates management

VariableRequiredDescriptionDefaultVersionApplication
DISABLE_EXCHANGE_RATESDisables or enables fetching of coin price from Coingecko API.falsev3.1.2+API, Indexer
EXCHANGE_RATES_MARKET_CAP_SOURCEThis environment variable is used to set source for market cap fetching. Available values coin_gecko, mobula, coin_market_cap.coin_geckov5.2.3+API, Indexer
EXCHANGE_RATES_TVL_SOURCEThis environment variable is used to set source for TVL fetching. Available value is defillama.(empty)v5.3.0+API, Indexer
EXCHANGE_RATES_PRICE_SOURCEThis environment variable is used to set source for price fetching. Available values are also crypto_compare, coin_gecko, mobula and coin_market_cap.crypto_comparev5.2.3+API, Indexer
EXCHANGE_RATES_MOBULA_COIN_IDExplicitly set Mobula coin ID.(empty)v6.7.0+API, Indexer
EXCHANGE_RATES_MOBULA_SECONDARY_COIN_IDExplicitly set Mobula coin ID for secondary coin market chart.(empty)v6.7.0+API, Indexer
EXCHANGE_RATES_MOBULA_API_KEYMobula API key.(empty)v6.7.0+API, Indexer
EXCHANGE_RATES_MOBULA_CHAIN_IDMobula chain id for which token prices are fetched, see full list in the Documentation.ethereumv6.7.0+API, Indexer
EXCHANGE_RATES_COINGECKO_COIN_IDExplicitly set CoinGecko coin ID.(empty)v4.1.4+API, Indexer
EXCHANGE_RATES_COINGECKO_SECONDARY_COIN_IDExplicitly set CoinGecko coin ID for secondary coin market chart. Implemented in #9483.(empty)v6.3.0+API, Indexer
EXCHANGE_RATES_COINGECKO_API_KEYCoinGecko API key.(empty)v4.1.4+API, Indexer
EXCHANGE_RATES_COINMARKETCAP_API_KEYCoinMarketCap API key. Required, if EXCHANGE_RATES_MARKET_CAP_SOURCE, EXCHANGE_RATES_PRICE_SOURCE is set to coin_market_cap.(empty)v4.1.4+API, Indexer
EXCHANGE_RATES_COINMARKETCAP_COIN_IDCoinMarketCap coin id.(empty)v5.2.1+API, Indexer
EXCHANGE_RATES_COINMARKETCAP_SECONDARY_COIN_IDCoinMarketCap coin id for secondary coin market chart. Implemented in #9483.(empty)v6.3.0+API, Indexer
EXCHANGE_RATES_DEFILLAMA_COIN_IDDefiLlama coin id.(empty)v5.3.0+API, Indexer
EXCHANGE_RATES_FETCH_BTC_VALUEif true explorer application will fetch btc_value for token exchange rates. Implemented in #5671.(empty)v4.1.5+API, Indexer
EXCHANGE_RATES_COINGECKO_PLATFORM_IDCoinGecko platform id for which token prices are fetched, see full list in /asset_platforms endpoint. Implemented in #6925.ethereumv5.1.2+API, Indexer
TOKEN_EXCHANGE_RATE_INTERVALInterval between batch requests of token prices. Can be decreased in order to fetch prices faster if you have pro rate limit. Time format. Implemented in #6925.5sv5.1.2+API, Indexer
TOKEN_EXCHANGE_RATE_REFETCH_INTERVALInterval between refetching token prices, responsible for the relevance of prices. Time format. Implemented in #6925.1 hourv5.1.2+API, Indexer
TOKEN_EXCHANGE_RATE_MAX_BATCH_SIZEBatch size of a single token price request. Implemented in #6925.150v5.1.2+API, Indexer
DISABLE_TOKEN_EXCHANGE_RATEIf true disables fetching of token price. Implemented in #6925.truev5.1.2+API, Indexer
EXCHANGE_RATES_CRYPTOCOMPARE_SECONDARY_COIN_SYMBOLCryptoCompare coin symbol for secondary coin market chart. Implemented in #9483.(empty)v6.3.0+API, Indexer
EXCHANGE_RATES_COINGECKO_BASE_URLIf set, overrides the Coingecko base URL. Implemented in #9679.truev6.4.0+API, Indexer
EXCHANGE_RATES_COINGECKO_BASE_PRO_URLIf set, overrides the Coingecko Pro base URL. Implemented in #9679.truev6.4.0+API, Indexer
EXCHANGE_RATES_COINMARKETCAP_BASE_URLIf set, overrides the CoinMarketCap base URL (Free and Pro). Implemented in #9679.truev6.4.0+API, Indexer

Cache management

VariableRequiredDescriptionDefaultVersionNeed recompileApplication
CACHE_TXS_COUNT_PERIODTime interval to restart the task, which calculates the total txs count. Starting from release v6.7.0, if the value is not set, ttl value gradually increases until the default value with growth of the block numbers. Time format.2hv4.1.3+API, Indexer
CACHE_ADDRESS_SUM_PERIODTime to live of addresses sum (except burn address) cache. Time format. Starting from release v6.7.0, if the value is not set, ttl value gradually increases until the default value with growth of the block numbers. Introduced in #2862.1hv4.1.3+API, Indexer
CACHE_TOTAL_GAS_USAGE_PERIODInterval to restart the task, which calculates the total gas usage. Starting from release v6.7.0, if the value is not set, ttl value gradually increases until the default value with growth of the block numbers. Time format.2hv4.1.3+API, Indexer
CACHE_PBO_COUNT_PERIODTime interval to restart the task, which calculates the total pending_block_operations count. Time format.20mv5.2.0+API, Indexer
CACHE_ADDRESS_TRANSACTIONS_GAS_USAGE_COUNTER_PERIODInterval to restart the task, which calculates gas usage at the address. Time format.30mv4.1.3+API, Indexer
CACHE_TOKEN_HOLDERS_COUNTER_PERIODInterval to restart the task, which calculates holders count of the token. Time format.1hv4.1.3+API, Indexer
CACHE_TOKEN_TRANSFERS_COUNTER_PERIODInterval to restart the task, which calculates transfers count of the token. Time format.1hv4.1.3+API, Indexer
CACHE_ADDRESS_WITH_BALANCES_UPDATE_INTERVALInterval to restart the task, which calculates addresses with balances. Time format.30mv4.1.3+API, Indexer
TOKEN_METADATA_UPDATE_INTERVALInterval to restart the task which updates token metadata. Time format.48hv2.0.1+API, Indexer
CACHE_AVERAGE_BLOCK_PERIODUpdate of average block period cache. Time format.30mv4.1.3+API, Indexer
CACHE_MARKET_HISTORY_PERIODUpdate of market history cache. Time format.6hv4.1.3+API, Indexer
CACHE_ADDRESS_TRANSACTIONS_COUNTER_PERIODTime to live of address’ transactions counter. Time format. Introduced in #3330.1hv3.4.0+API, Indexer
CACHE_ADDRESS_TOKENS_USD_SUM_PERIODManaging of cache invalidation period for the sum of USD value of tokens per tokens’ holder address. Time format.1hv3.5.0+API, Indexer
CACHE_EXCHANGE_RATES_PERIODValue which is to tune the time to live of exchange rates. Time format. Implemented in #5671.10mv4.1.5+API, Indexer
TOKEN_BALANCE_ON_DEMAND_FETCHER_THRESHOLDA threshold to invalidate token balance cache. Time format.1hv5.1.2+API, Indexer
COIN_BALANCE_ON_DEMAND_FETCHER_THRESHOLDA threshold to invalidate coin balance cache. Time format.1hv5.1.2+API, Indexer
CONTRACT_CODE_ON_DEMAND_FETCHER_THRESHOLDAn initial threshold (for exponential backoff) to fetch smart-contract bytecode on-demand. Time format. Implemented in #9708.5sv6.4.0+API, Indexer
TOKEN_INSTANCE_METADATA_REFETCH_ON_DEMAND_FETCHER_THRESHOLDAn initial threshold (for exponential backoff) to re-fetch token instance’s metadata on-demand. Time format. Implemented in #10097.5sv6.7.0+API, Indexer
CACHE_ADDRESS_TOKEN_TRANSFERS_COUNTER_PERIODInterval to restart the task, which calculates the number of token transfers at the address. Time format. Implemented in #4699.1hv4.0.0+API, Indexer
CACHE_BLOCK_COUNT_PERIODTime to live of blocks with consensus count cache. Starting from release v6.7.0, if the value is not set, ttl value gradually increases until the default value with growth of the block numbers. Time format. Introduced in #1876.2hv4.1.3+API, Indexer
CACHE_TOTAL_GAS_USAGE_COUNTER_ENABLEDif true, enables cache for total gas usage counter.falsev5.1.3+API, Indexer
MARKET_HISTORY_FETCH_INTERVALInterval to update data for the last day in Market History table. Time format. Introduced in #9197.1hv6.1.0+API, Indexer
CACHE_TRANSACTIONS_24H_STATS_PERIODInterval to update data for the last 24 hours transactions stats. Time format. Introduced in #9483.1hv6.3.0+API, Indexer
CACHE_FRESH_PENDING_TRANSACTIONS_COUNTER_PERIODInterval to update count of pending transactions that appeared less than half an hour ago. Time format. Introduced in #9483.5mv6.3.0+API, Indexer
CACHE_OPTIMISM_LAST_OUTPUT_ROOT_SIZE_COUNTER_PERIODInterval to update data for the last output root size counter. Time format. Introduced in #9532.5mv6.3.0+API, Indexer

Gas price oracle management

VariableRequiredDescriptionDefaultVersionApplication
GAS_PRICE_ORACLE_NUM_OF_BLOCKSGas price oracle: number of blocks to calculate average gas price from200v4.1.4+API, Indexer
GAS_PRICE_ORACLE_SAFELOW_PERCENTILEGas price oracle: safelow percentile35v4.1.4+API, Indexer
GAS_PRICE_ORACLE_AVERAGE_PERCENTILEGas price oracle: average percentile60v4.1.4+API, Indexer
GAS_PRICE_ORACLE_FAST_PERCENTILEGas price oracle: fast percentile90v4.1.4+API, Indexer
GAS_PRICE_ORACLE_CACHE_PERIODGas price oracle: period of gas prices update. Time format.30sv4.1.4+API, Indexer
GAS_PRICE_ORACLE_SIMPLE_TRANSACTION_GASGas price oracle: amount of gas for a simple coin transfer. Introduced in #9044.21000v6.0.0+API, Indexer
GAS_PRICE_ORACLE_SAFELOW_TIME_COEFFICIENTAverage block time multiplied by this coefficient for safelow gas price when time from pending transactions is not available. Floats may be used. Introduced in #9582.5v6.3.0+API, Indexer
GAS_PRICE_ORACLE_AVERAGE_TIME_COEFFICIENTAverage block time multiplied by this coefficient for average gas price when time from pending transactions is not available. Floats may be used. Introduced in #9582.3v6.3.0+API, Indexer
GAS_PRICE_ORACLE_FAST_TIME_COEFFICIENTAverage block time multiplied by this coefficient for fast gas price when time from pending transactions is not available. Floats may be used. Introduced in #9582.1v6.3.0+API, Indexer

Main page dashboard management

VariableRequiredDescriptionDefaultVersionApplication
GAS_PRICEGas price in Gwei. If the variable is present, gas price displays on the main page.(empty)v3.3.2+API
TXS_STATS_ENABLEDDisables or enables txs per day stats gathering.truev5.1.3+API
SHOW_PRICE_CHARTDisables or enables price and market cap of coin charts on the main page.falsev3.1.2+API
SHOW_PRICE_CHART_LEGENDAllows to show price and market cap values under the chart even if price chart is not enabled via SHOW_PRICE_CHART env variable.falsev5.1.4+API
SHOW_TXS_CHARTDisables or enables txs count per day chart on the main page.truev3.1.2+API
TXS_HISTORIAN_INIT_LAGThe initial delay in txs count history fetching in order to display txs count per day history chart on the main page. Time format.0v3.1.2+API
TXS_STATS_DAYS_TO_COMPILE_AT_INITNumber of days for fetching of history of txs count per day in order to display it in txs count per day history chart on the main page.40v3.1.2+API

Header management

VariableRequiredDescriptionDefaultVersionApplication
LOGOEnvironment variable for the header logo image location. The logo files names for different chains can be found here./images/blockscout_logo.svgallAPI
SHOW_TESTNET_LABELEnables testnet label right after logo in the navigation panel. Implemented in #5732(empty)v4.1.6+API
TESTNET_LABEL_TEXTThe text inside the test label. Implemented in #5732Testnetv4.1.6+API
SUPPORTED_CHAINSAn array of supported chains that display in the footer and in the chains dropdown. This var was introduced in this PR #1900 and looks like an array of JSON objects.[ { title: “POA”, url: “https://blockscout.com/poa/core” }, { title: “Sokol”, url: “https://blockscout.com/poa/sokol”, test_net?: true }, { title: “Gnosis Chain”, url: “https://gnosis.blockscout.com/” }, { title: “Ethereum Classic”, url: “https://etc.blockscout.com”, other?: true }, { title: “RSK”, url: “https://rootstock.blockscout.com”, other?: true } ]v2.0.0+API
APPS_MENUtrue/false. If true, the Apps navigation menu item appears.falsev3.3.1+API
APPSAn array of embedded/external apps to display in Apps menu item. This var was introduced in this PR #3184 and looks like an array of JSON objects. An example of embedded link is described here #(empty)v5.0.0+API
VariableRequiredDescriptionDefaultVersionApplication
FOOTER_LOGOEnvironment variable for the footer logo image location. The logo files names for different chains can be found here./images/blockscout_logo.svgAPI
RELEASE_LINKThe link to Blockscout release notes in the footer.https: //github.com/poanetwork/ blockscout/releases/ tag/${BLOCKSCOUT_VERSION}v1.3.5+API
BLOCKSCOUT_VERSIONAdded to the footer to signify the current BlockScout version.(empty)v1.3.4+API
FOOTER_CHAT_LINKLink in Chat menu item in the footer. Implemented in #5719.https://discord.gg/3CtNAqVMRVv4.1.6+API
FOOTER_FORUM_LINK_ENABLEDEnable forum menu item in the footer.falsev5.1.3+API
FOOTER_FORUM_LINKLink in Forum menu item in the footer. Implemented in #5719https://forum.poa.network/c/blockscoutv4.1.6+API
FOOTER_TELEGRAM_LINK_ENABLEDEnable Telegram menu item in the footer. Implemented in #7345.falsev5.1.4+API
FOOTER_TELEGRAM_LINKLink in Telegram menu item in the footer. Implemented in #7345.v5.1.4+API
FOOTER_GITHUB_LINKGithub repository. Implemented in #5719.https://github.com/blockscout/blockscoutv4.1.6+API
FOOTER_LINK_TO_OTHER_EXPLORERStrue/false. If true, links to other explorers are added in the footer.(empty)v5.1.3+API
FOOTER_OTHER_EXPLORERSThe list of alternative explorers.(empty)v5.1.3+API

Contract management

VariableRequiredDescriptionDefaultVersionApplication
CONTRACT_VERIFICATION_ALLOWED_SOLIDITY_EVM_VERSIONSthe comma-separated list of allowed EVM versions for Solidity contract verification. This var was introduced in #1964, updated in #7614.”homestead,tangerineWhistle,spuriousDragon,byzantium,constantinople,petersburg,istanbul,berlin,london,paris,shanghai,default”v5.2.0+API
CONTRACT_VERIFICATION_ALLOWED_VYPER_EVM_VERSIONSthe comma-separated list of allowed EVM versions for Vyper contract verification. This var was introduced in #7614.”byzantium,constantinople,petersburg,istanbul,berlin,paris,shanghai,default”v5.2.0+API
CONTRACT_VERIFICATION_MAX_LIBRARIESMax amount of libraries to consider in smart-contract verification from flat/multi-part file(s). Implemented in #6204.(empty)v5.0.0+API
CONTRACT_MAX_STRING_LENGTH_WITHOUT_TRIMMINGHide long contract method data. For more details: #46672040v4.0.0+API
CONTRACT_DISABLE_INTERACTIONIf true, contract interactions via “Write contract” or “Write proxy contract” tabs are disabled. Introduced in #7088.(empty)v5.1.2+API
CONTRACT_PROXY_IMPLEMENTATION_TTL_VIA_AVG_BLOCK_TIMEIf false, proxy contract implementation will be re-fetched immediately once someone opend proxy page bypassing average block time calculation. Implemented in #9155.truev6.1.0+API
CONTRACT_AUDIT_REPORTS_AIRTABLE_URLURL of AirTable to store audit reports from users. Implemented in #9120(empty)v6.1.0+API
CONTRACT_AUDIT_REPORTS_AIRTABLE_API_KEYAccess token for CONTRACT_AUDIT_REPORTS_AIRTABLE_URL. Implemented in #9120(empty)v6.1.0+API
CONTRACT_CERTIFIED_LISTComma-separated list of smart-contract addresses hashes, to which “certified” flag should be applied. Implemented in #9910(empty)v6.5.0+API
WHITELISTED_WETH_CONTRACTSComma-separated list of smart-contract addresses hashes of wrapped tokens of chain’s native coin, which deposit and withdrawal events you’d like to index. Attention ⚠️: all transfers of non-whitelisted tokens created from deposit/withdrawal events will be deleted from the DB. If variable is set, and empty list is provided, all transfers of created from deposit/withdrawal events will be deleted from the DB. Implemented in #10134(empty)v6.7.0+API, Indexer
WETH_TOKEN_TRANSFERS_FILTERING_ENABLEDToggle for WETH token transfers filtering which was introduced in #10134. Implemented in #10208falsev6.7.0+API, Indexer

Bridged tokens

VariableRequiredDescriptionDefaultVersionNeed recompileApplication
BRIDGED_TOKENS_ENABLEDVariable to enabled bridged tokens functionality. Introduced in #9169(empty)v6.1.0+API, Indexer
BRIDGED_TOKENS_ETH_OMNI_BRIDGE_MEDIATOROMNI bridge mediator for ETH tokens. Introduced in #9169(empty)v6.1.0+API, Indexer
BRIDGED_TOKENS_BSC_OMNI_BRIDGE_MEDIATOROMNI bridge mediator for BSC tokens. Introduced in #9169(empty)v6.1.0+API, Indexer
BRIDGED_TOKENS_POA_OMNI_BRIDGE_MEDIATOROMNI bridge mediator for POA tokens. Introduced in #9169(empty)v6.1.0+API, Indexer
BRIDGED_TOKENS_AMB_BRIDGE_MEDIATORSAMB bridge mediator. Introduced in #9169(empty)v6.1.0+API, Indexer
BRIDGED_TOKENS_FOREIGN_JSON_RPCEthereum mainnet JSON RPC. Introduced in #9169(empty)v6.1.0+API, Indexer

Misc UI management

VariableRequiredDescriptionDefaultVersionNeed recompileApplication
SHOW_ADDRESS_MARKETCAP_PERCENTAGEConfigures market cap percentage column on the top accounts page.truev2.1.1+API
SHOW_MAINTENANCE_ALERTDisables/enables announcement at the top of the explorer.falsev3.6.0+API
MAINTENANCE_ALERT_MESSAGEMessage text of the announcement at the top of the explorer.(empty)v3.6.0+API
HIDE_BLOCK_MINERHides miner/validator/sequencer on block page and tiles if the value is `true` Implemented in #4611(empty)v4.0.0+API
DISPLAY_TOKEN_ICONSDisplays token icons from TrustWallet assets repository if true. Implemented in #4596(empty)v4.0.0+API
UNCLES_IN_AVERAGE_BLOCK_TIMEInclude or exclude non-consensus blocks in avg block time calculation. Exclude if false.falsev2.0.1+API
COIN_BALANCE_HISTORY_DAYSNumber of days to consider at coin balance history chart.10v3.1.3+API
ADMIN_PANEL_ENABLEDif true admin/* routes are available. Implemented in #5208(empty)v4.1.2+API
DISABLE_ADD_TO_MM_BUTTONIf true, “Add chain to MM” button doesn’t appear. Implemented in #6843(empty)v5.1.0+API
PERMANENT_DARK_MODE_ENABLEDIf true, permanent dark mode is enabled. Dark mode switcher is hidden in this case. Implemented in #6763(empty)v5.1.0+API
PERMANENT_LIGHT_MODE_ENABLEDIf true, permanent light mode is enabled. Dark mode switcher is hidden. Implemented in #6838(empty)v5.1.0+API

CSV export

reCAPTCHA v2 and v3 keys for CSV export page. Do not use both v2/v3 keys. Only one version of reCAPTCHA should be used.
VariableRequiredDescriptionDefaultVersionApplication
RE_CAPTCHA_SECRET_KEYGoogle reCAPTCHA v2 secret key. Used by advanced CSV export. Implemented in #4747(empty)v4.0.0+API
RE_CAPTCHA_CLIENT_KEYGoogle reCAPTCHA v2 client key. Used by advanced CSV export. Implemented in #4747(empty)v4.0.0+API
RE_CAPTCHA_V3_SECRET_KEYGoogle reCAPTCHA v3 secret key. Used by advanced CSV export. Implemented in #7273(empty)v5.1.4+API
RE_CAPTCHA_V3_CLIENT_KEYGoogle reCAPTCHA v3 client key. Used by advanced CSV export. Implemented in #7273(empty)v5.1.4+API
RE_CAPTCHA_DISABLEDDisable reCAPTCHA. Implemented in #7416falsev5.1.5+API

API rate limit management

VariableRequiredDescriptionDefaultVersionNeed recompileApplication
API_RATE_LIMITA global API rate limit: number or requests per second for all users. Implemented in #503050 req/secv4.1.1+API
API_RATE_LIMIT_BY_KEYA dedicated API rate limit per key for every type of API key (static or generated from Account module). Implemented in #508010 req/secv4.1.1+API
API_RATE_LIMIT_WHITELISTED_IPSComma-separated whitelisted IPs list with dedicated rate limit. Implemented in #5090(empty)v4.1.1+API
API_RATE_LIMIT_STATIC_API_KEYStatic API key with dedicated API rate limit. Implemented in #5080(empty)v4.1.1+API
API_RATE_LIMIT_DISABLEDIf true, any type of rate limit is ignored. Implemented in #6908(empty)v5.1.0+API
API_RATE_LIMIT_IS_BLOCKSCOUT_BEHIND_PROXYIf true, then IP address of a client will be derived from proxy’s headers (like X-Forwarded-For) using RemoteIp library. Implemented in #7148falsev5.1.3+API
API_RATE_LIMIT_BY_WHITELISTED_IPA dedicated API rate limit for whitelisted IPs. Implemented in #509050 req/secv5.1.3+API
API_RATE_LIMIT_BY_IPGlobal rate limit for an IP address for API v2 requests sent from UI. #71483000v5.1.3+API
API_RATE_LIMIT_HAMMER_REDIS_URLRedis DB URL for Hammer rate limit library. Implemented in #7148(empty)v5.1.3+API
API_RATE_LIMIT_UI_V2_WITH_TOKENRate limit after submitting correct CAPTCHA. Implemented in #71485v5.1.3+API
API_RATE_LIMIT_TIME_INTERVALTime interval of rate limit. Time format. Implemented in #71481sv5.1.3+API
API_RATE_LIMIT_BY_IP_TIME_INTERVALTime interval of rate limit set by API_RATE_LIMIT_BY_IP. Time format. Implemented in #71485mv5.1.3+API
API_RATE_LIMIT_UI_V2_TOKEN_TTL_IN_SECONDSTTL for token issued after submitting correct CAPTCHA for an API v2 requests from UI. In seconds. Implemented in #714818000v5.1.3+API
ETH_JSON_RPC_MAX_BATCH_SIZEMax batch size for Eth JSON RPC requests. Implemented in #94095v6.3.0+API

GraphQL API management

VariableRequiredDescriptionDefaultVersionNeed recompileApplication
API_GRAPHQL_ENABLEDEnabling/disabling of GraphQL API. Implemented in #9751truev6.4.0+API
API_GRAPHQL_MAX_COMPLEXITYQuery/schema max_complexity of GraphQL API. Implemented in #9751215v6.4.0+API
API_GRAPHQL_TOKEN_LIMITQuery token_limit of Absinthe. Implemented in #97511000v6.4.0+API
API_GRAPHQL_DEFAULT_TRANSACTION_HASHDefault transaction hash in a sample query to GraphiQL. Implemented in #9751.0x69e3923eef50eada197c3336d546936d0c994211492c9f947a24c02827568f9fv6.4.0+API
API_GRAPHQL_RATE_LIMITA global GraphQL API rate limit: number or requests per second for all users. Implemented in #977110 req/secv6.4.0+API
API_GRAPHQL_RATE_LIMIT_BY_KEYA dedicated GraphQL API rate limit per static key. If this limit is less than stated in API plan, then API_GRAPHQL_RATE_LIMIT_BY_KEY used for key generated from Account module. Implemented in #97715 req/secv6.4.0+API
API_GRAPHQL_RATE_LIMIT_STATIC_API_KEYStatic GraphQL API key with dedicated GraphQL API rate limit. Implemented in #9771(empty)v6.4.0+API
API_GRAPHQL_RATE_LIMIT_DISABLEDIf true, any type of rate limit is ignored. Implemented in #9771(empty)v6.4.0+API
API_GRAPHQL_RATE_LIMIT_BY_IPGlobal rate limit for an IP address for GraphQL API requests. #9771500v6.4.0+API
API_GRAPHQL_RATE_LIMIT_TIME_INTERVALTime interval of rate limit. Time format. Implemented in #97711sv6.4.0+API
API_GRAPHQL_RATE_LIMIT_BY_IP_TIME_INTERVALTime interval of rate limit set by API_GRAPHQL_RATE_LIMIT_BY_IP. Time format. Implemented in #97715mv6.4.0+API

Specific smart-contracts

VariableRequiredDescriptionDefaultVersionApplication
METADATA_CONTRACTThis environment variable is specifically used by POA Network to obtain Validators information to display in the UI.(empty)allAPI, Indexer
VALIDATORS_CONTRACTThis environment variable is specifically used by POA Network to obtain the list of current validators.(empty)allAPI, Indexer
KEYS_MANAGER_CONTRACTThis environment variable is specifically used by POA Network to set KeysManager proxy contract in order to obtain payout key by mining key. This needs to identify distributed reward to the validator.(empty)v3.1.2+API, Indexer
REWARDS_CONTRACTEmission rewards contract address. This env var is used only if EMISSION_FORMAT is set to POA0xeca443e8e1ab29971a45a9c57a6a9875701698a5v2.0.4+API, Indexer
TOKEN_BRIDGE_CONTRACTToken bridge proxy contract. For `TokenBridge` supply module.0x7301CFA0e1756B71869E93d4e4Dca5c7d0eb0AA6v1.3.2+API, Indexer
VariableRequiredDescriptionDefaultVersionApplication
ACCOUNT_ENABLEDTurn on/off account functionality. If value istrue, account functionality is enabled.(empty)5.0.0API
ACCOUNT_DATABASE_URLAccount DB connection stringvalue from DATABASE_URL5.0.0API
ACCOUNT_REDIS_URLAccount Redis connection string (for session storing configuration)(empty)5.0.0API
ACCOUNT_POOL_SIZEAccount DB pool_size505.0.0API
ACCOUNT_AUTH0_DOMAINDomain for Ueberauth Auth0(empty)5.0.0API
ACCOUNT_AUTH0_CLIENT_IDAuth0 client ID Ueberauth Auth0(empty)5.0.0API
ACCOUNT_AUTH0_CLIENT_SECRETAuth0 client secret Ueberauth Auth0(empty)5.0.0API
ACCOUNT_PUBLIC_TAGS_AIRTABLE_URLAirtable URL for public tag requests functionality(empty)5.0.0API
ACCOUNT_PUBLIC_TAGS_AIRTABLE_API_KEYAirtable API key for public tag requests functionality(empty)5.0.0API
ACCOUNT_SENDGRID_API_KEYSendgrid API key for watchlist notifications functionality(empty)5.0.0API
ACCOUNT_SENDGRID_SENDERSendgrid sender email for watchlist notifications functionality(empty)5.0.0API
ACCOUNT_SENDGRID_TEMPLATESendgrid email template for watchlist notifications functionality(empty)5.0.0API
ACCOUNT_CLOAK_KEYAccount DB encryption key. Instruction how to generate(empty)5.0.0API
ACCOUNT_VERIFICATION_EMAIL_RESEND_INTERVALTime before resending confirmation email. Implemented in #7298. Time format5mv5.1.5+API
ACCOUNT_PRIVATE_TAGS_LIMITLimit for address & transaction tags. Implemented in #8528.2000v5.3.1+API
ACCOUNT_WATCHLIST_ADDRESSES_LIMITLimit for watch list addresses. Implemented in #8528.15v5.3.1+API
ACCOUNT_WATCHLIST_NOTIFICATIONS_LIMIT_FOR_30_DAYSPer account limit for watch list notifications sent for the last 30 days. Implemented in #8966.1000v5.3.3+API

Integrations

Smart-contract verifier / Eth Bytecode DB

VariableRequiredDescriptionDefaultVersionApplication
MICROSERVICE_SC_VERIFIER_ENABLEDIf true, integration with Rust smart-contract verifier is enabled. true is the default value starting from version 6.4.0. Implemented in #5860truev5.1.3+API
MICROSERVICE_SC_VERIFIER_URLURL of Rust smart-contract verifier. Implemented in #5860https://eth-bytecode-db.services.blockscout.com/v5.1.3+API
MICROSERVICE_ETH_BYTECODE_DB_INTERVAL_BETWEEN_LOOKUPSMinimal time after unsuccessful check of smart contract’s sources in Eth Bytecode DB. Implemented in #7187. Time format10mv5.1.3+API
MICROSERVICE_SC_VERIFIER_TYPEType of smart contract microservice could be either eth_bytecode_db or sc_verifier. Implemented in #7187eth_bytecode_dbv5.1.3+API
MICROSERVICE_ETH_BYTECODE_DB_MAX_LOOKUPS_CONCURRENCYMaximum amount of concurrent requests for fetching smart contract’s sources in Eth Bytecode DB. Implemented in #847210v5.3.0+API
MICROSERVICE_SC_VERIFIER_API_KEYAPI key for verification that metadata sent to verifier microservice from a trusted source. Implemented in #8750(empty)v5.3.2+API

Sol2Uml

VariableRequiredDescriptionDefaultVersionApplication
MICROSERVICE_VISUALIZE_SOL2UML_ENABLEDIf true, integration with Rust sol2uml visualizer is enabled. Implemented in #6401(empty)v5.1.3+API
MICROSERVICE_VISUALIZE_SOL2UML_URLURL of Rust visualizer. Implemented in #6401(empty)v5.1.3+API

Sig-provider

VariableRequiredDescriptionDefaultVersionApplication
MICROSERVICE_SIG_PROVIDER_ENABLEDIf true, integration with Rust sig-provider service is enabled. Implemented in #6541(empty)v5.1.3+API
MICROSERVICE_SIG_PROVIDER_URLURL of Rust sig-provider service. Implemented in #6541(empty)v5.1.3+API

Blockscout ENS

VariableRequiredDescriptionDefaultVersionApplication
MICROSERVICE_BENS_ENABLEDIf true, integration with Blockscout ENS service is enabled. Implemented in #8972(empty)v5.4.0+API
MICROSERVICE_BENS_URLURL of Blockscout ENS service. Implemented in #8972(empty)v5.4.0+API

Blockscout Account Abstraction

VariableRequiredDescriptionDefaultVersionApplication
MICROSERVICE_ACCOUNT_ABSTRACTION_ENABLEDIf true, integration with Blockscout Account Abstraction service is enabled. Implemented in #9145(empty)v6.1.0+API
MICROSERVICE_ACCOUNT_ABSTRACTION_URLURL of Blockscout ENS service. Implemented in #9145(empty)v6.1.0+API

Tx Interpreter (Summary) Service

VariableRequiredDescriptionDefaultVersionApplication
MICROSERVICE_TRANSACTION_INTERPRETATION_ENABLEDIf true, integration with Tx Interpreter Service is enabled. Implemented in #8957(empty)v5.4.0+API
MICROSERVICE_TRANSACTION_INTERPRETATION_URLURL of Tx Interpreter Service. Implemented in #8957(empty)v5.4.0+API

Metadata Service

VariableRequiredDescriptionDefaultVersionApplication
MICROSERVICE_METADATA_ENABLEDIf true, integration with Metadata Service is enabled. Implemented in #9706(empty)v6.4.0+API
MICROSERVICE_METADATA_URLURL of Metadata Service. Implemented in #9706(empty)v6.4.0+API

Sourcify

VariableRequiredDescriptionDefaultVersionApplication
SOURCIFY_INTEGRATION_ENABLEDEnables or disables verification of contracts through Sourcify.falsev5.1.3+API
SOURCIFY_SERVER_URLURL to Sourcify backend.https://sourcify.dev/serverv3.7.0+API
SOURCIFY_REPO_URLURL to Sourcify repository with fully verified contracts.https://repo.sourcify.dev/contracts/*
*before 3.7.1 https://repo.sourcify.dev/contracts/full_match/
v3.7.0+API

Tenderly

VariableRequiredDescriptionDefaultVersionApplication
SHOW_TENDERLY_LINKif true, “Open in Tenderly” button is displayed on the transaction page. Implemented in #4656(empty)v4.0.0+API
TENDERLY_CHAIN_PATHChain path to the transaction in Tenderly. For instance, for transactions in xDai, Tenderly link looks like this https://dashboard.tenderly.co/tx/xdai/0x…, then TENDERLY_CHAIN_PATH =/xdai. Implemented in #4656(empty)v4.0.0+API

Datadog

VariableRequiredDescriptionDefaultVersionApplication
DATADOG_HOSTHost configuration setting for Datadog integration.(empty)allAPI
DATADOG_PORTPort configuration setting for Datadog integration.(empty}allAPI

Spandex

VariableRequiredDescriptionDefaultVersionApplication
SPANDEX_BATCH_SIZESpandex and Datadog configuration setting.(empty)allAPI
SPANDEX_SYNC_THRESHOLDSpandex and Datadog configuration setting.(empty)allAPI

Analytics

VariableRequiredDescriptionDefaultVersionNeed recompileApplication
MIXPANEL_TOKENMixpanel project token.(empty)v5.0.0+API
MIXPANEL_URLUrl to use Mixpanel with proxy (Collection via Proxy).(empty)v5.0.0+API
AMPLITUDE_API_KEYAmplitude API key.(empty)v5.0.0+API
AMPLITUDE_URLUrl to use Amplitude with proxy (Use Domain Proxy to Relay Events).(empty)v5.0.0+API

Solidityscan

VariableRequiredDescriptionDefaultVersionApplication
SOLIDITYSCAN_CHAIN_IDSolidityscan Internal chain id in Solidityscan. It may not match with actual chain ID. Implemented in #8908(empty)v5.3.3+API
SOLIDITYSCAN_API_TOKENSolidityscan API token for usage of Solidityscan API.(empty)v5.3.3+API

Noves.fi

VariableRequiredDescriptionDefaultVersionApplication
NOVES_FI_BASE_API_URLNoves.fi API base URL. Implemented in #9056.https://blockscout.noves.fiv6.1.0+API
NOVES_FI_CHAIN_NAMENoves.fi API chain name. Implemented in #9056.(empty)v6.1.0+API
NOVES_FI_API_TOKENNoves.fi API token. Implemented in #9056.(empty)v6.1.0+API

MUD framework

VariableRequiredDescriptionDefaultVersionApplication
MUD_INDEXER_ENABLEDIf true, integration with MUD is enabled. Implemented in #9869(empty)v6.6.0+API
MUD_DATABASE_URLMUD indexer DB connection URL.value from DATABASE_URLv6.6.0+API
MUD_POOL_SIZEMUD indexer DB pool_size50v6.6.0+API