Querying Info from our Contracts

Querying Info from the SYMMIO Diamond

Because SYMMIO is built on the Diamond Standard, the protocol's read methods are spread across many facets behind a single address. Calling them through a generic block explorer is awkward — explorers don't know which facet implements which selector, and the ABI surface area is large. The SYMMIO Intent Inspector is built for exactly this: it reads the live facet/selector map per chain, gives you a typed form for every read function, and decodes the results into something readable.

This page walks through the most common things a frontend developer reaches for the Inspector to do.

The Inspector works against any SYMMIO diamond — the Symmio core, the AccountLayer, and the InstantLayer are all browsable. Just pick the chain and paste the diamond address you want to inspect.

Opening the Inspector

Go to intent.symmscan.com/inspector. Pick the chain you want to query (the inspector supports every chain SYMMIO is deployed on), then paste the diamond address — or use one of the suggested defaults for that chain.

The URL pattern is also human-readable:

So you can deep-link to a specific function call.

Browsing facets and selectors

Once you've loaded a diamond, the Inspector shows every facet registered on it, along with every function selector that facet implements. This is the single source of truth for "is function X live on chain Y" — if a selector is missing from this list, the facet hasn't been deployed (or hasn't been cut into the diamond) on that chain.

Calling a view function

Click any read function (view / pure) and the Inspector generates a typed input form for its parameters. Fill in the inputs, hit "call", and the result comes back decoded.

Some common reads you'll do this way:

Function
Diamond
What you get

getUserSubAccountsAddresses(owner, offset, limit)

AccountLayer

All SubAccounts owned by an EOA

getVirtualAccountsAddressesOfSubAccount(sub, offset, limit)

AccountLayer

Currently-active VAs on a SubAccount

getVirtualAccountQuoteIds(va, offset, limit)

AccountLayer

Open quote IDs the AccountLayer is tracking on a VA

predictNextVirtualAccountAddress(sub, isolation, symbolId)

AccountLayer

Deterministic next-VA address — use this when computing addMarginToNextVA calldata

getActiveVAByKey(sub, isolation, symbolId)

AccountLayer

The live VA for (sub, isolation, symbol), or 0x0 if none

getBindState(account)

Symmio core

(status, partyB, timestamp)status == 1 means bound

getQuote(quoteId)

Symmio core

The full quote struct (size, price, locked margins, state, etc.)

For the full set of read functions on each diamond, see the facet listing — anything view-tagged is callable from the Inspector.

Decoding calldata

If you've got a raw 0x… blob — from a failed transaction, a log, an EIP-712 SignedOperation's callData field — the Inspector can decode it as long as the leading selector matches one in the diamond's selector map. Paste the calldata, pick the diamond, and the Inspector resolves it to a function name and pretty-prints the arguments.

This is the fastest way to debug an Instant Layer SignedOperation — sign one, paste the callData into the decoder, and verify it's calling what you think it's calling before posting to the solver.

Reading bind state for an account

When wiring up the Instant Layer flow, the most common "why is sendQuote reverting" answer is that the SubAccount isn't bound to a PartyB. Bind state lives on the Symmio core (not the AccountLayer), so:

  1. Open the Symmio core diamond in the Inspector.

  2. Call getBindState(<subAccount>).

  3. Expect status = 1 and partyB = <your hedger>. Anything else means bindToPartyB hasn't landed (or landed on a different SubAccount).

Reading a quote's state

Given a quoteId returned by the hedger's SendQuoteTransaction notification, call getQuote(quoteId) on the Symmio core to see the full quote struct: price, quantity, filled amounts, locked margins, state (PENDING / LOCKED / OPEN / CLOSE_PENDING / CLOSED / etc.), the bound PartyB, and the affiliate.

Last updated