一、BLS是什么BLS=Boneh-Lynn-Shacham签名算法,是一种基于双线性配对的数字签名方案,核心优势是支持签名聚合。它的设计目标,就是解决区块链中「大量节点签名导致数据膨胀、验证成本过高」的痛点。二、解决了什么问题?在区块链里,ECDSA/Ed25519有个致命短板:不支
BLS = Boneh-Lynn-Shacham 签名算法,是一种基于双线性配对的数字签名方案,核心优势是支持签名聚合。它的设计目标,就是解决区块链中「大量节点签名导致数据膨胀、验证成本过高」的痛点。
在区块链里,ECDSA/Ed25519 有个致命短板:不支持原生聚合。
| 特性 | ECDSA(secp256k1/Ed25519) | BLS(BLS12-381/BN254) |
|---|---|---|
| 签名大小 | 64 字节 | 48 字节(G1 群) |
| 公钥大小 | 32 字节 | 96 字节(G2 群) |
| 聚合能力 | 不支持原生聚合 | 支持,N 个签名合成 1 个 |
| 单签验证速度 | 快 | 稍慢(需配对运算) |
| 批量验证速度 | 慢 | 极快(一次配对搞定) |
| 链上场景 | 账户交易签名 | 共识签名、多签、跨链验证 |
BLS 的核心是双线性配对,先搞懂这个数学基础,再看签名流程就不懵了。
定义:存在一个映射 e: G1 × G2 → GT,满足核心性质:
e(aP,bQ)=e(P,Q)ab
大白话解释:
P 和 Q 丢进配对函数 e,得到 GT 群的一个值;sk:从 Z_r(标量群)中随机选一个数,保密;pk:pk = sk · g2,其中 g2 是 G2 群的生成元,公开。m 哈希映射到 G1 群的点 H(m)(用标准的 Hash-to-Curve 算法);σ = sk · H(m)(G1 群的点,48 字节)。用配对函数检查:
e(σ,g2)=e(H(m),pk)
σ = sk·H(m),pk = sk·g2,代入配对性质:e(sk·H(m), g2) = e(H(m), sk·g2) → 等式成立 ✅多个签名者对同一个 / 不同消息签名,把所有签名加起来,得到一个聚合签名,公钥也可以聚合,最终一次验证搞定所有。
m 签名i 的签名:σ_i = sk_i · H(m)σ = σ_1 + σ_2 + ... + σ_100(椭圆曲线点加法)pk = pk_1 + pk_2 + ... + pk_100e(σ, g2) = e(H(m), pk) 即可 ✅i 对不同消息 m_i 签名:σ_i = sk_i · H(m_i)σ = σ_1 + σ_2 + ... + σ_ne(σ, g2) = ∏ e(H(m_i), pk_i)(一次配对 + 多次乘法)如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码