What you’ll need
- A Goldsky account and the CLI installed
Install Goldsky's CLI and log in
Install Goldsky's CLI and log in
-
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.
-
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>. Usegoldsky login --no-browserto print the login URL instead of opening a browser. -
Now that you are logged in, run
goldskyto get started:
- A Postgres database and a Goldsky secret for it. The examples call the secret
MY_POSTGRES. - 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
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 theArbSys 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 type0x64 (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:decimals() value. To inspect a single row, open its transaction_hash in the Elysium explorer.
Notes
- Withdrawals are recorded when they start. An
outrow 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.