Background
ERC-6909 defines a minimal multi-token interface for managing multiple token IDs in a single smart contract. It is positioned as a simpler alternative to ERC-1155: it removes required receiver callbacks and batching from the core interface, while keeping a hybrid permission model with per-token allowances and all-token operator approvals.
TRON already supports token standards such as TIP-20 and TIP-1155. However, projects that need multiple fungible-like token IDs inside one contract may not always need the heavier TRC-1155 receiver and batch-transfer model. A minimal TRC-6909 interface would provide a small, EVM-compatible, Solidity-friendly contract standard for reward points, protocol accounting balances, gaming currencies, vault shares, coupons, credits, and other multi-token use cases on TRON.
The goal is to track ERC-6909 and introduce it to TRON as a TIP, proposed as TRC-6909, while preserving compatibility with TRON's TVM, TIP-165 interface detection, address representation, wallets, explorers, and indexers.
Scope
- Define a TRC-6909 minimal multi-token interface for TVM smart contracts.
- Keep function names, event names, argument order, and ABI types aligned with ERC-6909 as closely as possible.
- Require TIP-165 support so contracts can expose the TRC-6909 interface ID.
- Preserve ERC-6909-style per-token allowances and full-operator approvals.
- Include optional metadata, content URI, and token supply extensions for projects that need them.
- Provide TRON-specific guidance only where TVM, address display, Energy/Bandwidth, wallets, explorers, or indexers require clarification.
Compatibility Topics for Discussion
- Positioning with TRC-20 and TRC-1155. TRC-6909 should not replace TRC-20 or TRC-1155. It should be recommended when a project wants multiple fungible-like token IDs in one contract without required safe receiver callbacks or required batch methods.
- TIP-165 interface detection. Because the core function selectors are intended to match ERC-6909, the proposed base interface ID is 0x0f632fb3. - TRON address handling. Solidity ABI addresses are 20-byte values, while wallets and users commonly display TRON Base58 Check addresses. Tooling should display user-friendly TRON addresses but preserve ABI-level compatibility for signatures, logs, and contract calls.
- Wallet and explorer display. TronLink, Tronscan, TronGrid, and indexers would need to recognize balances by (contract, owner, token id), not only by contract address. Transfer, Approval, and OperatorSet events should be indexed with token id awareness.
- Operator approval risk. setOperator grants unlimited transfer permission across all token IDs owned by the caller. Wallets should clearly warn users that this is stronger than approving one token ID.
- Removal of required callbacks. TRC-6909 intentionally does not require receiver callbacks. This reduces interface complexity and avoids mandatory external calls, but it also means tokens can be transferred to contracts that do not know how to handle them. This should be documented clearly.
- Batching. Batch transfers are intentionally outside the minimal core interface. Projects may add implementation-specific batch methods, but they should preserve balance/event consistency.
- Energy/Bandwidth impact. The minimal interface may reduce contract code size and transfer-path complexity compared with TRC-1155 for use cases that do not need callbacks or required batching. Actual Energy usage should be measured in a reference implementation.
- Metadata. name(id), symbol(id), decimals(id), contractURI(), tokenURI(id), and totalSupply(id) should remain optional extensions so the core remains minimal.
- Existing contracts. Already-deployed contracts cannot become TRC-6909 unless they were designed to be upgraded. Adoption is expected for new contracts or upgradeable systems.
References
Background
ERC-6909 defines a minimal multi-token interface for managing multiple token IDs in a single smart contract. It is positioned as a simpler alternative to ERC-1155: it removes required receiver callbacks and batching from the core interface, while keeping a hybrid permission model with per-token allowances and all-token operator approvals.
TRON already supports token standards such as TIP-20 and TIP-1155. However, projects that need multiple fungible-like token IDs inside one contract may not always need the heavier TRC-1155 receiver and batch-transfer model. A minimal TRC-6909 interface would provide a small, EVM-compatible, Solidity-friendly contract standard for reward points, protocol accounting balances, gaming currencies, vault shares, coupons, credits, and other multi-token use cases on TRON.
The goal is to track ERC-6909 and introduce it to TRON as a TIP, proposed as TRC-6909, while preserving compatibility with TRON's TVM, TIP-165 interface detection, address representation, wallets, explorers, and indexers.
Scope
Compatibility Topics for Discussion
References