大多数人在链上批准交易时,其实是闭着眼睛点的。网站弹出一句"领取你的空投",钱包窗口跳出来,你按下"批准",然后祈祷没事。
![]()
钱包盗刷器吃的就是这口饭。在Solana上,有一种常见手法甚至不会"转走"你的代币——它悄悄把你代币账户的所有权移交给攻击者。没有显眼的转账记录,资产就这么没了。
为了MLH Solana黑客松,这位开发者做了一个叫Clear Sign的工具:粘贴一笔交易(或在dApp上点一个按钮),在签名之前看清它到底会做什么。
演示:两个按钮,一个陷阱
演示站点是一个假的" FreeSOL空投"页面,摆着两个长得几乎一样的按钮:
- 领取0.01 SOL → 判定为安全,提示"+0.01 SOL进入你的钱包"。
- 领取500 USDC奖励 → 判定为"不要签名":它会拿走0.6 SOL,并把你240 USDC的控制权交给一个未知钱包。
同样的外观,完全不同的交易内容。
三步走:模拟、检查、解释
第一步是模拟。Solana可以在不签名的情况下,让一笔交易跑在实时链上状态上,并返回每个账户在交易后的样子。开发者读取交易前的账户信息,模拟,再对比差异。这一步快且免费,正好卡在"点击"和"批准"之间的空档里。
第二步是检查,由固定的TypeScript规则判定风险,触发项包括:
- 代币账户的所有者发生变化,视为严重风险
- 出现新的消费授权(delegate)
- 代币账户被关闭
- 超过一半的余额流出
- 调用了无法识别的程序
第三步是解释。Gemini把判定结果转成两三句大白话,对比网站宣称的内容和实际发生的事。
开发者最得意的设计取舍是:风险等级由规则决定,AI只负责解释。模型拿到的是既定结论,并被明确告知不能更改或弱化它。一段措辞巧妙的交易,或者一条提示注入式的备注,都没法说服AI把一个盗刷交易说成"安全"。如果AI服务挂了,应用会退回纯规则的说明,警告从不依赖模型。
踩过的坑
开发过程并不顺。Devnet的SOL水龙头限流是第一道墙;报错信息"failed to sanitize accounts offsets correctly"看着吓人,实际只是演示地址还没配置好;AI这边,一个模型过载、另一个已下线,"思考型"模型有时返回空文本。解决办法是依次尝试多个模型、加超时、保留规则兜底。
接下来要做什么
路线图上有几项:做成钱包适配器钩子或浏览器扩展,让检查在每次签名前自动运行;支持Token-2022和地址查找表;接入已知程序和代币注册表,然后上主网。
技术栈是Next.js、@solana/web3.js、@solana/spl-token、Gemini、Vercel和Solana devnet,单人开发,与Claude Code结对编程完成。
如果你也曾在点"批准"时心里默念"但愿没事",这个工具想听你的反馈:还有哪些盗刷套路应该被它抓住?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.