This is the list of key fatures introduced in the release:
-
Optimism and Zksync are supported in the master branch now via
CHAIN_TYPE
compile-time environment variable with the valuesoptimism
/zksync
respectively. -
Block import is improved to fetch massive blocks in a separate queue which allows to main queue to be processed faster.
-
The logic of JSON RPC endpoint availability observer is improved: errors came from users actions are excluded.
-
Internal transactions fetcher logic is imroved to process more relevant blocks first.
-
Basic ERC-404 token type support is added
-
API for user operations AI interpretator service is added.
-
Several fixes for blobs support in UI are made.
-
Ethereum JSON RPC API is extended with new endpoints.
-
Stability validators list API is added.
⚙️ the release contains several foreground migrations:
- new indexes on
pending_block_operations
,token_transfers
andsmart_contracts
tables. - new table
massive_blocks
. - extending
market_history
table with new columnsecondary_coin
and transform single-column index bydate
to multi-column includingsecondary_coin
column.
ℹ️ indexes on potentially huge tables are built with Please note that these Optimism-related variables are only supported together with setting Please note that these zkSync-related variables are only supported together with setting concurrently
option. So, the foreground migrations shouldn't affect working indexer. Thus, no notable downtime is expected - update can be prepared on the live DB.
💡New environment variables
Variable
Required
Description
Default
ETHEREUM_JSONRPC_FALLBACK_ETH_CALL_URL
Fallback JSON RPC eth_call
url. Implemented in #9511
(empty)
TOKEN_TRANSFER_TOKEN_TYPE_MIGRATION_BATCH_SIZE
Number of token transfers to denormalize (add token_type) in the batch.
100
TOKEN_TRANSFER_TOKEN_TYPE_MIGRATION_CONCURRENCY
Number of parallel denormalization token transfer batches processing.
1
SANITIZE_INCORRECT_NFT_BATCH_SIZE
Number of token transfers to sanitize in the batch.
100
SANITIZE_INCORRECT_NFT_CONCURRENCY
Number of parallel sanitizing token transfer batches processing.
1
EXCHANGE_RATES_COINGECKO_SECONDARY_COIN_ID
Explicitly set CoinGecko coin ID for secondary coin market chart. Implemented in #9483.
(empty)
EXCHANGE_RATES_COINMARKETCAP_SECONDARY_COIN_ID
CoinMarketCap coin id for secondary coin market chart. Implemented in #9483.
(empty)
EXCHANGE_RATES_CRYPTOCOMPARE_SECONDARY_COIN_SYMBOL
CryptoCompare coin symbol for secondary coin market chart. Implemented in #9483.
(empty)
CACHE_TRANSACTIONS_24H_STATS_PERIOD
Interval to update data for the last 24 hours transactions stats. Time format. Introduced in #9483.
1h
CACHE_FRESH_PENDING_TRANSACTIONS_COUNTER_PERIOD
Interval to update count of pending transactions that appeared less than half an hour ago. Time format. Introduced in #9483.
5m
CACHE_OPTIMISM_LAST_OUTPUT_ROOT_SIZE_COUNTER_PERIOD
Interval to update data for the last output root size counter. Time format. Introduced in #9532.
5m
GAS_PRICE_ORACLE_SAFELOW_TIME_COEFFICIENT
Average block time multiplied by this coefficent for safelow gas price when time from pending transactions is not available. Floats may be used. Introduced in #9582.
5
GAS_PRICE_ORACLE_AVERAGE_TIME_COEFFICIENT
Average block time multiplied by this coefficent for average gas price when time from pending transactions is not available. Floats may be used. Introduced in #9582.
3
GAS_PRICE_ORACLE_FAST_TIME_COEFFICIENT
Average block time multiplied by this coefficent for fast gas price when time from pending transactions is not available. Floats may be used. Introduced in #9582.
1
ETH_JSON_RPC_MAX_BATCH_SIZE
Max batch size for Eth JSON RPC requests. Implemented in #9409
5
Optimism Rollup Management
CHAIN_TYPE=optimism
.
Variable
Required
Description
Default
INDEXER_OPTIMISM_L1_RPC
The RPC endpoint for L1 used to fetch transaction batches, output roots, deposits, or withdrawal events. Implemented in #6980.
(empty)
INDEXER_OPTIMISM_L1_PORTAL_CONTRACT
The address of OptimismPortal contract on L1 used to fetch deposits and withdrawal events. Required for deposits and withdrawal events indexing. Implemented in #6980.
(empty)
INDEXER_OPTIMISM_L1_BATCH_START_BLOCK
The 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)
INDEXER_OPTIMISM_L1_BATCH_INBOX
The inbox address to index transaction batches on L1. Required if INDEXER_OPTIMISM_L1_BATCH_START_BLOCK
is not empty. Implemented in #6980.
(empty)
INDEXER_OPTIMISM_L1_BATCH_SUBMITTER
The batch submitter address to index transaction batches on L1. Required if INDEXER_OPTIMISM_L1_BATCH_START_BLOCK
is not empty. Implemented in #6980.
(empty)
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
. Required if INDEXER_OPTIMISM_L1_BATCH_START_BLOCK
is not empty. Implemented in #9571.
(empty)
INDEXER_OPTIMISM_L1_BATCH_BLOCKS_CHUNK_SIZE
Blocks chunk size to send batch RPC requests. Implemented in #6980.
4
INDEXER_OPTIMISM_L2_BATCH_GENESIS_BLOCK_NUMBER
L2 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)
INDEXER_OPTIMISM_L1_OUTPUT_ROOTS_START_BLOCK
The 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)
INDEXER_OPTIMISM_L1_OUTPUT_ORACLE_CONTRACT
The 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)
INDEXER_OPTIMISM_L1_DEPOSITS_START_BLOCK
The number of the L1 block from which deposits will be fetched. Implemented in #6993.
(empty)
INDEXER_OPTIMISM_L1_DEPOSITS_BATCH_SIZE
Number of blocks in a single eth_getLogs
request. Implemented in #6993.
500
INDEXER_OPTIMISM_L1_WITHDRAWALS_START_BLOCK
The 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)
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.
(empty)
INDEXER_OPTIMISM_L2_MESSAGE_PASSER_CONTRACT
The address of L2ToL1MessagePasser contract to index withdrawals. Required if INDEXER_OPTIMISM_L2_WITHDRAWALS_START_BLOCK
is not empty. Implemented in #6980.
(empty)
zkSync Rollup Management
CHAIN_TYPE=zksync
.
Variable
Required
Description
Default
INDEXER_ZKSYNC_BATCHES_ENABLED
Enables Polygon zkEVM batches fetcher. Implemented in #9080.
false
INDEXER_ZKSYNC_BATCHES_CHUNK_SIZE
The number of RPC calls in one request when reading data from RPC. Implemented in #9080.
50
INDEXER_ZKSYNC_NEW_BATCHES_MAX_RANGE
Maximum amount of batches requested if Blockscout does not have all batches synced. Implemented in #9080.
50
INDEXER_ZKSYNC_NEW_BATCHES_RECHECK_INTERVAL
The latest batch rechecking interval, seconds. Implemented in #9080.
60
INDEXER_ZKSYNC_L1_RPC
The RPC endpoint for L1 used to fetch status of batches. Implemented in #9080.
(empty)
INDEXER_ZKSYNC_BATCHES_STATUS_RECHECK_INTERVAL
The batches status rechecking interval, seconds. Implemented in #9080.
60
Full changelog
Features 🎉
- #9631 - Initial support of zksync chain type
- #9532 - Add last output root size counter
- #9511 - Separate errors by type in EndpointAvailabilityObserver
- #9490, #9644 - Add blob transaction counter and filter in block view
- #9486 - Massive blocks fetcher
- #9483 - Add secondary coin and transaction stats
- #9473 - Add user_op interpretation
- #9461 - Fetch blocks without internal transactions backwards
- #9460 - Optimism chain type
- #9409 - ETH JSON RPC extension
- #9390 - Add stability validators
- #8702 - Add OP withdrawal status to transaction page in API
- #7200 - Add Optimism BedRock Deposits to the main page in API
- #6980 - Add Optimism BedRock support (Txn Batches, Output Roots, Deposits, Withdrawals)
Fixes 🛠️
- #9654 - Send timeout param in debug_traceBlockByNumber request
- #9653 - Tokens import improvements
- #9652 - Remove duplicated tx hashes while indexing OP batches
- #9646 - Hotfix for Optimism Ecotone batch blobs indexing
- #9640 - Fix no function clause matching in
BENS.item_to_address_hash_strings/1
- #9638 - Do not broadcast coin balance changes with empty value/delta
- #9635 - Reset missing ranges collector to max number after the cycle is done
- #9629 - Don't insert pbo for not inserted blocks
- #9620 - Fix infinite retries for orphaned blobs
- #9601 - Fix token instance transform for some unconventional tokens
- #9597 - Update token transfers block_consensus by block_number
- #9596 - Fix logging
- #9585 - Fix Geth block internal transactions fetching
- #9576 - Rewrite query for token transfers on address to eliminate "or"
- #9572 - Fix Shibarium L1 fetcher
- #9563 - Fix timestamp handler for unfinalized zkEVM batches
- #9560 - Fix fetch pending transaction for hyperledger besu client
- #9555 - Fix EIP-1967 beacon proxy pattern detection
- #9529 - Fix
MAX_SAFE_INTEGER
frontend bug - #9518, #9628 - Fix MultipleResultsError in
smart_contract_creation_tx_bytecode/1
- #9514 - Fix missing
0x
prefix forblockNumber
,logIndex
,transactionIndex
and removetransactionLogIndex
ineth_getLogs
response. - #9510 - Fix WS false 0 token balances
- #9512 - Docker-compose 2.24.6 compatibility
- #9262 - Fix withdrawal status
- #9123 - Fixes in Optimism due to changed log topics type
- #8831 - Return all OP Withdrawals bound to L2 transaction
- #8822 - Hotfix for optimism_withdrawal_transaction_status function
- #8811 - Consider consensus block only when retrieving OP withdrawal transaction status
- #8364 - Fix API v2 for OP Withdrawals
- #8229 - Fix Indexer.Fetcher.OptimismTxnBatch
- #8208 - Ignore invalid frame by OP transaction batches module
- #8122 - Ignore previously handled frame by OP transaction batches module
- #7827 - Fix transaction batches module for L2 OP stack
- #7776 - Fix transactions ordering in Indexer.Fetcher.OptimismTxnBatch
- #7219 - Output L1 fields in API v2 for transaction page and fix transaction fee calculation
- #6699 - L1 tx fields fix for Goerli Optimism BedRock update
Chore 🧹
- #9622 - Add alternative
hex.pm
mirrors - #9571 - Support Optimism Ecotone upgrade by Indexer.Fetcher.Optimism.TxnBatch module
- #9562 - Add cancun evm version
- #9506 - API v1 bridgedtokenlist endpoint
- #9260 - Optimism Delta upgrade support by Indexer.Fetcher.OptimismTxnBatch module
- #8740 - Add delay to Indexer.Fetcher.OptimismTxnBatch module initialization
Dependencies version bumps
- #9544 - Bump @babel/core from 7.23.9 to 7.24.0 in /apps/block_scout_web/assets
- #9537 - Bump logger_json from 5.1.3 to 5.1.4
- #9550 - Bump xss from 1.0.14 to 1.0.15 in /apps/block_scout_web/assets
- #9539 - Bump floki from 0.35.4 to 0.36.0
- #9551 - Bump @amplitude/analytics-browser from 2.5.1 to 2.5.2 in /apps/block_scout_web/assets
- #9547 - Bump @babel/preset-env from 7.23.9 to 7.24.0 in /apps/block_scout_web/assets
- #9549 - Bump postcss-loader from 8.1.0 to 8.1.1 in /apps/block_scout_web/assets
- #9542 - Bump phoenix_ecto from 4.4.3 to 4.5.0
- #9546 - #9546
- #9545 - Bump chart.js from 4.4.1 to 4.4.2 in /apps/block_scout_web/assets
- #9540 - Bump postgrex from 0.17.4 to 0.17.5
- #9543 - Bump ueberauth from 0.10.7 to 0.10.8
- #9538 - Bump credo from 1.7.4 to 1.7.5
- #9607 - Bump redix from 1.3.0 to 1.4.1
- #9606 - Bump ecto from 3.11.1 to 3.11.2
- #9605 - Bump ex_doc from 0.31.1 to 0.31.2
- #9604 - Bump phoenix_ecto from 4.5.0 to 4.5.1
What's Changed
- Stream blocks without internal transactions in reverse order by @k1rill-fedoseev in #9461
- Docker-compose 2.24.6 compatibility by @vbaranov in #9512
- Add tsvector index on smart_contracts.name by @nikitosing in #9487
- Optimism chain type by @vbaranov in #9460
- Fix missing
0x
prefix ineth_getLogs
response by @fedor-ivn in #9514 - Add blob transaction count and transaction type filter to block view by @k1rill-fedoseev in #9490
- Add stability validators by @nikitosing in #9390
- ETH JSON RPC extension by @nikitosing in #9409
- Bump @babel/core from 7.23.9 to 7.24.0 in /apps/block_scout_web/assets by @dependabot in #9544
- Bump logger_json from 5.1.3 to 5.1.4 by @dependabot in #9537
- Bump xss from 1.0.14 to 1.0.15 in /apps/block_scout_web/assets by @dependabot in #9550
- Bump floki from 0.35.4 to 0.36.0 by @dependabot in #9539
- Bump @amplitude/analytics-browser from 2.5.1 to 2.5.2 in /apps/block_scout_web/assets by @dependabot in #9551
- Bump @babel/preset-env from 7.23.9 to 7.24.0 in /apps/block_scout_web/assets by @dependabot in #9547
- Bump postcss-loader from 8.1.0 to 8.1.1 in /apps/block_scout_web/assets by @dependabot in #9549
- Bump phoenix_ecto from 4.4.3 to 4.5.0 by @dependabot in #9542
- Bump mini-css-extract-plugin from 2.8.0 to 2.8.1 in /apps/block_scout_web/assets by @dependabot in #9546
- Bump chart.js from 4.4.1 to 4.4.2 in /apps/block_scout_web/assets by @dependabot in #9545
- Bump postgrex from 0.17.4 to 0.17.5 by @dependabot in #9540
- Bump ueberauth from 0.10.7 to 0.10.8 by @dependabot in #9543
- Bump credo from 1.7.4 to 1.7.5 by @dependabot in #9538
- Bump autoprefixer from 10.4.17 to 10.4.18 in /apps/block_scout_web/assets by @dependabot in #9548
- Add cancun evm version by @vbaranov in #9562
- Fix Shibarium L1 fetcher by @varasev in #9572
- Fix timestamp handler for unfinalized zkEVM batches by @varasev in #9563
- Update log info by @zjb0807 in #9583
- Enabled fetch pending transactions for Hyperledger Besu client by @MASDXI in #9560
- Fix EIP-1967 beacon proxy pattern detection by @vbaranov in #9555
- Fix MultipleResultsError in smart_contract_creation_tx_bytecode/1 by @nikitosing in #9518
- Support Optimism Ecotone upgrade by Indexer.Fetcher.Optimism.TxnBatch module by @varasev in #9571
- Bump ex_abi from 0.6.4 to 0.7.0 by @dependabot in #9329
- Bump redix from 1.3.0 to 1.4.1 by @dependabot in #9607
- Bump ecto from 3.11.1 to 3.11.2 by @dependabot in #9606
- Bump ex_doc from 0.31.1 to 0.31.2 by @dependabot in #9605
- Bump phoenix_ecto from 4.5.0 to 4.5.1 by @dependabot in #9604
- Fix stats service dependency in external-backend.yml by @GimluCom in #9609
- Fix duplicate read methods by @fedor-ivn in #9591
- Fix token instance transform panic by @k1rill-fedoseev in #9601
- Update token transfers block_consensus by block_number by @Qwerty5Uiop in #9597
- Improve logging by @nikitosing in #9596
- chore: remove repetitive words by @carrychair in #9612
- Fix Geth block internal transactions fetching by @Qwerty5Uiop in #9585
- Fix skipped read methods by @fedor-ivn in #9621
- Improve gasprice oracle time estimation fallback by @sl1depengwyn in #9582
- API v1 bridgedtokenlist endpoint by @vbaranov in #9506
- chore: fix some comments by @one230six in #9626
- Find a single creation tx for smart-contract by @vbaranov in #9628
- Convert outputs to string in smart_contract_view.ex by @nikitosing in #9529
- Add user_op interpretation by @nikitosing in #9473
- Setup alternative hex.pm mirrors by @fedor-ivn in #9622
- Massive blocks fetcher by @Qwerty5Uiop in #9486
- zksync chain type support by @akolotov in #9631
- Don't insert pbo for not inserted blocks by @Qwerty5Uiop in #9629
- Rewrite query for token transfers on address to eliminate "or" by @vbaranov in #9576
- Add last output root size counter by @sl1depengwyn in #9532
- Fix no function clause matching in BENS.item_to_address_hash_strings/1 by @nikitosing in #9640
- Re-add missing blob transactions count by @k1rill-fedoseev in #9644
- Do not broadcast coin balance changes with empty value/delta by @vbaranov in #9638
- Reset missing ranges collector to max number after the cycle is done by @Qwerty5Uiop in #9635
- Fix infinite retries for orphaned blobs by @k1rill-fedoseev in #9620
- Separate errors by type in EndpointAvailabilityObserver by @Qwerty5Uiop in #9511
- Fix zero balances coming via WS by @nikitosing in #9510
- Add secondary coin and transaction stats by @sl1depengwyn in #9483
- ERC-404 basic support by @vbaranov in #9407
- Hotfix for Optimism Ecotone batch blobs indexing by @varasev in #9646
- Remove duplicated tx hashes while indexing OP batches by @varasev in #9652
- Send timeout param in debug_traceBlockByNumber request by @vbaranov in #9654
- Tokens import improvements by @nikitosing in #9653
New Contributors
- @fedor-ivn made their first contribution in #9514
- @MASDXI made their first contribution in #9560
- @carrychair made their first contribution in #9612
- @one230six made their first contribution in #9626
Full Changelog: v6.2.2-beta...v6.3.0-beta