> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrate From Flashblocks

> Migrate your Flashblocks integration to 200ms blocks.

<Warning>
  200ms native blocks are live on [Vibenet](/build-on-base/test-on-vibenet) for experimental developer testing. This deployment may change, and you should not rely on it for production decisions.

  Denim is not active on Base Sepolia or Base Mainnet; activation times and required client versions remain undecided.
</Warning>

## Summary

Use this guide if your application consumes Flashblocks. Denim replaces Flashblocks with canonical 200ms blocks, so Flashblocks subscriptions and pending state are unavailable after activation.

## Recommended Action

Inventory every Flashblocks subscription and RPC request that uses the `"pending"` block tag before Denim. Replace each integration using the table below.

## Replace Flashblocks Integrations

| Flashblocks integration                           | Update for Denim                                                                   |
| ------------------------------------------------- | ---------------------------------------------------------------------------------- |
| `eth_subscribe("newFlashblocks")`                 | Use `eth_subscribe("newHeads")`.                                                   |
| `eth_subscribe("pendingLogs")`                    | Use `eth_subscribe("logs")`.                                                       |
| `eth_subscribe("newFlashblockTransactions")`      | Use `eth_subscribe("newHeads")`, then fetch transactions for each canonical block. |
| `eth_getBlockByNumber("pending", ...)`            | Use normal RPC calls to read the latest canonical blocks.                          |
| `eth_getBalance(..., "pending")`                  | Use normal RPC calls to read the latest canonical state.                           |
| `eth_getTransactionCount(..., "pending", ...)`    | Use normal RPC calls to read the latest canonical state.                           |
| `eth_call(..., "pending")`                        | Use normal RPC calls to read the latest canonical state.                           |
| `eth_estimateGas(..., "pending")`                 | Use normal RPC calls to read the latest canonical state.                           |
| `eth_simulateV1(..., "pending")`                  | Use normal RPC calls to read the latest canonical state.                           |
| `eth_getLogs` with a range ending at `"pending"`  | Use normal RPC calls to query logs from canonical blocks.                          |
| `eth_getBlockTransactionCountByNumber("pending")` | Use normal RPC calls to read the latest canonical block.                           |

<Warning>
  The `"pending"` block tag and Flashblocks preconfirmation state have no direct equivalent after Denim. The replacements above return canonical data from 200ms blocks, not preconfirmed or pending data.
</Warning>

## Test on Vibenet

Test your migrated integration on [Vibenet](/build-on-base/test-on-vibenet). For the protocol design and RPC behavior, see [200ms Native Blocks](/base-chain/specs/upgrades/denim/200ms-blocks).
