两个钱包,一个被掏空一个安然无恙:安全设置到底差在哪

· 币种支持

去年我帮两个朋友处理过钱包被盗的事,结果挺唏嘘的。一个丢了 12 个 ETH,另一个钱包里 40 多个 ETH 完好无损。两人都是老韭菜,助记词都没泄露,私钥也没截图。差别只在一件事上:钱包的安全设置。

先说被掏空的那个

老张的钱包是 MetaMask,用了三年,助记词写在纸上锁抽屉里。出事那天他点了一个空投网站,钱包弹窗让他“签名”,他扫了一眼就点了确认。三分钟后,12 个 ETH 被转走。

问题出在哪?他钱包里所有资产都放在同一个地址,而且这个地址天天连着各种 DApp。签名权限一旦被钓鱼网站拿到,整个钱包就是敞开的大门。

我帮他复盘的时候发现更离谱的:他的 MetaMask 从来没设置过“交易模拟”功能,弹窗里那笔交易实际上是 approve 无限额度授权,他根本没看出来。如果他提前开了交易模拟,MetaMask 会用红字警告“此操作将授权对方转走你的全部代币”。

再说没丢的那个

老李的钱包分了三个地址:一个“热钱包”只放 0.5 ETH 日常交互用,一个“中等钱包”放 5 ETH 做 DeFi,大头 35 ETH 放在硬件钱包里,从来不连网。

他也有过被钓鱼的经历。去年某个 NFT 网站骗他签名,但他那个热钱包里只有 0.3 ETH,骗子转走后发现没油水,就放弃了。损失 0.3 ETH,大头毫发无伤。

这就是地址隔离的价值。说白了,你不可能保证自己永远不点错链接,但你可以保证点错的时候,损失有上限。

具体怎么设置,我按优先级排

第一优先级:开交易模拟

MetaMask 在设置 → 实验性功能里,打开“交易模拟”。Rabby 钱包默认就有这个功能,而且做得更细,它会直接告诉你“这笔交易后你的余额会变成多少”。

我现在的习惯是:任何弹窗,先看模拟结果里的余额变化。如果显示“你将授权对方转走 XXX 代币”,直接关掉。

第二优先级:地址隔离,至少分三层

我的配置是这样的:

  • 交互层:一个地址,只放够用两周的 Gas 和少量交互资金,大概 0.2-0.5 ETH。这个地址随便造,连什么网站都行。
  • 储蓄层:一个地址,放中期资金,只连你信得过的协议(Uniswap、Aave 这种),不碰任何空投网站和陌生链接。
  • 冷层:硬件钱包地址,私钥永远不触网。Ledger 或 Trezor 都行,关键是这个地址只做转账,不做任何合约交互。

三层之间的转账用新地址中转,别直接互转,避免链上关联分析把你的三层地址串起来。

第三优先级:授权管理,每月清一次

去 revoke.cash 连上你的交互层地址,看看授权列表。我上个月清的时候发现,一个两年前用的 DEX 还留着无限额度授权。这种就是定时炸弹。

操作步骤很简单:

  1. 打开 revoke.cash,连钱包
  2. 看“授权额度”那一栏,找 Unlimited 的
  3. 点 Revoke,付一笔 Gas 就行

Gas 费大概 0.001-0.003 ETH,比你丢币便宜多了。

第四优先级:硬件钱包的隐藏坑

很多人以为买了 Ledger 就万事大吉。讲真,Ledger 默认设置里有个坑:盲签。有些合约交互,Ledger 屏幕显示不了完整信息,你只能盲签。骗子就利用这点,让你签一个看起来是“转账 0.01 ETH”实际是“授权全部余额”的交易。

解决办法:在 Ledger Live 设置里打开“专家模式”,配合 Rabby 钱包使用,Rabby 会在电脑端解析交易内容,Ledger 屏幕上只确认最终结果。这样盲签的风险能降一大半。

一个真实场景,你对照一下

假设你现在要领一个空投。正常流程是:

  1. 用交互层地址连网站
  2. 弹窗出现,先看交易模拟
  3. 如果模拟显示“授权”而非“转账”,确认授权额度是不是 Unlimited
  4. 如果是 Unlimited,手动改成你实际需要的数量(比如领 100 个代币就授权 100,别授权无限)
  5. 签名确认

老张当时跳过了第 2 步和第 4 步,直接点了确认。12 个 ETH 就这么没了。

最后说个反直觉的点

安全设置做得越细,操作越麻烦,这是事实。我每次领空投要多花 30 秒看模拟、改授权额度。但这 30 秒换的是“点错链接也不至于归零”的保险。

老李那 0.3 ETH 的损失,本质上是他的“安全预算”。他愿意用一个小钱包去试错,而不是拿全部身家去赌自己永远不犯错。

你也可以算一笔账:你钱包里有多少钱,愿意拿多少比例去“试错”。这个比例之外的,放进那个永远不连网的地址里。