This release contains bulk DB migrations for the sake of improvement of Blockscout DB schema such as:
- Denormalization of table
transactions: addingblock_consensus,block_timestamp. This allows eliminating join withblockstable almost in all API v1/v2 endpoints which return entities list or address's entities list. - Finalization of denormalizing of tables
address_current_token_balancesandaddress_token_balances: filling emptytoken_types to be able to eliminate join withtokenstable in some requests where token transfers take place. - Changing of topics (4 fields) column types of event logs from string to
bytea. This should makelogstable lighter up to 21%. - Improvement of index to speed up query for getting token IDs of the token. This should improve the response time of token's inventory tab API.
- Adding mirror indexes in ascending direction to improve the speed of API requests with ascending order included.
- Removal of unused indexes to release DB storage.
- Drop
typecolumn in event logs since it is not used. - Adding index for
blocksrefetch_neededcolumn to improve init query performance forBlocksTransactionsMismatchfetcher.
⚠️ To mitigate the risk of data corruption due to migration please make sure, that you make a copy of the previous DB before running these DB migrations.
ℹ️ The release contains foreground and background migrations. Foreground migrations run before the application has been started. At this time downtime is expected. Background migrations run after the applications is started. Background migrations are for backfilling the existing data to fit new DB schema. Background migrations can be running on the live instance of Blockscout: if background migrations are not finished yet, the application is usable - it automatically will use new queries, if the migration is finished, and use old queries with joins while background migration is in progress.
⚠️ Please take in mind that foreground DB migrations are heavy enough and downtime of the explorer is expected. Depending on the size of the foreground DB migrations may take up to 24 hours. For instance, migrations lasted ~6 hours on ETH Sepolia DB. We recommend running a separate Blockscout instance of 6.0.0 version on the replica of the DB and switching to it when all migrations have been finished.
ℹ️ Please be aware, that denormalization of the archive data in the affected tables will continue in the background mode even when the application will be up & running after running the set of DB migrations. The background DB migrations can last several days. You can check the migration status from the DB with the query SELECT * FROM migrations_status;. Once the migration has been finished, the response should be like this:
migration_name | status | inserted_at | updated_at
-----------------+-----------+----------------------------+----------------------------
denormalization | completed | 2023-12-17 05:00:28.36332 | 2023-12-26 07:27:20.669697
ctb_token_type | completed | 2024-01-04 18:32:46.301728 | 2024-01-04 18:40:09.112862
tb_token_type | completed | 2024-01-04 18:32:46.41895 | 2024-01-04 18:40:26.470253
New environment variables
| Variable | Required | Description | Default |
|---|---|---|---|
ETHEREUM_JSONRPC_ETH_CALL_URL
| JSON RPC url for eth_call method. Implemented in #9112 | (empty) | |
GAS_PRICE_ORACLE_SIMPLE_TRANSACTION_GAS
| Gas price oracle: amount of gas for a simple coin transfer. Introduced in #9044. | 21000 |
Features
Fixes
- #9113 - Fix migrators cache updating
- #9101 - Fix migration_finished? logic
- #9062 - Fix blockscout-ens integration
- #9061 - Arbitrum allow tx receipt gasUsedForL1 field
- #8812 - Update existing tokens type if got transfer with higher type priority
Chore
- #9055 - Add ASC indices for logs, token transfers, transactions
- #9038 - Token type filling migrations
- #9009 - Index for block refetch_needed
- #9007 - Drop logs type index
- #9006 - Drop unused indexes on address_current_token_balances table
- #9005 - Drop unused token_id column from token_transfers table and indexes based on this column
- #9000 - Change log topic type in the DB to bytea
- #8996 - Refine token transfers token ids index
- #5322 - DB denormalization: block consensus and timestamp in transaction table
Dependencies version bumps
- #9059 - Bump redux from 5.0.0 to 5.0.1 in /apps/block_scout_web/assets
- #9057 - Bump benchee from 1.2.0 to 1.3.0
- #9060 - Bump @amplitude/analytics-browser from 2.3.7 to 2.3.8 in /apps/block_scout_web/assets
- #9084 - Bump @babel/preset-env from 7.23.6 to 7.23.7 in /apps/block_scout_web/assets
- #9083 - Bump @babel/core from 7.23.6 to 7.23.7 in /apps/block_scout_web/assets
- #9086 - Bump core-js from 3.34.0 to 3.35.0 in /apps/block_scout_web/assets
- #9081 - Bump sweetalert2 from 11.10.1 to 11.10.2 in /apps/block_scout_web/assets
- #9085 - Bump moment from 2.29.4 to 2.30.1 in /apps/block_scout_web/assets
- #9087 - Bump postcss-loader from 7.3.3 to 7.3.4 in /apps/block_scout_web/assets
- #9082 - Bump sass-loader from 13.3.2 to 13.3.3 in /apps/block_scout_web/assets
- #9088 - Bump sass from 1.69.5 to 1.69.6 in /apps/block_scout_web/assets
What's Changed
- Arbitrum allow tx receipt gasUsedForL1 field by @vbaranov in #9061
- Bump redux from 5.0.0 to 5.0.1 in /apps/block_scout_web/assets by @dependabot in #9059
- Bump benchee from 1.2.0 to 1.3.0 by @dependabot in #9057
- Bump @amplitude/analytics-browser from 2.3.7 to 2.3.8 in /apps/block_scout_web/assets by @dependabot in #9060
- Fix bens integration by @sevenzing in #9062
- Bump @babel/preset-env from 7.23.6 to 7.23.7 in /apps/block_scout_web/assets by @dependabot in #9084
- Bump @babel/core from 7.23.6 to 7.23.7 in /apps/block_scout_web/assets by @dependabot in #9083
- Bump core-js from 3.34.0 to 3.35.0 in /apps/block_scout_web/assets by @dependabot in #9086
- Bump sweetalert2 from 11.10.1 to 11.10.2 in /apps/block_scout_web/assets by @dependabot in #9081
- Bump moment from 2.29.4 to 2.30.1 in /apps/block_scout_web/assets by @dependabot in #9085
- Bump postcss-loader from 7.3.3 to 7.3.4 in /apps/block_scout_web/assets by @dependabot in #9087
- Bump sass-loader from 13.3.2 to 13.3.3 in /apps/block_scout_web/assets by @dependabot in #9082
- Bump sass from 1.69.5 to 1.69.6 in /apps/block_scout_web/assets by @dependabot in #9088
- Expand gas price oracle functionality by @sl1depengwyn in #9044
- Improve exchange rates logging by @sl1depengwyn in #9094
- Update existing tokens type if got transfer with higher type priority by @Qwerty5Uiop in #8812
- Add specific url for eth_call by @Qwerty5Uiop in #9112
- v6.0.0 DB migrations by @vbaranov in #9067
Full Changelog: v5.4.0-beta...v6.0.0-beta