告别“盲签”,解析 Clear Signing 与 ERC-7730 标准

  • Tiny熊
  • 发布于 4 天前
  • 阅读 112

文章介绍了以太坊生态中“盲签”(Blind Signing)的安全隐患,并引出了Clear Signing(明文签名)理念及其具体实现标准ERC-7730。

盲签带来的困境与 Clear Signing 的提出

在日常的 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 的技术解析与应用示例

ERC-7730 的设计思路非常巧妙:它主要在展示层进行干预,这意味着我们不需要修改或重新部署现有的底层智能合约。

开发者只需要为合约提供一份符合规范的 JSON 文件(Descriptor)。当用户发起交易时,钱包会根据目标合约地址获取该 JSON 文件,并利用其中的规则对 calldata 进行解码,最终在界面上呈现直观的交易摘要。

ERC-7730 应用示例

为了更好地理解它的工作原理,我们可以看一个简化的 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)。

alt text

中立注册机制与生态支持

仅仅有数据格式标准是不够的,ERC-7730 能够顺利运转,离不开一套基于链下的中立注册表机制与各大钱包生态的密切配合。

  • 注册与拉取机制(Registry & Fetching):任何人都可以向开放的中立注册表提交智能合约的 JSON 描述符。为了防止恶意篡改,这些描述符通常需要经过独立安全机构的审查与加密证明(Attestation)。当用户在 DApp 中发起交易时,钱包会在后台自动向注册表请求目标合约地址的 JSON 配置。在验证信息来源可靠(钱包自主决定信任哪些审核方)后,钱包便利用该配置将十六进制的 calldata 渲染为直观的交易详情。
  • 主流钱包的广泛支持:这项拒绝“盲签”的运动由 Ledger 牵头发起,并迅速获得了以太坊生态的核心力量支持。根据官方公告,包括 MetaMask、Trezor、Fireblocks 等主流钱包,以及 WalletConnect 等基础设施,均已参与到 ERC-7730 的标准建设与集成中。
  • Clear Signing 官方平台:以太坊基金会的“万亿美元安全计划”(1TS)积极扮演着注册表中立管理者的角色,并推出了 clearsigning.org。在这里,开发者可以获取由基金会资助的最新开发工具链(如 Rust 和 TypeScript 的解析库)以及参与构建安全生态的最佳实践。

行动起来

作为 Web3 开发者,在自己的项目中接入 ERC-7730 标准是一个相对轻量但收益明显的工作。

首先,它具有很好的向后兼容性。由于 ERC-7730 完全基于链下元数据运行,现有的 DeFi 协议(如 Uniswap、Aave 等)都可以直接适配,无需承担合约迁移的成本。

其次,得益于前文提到的统一注册表机制与各大钱包的广泛支持,开发者只需按照规范维护这一份 JSON 配置,并将其提交至 clearsigning.org 等平台,就能在整个以太坊生态的各个主流钱包中获得一致的展现效果。这种“一次配置,全网生效”的模式,极大降低了多端的适配成本。

通过主动适配 ERC-7730,我们可以显著提升 DApp 用户的交互体验,有效防范前端劫持等钓鱼攻击,共同建设一个更安全的 Web3 生态环境。

参考文献

  1. ERC-7730: Clear Signing Registry Format
  2. Ledger Developer Portal: Clear Signing
  3. 今天就实施 EIP-7730 , 让硬件钱包不再盲签
  4. Clear Signing:让以太坊交易审批更安全

本文和 AI 共同创作完成

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Tiny熊
Tiny熊
0xd682...e8ab
登链社区发起人 通过区块链技术让世界变得更好而尽一份力。