> ## Documentation Index
> Fetch the complete documentation index at: https://base-a060aa97-docs-sync-code-change-253bb15.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).
