> ## Documentation Index
> Fetch the complete documentation index at: https://base-a060aa97-roethke-b20-upgrade-pages.mintlify.site/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.

## Update Integrations for Denim

| Integration to review | Action 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. |
| Bridge or proof flow that reads historical block hashes or beacon roots | Review its history assumptions. The retained number of values is unchanged, but 200ms blocks mean that history covers less elapsed time. |

<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](/upgrades/denim/200ms-blocks).
