解决盲签问题:ERC-7730 与 ERC-8213 协议分析

Beosin
个人专栏
热度: 4175

文章分析以太坊生态中长期存在的盲签安全风险,介绍ERC-7730与ERC-8213两项协议如何协同解决:ERC-7730通过标准化JSON描述符实现交易内容的人类可读化展示,ERC-8213则在描述符不可用时提供可校验的Calldata和EIP-712数据摘要,增强签名环节的可验证性与抗篡改能力。

摘要由 Mars AI 生成
本摘要由 Mars AI 模型生成,其生成内容的准确性、完整性还处于迭代更新阶段。

交易签名一直是区块链安全的核心环节。当用户准备签署交易时,钱包屏幕上很可能显示的是一长串无法理解的十六进制数据。用户无法确定这笔交易将转移多少资产、接收方是谁、授予了哪些权限,但为了完成操作,只能“盲目”地确认签署交易,这便是盲签(Blind Signing)。

盲签是一个长期存在于以太坊生态的系统性风险,此前Bybit 14亿美元被盗、Drift Protocol的2.85亿美元损失、Radiant Capital的5000万美元损失,盲签都是黑客能够得手的主要原因之一。

为解决这一风险,以太坊基金会联合业界推出了 ERC-7730 与 ERC-8213,从 可读化展示与密码学校验两方面构建解决方案,推动链上交易从盲签迈向“所见即所签”。

ERC-7730 简介

ERC-7730通过引入一套标准化的JSON格式,便于钱包将函数签名和参数映射为人类可读的字段标签、数值以及意图描述,增强交易的可解释性和可读性,确保用户能够确认签名内容与其预期一致。

除了$schema用于引用对应的解析规则版本号,其核心JSON文件主要由3部分组成:

- Context(上下文):通过链 ID 和地址将描述符绑定到特定的合约部署

- Metadata(元数据):包含协议的名称、开发者信息、官方网站URL等高层次项目信息,供钱包在展示时参考。这部分内容可以被Display引用

- Display(展示映射):负责执行映射逻辑,定义如何在钱包界面上解析和呈现函数选择器和特定参数。

以下是Uniswap SwapRouter合约的ERC-7730 JSON文件(描述符)例子:

  •  
{  "$schema": "[https://eips.ethereum.org/assets/eip-7730/erc7730-v2.schema.json](https://eips.ethereum.org/assets/eip-7730/erc7730-v2.schema.json)",  "context": {    "$id": "uniswap-v3-router",    "contract": {      "deployments": [        { "chainId": 1, "address": "0xE592427A0AEce92De3Edee1F18E0157C05861564" }      ]    }  },  "metadata": {    "owner": "Uniswap Labs",    "info": { "url": "[https://uniswap.org](https://uniswap.org)" },    "contractName": "SwapRouter"  },  "display": {    "formats": {      "0x415565b0": {        "title": "Swap Exact Tokens for Tokens",        "description": "Swaps {amountIn} of {tokenIn} for at least {amountOutMin} of {tokenOut} via route {path}."      }    }  }}

为确保描述符的准确性和安全性,识别可能存在的恶意描述符,以太坊基金会在clearsigning.org上托管了一个开源注册表,并通过ERC-8176(本文不作介绍)引入了一个基于以太坊认证服务 (EAS)的认证框架。

其中,独立的审计者会根据已验证的链上代码审查这些 JSON 文件,并以加密方式验证其有效性。随后钱包应用可以选择信任哪些独立审计者,再向用户展示人类可读的结果。

ERC-8213 简介

当合约已知、已建立描述符且经过审计时,ERC-7730可以实现清晰、可读的解析。但对于新部署的合约、未开源的合约、离线硬件钱包等场景,钱包无法获取对应的描述符,可能也无法解析具体的交易,用户就无法获取可读的签名内容。

针对以上问题,ERC-8213 作为 ERC-7730 的补充标准,当 ERC-7730 不可用时,ERC-8213 为用户提供较为简短、唯一、可校验的数据摘要(Digest),避免用户盲目签署原始冗长的 Calldata。

通过ERC-8213,规范了钱包应提供的信息:

- 对于 EIP-712 签名(例如快照投票、Permit2 授权或 Safe 多签中使用的签名)的数据,钱包始终提供显示EIP-712 Digest,其计算方法为:

  •  
encode(domainSeparator : 𝔹²⁵⁶, message : 𝕊) = "\x19\x01" ‖ domainSeparator ‖ hashStruct(message) 

以防止重放攻击和保证不同结构体数据即使有相同字段值也不会产生相同哈希。

- 对于包含调用数据的交易,钱包始终提供显示Calldata Digest,其计算方法为:

  •  
calldataDigest = keccak256(len(calldata) ‖ calldata)

对于硬件钱包而言,如果前端被攻击者控制并成功替换了交易参数(此前Bybit、Radiant Capital都未发觉异常),硬件钱包可以直接从通过 USB/蓝牙线路发送的原始字节中计算出 ERC-8213 的Calldata Digest。签名者可以通过将物理屏幕上显示的结果与前端显示进行比较,以确认数据在传输过程中是否有被修改。

结语

盲签是EVM生态中长期存在且代价沉重的隐患,ERC-7730与ERC-8213为盲签问题提供了一个可拓展、可迭代的安全框架基础,但其效果需依赖生态各项目的广泛参与和持续维护。安全没有终点,而是不断演进,随着相关协议的推广与完善,未来的链上交易签名将会更加清楚、可验证,实现“所见即所签”。

声明:本文为入驻“火星财经 专栏”作者作品,不代表火星财经官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
本内容旨在传递行业动态,不构成投资建议或承诺。