3Web3 101
第二部分 · 钱包与身份 · 第 07 章

签名是什么

签名就是你用私钥在一段内容上盖章,证明这件事是你干的——而盗号最常见的手段,就是骗你乱盖章。

← 返回目录 7 分钟阅读

07. 签名是什么

#一句话理解

签名就是你用私钥在一段内容上盖章,证明这件事是你干的——而盗号最常见的手段,就是骗你乱盖章

#Web3 里你点的每一个「确认」,都是在签名

你用 Web2 应用时,操作流程大致是:

输入用户名密码 → 登录 → 点几下按钮 → 服务器记录你做了什么

服务器是「裁判」,它知道是你登录的,所以你后面点啥它都信。

Web3 没有这个裁判。链不认识你,它只认签名

你想干一件事 → 钱包用你的私钥在「这件事的内容」上签个名 → 这个签名作为证据,连同操作一起发到链上 → 链验证签名匹配你的地址 → 接受这笔操作

每一次转账、每一次授权、每一次登录某个 dApp,你点的那个「确认」按钮,都是在用私钥签名

理解这一点之后,你就能理解为什么 Web3 安全的第一道门,是「签名前看清楚你在签什么」。

#签名的两大类(重要区分)

签名可以粗分成两类,它们的危险性不同

#1. 交易签名(Transaction)

签了之后会上链,会消耗 Gas,会产生实际的链上变化。

典型例子:

  • 转账:把 100 USDT 从 A 转给 B
  • 兑换:把 1 ETH 换成 USDC
  • 铸造 NFT、参与某次链上投票

特点:

  • ✅ 会显示要花的 Gas 费
  • ✅ 链上有记录,可以查到
  • ⚠️ 但内容可能复杂到看不懂——很多时候只是显示「调用合约 0xABC 的方法 transfer」

#2. 消息签名(Message / Sign)

签了之后不上链,不消耗 Gas,只是「证明这段话是我说的」。

典型例子:

  • 用钱包登录某个网站(Sign-In with Ethereum)
  • 把某个签名提交给链下系统(比如某些空投查询)
  • 授权第三方代理你的资产(最危险的那种)

特点:

  • ⚠️ 不花 Gas,没有「金钱代价」让你警觉
  • ⚠️ 不上链,但链下/合约里可以拿这个签名做大事
  • ⚠️ 钱包默认显示成一串看不懂的乱码或者一段英文

Web3 里被盗最多的就是「消息签名」——因为它看起来人畜无害,用户随手就点。

#几种你必须警惕的签名类型

下面这些,看到就要 慢下来,仔细看,宁可不签

#approve / setApprovalForAll

「授权」类签名。意思是:你允许某个合约从你的地址里拿走你的代币

正常用途:你在 Uniswap 上把 USDC 换成 ETH,Uniswap 合约需要从你账户里拿走 USDC——所以你要先给它一个 approve

风险点:

  • 一旦授权额度是「无限」(unlimited),那个合约任何时候都能把这个币种从你账户里拿走
  • 钓鱼网站会伪装成正常应用,骗你授权一个攻击合约
  • NFT 的 setApprovalForAll 一旦点了,你那个系列的所有 NFT 都能被对方搬空

对策

  • 看清楚 spender 地址(被授权方)是不是你信任的合约
  • 能设额度就设额度,别每次都点 unlimited
  • 定期到 revoke.cash 检查并取消用不着的授权(这是一个常用工具,但请自行核实当前地址)

#permit / permit2

「离线授权」。一个签名(不上链、不花 Gas)就能完成原本要 approve 才能做的事。

风险点:因为不花 Gas、不上链,迷惑性更强。骗子会让你「免费签个名领空投」,结果你签的是一份永久授权他从你钱包里拿走全部 USDC。

对策:好的钱包会尽量把 permit 签名解析成可读形式(「你正在授权 X 个 USDC 给地址 Y」)——仔细看「数量」和「对方地址」。钱包解析不出来、你也看不懂时,就别签。

#盲签(Blind Sign)

钱包没法解析签名的内容,只能显示一串十六进制乱码。

风险点:你完全不知道自己在签什么。

对策:除非你 100% 信任发起方,否则永远不要盲签。正经项目应该让你的钱包能正常解析出可读内容。

#一个真实的诈骗流程,看看签名是怎么被滥用的

为了让你有具体的画面,假想这样一个场景(这是真实手法的简化版):

  1. 你在 Twitter 上看到「XX 项目空投!点这里领」。
  2. 你点进网站,连接钱包。
  3. 网站说「请签名验证身份」。没有花 Gas,看上去毫无风险。
  4. 你点了确认。
  5. 几秒钟后,你钱包里的 USDC、USDT 全没了。

发生了什么?你签的那个「验证身份」其实是一个 permit 签名——一份允许骗子从你账户里转走所有稳定币的授权。骗子拿到签名后,立刻在链上调用合约,把你的钱全部转走。

整个过程链上看起来完全合规——是你「亲自授权」的转账。

这就是为什么这一章如此重要:在 Web3 里,安全感的最后一道防线,不是杀毒软件,不是钱包提示,是你自己看签名内容的能力和习惯

#安全签名清单

签任何一个签名之前,问自己:

  1. 这个网站我是怎么来的? Twitter 评论区/Telegram/DM 来的链接,默认有问题。从官方文档、官方推特置顶链接进入,相对安全。
  2. 域名对吗? 字符替换的钓鱼域名极常见(uniswap.org vs uniswap-app.org)。书签收藏官方域名是个好习惯。
  3. 钱包提示了什么? 现代钱包(Rabby 尤其好)会解析签名内容并标红风险动作。看到红色警告,直接退出
  4. 这是交易还是消息签名? 如果是消息签名,特别警惕。
  5. 金额、对手方地址对得上吗? 数量后面有没有多几个 0?地址前后几位是不是你认得的合约?
  6. 不确定? 关掉就完事了。错过一次空投,比丢光钱包好一万倍。

#一个值得养成的小习惯

新手最常踩坑的原因是:点确认太快。习惯了 Web2 里点 OK 没成本,到了 Web3 也下意识快点。

养成一个简单习惯:钱包弹出窗口出现时,先看 5 秒再决定。这 5 秒能挡掉 90% 的诈骗。

#怎么记这一章

类型 上链 花 Gas 风险
转账签名 中(看清金额和地址即可)
approve / setApprovalForAll 高(无限授权很危险)
permit / permit2 极高(迷惑性强)
普通登录消息 低(但要看清内容)
盲签 不一定 不一定 绝对不签

#接下来读什么

第二部分结束。从这里开始我们看「链上的东西」——代币、稳定币、NFT。

08. 代币、Token、Coin


这一章如果只能记住一句话: Web3 里每一次「确认」都是用私钥盖章;不花 Gas 的签名往往最危险,签之前先看 5 秒。