同一个助记词,为什么他丢了120万美元,我一根毛都没少
2023年3月,我认识的一个老哥在Blur上撸空投,钱包里躺着一笔不小的资产。某天他点了一个推特私信里的“空投领取”链接,授权了一笔setApprovalForAll。三分钟后,他钱包里17个蓝筹NFT被扫光,按当时地板价算,接近120万美元。
同一个月,我也收到了几乎一模一样的钓鱼私信。我点进去看了一眼,关掉,继续干活。
差距不在运气。在于我钱包里装了几个“保险丝”,他没有。
先说那个要命的授权
ERC-20的approve和ERC-721的setApprovalForAll,是钓鱼攻击最爱的入口。你签一次,对方就能无限次转走你对应的资产。很多人不知道,这个授权是默认永久的,除非你手动撤销。
我自己的习惯是:任何新交互的DApp,先用一个只放50美元的小号钱包试水。确认没问题,再用主钱包。听起来麻烦,但比事后追资产强一万倍。
撤销授权我固定用revoke.cash,链上数据实时同步,以太坊、BSC、Polygon都支持。操作就三步:连钱包→看授权列表→点revoke。Gas费大概2到5美元,看网络拥堵情况。我基本每个月扫一次,特别是撸完空投之后。
那个丢120万的老哥,事后我帮他查授权记录,发现他钱包里躺着34个未撤销的授权,其中11个是无限额度的。这就是活靶子。
助记词这件事,别自作聪明
我见过最离谱的操作:有人把助记词拍照存在手机相册里,还开了iCloud同步。手机丢了,iCloud被撞库,钱包直接清零。
还有更“聪明”的——把助记词拆成三份,分别存在微信收藏、邮箱草稿、备忘录里。讲真,这跟直接写在推特简介里区别不大。
我自己的做法很土但有效:助记词只写在纸上,两份,分开放在两个物理位置。一份在家里的保险柜,一份在父母家的抽屉。不做任何数字化处理。拍照、打字、云笔记,全部不碰。
你可能会问,那我要异地恢复怎么办?答案是:根本不需要频繁恢复。助记词是灾备用的,不是日常用的。日常用钱包,靠的是私钥在本地设备里。
说到设备,这里有个坑。很多人把助记词导入到浏览器插件钱包(比如MetaMask),然后这台电脑还装着各种来路不明的软件。插件钱包的私钥是明文存在浏览器存储里的,一台中招的电脑等于把私钥拱手送人。
我的配置是:大额资产放硬件钱包(Ledger或Trezor),小额交互用手机端钱包(Rainbow或Trust) 。硬件钱包的助记词在设备里生成,永远不触网。签名的时候设备上确认,私钥不出芯片。
Ledger2023年出过一次Connect Kit的供应链攻击,但那是针对第三方DApp库的,硬件本身没被攻破。这也说明一个道理:硬件钱包不是万能,但比热钱包强一个数量级。
多签:单点故障的终极解法
如果你管的是团队资金或者超过10万美元的个人资产,单签钱包的风险太高了。一把私钥丢了、被偷了、或者你人出意外了,资产就锁死或者没了。
Safe(原Gnosis Safe)多签是我目前最推荐的方案。设置逻辑很简单:比如3/5多签,5个签名人里任意3个同意才能动资金。签名人可以分布在不同的硬件钱包、不同的物理位置。
具体操作:在app.safe.global创建一个Safe账户→添加5个签名人地址→设置阈值为3→部署。部署成本主网大概50到100美元Gas,L2上便宜得多,Arbitrum上几美元就够。
我帮一个DAO做过配置,5个签名人分别在三个国家,用的是不同的硬件钱包品牌。这样即使一个人的设备被攻破,资产也动不了。代价是每次转账要协调3个人签名,麻烦,但安全。
一个被低估的细节:地址投毒
2023年下半年开始,地址投毒攻击爆发式增长。攻击者往你钱包里转一笔0 USDT,发送地址跟你常用的转账地址前四位和后四位完全一样。你下次转账时从历史记录里复制,钱就进了攻击者的口袋。
CertiK的数据显示,仅2023年这类攻击造成的损失超过6000万美元。
防法很简单:转账前核对完整地址,至少核对中间6位。更好的做法是使用钱包的地址簿功能,把常用地址存进去,转账只从地址簿选。我还会在第一次给某地址转大额之前,先转一笔10美元测试,确认到账再转剩下的。
别把鸡蛋放在一个浏览器里
最后说一个低成本但极其有效的习惯:隔离。
我电脑上有三个浏览器。Chrome只用来登录交易所和常用DApp,装了MetaMask小号。Brave用来撸空投和交互不熟悉的项目,钱包里最多放200美元。Firefox什么都不装,专门用来查资料。
手机端同理。主钱包App不装任何来路不明的应用,撸空投用另一台旧手机。
这套配置听起来繁琐,但搭建一次,后面就是肌肉记忆。真正让你亏大钱的,从来不是黑客技术多高明,而是你嫌麻烦的那一下。