文章介绍了以太坊生态中“盲签”(Blind Signing)的安全隐患,并引出了Clear Signing(明文签名)理念及其具体实现标准ERC-7730。
在日常的 DApp 开发与交互中,我们经常会遇到这样一个问题:当用户需要对一笔智能合约交易进行签名时,钱包界面往往只能展示一长串十六进制的数据(calldata)。由于缺乏易读的上下文信息,用户只能在不完全了解交互细节的情况下进行确认。这种现象在社区中被称为“盲签(Blind Signing)”。
AI 图:盲签时,用户面对硬件钱包上晦涩的十六进制代码往往感到困惑
盲签的危险在于,它打破了“所见即所签”(What You See Is What You Sign, WYSIWYS)的安全底线。用户在面对一串如 0xa9059cbb... 的无意义字符时,很容易因为轻信前端界面而点击确认。如果 DApp 前端遭到黑客劫持,或者用户无意间点击了钓鱼链接,这笔看似常规的交易就可能变成一条“转移所有资产”的恶意指令。
一个典型的案例是发生在 2025 年 2 月的 Bybit 盗币案。攻击者通过操纵前端界面,让执行多签的管理人员误以为只是在批准一项常规操作。由于涉及复杂的底层智能合约交互,管理人员在无法解析真实意图的情况下进行了“盲签”,最终导致约 15 亿美元的巨额资产受损。简而言之,盲签不仅损害了交互体验,更成为了针对 Web3 机构和个人的钓鱼攻击中极为常见的漏洞。
为了彻底解决盲签痛点,以太坊基金会联合钱包开发者、安全公司等共同发布了 Clear Signing(明文签名) 开放标准。Clear Signing 的核心理念是要求钱包在请求用户签名时,必须将底层的机器代码直接翻译为人类可读的真实意图。
ERC-7730 (Clear Signing Registry Format) 则是为了在 EVM 生态中规模化实现这一 Clear Signing 理念而制定的具体技术标准。
在过去,钱包如果想支持明文签名,需要针对每个 DApp 进行繁琐的一对一适配。ERC-7730 提供了一套标准化的 JSON 描述格式和基于链下的中立注册表,使得所有兼容的钱包和 DApp 可以基于统一的规范进行无缝对接,从而让 Clear Signing 成为可能。
ERC-7730 的设计思路非常巧妙:它主要在展示层进行干预,这意味着我们不需要修改或重新部署现有的底层智能合约。
开发者只需要为合约提供一份符合规范的 JSON 文件(Descriptor)。当用户发起交易时,钱包会根据目标合约地址获取该 JSON 文件,并利用其中的规则对 calldata 进行解码,最终在界面上呈现直观的交易摘要。
为了更好地理解它的工作原理,我们可以看一个简化的 ERC-20 transfer 函数的描述符示例(该示例结构参考自 EIP-7730 官方规范):
{
"$schema": "https://eips.ethereum.org/assets/eip-7730/erc7730-v2.schema.json",
"context": {
"contract": {
"deployments": [
{
"chainId": 1,
"address": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
}
]
}
},
"metadata": {
"owner": "Tether",
"contractName": "Tether USD"
},
"display": {
"formats": {
"transfer(address _to,uint256 _value)": {
"intent": "Send",
"fields": [
{
"path": "_to",
"label": "To",
"format": "addressOrName"
},
{
"path": "_value",
"label": "Amount",
"format": "tokenAmount",
"params": {
"tokenPath": "@.to"
}
}
]
}
}
}
}
在这份 JSON 文件中,有几个关键字段值得我们关注:
$schema:指向验证该文件格式的 JSON Schema。context:定义了这份描述文件适用的上下文环境,例如特定的链 ID(chainId)和合约地址(address)。钱包在解析时会首先校验上下文是否匹配。display:这是规范的核心部分,指导钱包如何渲染交易。
formats:将特定的函数签名(如 transfer)映射为易读的意图(如 Send)。fields:明确了需要展示哪些参数数据,并指定了它们的显示标签(label)与格式(format,例如将数值格式化为代币金额 tokenAmount)。
仅仅有数据格式标准是不够的,ERC-7730 能够顺利运转,离不开一套基于链下的中立注册表机制与各大钱包生态的密切配合。
calldata 渲染为直观的交易详情。作为 Web3 开发者,在自己的项目中接入 ERC-7730 标准是一个相对轻量但收益明显的工作。
首先,它具有很好的向后兼容性。由于 ERC-7730 完全基于链下元数据运行,现有的 DeFi 协议(如 Uniswap、Aave 等)都可以直接适配,无需承担合约迁移的成本。
其次,得益于前文提到的统一注册表机制与各大钱包的广泛支持,开发者只需按照规范维护这一份 JSON 配置,并将其提交至 clearsigning.org 等平台,就能在整个以太坊生态的各个主流钱包中获得一致的展现效果。这种“一次配置,全网生效”的模式,极大降低了多端的适配成本。
通过主动适配 ERC-7730,我们可以显著提升 DApp 用户的交互体验,有效防范前端劫持等钓鱼攻击,共同建设一个更安全的 Web3 生态环境。
本文和 AI 共同创作完成
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码