盲签到底签了什么
盲签就是你在一张看不懂的纸上签了名。在以太坊里,钱包弹出来的签名请求大多是一串 0x 开头的十六进制代码,你看不懂它到底授权了什么——可能是转账、授权额度,也可能是把你的资产控制权交给一个恶意合约。
它不是"用户不小心",而是钱包和 DApp 交互方式本身的问题。以下说明盲签具体签了什么、风险在哪、以及行业正在怎么解决。
前置条件
你正在使用以太坊钱包(如 MetaMask、imToken)与 DApp 交互。
钱包弹出签名请求时,显示的是"十六进制数据"或"原始消息",而不是人类可读的交易内容。
你知道自己的私钥掌握在自己手里,签名即代表授权。
步骤1:确认你的签名请求属于"盲签"
在钱包签名弹窗中,观察显示的内容格式:
情况A:签名内容显示为"十六进制字符串"或"0x..."开头的数据
你无法读懂这段数据的具体含义。这就是盲签——你只知道"要签个名",但不知道签的是什么。这是最常见的情况,也是很多钓鱼攻击利用的漏洞。
情况B:签名内容显示为人类可读的交易摘要
例如"Swap 1000 USDC 换 0.42 ETH""转账 2.5 ETH 到地址 0x123..."。这种属于清晰签名(Clear Signing)。如果你的钱包显示的是这个,说明你不在盲签状态。
完成标准:确认你当前的签名请求显示的是不可读数据还是可读摘要。
步骤2:理解盲签到底授权了什么
盲签的问题不在于"签名"这个动作本身,而在于你不知道签名的内容。以下是盲签最常授权的三类操作:
操作1:普通的转账或交易
你原本以为是正常转账,但签名内容实际上可能包含恶意参数。攻击者可以诱导你签署一条看起来无害的消息,但这条消息实际上可能是一笔转账指令,一旦签名,资金就会被转到攻击者账户。
操作2:授权合约动用你的资产
这是 DeFi 交互中最常见的盲签场景。你点击 DApp 的"授权"或"批准"按钮,钱包弹出签名请求,但你看不到具体授权金额和授权对象。恶意合约可以利用盲签诱导用户签署无限额度的 Approve,随后将用户钱包里的代币全部转走。
操作3:复杂合约调用
在 DeFi、NFT 铸造等场景中,交易数据往往过于复杂,硬件钱包或普通钱包无法完整解码,用户只能在"信任"协议的前提下签名。你签的不只是一个转账,可能是"多步操作 + 合约升级 + 权限变更"的组合动作。
完成标准:知道盲签的三种核心风险类型,能对号入座。
步骤3:了解盲签风险的真实案例
盲签不是理论风险。以下是两个真实安全事件:
Radiant Capital 事件(2024年10月)攻击者通过破坏外部设备,在签名流程中替换了交易数据,诱导签名者在未完全查看交易详情的情况下签署了恶意交易。Safe 团队事后指出,这一事件突显了盲签的行业性问题。
钓鱼网站利用 eth_sign 盲签近期大量钓鱼攻击诱导用户在不明网站签署 eth_sign 签名,用户在不知情的情况下授权了恶意合约,导致钱包被清空。
完成标准:意识到盲签是真实存在的攻击向量,且被广泛利用。
步骤4:识别行业正在推动的解决方案
以太坊基金会在 2026 年 5 月宣布 Clear Signing 已经上线,目标是让"人类可读的交易签名"成为默认体验。核心变化是:
ERC-7730 标准:协议方为合约函数写一本"翻译字典",告诉钱包如何将 calldata 翻译成人类可读的交易摘要。截至 2026 年 5 月,已覆盖 44 个协议,发布 346 个描述文件,包括 Uniswap、Aave、Lido 等。
Ledger 的"E8"警告:当交易无法被完整解码时,Ledger 会提示"E8 - Security Risk Detected",提醒用户可能在进行盲签。
完成标准:知道 Clear Signing 是什么,以及如何识别支持清晰签名的钱包或协议。
步骤5:如果必须盲签,如何降低风险
在某些场景下(如使用新协议或复杂合约),盲签仍是唯一可行的方式。如果必须盲签,采取以下措施:
使用硬件钱包:硬件钱包在本地隔离签名,需要物理按键确认,降低远程攻击风险。
多设备签名:使用来自不同供应商的签名设备(如 Ledger + Trezor),让交易在多个设备上呈现,降低单设备被篡改的风险。
限制授权额度:不要在 Approve 时选择"无限",手动输入具体需要的数额。
选择可信 DApp:优先使用经过审计、有活跃社区和长期运营记录的项目。
完成标准:即使必须盲签,也已采取必要的安全措施。
常见失败原因
误以为"盲签"是用户自己的问题
盲签的主要原因不是用户粗心。imToken 安全团队指出,eth_sign 的输入是原始字符,不是人类可读的格式,"就好比你在一份看不懂的语言写成的合同上签名"。这是一个系统性的界面和标准问题,正在通过 Clear Signing 等基础设施改进来逐步解决。
风险提醒
签名无法撤销:一旦确认签名,链上交易不可逆转。即使事后发现是钓鱼,资金也无法追回。
"整理过的代码依然是代码":EIP-712 将签名内容结构化,但结构化不等于人类可读。用户真正需要的是翻译后的动作语言,而不是整理后的参数字段。
eth_sign 是最危险的签名方法之一:eth_sign 可以被用来签署任何类型的消息,包括交易和合约指令,是最容易被钓鱼利用的签名方式。
如何确认操作完成
在确认签名之前,查看钱包提示——如果看到"eth_sign""盲签""无法解码交易"等警告,暂停签名。
如果钱包支持清晰签名(如 Ledger 的 Clear Signing 或支持 ERC-7730 的钱包),确认屏幕上显示的交易摘要与你的操作意图完全一致。如果摘要不清晰或与你预期不符,点击"拒绝"。
签名完成后,在区块链浏览器中查看该笔交易的详情,确认执行内容与预期一致。如果不一致,立即在 Revoke.cash 等工具中检查并撤销可能的恶意授权。
