两个钱包,一个被清空一个毫发无伤:我复盘了那晚的每个操作

· 钱包对比

去年11月,我两个朋友几乎同时在链上操作。一个丢了4.2个ETH,另一个啥事没有。差别不在运气,在几个设置。

先说丢钱那位,叫他老张。老张的ETH放在一个热钱包里,私钥截图存在手机相册,助记词抄在一张便签上贴在显示器边框。那天他点了一个推特上看到的“空投领取”链接,钱包弹窗请求授权,他没细看就点了确认。三分钟后,4.2个ETH被转走。那个授权是setApprovalForAll,把整个钱包的资产权限交了出去。

另一个朋友小李,同样收到那个钓鱼链接,点开看了一眼就关了。他的钱包里也有几千U的资产,但助记词是手抄在纸上锁抽屉,热钱包只放了大概200U的“零花钱”。大额资产在硬件钱包里,平时不联网。

差别就这几处。我后来帮老张复盘,发现每一步都有补救机会。

私钥和助记词的存放,别图方便

老张贴在显示器上那个便签,是他三年前写的。他觉得家里没人动,方便自己看。问题是助记词一旦以任何形式数字化或暴露在物理空间,安全等级就归零了。

我自己的做法:助记词手写在两张纸上,一张放家里保险柜,一张放父母家。不拍照、不存云笔记、不发微信给自己。听起来麻烦,但你花十分钟做这件事,能省掉后面追不回来的损失。

有个细节很多人忽略:抄助记词别用铅笔。铅笔字迹会糊,我见过有人三年后拿出纸发现几个字母认不出来,钱包直接废了。用圆珠笔或签字笔,抄完核对三遍。

热钱包只放“丢了不心疼”的钱

老张把所有ETH放一个热钱包,这是根上的问题。热钱包(MetaMask、Trust Wallet这类)私钥在联网设备上,理论上就有被钓鱼、被恶意软件抓取的风险。

我的分配比例:热钱包不超过总资产的5%,够日常交互和gas费就行。大额放硬件钱包(Ledger、Trezor),需要动的时候再连。小李就是这么干的,所以他即使点了钓鱼链接,损失上限也就是那200U。

硬件钱包也不是万能。今年5月有个案例,用户从非官方渠道买了个二手Ledger,里面被预置了恶意固件,助记词直接泄露。买硬件钱包只走官网,别贪那几十美元的便宜。

授权管理,这是重灾区

老张被盗的直接原因是setApprovalForAll授权。这个函数的意思是:你把某个NFT或代币的全部操作权限给了某个合约地址。钓鱼网站最爱的就是这个。

每次钱包弹窗,看清楚三件事:请求的是什么权限、授权给哪个地址、是单次授权还是无限授权。MetaMask弹窗里点“详情”能看到合约地址,去Etherscan查一下这个地址有没有被标记。

已经授权过的,定期清理。用revoke.cash这个工具,连上钱包能看到所有历史授权,一键撤销不需要的。我每个月清一次,花两分钟。

还有个坑:有些钓鱼网站会伪装成revoke工具。清理授权时一定手动输revoke.cash网址,别点搜索引擎广告位或推特上的链接。

两步验证和独立设备

老张的邮箱也被撞库了,因为他在多个平台用同一个密码。交易所账号如果只靠密码,风险很大。

交易所账号全部开Google Authenticator或硬件密钥(YubiKey),别用短信验证——SIM卡交换攻击这两年太多了。2023年FTX崩盘后有批用户被盗,就是因为短信验证被拦截。

另外,处理大额资产的那台设备,别用来刷推特、点陌生链接。我有一台旧笔记本专门做链上操作,不装任何浏览器插件,除了钱包本身。听起来极端,但你算算老张丢的4.2个ETH值多少钱,再算算一台旧电脑多少钱。

一个容易被忽略的点:钱包弹窗里的“网络”

钓鱼网站经常让你在错误的网络上操作。比如你以为是以太坊主网,实际弹窗是BSC网络,授权后资产在另一条链上被转走。每次操作前看一眼钱包顶部的网络名称,对不上就别点。

老张那晚如果多看一眼弹窗——授权地址是个没听过的合约、请求的是全量权限、网络显示的是以太坊但链接来自一个刚注册的推特号——任何一个信号都够他停手。但他连点了三下确认。

说白了,钱包安全没有一招制敌的办法,就是几个习惯叠在一起:助记词离线、热钱包少放钱、授权定期清、弹窗看详情、大额走硬件。老张现在也这么干了,代价是4.2个ETH的学费。你不用交这笔学费,照着做就行。