题目
一个资产面板里,用户从钱包复制来一个地址,粘贴到输入框后页面提示「地址不合法」;另一个页面上,两段看起来相同的地址被判定为「不是同一个地址」。请说明地址比较与展示应当怎么做,并指出这两处问题各自出在哪里。
考察目标
- EIP-55 校验和地址的生成依据与作用范围。
- 地址比较前的规范化流程与常见实现工具。
- 地址展示、复制与输入校验的可用性要求。
从校验和地址的工作原理出发,说明比较、展示与输入校验应当如何配合,并给出可落地的规范化流程。
一个资产面板里,用户从钱包复制来一个地址,粘贴到输入框后页面提示「地址不合法」;另一个页面上,两段看起来相同的地址被判定为「不是同一个地址」。请说明地址比较与展示应当怎么做,并指出这两处问题各自出在哪里。
EIP-55 依据地址内容的哈希决定 40 位十六进制字符中字母的大小写,使校验和地址能够暴露抄写错误;十六进制中字母的大小写不改变地址指向的账户,同一地址的不同写法在链上指向同一账户。实现差异与工程取舍见深入回答。
以下片段只演示地址规范化这一层,省略了 UI 与错误提示部分。
import { getAddress, isAddress } from "viem";
export function normalize(value: string): string | null {
const trimmed = value.trim();
if (!isAddress(trimmed)) return null;
return getAddress(trimmed);
}
发现这道题有问题? 反馈此题