# 钱包里哪些交互是安全的?

By [web..1..2..3!](https://paragraph.com/@bigk) · 2022-03-23

---

最近实在太不太平了，骗术无数，每天都能听到有人中招，每周还会出现一起几百E的大盗窃案。花了点时间研究，感谢 wcy 帮我解答，又长了很多见识，给大家分享下。

这里罗列了常见的那些交互，以最最常用的metamask为例，我们可以做个练习：

1.  假如你听说一个项目很火在mint，点开mint网站，以下哪些交互是安全的？
    
2.  假如一个项目给mfer所有者一个白名单，他要验证下你钱包里是否真的有mfer，那以下哪些交互是安全的？
    

![](https://storage.googleapis.com/papyrus_images/cc84de622b00646931b0988460a6bf53127c5fc752af4610b17233226468e1aa.png)

先说答案：图 1、2、3 在大多数场景下都安全。场景1里 mint 的时候就是图 8，所以图 8 也安全。其他的都或多或少存在可能的风险。

一一道来：

图 1 是完全安全的，是一个只读操作，dApp 在这里只能拿到你的地址。

图 2、3、5、6 是一系列的，操作都是给一段 message 加签名，加签名的作用是像 dApp 证明你是你。2、3、5、6 也依次是这类签名的进化（具体见 EIP-712）。这里只用注意一个点，如果消息比较简短，那大概率无害；消息如果比较长，则需要**三思**一下。

举个例子，Opensea 现在在做 listing 的时候，就用了图 6 的形式。如果在 Opensea 上看到，那么是 ok 的。然而，如果一个奇怪的网站，让你签名的时候有这么一长串，那么他可能实际是让你签一个 Opensea 的 list 操作，把你的 NFT 以极低的价格卖掉。

图 4 是**无比危险**的，metamask 已经标明了大红色（但无力吐槽这个 UI ）。显示的message 是 hash 后的结果，所以你无法知道签名的内容是什么。最坏的情况，他的内容是转走你所有的资产，这样你的钱包会完全空掉。

图 4、5、6 还在说明一个事实：就算你的交互看起来没有花 gas，但结果一样能把你的资产转走。所以，大家不要以是否花 gas 作为是否可能危险的依据。

图 7、8、9 要花 gas 了，那说明至少一点，它一定会往链上提交操作，**可能危险**！所有这些操作，我们需要看清楚左上角的行为。MINT 行为也许是最安全的一样，在 mint 的时候，你顶多损失 mint 本身的价格+gas。图 7 里的 SAFE TRANSFER FROM（不要被 SAFE 这个词骗了）会把你的 NFT 直接转走！图 9 里的 SET APPROVAL FOR ALL 给了对方转走你所有 NFT/token 的权限！也就是说，图 7 无论如何都不能点，图 9 只有在交易所才可能。

其他在这些弹窗里还可以关注的点是：网站是不是对的；to 对应的 contract 是不是个验证过的contract；网络(ETH, Polygon, etc)是不是对的，等等。

如果对这些弹窗不那么熟的话，metamask 自己做了一个[测试页面](https://metamask.github.io/test-dapp/)，大家可以去把玩一下（拿测试号）。

除了 metamask 交互本身的安全以外，其他的安全建议有：

1.  私钥和助记词无论如何不能给出，也不要用剪切板 copy paste，更不能拍照截屏，或者存在网盘里。记住私钥或者助记词就是你的钱包全部；
    
2.  冷热钱包分离，所有要去交易的都用热钱包，冷钱包只做转入转出操作，如果要卖一个冷钱包里的NFT，宁可花一点gas把他先转出来到热钱包里；
    
3.  去 mint 时，或者试一些 dApp 时，最好用一个小号钱包；
    
4.  最好搞个虚拟机，里面配好干净的系统（比如 selinux），再做snapshot。每次进入都用这个干净的系统做交易，以防止系统被木马攻击。
    

最后，祝大家 web3 冲浪开心，并且保护好自己和自己的钱包。

![](https://storage.googleapis.com/papyrus_images/7b5108c8cd2a57c73880bb82fd977dc1ad2a984820212728d85a2995882cf709.jpg)

---

*Originally published on [web..1..2..3!](https://paragraph.com/@bigk/WqiUDTB1HzOjIPg4liqr)*
