Skip to content

Track and Introduce ERC-7730 Structured Data Clear Signing Format to TRON #872

@yanghang8612

Description

@yanghang8612

Background

ERC-7730 defines a JSON format for describing how wallets and other signing tools should display structured data for clear signing. It covers smart contract calls and typed messages, including EVM calldata and EIP-712 style messages, by providing contextual metadata, display rules, field formatting, and intent descriptions.

This is relevant to TRON because clear signing can improve the user experience and reduce phishing or frontend attack risks when users review contract interactions or structured messages before signing.

Proposal

We propose to track ERC-7730 and introduce it to the TRON ecosystem as a TIP.

The current plan is to keep the standard content unchanged, so TRON wallets, DApps, SDKs, and tooling can follow the same JSON schema and semantics as ERC-7730 without introducing TRON-specific modifications to the standard itself.

Scope

The proposed TIP should:

  • Follow ERC-7730 as closely as possible.
  • Preserve the original standard structure, including context, metadata, and display.
  • Maintain compatibility with existing ERC-7730 tooling and schemas.
  • Provide TRON ecosystem guidance only where necessary, such as examples or non-normative implementation notes.

Current Plan

At this stage, we do not plan to modify the ERC-7730 standard content.

If TRON-specific details need to be clarified, such as address representation, chain ID usage, or integration with existing TRON signing standards, those should be handled as explanatory notes or examples rather than changes to the normative specification.

Compatibility Topics for Discussion

Although the current plan is to keep ERC-7730 unchanged, several TRON-specific details may need to be clarified before wallets and tooling can implement it consistently.

TIP-712 and trcToken

TIP-712 follows EIP-712 but introduces TRON-specific handling for some fields, including trcToken as an atomic type encoded as uint256.

Questions:

  • Should ERC-7730 files for TRON typed data allow trcToken in display.formats type definitions when the underlying message follows TIP-712?
  • Should trcToken be formatted as a raw uint256, or should wallets treat it as a token identifier and resolve metadata such as token name, symbol, decimals, and issuer?
  • If a field contains both a trcToken id and an amount, should the recommended ERC-7730 pattern use tokenAmount, a TRON-specific metadata path, or a plain amount plus a separate token label?
  • Can this be documented as TRON implementation guidance without changing the ERC-7730 schema or field format list?

Address Representation

TRON addresses may appear as Base58Check addresses, hex addresses with the 0x41 prefix, or ABI-level 20-byte values after removing the TRON prefix. ERC-7730 examples generally use Ethereum-style hex addresses.

Questions:

  • What should be the canonical address representation in TRON ERC-7730 files, especially under context.contract.deployments.address and context.eip712.deployments.address?
  • Should wallets accept multiple address encodings for matching, while recommending one canonical form for authored files?
  • Should displayed addresses prefer the user-facing Base58Check form even if the ERC-7730 file uses a hex form for matching?
  • How should addressName resolution work in TRON contexts, and should it be limited to wallet-local address books unless a trusted TRON naming source is available?

Chain ID and Domain Binding

ERC-7730 uses chainId in deployment and EIP-712 domain contexts. TIP-712 defines the domain chainId as block.chainid & 0xffffffff.

Questions:

  • Should TRON ERC-7730 files use the TIP-712 chainId value for context.eip712.deployments.chainId and EIP-712 domain matching?
  • Should the same value be used for smart contract call contexts under context.contract.deployments.chainId?
  • How should wallets prevent accidental cross-network matching between Mainnet, Nile, Shasta, and private networks?
  • Do we need non-normative examples showing the expected chainId values for common TRON networks?

TRON Transaction Container Mapping

ERC-7730 currently describes EVM calldata and EIP-712 messages. TRON smart contract calls are ABI-compatible at the calldata level, but the outer transaction container is TRON-specific.

Questions:

  • Can wallets map TRON TriggerSmartContract fields into the same container-level paths used by ERC-7730, such as @.from, @.to, @.value, and @.chainId?
  • Should @.to refer to the called contract address and @.from refer to the transaction owner address in TRON transactions?
  • Should @.value represent only TRX call_value, or should call_token_value and token_id require additional container paths?
  • Should the first TRON implementation scope be limited to TVM smart contract calldata and TIP-712 messages, leaving native TRX and TRC-10 system transactions for later discussion?

TRX, TRC-10, and TRC-20 Display

Clear signing needs consistent display for native TRX, TRC-10 assets, and TRC-20 tokens.

Questions:

  • Should TRX values be formatted using sun as the base unit with 6 decimals, and should this be captured only as implementation guidance?
  • For TRC-20 transfers and approvals, can existing ERC-7730 tokenAmount patterns be reused directly when token metadata is available from the contract?
  • For TRC-10 assets, should wallets resolve token metadata by token id, and how should missing or ambiguous metadata be displayed?
  • Should unlimited approval thresholds and token decimal handling follow existing ERC-7730 conventions without TRON-specific changes?

Registry and Security Considerations

ERC-7730 relies on correct binding between the file, contract or message context, and the data being signed.

Questions:

  • How should a TRON ERC-7730 registry normalize addresses and chain IDs before matching files?
  • How should wallets avoid applying an ERC-7730 file to a proxy, factory deployment, or contract clone unless the binding context is verified?
  • Should TRON wallets require stricter matching when the file contains TRON-specific metadata or examples?
  • What review process should be used before a TRON ERC-7730 file is considered trusted by wallets?

Naming and Documentation

Questions:

  • Should the TRON proposal refer to the standard as ERC-7730 for compatibility, or introduce a TRON-facing TIP title while preserving the ERC-7730 name in the specification?
  • Should the eventual TIP include TRON examples only, or should it also include a short compatibility note for TIP-712, TRC-10, TRC-20, and TRON address formats?
  • Should any TRON-specific behavior be placed in an appendix or implementation guide to make clear that the ERC-7730 standard content remains unchanged?

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions