Skip to main content

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.

API Key Required

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 ➤


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.

Run this query in the IDE

{
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.

Run this query in the IDE

{
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.

Run this query in the IDE

{
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.

Run this query in the IDE

{
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.

Run this query in the IDE

{
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.

Build with Bitquery

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.