Skip to main content

What is Multichain Decoding?

Multichain Decoding enables seamless analysis of smart contract data across multiple blockchains. With a single contract submission, users can automatically generate protocol tables across all supported EVM chains, simplifying cross-chain data access on Dune. This feature unifies contract data views, streamlining the analysis of protocols deployed across various chains and making cross-chain insights more accessible.
Multichain decoding offers data freshness and latency comparable to regular decoding. For details on data freshness, see our data freshness page.

Example Usage

Here are a few examples showing how you can use multichain decoded table views to simplify your analysis. Each example includes “before” and “after” queries to demonstrate how multichain views streamline cross-chain analytics.
  • Using multichain decoded tables
  • Unioning single chain decoded tables
  SELECT * 
  FROM (
      SELECT 
          --this event is emitted on sale set updates too so we take distinct
          distinct
          l.blockchain
          , l.collection as nft_address
          , l.erc20zAddress as erc20_address
          , l.tokenId as token_id
          , nft.name as nft_collection_name
          , nft.defaultAdmin as creator
          , json_value(salesConfig, 'strict $.name') as nft_name
          , json_value(salesConfig, 'strict $.symbol') as nft_symbol
          , COALESCE(try(from_unixtime(cast(json_value(salesConfig, 'strict $.saleStart') as bigint))),timestamp '1970-01-01') as start_time
          , COALESCE(try(from_unixtime(cast(json_value(salesConfig, 'strict $.saleEnd') as bigint))),timestamp '2050-01-01') as end_time
          , l.poolAddress as uni_pool
          , l.evt_block_time
          , row_number() over (partition by collection, erc20zAddress, tokenId order by evt_block_time desc) as last_sale_set
      FROM ( SELECT collection, erc20zAddress, tokenId, salesConfig, evt_block_time, poolAddress, chain AS blockchain
            FROM zora_multichain.ZoraTimedSaleStrategy_evt_SaleSet ) l 
      LEFT JOIN ( SELECT name, defaultAdmin, newContract, chain AS blockchain
                  FROM zora_multichain.ZoraCreator1155FactoryImpl_evt_SetupNewContract ) nft 
            ON l.collection = nft.newContract AND l.blockchain = nft.blockchain
  ) 
  WHERE last_sale_set = 1
  • Using multichain decoded tables
  • Unioning single chain decoded tables
  select chain, date_trunc('day', call_block_time) AS block_date, count(*) as cnt
  from gnosis_safe_multichain.Safe_v1_4_1_call_execTransaction
  group by 1, 2

How It Works

Requirements for Multichain View Construction ⚠️

To create a multichain decoded view, the following criteria must be met:
  • Contracts must have the same ABI across chains.
  • Contracts must be organized under the same project namespace and contract name (e.g., uniswap_v3, UniswapV3Pool).
This standardized labeling enables Dune to merge data from different chains into a single, unified view.

Submitting Multichain Contracts

Paid Team Required: Only users with a paid team subscription can submit multichain contracts. Individual accounts and free teams do not have access to multichain contract submissions. For more information about team plans, see our pricing page.
When contracts with the same ABI are submitted across multiple chains, they are combined into a single cross-chain table, enabling consistent, streamlined data access and queries across chains.

Accessing and Navigating Tables

Multichain decoded contract tables are accessible in the Data Explorer, just like regular decoded contract tables. These multichain entries feature a distinct symbol and display the list of supported chains, clearly indicating they span multiple chains.
I