最近实在太不太平了,骗术无数,每天都能听到有人中招,每周还会出现一起几百E的大盗窃案。花了点时间研究,感谢 wcy 帮我解答,又长了很多见识,给大家分享下。
这里罗列了常见的那些交互,以最最常用的metamask为例,我们可以做个练习:
先说答案:图 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 自己做了一个测试页面,大家可以去把玩一下(拿测试号)。
除了 metamask 交互本身的安全以外,其他的安全建议有:
最后,祝大家 web3 冲浪开心,并且保护好自己和自己的钱包。