New Release: Blockscout v11.0.0

New Release: Blockscout v11.0.0
💡
What's New: Async CSV Exports, FHE Support, and Several Breaking API Changes

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

📕
Existing instances: v11.0.0 must be installed on top of v10.1
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 by block_number)
  • transaction_hash (replaced by transaction_index)
  • error (replaced by error_id enum)

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.

Note: To reclaim disk space after the upgrade, maintainers need to run 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 Accepted with a request_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_id and an expires_at timestamp

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 :rename heavy index operation type that enables zero-downtime index replacement on the transactions table
  • Better use of the libraries field 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 token1155tx API v1 endpoint
  • Optimized optional address preloads across transaction endpoints
  • Better performance for on-demand hot contracts
  • Removed a join to the blocks table 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 tokentx endpoint
  • 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:

  • RollupReorgMonitorQueue has been refactored
  • json_rpc_named_arguments has been deduplicated
  • Full migration to the language enum field in the smart_contracts table
  • address_names migrated 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_name in 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.