Skip to main content
The crosschain.bridges.messaging_protocols_inbound_messages and crosschain.bridges.messaging_protocols_outbound_messages tables provide message activity from cross-chain communication layers across all supported chains. Both tables share an identical schema — the direction column distinguishes inbound from outbound records. Messaging protocols support both token transfers and arbitrary message passing. Token transfer fields are populated when the message includes a token payload; message_details captures protocol-specific non-token message data. Protocols covered: Axelar, Chainlink CCIP, Circle CCTP (v1, v2), Hyperlane, LayerZero (v2), Socket DL, Wormhole Chains: Abstract, Aptos, Arbitrum, Avalanche, Base, BSC, Ethereum, HyperEVM, Ink, Katana, Mantle, Optimism, Plasma, Polygon, Scroll, SEI, Solana, Sui, Tron, Unichain, WorldChain

Table Columns

Unique key: unique_id
Column NameData TypeDescription
chainVARCHARThe blockchain where this message was recorded (e.g., ethereum, solana).
projectVARCHARThe messaging protocol name (e.g., layerzero, wormhole, circle_cctp).
protocolVARCHARThe specific protocol version identifier (e.g., layerzero_v2, cctp_v2).
contract_addressVARCHARThe messaging protocol contract address on this chain.
event_nameVARCHARThe on-chain event name that generated this record.
directionVARCHARMessage direction relative to this chain: inbound or outbound.
source_chainVARCHARThe chain where the message originates.
destination_chainVARCHARThe chain where the message is destined.
sender_addressVARCHARThe address that sent the message.
recipient_addressVARCHARThe address that receives the message on the destination chain.
token_typeVARCHARThe token standard, if this message includes a token transfer (e.g., ERC20, SPL). NULL for message-only transfers.
token_addressVARCHARThe contract address of the token being transferred. NULL for message-only transfers.
token_nameVARCHARHuman-readable token name. NULL for message-only transfers.
token_symbolVARCHARToken ticker symbol. NULL for message-only transfers.
amount_rawVARCHARRaw token amount, not adjusted for decimals. NULL for message-only transfers.
amountVARCHARDecimal-adjusted token amount. NULL for message-only transfers.
usd_amountFLOATUSD value of the token transfer at time of transaction. NULL for message-only transfers.
fee_token_addressVARCHARContract address of the token used to pay messaging fees. NULL if not applicable.
fee_token_nameVARCHARHuman-readable name of the fee token.
fee_token_symbolVARCHARFee token ticker symbol.
fee_amount_rawVARCHARRaw fee amount, not adjusted for decimals.
fee_amountVARCHARDecimal-adjusted fee amount.
fee_usd_amountFLOATUSD value of the fee at the time of the transaction.
fee_detailsVARIANTProtocol-specific fee breakdown.
message_detailsVARIANTProtocol-specific message payload fields (non-token data such as nonces, sequence numbers, and message hashes).
extra_fieldsVARIANTProtocol-specific additional fields not captured in standard columns.
transaction_from_addressVARCHARThe EOA or contract that submitted the transaction.
transaction_to_addressVARCHARThe contract address called in the transaction.
transaction_hashVARCHARThe on-chain transaction hash.
transaction_indexBIGINTThe transaction’s position within the block.
log_indexBIGINTThe log’s position within the transaction.
block_numberBIGINTThe block height at which this message was recorded.
block_timestampTIMESTAMP_NTZ(9)The timestamp of the block.
block_hashVARCHARThe hash of the block.
unique_idVARCHARA unique identifier for this message record.
_created_atTIMESTAMP_NTZ(9)Timestamp when this record was created in Allium.
_updated_atTIMESTAMP_NTZ(9)Timestamp when this record was last updated in Allium.

Sample Query

Outbound messaging protocol volume by protocol and destination chain in the last 7 days.
SELECT
    project,
    protocol,
    destination_chain,
    COUNT(1) AS messages,
    COUNT_IF(usd_amount IS NOT NULL) AS token_transfers,
    SUM(usd_amount) AS usd_volume
FROM crosschain.bridges.messaging_protocols_outbound_messages
WHERE block_timestamp >= CURRENT_TIMESTAMP - INTERVAL '7 days'
GROUP BY ALL
ORDER BY messages DESC
LIMIT 50