babianspark

什么是签名?链上「签字」到底是怎么做的

什么是链上签名?直接答:签名(Signature)是用私钥对一条消息(如交易内容、登录请求)做特定密码学运算后产生的一段数据,验证方用对应公钥就能确认「这条消息确实由私钥持有人发出且未被改动」。比特币、以太坊用 ECDSA 签名,Solana 用 Ed25519。本文讲清签名的工作原理、链上交易签名流程、登录签名与转账签名的区别。

发布于 2026-05-08 · 约 10 分钟 · 私钥与助记词

什么是链上签名?直接答:签名(Signature)是用私钥对一条消息(如交易内容、DApp 登录请求、跨链消息)做密码学运算后产生的一段数据,验证方用对应公钥即能确认「这条消息确实由该私钥持有人签发且未被任何修改」。比特币和以太坊都用 ECDSA(基于 SECP256k1 椭圆曲线)做签名,Solana 用 Ed25519。每一笔链上交易都包含发起方的签名——矿工 / 验证者必须验证签名后才会打包。签名是「证明身份」而不是「加密内容」。本文讲清签名的工作原理、链上交易签名流程、链下登录签名(如 Sign-in with Ethereum)与链上转账签名的区别。

理解签名后,下一步是亲自体验签名过程。可访问 币安官网 注册账号、用 币安官方App 完成 KYC 后小额提币(每笔提币都涉及签名);下载入口集中梳理在 下载页

签名的本质

A:签名是「私钥的能力体现」——拥有私钥的人能签字证明「这条消息是我发的」,而其他人无法伪造。

签名的核心特性

特性 说明
不可伪造 没有私钥就签不出有效签名
可验证 用公钥就能验证
不可否认 签过的就不能否认(除非私钥泄漏)
完整性保证 消息被改动签名即失效

A:签名不是加密——这是关键点。签名的目的是「证明身份和完整性」,消息本身仍然明文可见

签名 vs 加密

维度 数字签名 加密
用谁的密钥 自己私钥(签)+ 别人公钥(验) 别人公钥(加密)+ 自己私钥(解密)
目的 证明身份 隐藏内容
消息可见性 明文 + 签名 密文,需解密才可读
链上场景 交易签名 几乎不用

A:链上几乎所有「签名」操作都是「数字签名」,不是加密。链上数据全公开可见,签名只是证明某条数据是谁发的。

ECDSA 签名工作流程

签名生成(发送方)

步骤 操作
1 把要签的消息(如交易内容)做哈希
2 生成一个临时随机数 k
3 计算椭圆曲线点 R = k × G,取 R 的 X 坐标作为签名 r
4 用私钥 + 哈希 + k 计算签名 s
5 输出 (r, s) 作为签名
6 以太坊另加 v(恢复 ID,0/1 或 27/28)

签名验证(接收方)

步骤 操作
1 拿到「消息 + 签名 (r, s) + 公钥」三件套
2 把消息做相同哈希
3 用 r、s、公钥做特定椭圆曲线运算
4 算出的「校验点」与 r 比对
5 一致即签名有效

A:用户日常看不到这些细节——钱包软件后台自动完成。但理解原理能帮你区分「正常签名请求」和「钓鱼签名请求」

链上交易签名流程

一笔以太坊交易的签名步骤

阶段 描述
1. 钱包构造交易 from / to / value / data / nonce / gas
2. RLP 序列化 把交易字段编码成字节串
3. Keccak-256 哈希 得到 256 位摘要
4. 私钥签名摘要 ECDSA 输出 (v, r, s)
5. 把签名加到交易里 形成「签名后的交易」
6. 广播到网络 通过 RPC 节点发出
7. 矿工验证签名 通过后才打包进区块

每一笔以太坊交易都包含 (v, r, s) 三个字段——这是签名的具体形式。

链上签名的特点

特点 说明
自动化 钱包软件后台完成
用户感知 弹出"确认交易"窗口
不可逆 签名上链即生效
Gas 必须付 签了就要付 Gas,即使交易失败

链下签名:DApp 登录与消息验证

A:链下签名不上链、不付 Gas,只用来证明「这个钱包是你的」——常用于 DApp 登录、访问特殊功能。

链下签名典型场景

场景 描述
Sign-in with Ethereum DApp 用钱包做无密码登录
OpenSea 上架 NFT 离线签名授权挂单(不立即上链)
离线订单簿 DEX 链下匹配 + 链上结算
投票签名 DAO 治理投票
空投领取 证明你拥有某地址

链下签名 vs 链上签名

维度 链下签名 链上签名
是否上链
是否付 Gas
验证方 后端服务器或 DApp 前端 区块链节点
用途 身份证明、授权 转账、合约调用
风险 钓鱼签名授权 私钥泄漏

A:链下签名也有风险——某些"签名钓鱼"骗局让你签一段看似无害的消息,实际是「授权某合约转走你的资产」的链上指令的离线版本。签名前一定要看清内容

签名钓鱼的常见套路

套路 1:盲签

A:「盲签」是签一段你看不懂的字节串——多数恶意签名是这种。正规 DApp 签名应该用人类可读格式(EIP-712)——把签名内容用结构化方式展示。

套路 2:Permit 授权钓鱼

EIP-2612 允许用户用「签名」代替「授权交易」给合约——但骗子让你签的可能是「无限授权恶意合约动你的 USDC」——签了就被悄悄转走。

套路 3:seaport / opensea 钓鱼

NFT 市场用离线签名表达「我愿以 X 价格卖这个 NFT」——骗子让你签「以 0 ETH 卖你的 NFT」——一签就丢失。

安全签名的 3 个原则

原则 说明
1. 看清内容 拒绝盲签,要 EIP-712 结构化展示
2. 警惕 Permit 任何"无限额度"授权要警惕
3. 用专门的"DApp 钱包" 主钱包不连陌生 DApp

签名标准的演化

标准 描述 出现时间
eth_sign 最早的以太坊签名,不安全 2015
personal_sign 加上 prefix 的签名 2017
EIP-712 结构化签名 2018
EIP-2612(Permit) 用签名代替 approve 2020
EIP-4361(SIWE) Sign-in with Ethereum 2022

A:EIP-712 之后的签名都比早期签名更安全——结构化展示让用户能看懂签的是什么。老旧的 eth_sign 应被避免——主流钱包现在多数已默认禁用。

不同链的签名算法

签名算法 椭圆曲线
比特币 ECDSA SECP256k1
以太坊 ECDSA SECP256k1
BNB Chain ECDSA SECP256k1
Solana EdDSA Ed25519
Cardano EdDSA Ed25519
Polkadot sr25519 Schnorr

EVM 链都用 SECP256k1 + ECDSA——所以 EVM 链之间签名格式一致。Solana 用 Ed25519,与 EVM 不互通——这是为什么 Solana 与 EVM 链不能共享私钥。

风险提示

签名(即使链下)= 实际授权任何"签个名领空投""签名验证账号"的请求都要警惕——可能是把你的资产授权给恶意合约的钓鱼。

签名前务必看清内容——钱包弹出的签名请求里,应该能看到结构化的「to / value / data」字段——盲签 base64 字节串极度危险。

实际操作建议

建议 1:拒绝盲签

A:任何让你签「一串看不懂的字节串」的请求——拒绝。正规 DApp 用 EIP-712 把签名内容人类可读地展示出来MetaMask 等钱包对盲签会有警告

建议 2:用专用「DApp 钱包」

把主钱包(放大额)和 DApp 钱包(小额测试)分开——主钱包不连任何 DApp,只在签名转账时用DApp 钱包资产少,即使签错也损失有限

建议 3:警惕「免费空投」「签名验证」

A:99% 的"签名验证活动"是钓鱼——正规空投不需要你签任何东西,只需要在合约里 claim。任何"签名验证身份""签名领代币""签名升级"都警惕

一站式回顾

A:签名 = 用私钥证明消息身份 + ECDSA/Ed25519 + 链上必备链上签名为转账,链下签名为身份——两者都用同一私钥,但用途和风险点不同。新人入门最重要的是「不盲签 + 看清内容 + DApp 钱包分级」

理解签名后,下一步是亲手做一笔链上转账,体验签名弹窗。可参考 币安官网 注册账号、用 币安官方App 提币时观察整个签名上链过程。MetaMask 签名细节见相邻站「babianpro.com」。

常见问题

签名安全吗?我每次签名都担心被偷币

A:签名本身完全安全——只要私钥不泄漏,签名只是证明你是私钥持有人,不会暴露私钥。风险点在「签了不该签的内容」——这是为什么要看清签名内容。

签名要付 Gas 吗?

A:链上签名(发起一笔交易)必须付 Gas链下签名(DApp 登录、NFT 挂单等)不付 Gas——只是离线生成一个签名给后端验证。新人最易混淆的点

链下签名能不能伪造?

A:伪造不了没有私钥就签不出有效签名——这是 ECDSA 数学保证的。但「签名钓鱼」是骗你自己签恶意内容,不是伪造你的签名。

我钱包里弹出「签名请求」该怎么看?

A:先看域名是否正确、再看签名内容是否结构化、最后看授权额度盲签字节串拒绝EIP-712 结构化能看懂的内容才考虑签Permit 授权要看额度,无限额度尽量拒绝

比特币和以太坊的签名能互通吗?

A:算法相同(ECDSA + SECP256k1)但使用方式不同比特币签名用脚本(Script)格式,以太坊签名用 (v,r,s) 格式——两者底层算法一样,但应用层格式不能直接互通。

一笔交易能不能多人签名?

A:单签交易只有一个签名;多签钱包要多个签名多签合约(如 Gnosis Safe)能聚合 M-of-N 签名——比如 2/3 多签需要 3 个人中的任意 2 人签字。这是机构和大额持有的常用方案

我从硬件钱包签名安全吗?

A:最安全的签名方式之一硬件钱包的私钥永远不离开芯片,签名在芯片内完成——即使电脑被植入木马,木马也拿不到私钥。只能让你签错的内容(社会工程)——所以仍要看清签名内容。

文档发布于 2026-05-08,下次复测计划 2026-08-08(约每 90 天回访一次,确认主流签名标准与钓鱼手法无重大变化)。