How to create metadata with the JSON Builder

Generate Clear Signing metadata for your smart contracts in under 10 minutes using the ERC-7730 JSON Builder.

Prerequisites

Before you start, have the following ready:

  • Your smart contract address on a supported EVM chain
  • Your contract’s ABI (available on Etherscan or from your deployment artifacts)
  • Your dApp name and public URL

The JSON Builder works best for single-contract deployments with standard function signatures. If your contract uses EIP-712 messages, nested tuples, proxy patterns, or custom encoding, use the Manual Implementation guide instead.

Create your metadata file

Open the JSON Builder

Go to the ERC-7730 JSON Builder.

The ERC-7730 JSON Builder interface showing the contract address input field and chain selector

The JSON Builder fetches your ABI automatically when you enter a verified contract address

Enter your contract details

Paste your checksummed contract address into the Contract address field and select the chain it is deployed on. The tool fetches your ABI automatically from Etherscan.

If automatic ABI fetching fails—for example because the contract is not verified—paste your ABI JSON directly into the ABI field. You can copy it from your deployment artifacts, Hardhat build output, or your block explorer.

Add your dApp information

Enter your dApp name (shown to users during signing) and your dApp URL. These values populate the owner and info.url fields in the generated metadata.

Select the functions to describe

The tool lists every public and external function from your ABI. Select the functions users will call directly when interacting with your dApp—for example transfer, swap, or approve. You do not need to include internal, pure, or owner-only functions that users will never sign.

Configure the display for each function

For each selected function, define the following:

  • Intent – a short verb phrase shown to the user on their signer (for example, “Send” or “Swap tokens”)
  • Field labels – human-readable names for each parameter (for example, rename _to to “Recipient”)
  • Field formats – how each value is displayed (for example, tokenAmount for ERC-20 values, addressOrName for Ethereum addresses, date for timestamps)

To choose the right format for each field, refer to the Format types reference.

⚠️

Every parameter in the function signature must either be assigned a display format or explicitly excluded. The validator will reject the file if any parameter is left unaccounted for.

Preview the result

Click Preview to see how your metadata will appear on a Ledger signer. Verify that each field shows the correct label and value. If a field displays raw hex data instead of a readable value, check that the format and its required parameters are correctly configured.

Export the JSON file

Click Export to download your metadata file. The file is now ready for validation and submission to the registry.

What the exported file looks like

The JSON Builder produces a file in the ERC-7730 format. Here is an example for an ERC-20 transfer function:

{
  "$schema": "https://eips.ethereum.org/assets/eip-7730/erc7730-v1.schema.json",
  "context": {
    "contract": {
      "abi": "https://api.etherscan.io/api?module=contract&action=getabi&address=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "deployments": [
        { "chainId": 1, "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }
      ]
    }
  },
  "metadata": {
    "owner": "Circle",
    "info": { "url": "https://www.circle.com/" }
  },
  "display": {
    "formats": {
      "transfer(address,uint256)": {
        "intent": "Send",
        "fields": [
          { "path": "_to", "label": "Recipient", "format": "addressOrName" },
          {
            "path": "_value",
            "label": "Amount",
            "format": "tokenAmount",
            "params": { "tokenPath": "@.to" }
          }
        ],
        "required": ["_to", "_value"],
        "excluded": []
      }
    }
  }
}

Troubleshooting

ABI fetch fails or returns an empty result

This happens when the contract is not verified on Etherscan, or when the contract is deployed on a chain where automatic ABI fetching is not supported.

  • • Verify the contract on Etherscan if it is not already verified
  • • Paste your ABI JSON directly into the ABI field
  • • Confirm you selected the correct chain

A function does not appear in the function list

The tool lists only external and public functions. Internal, private, and view functions are not shown.

  • • Confirm the function visibility in your contract source
  • • If the function uses a non-standard signature, nested tuples, or calldata slicing, use manual implementation instead

The preview shows raw values instead of formatted labels

A field format may be missing a required parameter. For example, tokenAmount requires either tokenPath or a direct token address.

  • • Review the format configuration for each field
  • • Check the Format types reference for required parameters per format

Your metadata file is ready. The next step is to validate it and submit it to the registry.

Next steps

To help improve the JSON Builder, fill in the feedback form.

Ledger
Copyright © Ledger SAS. All rights reserved. Ledger, Ledger Stax, Ledger Flex, Ledger Nano, Ledger Nano S, Ledger OS, Ledger Wallet, [LEDGER] (logo), [L] (logo) are trademarks owned by Ledger SAS.