地址投毒是一种骗局:攻击者生成一个首尾字符与你正在使用的某个地址一致的相似地址,再用一笔粉尘或零值转账把它植入你的交易历史,等着你有朝一日复制它而不是那个真实地址。被植入的那笔转账本身偷不走任何东西——它不创建任何授权、不接触任何私钥,也不给攻击者对你钱包的任何控制权;整场攻击赌的只是你未来的一次复制粘贴失误。因此防御是行为层面的:永远不要从交易历史里取地址;验证地址中段,而不只是截断显示的首尾;大额转账之前先发一笔小额测试。没有任何钱包能撤回你已经批准的转账,所以在像 WATS 这样完全非托管的钱包里——钥匙由你持有,WATS 从不持有任何一把——签名前的那一眼核对,才是真正的最后一道防线。
利用复制粘贴的骗局
大多数加密骗局攻击你的私钥或签名。地址投毒攻击的是更薄弱的一环:你的习惯。攻击者从不碰你的钱包,也从不要求你签任何东西。他只是安排一个相似地址出现在你的交易历史里——然后等待某一天你复制它而不是真实地址。一次心不在焉的粘贴,一笔本该发给你自己地址或常用收款人的转账,就不可逆地流向了攻击者。
投毒究竟如何运作
攻击从生成开始。加密地址足够长,攻击者可以低成本地批量生成虚荣地址(vanity address),使其前后几位与你的地址或你常来往对象的地址一致——恰恰是钱包界面显示的那几位。接着是播种。有时是从相似地址向你的地址发一笔几美分的微量「粉尘」转账。在 EVM 链上更常见的是零值代币转账:ERC-20 标准允许转账金额为零,因此攻击者可以在没有任何 allowance 的情况下调用 transferFrom 并引用你的地址,仍然触发一条完全合法的 Transfer 事件——区块浏览器和钱包的活动列表会把它显示成你与那个假地址之间一笔普通的交易。分摊到每个受害者身上更便宜的做法,是用一次性代币合约批量发出伪造的 Transfer 事件,针对根本没人持有过的代币。无论用哪种方法,攻击者的成本都只是一点 gas,结果也完全相同:你的历史里从此躺着一个极具说服力的诱饵,耐心等待。
为什么有效:截断显示与对历史的信任
两个界面惯例让陷阱奏效。第一,钱包和区块浏览器几乎无一例外地把地址截断成 0x1a2b…9f8e 这种形式,因此为匹配这些可见字符而特制的相似地址一眼根本无法分辨。地址校验和在这里救不了你——被投毒的地址是一个合法、校验和正确的地址,只不过属于别人,软件根本没有任何格式错误可以拒绝。第二,人们把自己的交易历史当作可信的地址簿:「上周我转过账的那个地址」感觉可以放心复用。投毒武器化的正是这份信任。假记录没有任何异常之处;它躺在正常交易旁边,格式完全相同,往往还镜像着某个真实收款人的截断形式。
投毒能做什么——不能做什么
值得说清楚:一笔投毒交易本身拿不走任何东西。收到粉尘不会泄露你的私钥;零值转账不会授予任何授权;攻击者对你的钱包没有获得任何权力。整场攻击赌的是你未来的一次失误。这是好消息——意味着防御完全是行为层面的,而且与私钥泄露不同,没有任何需要善后的东西。无视粉尘(与来路不明的「赠品」代币交互是另一类骗局),诱饵就永远无害。
为什么硬件和身份验证拦不住它
这正是人们最容易判断失误的地方。每一层保护私钥的机制——硬件设备、passkey、贴一下就完成验证的卡片——回答的都是同一个问题:批准这笔交易的是不是本人?地址投毒从不与这一点争辩。签名是真的,批准是你自愿的,私钥也没有泄露;错的只有收款地址。WATS NFC 金属卡正好清晰地体现了这个区别:它根本不存储任何私钥,只是贴卡去验证存放在 WATS 应用中的密钥,比起冷存储保险库,它更接近一把物理安全密钥。这让它成为防止他人动用你资金的强力保护,却完全无法阻止你自己把资金发往一个从历史记录错误行里复制来的地址。收款地址的核对必须由你在屏幕上、在批准之前完成——这也是为什么「没读就盲签」是最该先戒掉的习惯。
让你免疫的习惯
四个习惯关上这扇门。永远不要从交易历史复制地址——从收款方自己的界面、官方页面或已保存的联系人处获取。验证不止两端:签名前也检查地址中段,因为相似地址正是为匹配界面显示的两端而生成的。对经常往来的对象,使用已保存的联系人或可读的域名服务,让日常转账根本不涉及复制。大额或首次转账时,先发送一笔小额测试,确认到账后再发剩余部分。把这些与钱包安全最佳实践中更全面的卫生习惯结合起来——并记住签名时刻永远是最后一道防线,这与安全地将钱包连接到 dApp 遵循的是同一条原则。
像 WATS 这样的钱包在其中的位置
没有任何钱包能撤销你已批准的转账,所以现实的问题是:你的钱包是否把决定权留在你手里,并消除那些让人匆忙行事的摩擦。WATS 完全非托管:钥匙由你持有,WATS 从不持有任何一把,覆盖 Ethereum、Arbitrum、Optimism、Base、Polygon、BNB Chain、Solana 和 TON。在摩擦这一侧,WATS 用同一种代币 ATS 收取网络手续费,而不是各条链的原生 gas 代币——在 EVM 上通过 ERC-4337 账户抽象,配合 LayerZero OFT,让单一的 ATS 余额全链通用。这不是打折:它改变的是由哪种代币付款,而不是交易本身的成本。真正被改变的是行为:那笔本来会因为你在某条链上没有 gas 代币而被省略的小额测试转账,现在随时都能发。作为手续费收取的 ATS 会进入销毁机制,把供应量从 1 亿降到 3000 万;WATS 是第一个也是唯一一个把 ERC-4337 与 OFT 单代币手续费和这一销毁机制结合起来的钱包,机制详见 ATS 费用页面。如果读完这篇文章你只做一件具体的事,就做这件:不再从历史记录里取地址;下次在 WATS 里向一个新地址付款时,先发一笔小额测试,并在批准剩余金额之前核对地址中段,而不只是两端。
常见问题
什么是地址投毒攻击?
这是一种骗局:攻击者生成一个与你所用地址可见的前后字符相匹配的相似地址,再通过粉尘或零值转账把它植入你的交易历史。攻击本身拿不走任何东西——它等着你日后从历史里复制假地址并向它转账。防御是行为层面的:永远不要从历史获取地址,并且验证要超出截断显示的两端。
我从未知地址收到了粉尘或奇怪的代币——我被入侵了吗?
没有。收到转账不会泄露私钥、不会产生授权,也不会让别人控制你的钱包——任何人都能向公开地址发送任何东西。风险只在你日后误复制攻击者的地址,或与未知代币的合约交互(那是另一类骗局——干脆别碰它)时才会出现。无视粉尘,你的资金和之前一样安全。
硬件设备或 NFC 卡能保护我免受地址投毒吗?
不能,而 WATS 对原因说得很明确。WATS NFC 金属卡不存储任何私钥;它是贴卡去验证存放在 WATS 应用中的密钥,比起冷存储保险库更接近一把物理安全密钥。身份验证证明的是「谁在批准这笔交易」,而不是「资金要去哪里」——而在地址投毒里,批准是真实的,错的是收款地址。只有在批准之前读一遍收款地址,才能击败这种攻击。
转账前应该如何核验地址?
检查不止两端:相似地址正是为匹配界面显示的前后字符而特制的,所以也要比对中间一段。更好的做法是:日常付款用已保存的联系人,彻底避免人工比对;大额或首次转账先发一笔小额测试,确认到账后再发剩余部分。在 WATS 里,网络手续费用 ATS 收取,而不是各条链的原生 gas 代币,因此在任何受支持的链上都能直接发出这笔测试转账,无需先去弄一份单独的 gas 资产。

