题目
用户导入了一个自定义代币,界面显示的名称是空白、数量是 1000000000000000000。用户抱怨「这是不是假币」。
请说明这些字段为什么可能读不到或读出来不对,以及界面应该如何降级展示才能既不误导也不恐慌。
考察目标
- 是否知道代币元数据在标准中的可选性。
- 能否解释精度缺失导致的数量错乱。
- 能否给出分层的降级展示方案。
考察代币元数据的可选性与异常表现,以及展示层的降级策略。
用户导入了一个自定义代币,界面显示的名称是空白、数量是 1000000000000000000。用户抱怨「这是不是假币」。
请说明这些字段为什么可能读不到或读出来不对,以及界面应该如何降级展示才能既不误导也不恐慌。
标准里名称、符号与精度都属于可选方法,不是每个代币都会实现;即使实现了,也可能返回异常值。精度读不到时,直接把最小单位按整数展示会出现长数字。正确做法是把三个字段分开处理:读不到时用合约地址兜底,精度缺失时标注「按最小单位显示」,而不是默认按 18 位换算,也不在界面上给出「假币」这类结论。
name、symbol、decimals 在标准中均为可选方法,标准提醒接口与其他合约不宜假定这些值存在(依据:EIP-20 §Specification(name、symbol、decimals))。decimals 返回代币使用的位数,用于把最小单位换算成用户可读的表示(依据:EIP-20 §Specification(decimals))。formatUnits 接收最小单位数值与位数并返回字符串表示,位数需要由调用方提供(依据:viem formatUnits §Parameters(value、exponent))。decimals;精度缺失时默认按 18 位换算会让数值相差数量级(依据:EIP-20 §Specification(decimals))。发现这道题有问题? 反馈此题