原文标题:Safe Signing 101
如果用户能够自由交互而无需支付高额 gas 费,Web3 将会被大规模的应用。因此,无 Gas 交易被赋予很多的期望。但关于无 Gas 签名有很多误解。在本文中,我们将介绍四种类型的消息签名(Gas-less 签名),帮助用户了解在以太坊或其他 EVM 兼容的区块链上签署消息的相关风险。
签名的四种类型
这些签名类型对于 web3 中的所有 Etherean 来说绝对是至关重要的。
类型 #1 - 身份证明(安全)
这主要是 web3 中签名的用途。虽然没有统一的标准,但一些常见的事项包括服务条款、钱包地址,有时还有一个防止重放攻击的随机数,以及可能还有一个短字符串来确保你在软件钱包上签署的信息与在硬件钱包上是一样的。具体示例:
类型#2 -类型签名 [智能合约交互](谨慎使用)
通常,智能合约的某些部分依赖链下签名来实现。这些类型的签名将打破所有的输入,这将是合约互动的一部分。非常方便,但如果您有公开批准,则需要小心。正如我们在批准文章中所讨论的那样,虽然您可以在这个示例中准确地知道他们在做什么,但需要确保显示这些类型的签名请求的来源是有信誉的。
例如,如果在 Opensea 之外得到了如图所示的签名批准请求,应非常小心,且永远不要签名。
类型 #3 - 混淆的十六进制签名(请格外小心!)
现在仅仅因为某些东西没有符合上述 EIP-712 标准的精美类型签名,并不意味着它是一个骗局。然而,这确实意味着你是在信任对方,不管你签署的是什么类型的信息,因为你基本上是在 "盲签 "一个信息。由于 Seaport 合约的升级,这些天我们没有在 Opensea 上看到这些杠杆,但我仍然会在签署这些类型的消息之前暂停一下,特别是钱包地址具有公开批准。
类型 #4 - ETH_Sign - 过时且有点可怕(危险!)
这是一种非常危险的签名类型,基本上是以太坊的“空白支票”。请求者可以用它来签署任何带有你私钥的交易。好消息是,如果被请求,Metamask 会显示一个大的红色警告。它有效地允许某人,如果他们正确地制作签名有效载荷,能够为了他们自己的利益“重放”交易,例如向自己发送 ETH。这不像被盗的 wETH、NFT 和其他代币那样依赖于批准。这是唯一存在这种风险的签名类型,因为很少有服务合法使用它,通常应不惜一切代价避免!