Alert Source Discuss
⚠️ Draft Standards Track: ERC

ERC-7538: 乘法型代币

将乘数域合并到 ERC-20 和 ERC-1155 中,以实现小数值代币值

Authors Gavin John (@Pandapip1)
Created 2023-10-18
Discussion Link https://ethereum-magicians.org/t/multiplicative-tokens/16149
Requires EIP-20, EIP-1046, EIP-1155

摘要

此 EIP 通过引入 multiplier 字段到元数据模式,扩展了与 ERC-1046 兼容的代币类型(特别是 ERC-20ERC-1155),从而改变了面向用户的余额的显示方式。

动机

许多项目都需要创建各种类型的代币,包括同质化和非同质化代币。虽然某些标准非常适合此目的,但它们缺乏对小数值代币的支持。此外,某些代币可能需要内置的通货膨胀或通货紧缩机制,或者可能希望允许以非传统的增量进行转移,例如 0.5

规范

本文档中的关键词“MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“NOT RECOMMENDED”、“MAY”和“OPTIONAL”应按照 RFC 2119 和 RFC 8174 中的描述进行解释。

MultiplierMetadata 接口 MUST 在使用 multiplier 的代币的已解析 ERC-1046 tokenURI 中实现:

interface MultiplierMetadata {
    /**
     * 用于生成面向用户的表示的正乘数。
     * 如果未定义,则默认为 1。
     * 这是一个精确值,以 10 为基数。注意浮点错误!
     **/
    multiplier: string | undefined;

    /**
     * 不再支持小数
     **/
    decimals: never;
}

如果使用了 multiplier,则代币合约 MUST NOT 具有名为 decimals 的方法。

理由

在需要时,对数值表示采用字符串可以提供更高的精度。使用乘数而不是小数有助于实现 10 的幂以外的增量,并确保无缝处理通货膨胀或通货紧缩。在大多数情况下,使用 ERC-1046 可以提高 gas 效率。

向后兼容性

此 EIP 与 ERC-1046 兼容的代币标准或 ERC-1046 decimals 字段中任何名为 decimals 的方法不兼容。

安全考虑

不正确地处理 multiplier 字段可能导致舍入误差,恶意行为者可能会利用这些误差。合约 MUST 准确地处理乘数以避免此类问题。乘数 MUST 为正(“0”不是正数)以避免显示问题。特别大或小的乘数 MAY 会带来显示挑战,但钱包 SHOULD 努力显示完整的数字,而不会导致 UI/UX 或其他安全问题。

版权

版权和相关权利通过 CC0 放弃。

Citation

Please cite this document as:

Gavin John (@Pandapip1), "ERC-7538: 乘法型代币 [DRAFT]," Ethereum Improvement Proposals, no. 7538, October 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7538.