Skip to main content

Arc Testnet Calls & Traces API

Query and stream smart contract calls on Arc testnet with Bitquery GraphQL. The EVM.Calls cube on network: arc_testnet holds every call in every transaction, including internal calls, with the decoded method signature, the call path, value, gas, success and revert flags, and the enclosing transaction. It returns what debug_traceTransaction and trace_filter return, without running a node, and the same query runs as a subscription.

Every query on this page was executed against the production endpoint before publishing. Change query to subscription on any of them to stream the same rows.

Testnet: realtime only, USD fields are 0

Only dataset: realtime exists for Arc testnet; leave the dataset argument out. Call.ValueInUSD and the transaction ...InUSD fields return 0.

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 ➤

On this page: Call anatomy · Stream · Latest · By method · By selector · Internal calls of a transaction · Deployments · Reverts · Top methods · Value-carrying calls · FAQ


What one call row contains

GroupWhat it gives you
CallFrom, To, Value, Input, Output, Gas, GasUsed, Success, Reverted, Error, Create, Delegated, SelfDestruct, CallPath, Index, Depth
Call.SignatureName, full Signature, SignatureHash (the 4-byte selector, without 0x)
ArgumentsDecoded, typed inputs for registered ABIs
TransactionHash, From, To, value, gas and fee fields
ReceiptStatus, GasUsed, deployed ContractAddress
BlockNumber, Time

A transaction's top-level call has Call.Index 0 and an empty CallPath; internal calls have deeper paths. Filter Call: {Index: {eq: 0}} when you want one row per transaction.

Example addresses on this page

ItemAddress
Uniswap v4 PoolManager0x1d70945634f618eefdf9edaadb59b9a183cef929
USDC (ERC-20)0x3600000000000000000000000000000000000000

Stream calls to a contract

▶️ Run in IDE

Every call into the Uniswap v4 PoolManager, internal or top-level, as it happens.

subscription {
EVM(network: arc_testnet) {
Calls(
where: {Call: {To: {is: "0x1d70945634f618eefdf9edaadb59b9a183cef929"}}}
) {
Block {
Number
Time
}
Transaction {
Hash
From
}
Call {
From
To
Value
Success
CallPath
Signature {
Name
Signature
SignatureHash
}
}
}
}
}

Latest calls

▶️ Run in IDE

The most recent top-level calls, one per transaction.

{
EVM(network: arc_testnet) {
Calls(
limit: {count: 20}
orderBy: {descending: Block_Time}
where: {Call: {Index: {eq: 0}}}
) {
Block {
Number
Time
}
Transaction {
Hash
}
Call {
From
To
Value
Success
Gas
GasUsed
Signature {
Name
SignatureHash
}
}
}
}
}

Calls of one method

▶️ Run in IDE

Filter on the decoded method name and the contract. This reads transfer calls into the ERC-20 USDC contract with their decoded arguments.

{
EVM(network: arc_testnet) {
Calls(
limit: {count: 20}
orderBy: {descending: Block_Time}
where: {
Call: {
To: {is: "0x3600000000000000000000000000000000000000"}
Signature: {Name: {is: "transfer"}}
}
}
) {
Block {
Time
}
Transaction {
Hash
}
Call {
From
Success
Signature {
Signature
}
}
Arguments {
Name
Value {
... on EVM_ABI_Address_Value_Arg {
address
}
... on EVM_ABI_BigInt_Value_Arg {
bigInteger
}
}
}
}
}
}

Calls by 4-byte selector

▶️ Run in IDE

When the ABI is not registered, filter on the selector in Call.Input instead. This matches approve(address,uint256) by its 0x095ea7b3 prefix on any contract.

{
EVM(network: arc_testnet) {
Calls(
limit: {count: 20}
orderBy: {descending: Block_Time}
where: {Call: {Input: {startsWith: "0x095ea7b3"}}}
) {
Block {
Time
}
Transaction {
Hash
}
Call {
From
To
Input
Success
Signature {
Name
}
}
}
}
}

Internal calls of a transaction

▶️ Run in IDE

The full call tree of one transaction, ordered by call index. Replace the hash with any recent transaction from the Transactions API.

{
EVM(network: arc_testnet) {
Calls(
orderBy: {ascending: Call_Index}
where: {
Transaction: {
Hash: {is: "0x9be99a14a7db15fae9b78c68c3bfb41cfd67654a7b8cdf499f56e712d8349fe1"}
}
}
) {
Call {
Index
Depth
CallPath
From
To
Value
Gas
GasUsed
Success
Reverted
Delegated
Signature {
Name
Signature
}
}
}
}
}

Contract deployments

▶️ Run in IDE

Call.Create: true marks a call that deployed a contract. The new address is in Receipt.ContractAddress for top-level deployments; for factory deployments read Call.To on the create call.

{
EVM(network: arc_testnet) {
Calls(
limit: {count: 20}
orderBy: {descending: Block_Time}
where: {Call: {Create: true}}
) {
Block {
Time
Number
}
Transaction {
Hash
From
}
Call {
From
To
Success
CallPath
}
Receipt {
ContractAddress
}
}
}
}

Reverted calls

▶️ Run in IDE

Calls that reverted, with the error string when the EVM returned one. Useful for debugging a contract under test.

{
EVM(network: arc_testnet) {
Calls(
limit: {count: 20}
orderBy: {descending: Block_Time}
where: {Call: {Reverted: true}}
) {
Block {
Time
}
Transaction {
Hash
From
}
Call {
From
To
Error
CallPath
Signature {
Name
}
}
}
}
}

Most called methods

▶️ Run in IDE

Method signatures ranked by call count over 24 hours. ERC-20 transfer, balanceOf and approve dominate, followed by Uniswap v4 hook callbacks.

{
EVM(network: arc_testnet) {
Calls(
limit: {count: 20}
orderBy: {descendingByField: "count"}
where: {
Block: {Time: {since_relative: {hours_ago: 24}}}
Call: {Signature: {Name: {not: ""}}}
}
) {
Call {
Signature {
Name
Signature
SignatureHash
}
}
count
contracts: uniq(of: Call_To)
}
}
}

Calls that move native USDC

▶️ Run in IDE

Internal calls that carried native USDC value. This is how value moves between contracts shows up, since those movements are not ERC-20 Transfer events.

{
EVM(network: arc_testnet) {
Calls(
limit: {count: 20}
orderBy: {descending: Block_Time}
where: {Call: {Value: {gt: "10"}}}
) {
Block {
Time
}
Transaction {
Hash
}
Call {
From
To
Value
Index
Signature {
Name
}
}
}
}
}

FAQ

How do I get one row per transaction? Filter Call: {Index: {eq: 0}}. Every other row is an internal call.

Why is Signature.Name empty on some calls? The ABI is not registered. The raw Input and the selector prefix are still there, so filter with Input: {startsWith: ...}, and ask support to register the ABI if you need decoded arguments.

Is Call.Value in USDC? Yes. The gas token on Arc is USDC, so Call.Value and Transaction.Value are native USDC amounts. ValueInUSD is 0 on testnet even though the value is dollar-denominated.

Does this replace debug_traceTransaction? For call trees, yes: CallPath, Depth, Index, gas per call and revert reasons are all here. Opcode-level traces are not.

Can I read calls older than the realtime window? Not on the testnet; only dataset: realtime exists.

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.