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-20 和 ERC-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.