Skip to main content

Display EVM call data in Utila transactions

Updated over a month ago

To help users clearly understand what they are signing or approving, Utila decodes and enriches EVM call data using verified smart contract sources.

This behavior is consistent across both the Console and Mobile apps

Overview of call data decoding

When a transaction includes EVM call data, Utila attempts to fully decode and enrich it before the transaction is approved or signed.

The decoding flow includes:

  • Identifying the destination contract address

  • Fetching verified contract ABIs from supported block explorers

  • Detecting proxy contracts and resolving their implementation contracts

  • Decoding the function selector

  • Decoding function parameters

  • Enriching decoded output with human readable function names, parameter names, types, and values from your Utila vault.

This ensures users are not blindly signing raw hexadecimal data.

Data sources and supported chains

Utila fetches contract ABIs from verified contracts on supported EVM block explorers, such as Etherscan and equivalent explorers on other supported chains.

If a contract is verified, Utila can usually decode and display:

  • Function name

  • Parameter names

  • Parameter types

  • Decoded parameter values

If a contract is not verified, decoding may be partial or unavailable.

Utila also uses 4bytes directory to match known method ID / Function selector, to ensure known function on unverified contracts still remain visible to the users.

Proxy contract handling

Many smart contracts use proxy patterns. Utila detects common proxy standards and attempts to resolve the underlying implementation contract.

If the implementation contract is verified, Utila decodes the call data using the implementation ABI rather than the proxy interface, resulting in accurate function and parameter decoding.

Where to find decoded call data on the console

  1. In the console, decoded call data is displayed directly within the transaction details pane, payload section. Click the transaction to display the transaction details in the right pane.

  2. When applicable, the implementation proxy can be found under “Decoded info received from Etherscan”.

  3. You can view the data in a table format, JSON, and raw call data.

Where to find decoded call data on the mobile app

On the mobile app, decoded call data is available within the transaction details screen. Tap a transaction to see the transaction details. then, in the Payload section, tap View details to see the decoded call data.

How to list a function on 4bytes.directory

Utila queries the open-source 4bytes.directory database to decode call data.

If the function signature exists in the public database, the method name and parameter values are displayed in the transaction details.

If the function is not listed, you can self-list it by following these steps:

  1. Fetch the contract ABI. Most EVM block explorers provide the contract ABI under the Contract tab on the contract page.

  2. Submit the ABI. Paste the ABI into the 4bytes.directory import tool.

  3. Verify the function signature. Identify the 4-byte function signature by taking the first 8 characters after "0x" in the call data.

    Example:

    Given the call data:
    0x864f6a7a000000000000000000000000b3f8b683dd4b163937e6d60d8e09a0497ed81b59...
    The function signature is 0x864f6a7a.

  4. Wait for processing. Once the function appears in the public database, it may take up to 24 hours to be seen in Utila transactions.

Did this answer your question?