你一般不会在 Google 的搜索结果里点个链接,就在这个陌生的页面里操作 5 万美金的转账对吧? 但我们每天在 Crypto 世界里做的事,本质上就是这个流程:打开网页 → 连接钱包 → 点授权/签名 → 资产不可逆地转出去。出了事,没有“撤回”、没有“冻结”、也没有“客服介入”。
过去十年,我们一直把这当成“用户教育不够”的问题,但是更底层的原因是架构级别的错配。
很难意识到的错配
有个没那么容易察觉的事实:我们正在用“消费级互联网基础设施”(域名、网页、浏览器插件)去承载不可逆、容错率极低、后果极为严重的金融操作。甚至可以说,考虑到大多数加密团队的技术实力,其产品的安全性和严谨程度比起一些娱乐性质的互联网产品都逊色不少。
传统金融早就把这类风险当成系统工程来处理:登录、转账、异常行为、可疑收款,都有一整套“拦截—核验—追责—兜底”的链路。哪怕你只是误操作,系统也倾向于给你留一条“能补救”的路(申诉、冻结、争议处理等)。
而加密世界把这些几乎全删掉了,而且是刻意删的:去掉中介、去掉“管理员权限”、去掉可逆性。结果就是,没有人能冻结你的账户,同时也没有人能在你犯错后拉你一把。这是加密世界追求的核心价值,也是一把双刃剑。
这里我不是在说“链不安全”。智能合约当然可能有漏洞,但那更像代码工程问题:审计、形式化验证、漏洞赏金……至少方向明确。 我想说的是另一类漏洞:交易上链之前的一切——你打开了哪个网页、信了哪个域名、装了哪个扩展、点了哪一次“同意/签名”。
2024 年那 4.94 亿美元的损失,并不是主要流向“合约漏洞利用”,而是流向了UI 层钓鱼 + 授权抽干(wallet drainer)。
我们把传统金融几十年堆出来的安全网拿掉,却保留了同样脆弱的入口层。然后我们惊讶:为什么一年能被抽走 4.94 亿。
2024:一次很残酷的现实检验
把数字摆出来就更清楚了:
- 2024 年,wallet drainer 攻击造成用户损失 4.94 亿美元,同比增长 67%。
- 受影响的钱包地址超过 33 万。
- 最大单笔损失 5548 万美元。
- 最关键:56.7% 的攻击依赖 Permit 签名。
不是合约 bug,也不是“被黑客攻破系统”,仅仅是被误导签名,就能造成这么大的损失。
一般的场景是这样的:用户点进钓鱼页,连接钱包,签了一个“看起来没那么可怕”的请求。攻击者拿到签名后可能不会立刻把钱转走,但它生成了一张“未来可兑现的授权票据”,可以在之后任何时间把这张票据拿去用,把钱包抽干。
这不是“用户蠢”,这是一个把不可验证的责任交给普通人的系统,注定会出问题。
现有安全方案为什么无法彻底解决问题
1)硬件钱包:超出“保险柜”的范围便无能为力
硬件钱包非常擅长一件事:让私钥离线,避免被木马直接偷走。 但它防不住更常见的事故:你在恶意页面上点了“Approve/签名”。
签名动作发生在安全硬件里没错,但决策发生在已被污染的前端。你愿意签,硬件钱包就会帮你把这件事“安全地签完”。
诚然,如今的硬件钱包已经尽可能内置了一些模式识别和告警的能力,但仍旧是杯水车薪。一方面,离线设备能做的有限,比如最重要的交易模拟就无法实现,单从交易本身很难判断风险;另一方面,内置数据库需要定期更新,而“经常更新”这件事情本身就违反硬件钱包的安全逻辑;最后,如果用户在软件钱包阶段都已经看过了交易信息,到硬件钱包这一步往往就是无脑“点点点”了。
结论就是:硬件钱包主要解决的是“钥匙被偷”,而钱包抽干更多时候是“你把门自己开了”。
2)交易模拟:无法覆盖“签名”这个盲区,也无法阻止“不在状态”的用户
很多钱包开始做交易模拟:告诉你“你将发送 1 ETH 给 0x…”。这对链上交易确实有帮助。
但模拟很难真正覆盖签名,这是签名的性质决定的:
- 当你签一个 Permit(EIP-712)时,链上当下不会发生任何状态变化。它只是创建了一个“未来可用的授权”。钱包最多展示结构化数据,但它无法预测:这份授权会在什么时候、以什么路径、被谁拿去兑现。 近期一次约 3500 万美元的盗窃正是利用了这种“签名当下看不出后果”的盲区:用户签下“看似无害”的链下授权,几天后才被兑现成资产流失。
- 当然,Permit 这样的常见签名在比较优秀的钱包里也是可以专门进行解析和提醒的,更糟的是,EIP-712 这种可视化签名并不是强制标准。很多场景依然存在“直接让你签一个 hash”的 盲签:这就像一份合同不让你看内容,只让你盖一个“骑缝章”,你根本无从验证自己签的是什么。
- 另外,即便是可解析签名,对应的如果不是授权这种常见操作,展示出来往往也是 JSON 结构。你“看见了”,但很难在几秒钟内把它翻译成“签名的后果”。
再加上人性这一关:当你已经顺利点过 100 次“没事”的确认,第 101 次你真的会像审计员一样逐字段核对吗? 让用户保持永远在线的警觉,本质上就是把系统责任外包给注意力。注意力会枯竭,所以系统会失败。
3)“小心点”:把设计责任换成用户道德的默认话术
行业里最常见的建议是: “别点钓鱼链接、仔细看域名、核对合约地址、读清楚签名内容。”
这些建议理论上都对,但在现实里不成立。
因为这套“安全模型”的前提是:普通人要持续地、稳定地、在各种分心环境下完成专业核验。 这不是安全,这更像是祈祷。
真正成功的系统,都会把安全做进基础设施里,而不是把安全写进用户手册里。
真正的修复方向:把最脆弱的那一层跳过去
我的观点很简单:问题核心在“入口层”——网页、域名、扩展、弹窗。几乎所有钓鱼、drainer、授权诈骗都要经过这层完成“信任制造”。
那如果我们不再让用户通过网页来做高风险操作呢?
不是“不要 UI”,而是减少把关键信任决策放在 UI 上的比例。把可验证、可执行的约束移到链上,让 UI/Agent 出问题时,结果最多是“操作失败”,而不是“资产归零”。
AI Agent + 智能合约账户:绕过前端,直达链上
这个组合其实是两件已经存在的东西:
智能合约账户(Smart Contract Account) 钱包不再只是一个私钥,而是一个带规则的合约。你可以写入约束:日限额、白名单合约、大额二次确认、时间锁恢复等。Safe、Argent 这类产品证明过它可用。
AI Agent 作为执行层 Agent 负责理解意图、构建交易、直接调用链上合约——不依赖网页交互,也就减少了“前端诱导你签错东西”的空间。另一方面,Agent 只能通过已有工具进行链上交互,无法任意拼装逻辑。
这个方案的关键点在这里:安全下限不是靠相信 Agent“不会作恶”,而是靠只能合约账户保证 Agent “不能作恶”。 Agent 就算犯错、被操纵,越界动作也会被工具+合约的双重防护挡下来。
六、这套架构落地后,会是什么体验?
场景 1:Dex 交易(Swap)
现在:你通过搜索/广告/群链接进入 DEX 页面,连接钱包,授权,确认,然后祈祷你看到的界面没骗你。
未来:你对 Agent 说“把 1 ETH 换成 USDC,主流 DEX 里找最优价”。 Agent 直接查询合约,构建交易,提交给你的合约账户;合约检查“路由是否在白名单?金额是否在限额内?”满足就执行,不满足就拒绝。
场景 2:Yield Farming
现在:你打开某个聚合器网站,授权策略合约,存入资金,然后希望前端展示的就是“真实合约”。
未来:你说“给我的 USDC 找收益,只要审计过、TVL 较高的协议”。Agent 给选项,你选择;合约账户根据你的规则(白名单/限额/二次确认)执行。
场景 3:钓鱼链接
现在:别人发你“领取空投”链接,你点进去签了一个消息,几天后被 Permit 兑现抽干。
未来:你不需要点链接。你让 Agent “检查我是否有可领取空投”。Agent 直接查已知合约调用接口。钓鱼链接仍然存在,但它很难变成你的“操作入口”。
你可能要问了
“Agent 也会被黑!” 会,所以规则必须在合约里。Agent 是执行层,不是安全层。Agent 被入侵后最理想的失败方式是:交易被规则拒绝,而不是资产被转走。
“这会削弱用户主权!” 恰恰相反:规则由你定义。你想激进,就放开限制;你想保守,就把限制写进链上,让任何人绕不过去。差别在于:你的规则由数学强制执行,而不是靠你每次都识别钓鱼。
“Agent 的入口也有同样的基础设施风险!” 没错,但是这个风险敞口已经非常窄,而且很容易进行针对性地加强。我的一个思路是,Agent 前端极简,凡是涉及关键操作的逻辑,比如授权、交易组装,都通过免费的 static call 调用链上合约进行,让前端逻辑做到持久、可验证、可追溯。
其实真正的问题在于,需要一个基于链上的机制来让协议官方能够标明哪些合约是真实的,以及应该怎么交互。如果对这个话题感兴趣,我写过一篇“MCP Node”的文章对此有比较详细的探讨,欢迎移步。
我们忽视了真正问题
加密行业长期把安全当成“用户教育问题”:只要你更小心、更专业、更警觉,就会没事。
但成功技术的路径从来不是这样: 当 HTTPS 成为基础设施后,我们没有要求每个用户去验证证书链;邮件有了垃圾过滤后,我们也没有只说“别点钓鱼邮件”。我们做的是:把安全做进系统里。
加密的“人人都是自己的银行”在理念上很酷,但在现实里意味着:人人都要兼职做自己的安全团队。2024 年的 4.94 亿美元已经说明了,这条路会不断重复同一种事故,而且规模在扩大——如果你的安全模型要求用户永远完美,那问题在模型本身。
AI Agent + 合约账户的方案不是银弹,但它至少把注意力对准了真正的漏洞点:交互入口层。 未来,如何设计 Crypto Infra 来更好地适配 Agent 交互,会是一个非常值得思考和尝试的方向。
Sources: