alt_bn128 是形如 y² = x³ + ax + b 的短 Weierstrass 曲线,定义在 254 位素域上,其素数阶子群为 254 位,余因子为 1;估计安全级别为 100 位。状态:仍然安全,正在逐步淘汰。
BN254 是 254 位素数上的曲线 y² = x³ + 3,属于 Barreto 和 Naehrig(2005年)提出的嵌入度为 12 的配对友好曲线族。它的配对把 G1(这条曲线上的点)和 G2(GF(p²) 上扭曲曲线的点)映射到 GF(p¹²),这正是 zk-SNARK 验证器和聚合签名所需要的。
以太坊在拜占庭(Byzantium)升级中加入了这条曲线上的点加、标量乘法和配对检查预编译合约(EIP-196、EIP-197),以太坊上的 Groth16 和 PLONK 验证器都依赖这些预编译合约。Zcash 最初的 Sprout 电路也使用它。
选用它时,其安全强度估计为 128 位,但扩展塔数域筛法(Kim 和 Barbulescu,2016年)把这一估计降到了约 100 位(Barbulescu 和 Duquesne,2019年)。新设计改用 BLS12-381。
各标准中的名称
| 标准 | 名称 |
|---|
| EIP-196 | alt_bn128 |
| Barreto–Naehrig | BN254 |
| libraries | BN256 |
域参数
254 位素域 · 约 100 位安全强度
- 域素数 p
- 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47
- 系数 a
- 0x0
- 系数 b
- 0x3
- 基点 x 坐标
- 0x1
- 基点 y 坐标
- 0x2
- 基点的阶 n
- 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
- 余因子 h
- 0x1
用于
- Ethereum precompiles (EIP-196, EIP-197)
- Groth16 and PLONK zk-SNARKs
- Zcash Sprout (historical)
← 全部曲线