Elysium Smart Contract Calls API
Query and stream smart contract calls on Elysium with Bitquery GraphQL. Elysium (network: elysium, chain ID 99901) is Kinetiq's Layer 2 for the Hyperliquid ecosystem, with HYPE as the gas token. Calls holds every contract call, top-level and internal, with the caller, the contract called, the method and decoded arguments. Every query here also runs as a live stream: change query to subscription and drop limit and orderBy.
To query or stream data outside the Bitquery IDE, you need an API access token.
Follow the steps here: How to generate Bitquery API token ➤
- Elysium API overview — network facts, token addresses and every page in one place
- Elysium DEX Trades API & Streams
- Elysium Token Price API
- Elysium Liquidity Pools API
- Elysium Transfers API & Streams
- Elysium Balances & Token Holders API
- Elysium Smart Contract Events API
- Elysium Transactions, Fees & Blocks API
Latest calls of one method
Filter by method name. This returns the latest swap calls with the caller, the contract called and the gas used.
{
EVM(network: elysium) {
Calls(
where: {Call: {Signature: {Name: {is: "swap"}}}}
orderBy: {descending: Block_Time}
limit: {count: 20}
) {
Block { Time }
Transaction { Hash From }
Call {
From
To
Signature { Name Signature }
Gas
GasUsed
Success
}
}
}
}
Top methods of a contract
Group the calls to one contract by method to see how it is used. This is a Uniswap v4 pool manager contract.
{
EVM(network: elysium) {
Calls(
where: {Call: {To: {is: "0xe2e105d3f7209a9da11f83ccf3e7398a753823f1"}}, Block: {Time: {since_relative: {hours_ago: 6}}}}
orderBy: {descendingByField: "calls"}
limit: {count: 20}
) {
Call { Signature { Name Signature } }
calls: count
callers: uniq(of: Call_From)
gasUsed: sum(of: Call_GasUsed)
}
}
}
Calls with decoded arguments
Add Arguments to read the inputs of each call. This returns transfer calls on the USDC contract; Depth shows how deep the call sits inside the transaction.
{
EVM(network: elysium) {
Calls(
where: {Call: {To: {is: "0xb47c4c8f73f009cc0c0d3f92b388d13e293f0b65"}, Signature: {Name: {is: "transfer"}}}}
orderBy: {descending: Block_Time}
limit: {count: 10}
) {
Block { Time }
Transaction { Hash From }
Call { From To Depth Success Signature { Name Signature } }
Arguments {
Name
Value {
... on EVM_ABI_Address_Value_Arg { address }
... on EVM_ABI_BigInt_Value_Arg { bigInteger }
... on EVM_ABI_Integer_Value_Arg { integer }
... on EVM_ABI_String_Value_Arg { string }
... on EVM_ABI_Boolean_Value_Arg { bool }
... on EVM_ABI_Bytes_Value_Arg { hex }
}
}
}
}
}
New contract deployments
Call.Create: true keeps contract creations. Call.To is the address of the new contract.
{
EVM(network: elysium) {
Calls(
where: {Call: {Create: true}}
orderBy: {descending: Block_Time}
limit: {count: 20}
) {
Block { Time }
Transaction { Hash From }
Call { From To Create Success }
}
}
}
Run it as a subscription to see contracts as they are deployed.
Most called contracts and methods
Count calls per contract and method over the last hour.
{
EVM(network: elysium) {
Calls(
where: {Block: {Time: {since_relative: {hours_ago: 1}}}}
orderBy: {descendingByField: "calls"}
limit: {count: 20}
) {
Call { To Signature { Name } }
calls: count
}
}
}
Rows with an empty method name are calls whose signature is not known, including Arbitrum system contracts such as 0x0000000000000000000000000000000000000064.
FAQ
Does Calls include internal calls?
Yes. Top-level calls have Depth: 0, and calls made by other contracts have a higher depth.
When should I use Calls and when Events?
Use Events for what a contract reports (logs). Use Calls for what was invoked, including calls that emit no event. See Transfers vs Events vs Calls.
How do I track new token contracts? Subscribe to new contract deployments, or to new liquidity pools for tokens that start trading.
Ready to run this in production?
Get an API key and run these queries in minutes, or talk to us about plans and enterprise delivery.