Skip to main content
Every token transfer over Elysium’s canonical bridge, and every HYPE transfer between HyperEVM and Elysium, leaves a record on Elysium. This guide builds a Turbo pipeline that writes each transfer to one Postgres table with its direction, route, token, sender, recipient and amount. Use it to measure how much value moves onto Elysium, which tokens move, and which wallets bridge.

What you’ll need

  1. A Goldsky account and the CLI installed
  1. Install the Goldsky CLI: For macOS/Linux:
    For Windows:
    Windows users need to have Node.js and npm installed first. Download from nodejs.org if not already installed.
  2. Log into your Project by running:
    This opens your browser to sign in (Google, GitHub, SSO, or email). Once you authenticate, the CLI is logged in automatically — there’s no API key to copy or paste.
    On a headless or remote machine (or in CI), create an API key on your Project Settings page and pass it directly with goldsky login --token <API_KEY>. Use goldsky login --no-browser to print the login URL instead of opening a browser.
  3. Now that you are logged in, run goldsky to get started:
  1. A Postgres database and a Goldsky secret for it. The examples call the secret MY_POSTGRES.
  2. Basic familiarity with Turbo pipelines and decoding contract events.

Routes between HyperEVM and Elysium

Elysium is an Arbitrum Orbit chain that settles to HyperEVM. This guide covers two routes, and each one leaves a different record on Elysium: Kinetiq’s token bridging docs describe each bridge from the user’s side.

Contract addresses

Two common tokens on the canonical route: Kinetiq publishes the full list on its contract addresses page, and warns that look-alike WHYPE and USDC tokens exist. Check a token’s address before you count its flows.

Pipeline YAML

The pipeline reads two curated Elysium datasets: elysium_mainnet.raw_logs for the gateway and ArbSys events, and elysium_mainnet.receipt_transactions for HYPE deposits. start_at: earliest loads every bridge transfer since the chain started, then keeps streaming new ones.
elysium-bridge-flows.yaml
Deploy it:

How the transforms work

Token gateways

Both gateways use the standard Arbitrum token bridge events, so one ABI decodes them. topics is a comma-separated string, so SPLIT_INDEX(topics, ',', 0) extracts the event signature. _gs_log_decode returns parameters by position, and the two events put the amount in different positions: fourth in DepositFinalized, sixth in WithdrawalInitiated. The CASE in token_flows picks the right one. The first parameter of both events is the token’s address on HyperEVM, not on Elysium. Use the token table above to map the two.

HYPE out

A HYPE withdrawal calls the ArbSys precompile at 0x…0064, which emits L2ToL1Tx. Token withdrawals emit L2ToL1Tx too, but with a callvalue of 0, so the filter callvalue > 0 keeps only HYPE. caller is the sender on Elysium and destination is the recipient on HyperEVM.

HYPE in

A HYPE deposit doesn’t emit an event. Elysium records it as a deposit transaction of type 0x64 (100) that sends the value to the recipient. Its from_address is the sender’s HyperEVM address plus the Arbitrum alias offset 0x1111000000000000000000000000000000001111. Subtract the offset in your database if you need the original sender.

Query the flows

Net flow per route and token per day, in Postgres:
Amounts are in each token’s smallest unit. HYPE and WHYPE have 18 decimals and USDC has 6. Other tokens need their own decimals() value. To inspect a single row, open its transaction_hash in the Elysium explorer.

Notes

  • Withdrawals are recorded when they start. An out row means the withdrawal began on Elysium. The funds reach HyperEVM later, when the withdrawal is executed there. This pipeline reads only Elysium, so it does not record that second step.

Getting help

Can’t find what you’re looking for? Reach out to us at support@goldsky.com for help.