mt logoMyToken
ETH Gas
日本語

别再闭着眼点确认了,以太坊想让你看懂自己在签什么

収集collect
シェアshare

圖片

作者:小白

本文为作者原创投稿,观点仅代表作者个人理解,ETHPanda 对内容进行编辑整理。

区块链一直强调「自己掌握资产」,但很少有人认真回答另一个问题,如果用户根本看不懂自己正在签什么,那这种掌握到底有多真实?从 blind signing 到 Clear Signing,以太坊正在补一块很基础、也很迟到的拼图,让交易签名从程序员能看懂,慢慢变成普通用户也能理解。

盲签,不是用户不小心

我很早用加密钱包的时候,就一直有个疑问。

为什么我每次点签名,钱包弹出来的东西,总是一串十六进制代码?

我明明是在网页上点了 Swap、Mint、Claim、Approve,但到了钱包确认那一步,屏幕突然变成了一堆0x开头的东西。很多科普视频又反复提醒大家,不要乱签名,很多钓鱼网站就是靠这个偷资产。

这就很拧巴。

一边告诉普通用户,签名很危险,你要看清楚。一边又把真正要看的东西,展示成普通人根本看不懂的格式。

这真不是用户不谨慎,是这个交互本身就很反人类。

后来我才知道,这种情况有个名字,叫 blind signing,盲签。你点下确认时,密码学上确实是在授权一笔交易,但从人的理解层面看,你其实是在签一张看不懂的纸。

问题不是用户不知道安全重要,而是他根本没有足够的信息去判断安全不安全。

以太坊基金会最近宣布 Clear Signing 已经上线,目标很直接,让 human-readable transaction signing 成为默认体验。Clear Signing 官网把这件事讲得更白, See what you sign,让你真正看见自己在签什么。

它不是一个单纯的钱包 UI 优化,而是在补以太坊面向普通用户时一直缺的那块基础设施。

过去的钱包安全,大多是在出事前帮你报警。比如一些插件会提前检查网站是不是钓鱼站,有风险就爆红提醒。Rabby 这类钱包也做了很多交易预览和风险提示,能让你看到签完之后资产余额大概会发生什么变化。

这些都很有用。

但它们更像是在交易旁边加安全员,而不是从签名本身解决问题。你依然要信任插件、信任钱包模拟、信任它能识别这个网站和这笔交易的风险。

Clear Signing,想把交易翻译成人话

Clear Signing 想做的事情更底层一点。

它不是只告诉你「这个网站可能危险」,而是让协议方把交易语义用标准格式写出来,让钱包能稳定地把 calldata 翻译成人能理解的动作。

比如以前你看到的是一长串 hex。

以后理想状态下,你看到的应该是,Swap,发送 1,000 USDC,最少收到 0.42 WETH,协议是 Uniswap V3,网络是 Ethereum

这才是人应该看到的签名确认页。

这里可以顺一下 Ray 老师的说法。他在帖子里讲了一句我觉得很好的话,「整理过的代码依然是代码」。

这句话其实点中了 EIP-712 和 ERC-7730 之间的差别。EIP-712 把原本混乱的签名内容变成结构化数据,但结构化不等于人类可读。普通用户真正需要的,不是一排排更整齐的变量名和参数,而是能一眼看懂的动作语言。

Ray 老师还把 Clear Signing 形容成**「在代码和普通用户之间加上一层翻译」**。这个比喻特别好。

ERC-7730 和 Registry,是怎么工作的

Clear Signing 背后的核心标准是 ERC-7730。

它定义的是一种 JSON metadata 格式。

大白话讲,就是协议方可以为自己的合约函数写一本「翻译字典」。合约里某个函数、某个参数、某个金额字段,分别应该怎么展示给用户,协议方提前按标准写清楚,然后提交到公开 registry。钱包在签名前查这本字典,把底层 calldata 翻译成用户能读懂的确认页。

ABI 能告诉钱包,这里有个uint256 amount。

但 ABI 不一定能告诉用户,这个 amount 是 USDC 的 6 位小数,还是 ETH 的 18 位小数,也不一定能告诉用户这笔操作是 Swap、Stake、Approve,还是 Claim。

ERC-7730 补的就是这层语义。

然后 registry 扮演的是公共目录的角色。clear-signing-erc7730-registry 仓库维护registry目录里的 metadata files。协议方提交描述文件,钱包和工具读取后,才有机会把交易展示成更清楚的人类语言。

截至 Clear Signing 官网 2026 年 5 月 7 日的快照,registry 已覆盖 44 个 protocol,发布了 346 个 descriptors。里面已经能看到 1inch、Aave、Circle、Lido、Uniswap、Safe、WalletConnect、WETH 等项目。

它不是魔法开关,但方向是对的

看着不少,但 Clear Signing 其实也才刚开始。

不是 EF 发了一条消息,所有盲签问题就突然消失了。现实里还有大量合约没有按 ERC-7730 注册,钱包端也不可能一夜之间全部支持。官网目前明确显示 Ledger 已经 live,Trezor 还在 development。其他钱包、工具、协议还需要时间接入。

所以 Cos 老师提醒的现实问题很关键。协议需要按 ERC-7730 规范完成注册,支持 ERC-7730 的钱包和工具才能更好解析展示。与此同时,钱包端已有的解析、模拟和风险提示能力仍然不能丢。

这点我真的非常认同。

Clear Signing 解决的是,这笔交易声称要做什么。Rabby 这类交易模拟解决的是,执行后可能发生什么。一个看意图,一个看结果。真正好的钱包安全体验,应该是两层都要有。

因为攻击者不会停止进化。

如果未来用户开始信任清晰签名,攻击者也可能尝试提交误导性 metadata,或者用长尾合约、未注册合约、复杂批量交易绕开展示。官方文档里也专门提到,钱包需要自己决定信任哪些 registry、review signal 和 attestation。

所以 Clear Signing 不是魔法开关,它更像是一套新的行业纪律。

协议方要写清楚交易语义。

Registry 要有审查和信任信号。

钱包要决定哪些 metadata 可以被展示。

用户终于不用再被迫面对一堆天书。

我觉得这件事对中文社区尤其有意义。

很多人不是不想进入链上生态,而是门槛真的太高了。大部分用户不是程序员,即便是程序员,也未必看得懂 Solidity、calldata、ABI、selector、permit、delegatecall 这些东西。

以前的链上体验,常常默认用户应该自己承担理解成本。

你看不懂,是你不够专业。

你被骗了,是你不够小心。

你不敢用,是你还没学会。

但这不是大众应用应该有的姿态。

如果一个金融级系统要求普通用户在签名前读懂十六进制代码,那不是用户教育没做好,而是产品和基础设施还没长大。

我之前在 LXDAO 和 ETHPanda 的 Web3 冬季实习计划里,也提过类似想法。当时我在 Headbook 里提增加安全课程的 PR,我想法很单纯,希望科普一下钱包怎么解析签名前四位的十六进制函数选择器,去理解函数意义。那时候我还没有一个完整方案,只是很朴素地觉得,用户不应该对着 hex 猜命运。

现在回头看,ERC-7730 就是在更系统地回答这个问题。

它不只是解析前四位 selector,而是让协议把函数、字段、金额、地址、上下文都写成可验证、可复用、可被钱包消费的结构化 metadata。

这比简单查函数名更重要。

因为函数名也可能骗人。一个恶意函数可以叫claimRewards,也可以叫deposit。真正有价值的展示,不只是告诉你函数叫什么,而是告诉你这笔签名对应的动作、资产、金额、协议、网络和风险边界。

这才是知情同意权。

以太坊早期为了让智能合约快速跑起来,牺牲了很多人类可读性。这在历史上可以理解。没有当年的快速实验,也不会有后来的 DeFi、NFT、DAO 和整个 EVM 生态。

但技术债不会消失,它只会在用户规模变大之后,以钓鱼、误签、恶意授权、冷钱包被盗的方式回来要账。

未来畅想

现在 Clear Signing 出现,至少说明以太坊生态已经开始认真补这笔账了。

我不觉得它会在几个月内改变所有人的钱包体验。更现实的判断是,未来几年,随着主流协议提交 metadata、主流钱包逐步支持、审计和 attestation 机制完善,清晰签名才会慢慢成为默认体验。

但方向是对的。

区块链不应该永远停留在「懂代码的人才敢用」的阶段。真正的大众化,不是让每个人都学会读 calldata,而是让每个人在签名前,都能用自己的语言理解自己正在授权什么。

天下苦盲签久矣。

Clear Signing 的意义就在这里, 它不是让钱包变得更好看,而是把交易签名的知情权,慢慢还给用户。

免責事項:この記事の著作権は元の作者に帰属し、MyTokenを表すものではありません(www.mytokencap.com)ご意見・ご感想・内容、著作権等ご不明な点がございましたらお問い合わせください。
MyTokenについて:https://www.mytokencap.com/aboutusこの記事へのリンク:https://www.mytokencap.com/news/580643.html
community_x_prefix
X(https://x.com/MyTokencap)
community_tg_prefixcommunity_tg_name
https://t.me/mytokenGroup