New Release: Blockscout v11.0.0
Blockscout v11.0.0 is the 3rd major backend release focused on database storage optimization. v11 reduces the size of the internal_transactions table by approximately 30–40%. When combined with 9.3.3, zero-value internal transaction removal, and v10, table size is reduced by up to 10x.
Installation Requirements
New instances: Install the new version directly
Key Optimizations
Columns
Following the migration to a new primary key in v10, v11 removes several unused columns and their associated indexes from the internal_transactions table:
block_hash,block_index(replaced byblock_number)transaction_hash(replaced bytransaction_index)error(replaced byerror_idenum)
In addition, address storage is normalized by replacing address hashes with numeric address IDs in internal_transactions. This approach will be extended to other entities in future releases.
VACUUM FULL on the internal_transactions table.API performance improvements
Response times are reduced across several endpoints, including:
- JSON-RPC:
token1155tx,tokentx - REST:
/api/v2/blocks/:block_number/transactions/api/v2/transactions/api/v2/addresses/:hash/transactions/api/v2/tokens
New Features
Asynchronous CSV Export
CSV exports no longer have to block a request while the file is built. With async mode turned on, the export endpoints queue a job and return a request ID you can poll for status.
Here's how it works when async mode is enabled:
- The export endpoint returns
202 Acceptedwith arequest_id(UUID) - You check status at
GET /api/v2/csv-exports/:uuid - The response tells you whether the job is pending, completed, or failed
- Completed jobs include a
file_idand anexpires_attimestamp
Note: This is a conditional breaking change. If your instance keeps async mode disabled, CSV exports keep working the old synchronous way. You can check the mode at GET /api/v2/config/csv-export, which returns async_enabled: true or false.
Affected endpoints include address-level transaction, token transfer, log, and internal transaction exports, token holder exports, Celo election rewards exports (where applicable), and GET /api/v2/advanced-filters/csv.
There's also a per-IP rate limit for pending jobs, controlled by CSV_EXPORT_ASYNC_MAX_PENDING_TASKS_PER_IP. Too many pending exports from the same IP returns 409 Conflict.
FHE Operations and Tags
Support for Fully Homomorphic Encryption (FHE) operations and tags lands in v11. This is early-stage support, but it opens the door for chains experimenting with FHE-based computation to have their activity indexed and surfaced properly in the explorer.
BENS Preload Toggles
BENS (the ENS-like service Blockscout uses for name resolution) has always been nice to have on transaction pages, but on high-traffic instances it can add load time. v11 gives operators more control:
- A toggle to disable BENS preloads on transactions and token transfers
- A block-level BENS preload toggle
- Restored BENS preloads on the main page under a toggle
- ENS and metadata preloading in the block WebSocket channel
If you run a busy instance and want to reduce database pressure, you can now turn these off selectively.
Legacy RPC Wrappers
Three ES-compatible RPC endpoints now have /api/legacy/* wrappers. This makes migration easier if your're moving from a legacy integration or supporting older clients.
License Update
In this update Blockscout moves from GPL-3.0 to a new source-available license. The new license does not impact standalone projects running Blockscout. Projects and chains can still download, run, and modify Blockscout for free, and self-hosted explorers are unaffected.
The update only impacts Blockscout resellers who want to resell Blockscout as a paid service (hosted explorers, managed offerings, RaaS platforms, anything where customers pay another provider for functionality powered by Blockscout). These projects now need a Commercial Licence. Any interface built on Blockscout also must show a clear "Powered by Blockscout" credit linking to blockscout.com. Chain teams, internal users, and open-source contributors are not affected
Other Feature Additions
A few smaller additions that are still useful to know about:
- Configurable chunk size for token balance imports, helpful when tuning indexer performance
- Search by token address hash in
/api/v2/tokens - IPFS link validation before requests are sent to the gateway, which should cut down on wasted calls and weird errors
- A
:renameheavy index operation type that enables zero-downtime index replacement on the transactions table - Better use of the
librariesfield from the Eth Bytecode DB response
Breaking Changes You Need to Know About
This release has several breaking changes. If you have integrations sitting on top of the API or WebSocket, read this section carefully.
1. Polygon zkEVM Support Removed
Support for Polygon zkEVM has been completely removed. The polygon-zkevm chain type is gone, and every endpoint under /api/v2/zkevm/* is no longer available.
If any of your tooling hits zkEVM endpoints, you'll need to migrate off or remove those calls.
2. Transaction Actions Deprecated
The transaction_actions field is removed from GET /api/v2/transactions/:hash. If your client parses that field, it's time to update the code.
3. BENS Fields Now Optional
When BENS preload is disabled, ens_domain_name will be missing from the response on several endpoints, including:
/api/v2/transactions/api/v2/addresses/:hash/transactions/api/v2/blocks/:hash/transactions/api/v2/token-transfers/api/v2/addresses/:hash/token-transfers/api/v2/tokens/:address_hash_param/transfers
Treat ens_domain_name as optional in your client code going forward.
4. WebSocket new_block Payload Is Variable
The new_block event on the block channel may now include metadata and ens_domain_name, depending on how the instance is configured. These fields are present on some instances and absent on others, so your WebSocket consumer should handle them as optional.
5. Stricter Validation on Chain-Specific Endpoints
OpenAPI specs have been expanded for Scroll, Zilliqa, and Celo, and along with that comes stricter input validation. Endpoints that used to accept loosely formatted input now reject it. Affected paths include:
/api/v2/scroll/*/api/v2/transactions/scroll-batch/*/api/v2/validators/zilliqa/*/api/v2/celo/*/api/v2/addresses/:hash/celo/*
If you hit any of these, make sure your request format matches the spec.
6. Async CSV Export (Conditional)
Mentioned above under features, but worth repeating here: if async CSV export is enabled on your instance, your existing CSV export clients will break because the response format is completely different. Check GET /api/v2/config/csv-export to see which mode you're running.
Performance Improvements
v11 includes several optimizations that should make things snappier:
- Faster
token1155txAPI v1 endpoint - Optimized optional address preloads across transaction endpoints
- Better performance for on-demand hot contracts
- Removed a join to the
blockstable in/api/v2/blocks/:block_number/transactions - General performance improvements to
/api/v2/tokens
If your instance handles heavy API traffic, these should show up in your response times.
Bug Fixes Worth Calling Out
The bug fix list is long (20+ fixes), but a few stand out:
- Fixed a Filecoin view error that affected Filecoin-specific deployments
- Fixed timeouts on the API v1
tokentxendpoint - Fixed the implementation address hash retrieval logic in the old UI
- Fixed Celo election rewards CSV export
- Fixed a 500 error when an API key was provided with a disabled account
- Fixed a 500 error in
NFTHelper.get_media_src/2 - Fixed pending operations migration overflow using adaptive batching and chunked inserts
There are plenty more fixes covering internal transaction fetching, contract code handling, GraphQL schema syncing, and RPC error handling. If you've been tracking a specific issue, check the full release notes on GitHub.
Refactors and Under-the-Hood Work
A few refactors that matter if you contribute to the codebase or run into edge cases:
RollupReorgMonitorQueuehas been refactoredjson_rpc_named_argumentshas been deduplicated- Full migration to the
languageenum field in thesmart_contractstable address_namesmigrated to a composite primary key on(address_hash, name)
The transactions table in particular got a lot of attention this release, with several migrations, index operations, and cleanup tasks. The zero-downtime index replacement mentioned earlier should help large instances during future schema changes.
Upgrading
A few practical notes for the upgrade:
- Make sure you're on v10.1 before you start
- Review the breaking changes list and check which ones apply to your integrations
- If you run async CSV export, update your clients before enabling it
- Watch for the BENS-related changes if you rely on
ens_domain_namein your responses - If you're on Polygon zkEVM, plan your migration path before upgrading
As always, the full release notes and changelog are on GitHub, and the team is available in Discord if you run into issues during the upgrade.
Wrapping Up
v11.0.0 is a substantial release. The async CSV export and FHE support are the headline features, but the real story is in the quieter improvements: faster queries, better migration tooling, more operator control over expensive preloads, and cleaner API behavior.
If you run a production Blockscout instance, the breaking changes deserve a careful read before you upgrade. If you integrate against a hosted Blockscout explorer, check with the instance operator on whether async exports and BENS toggles are in use.