Clear signing

Many wallets still show raw data for any contract they don’t recognise, and “blind signing” — approving calls you can’t actually read — is one of the ways wallets get drained. Vela’s answer is clear signing: before you sign, the transaction is decoded into something you can understand, as far as it can be.

What you see

Instead of raw calldata, Vela shows:

  • Intent — what the transaction does: Send, Approve, Swap, and so on.
  • The substance — the amounts and the addresses involved, with token amounts shown in real units and recipients resolved to a name where one exists.
  • The details — nonce, deadlines, and the raw calldata, available on demand rather than shoved in your face.
  • A risk indication, color-coded so that dangerous actions stand out.

How it works (ERC-7730)

Vela decodes both contract calls and EIP-712 typed data using ERC-7730 descriptors — small, shareable definitions of what a contract’s functions mean.

Vela looks for a descriptor in this order:

  1. Built into the app — descriptors for widely used contracts: the Uniswap, PancakeSwap and SushiSwap routers, WETH, the Aave v3 pool, 1inch, Lido and wstETH, and Seaport.
  2. Fetched from Vela’s chain-data server, which republishes the public ERC-7730 registry.
  3. Standard shapes — ERC-20 tokens, ERC-721 and ERC-1155 NFTs, ERC-4626 vaults and ERC-2612 permits — so most everyday actions still decode.

Verified is reserved for the first source. A transaction is labelled verified only when the description came from a descriptor built into the app you are running — or from the chain-data server and is identical to the built-in copy, which proves nothing was changed in transit. Anything else the server sends is still decoded and still shown, with a line saying it came from the descriptor service and nothing authenticated it. That service is not signed, so it is only as trustworthy as whoever runs it — which is one reason you can run your own.

Token amounts are formatted using the token’s real on-chain decimals. If Vela can’t confirm a token’s decimals, it shows the amount as if the token had 18 and marks it unverified, so a wrong number never looks like a checked one.

Risk levels

Every decoded transaction gets a risk level so the dangerous patterns stand out:

  • Caution for approvals and permits — you’re granting spending power.
  • Danger for the genuinely risky, like an unlimited token approval.
  • Lower risk for routine actions like staking or depositing.

When Vela can’t decode a call

When no ERC-7730 descriptor exists but the function appears in a public selector database, Vela decodes the call generically and labels it best effort — decoded, but not verified — under a caution banner. If even that fails, or Vela can only decode part of a transaction, it does not pretend to understand it.

Why this matters

Self-custody means no one can reverse a bad transaction for you. The defense isn’t a support desk — it’s understanding what you approve before you approve it. Clear signing is how Vela tries to show you that, and it has limits: it can only be as honest as the app showing it, which is why an independent check matters. See the whitepaper for where it fits in Vela’s security model.