alt_bn128 は、254 ビットの素体上の短縮ワイエルシュトラス形式の曲線 y² = x³ + ax + b で、位数が 254 ビットの素数である部分群とコファクター 1 を持ちます。推定セキュリティレベルは 100 ビットです。ステータス:現在も安全(段階的に廃止中)。
BN254 は 254 ビットの素数上の y² = x³ + 3 で、Barreto と Naehrig(2005年)による、埋め込み次数 12 のペアリングフレンドリー曲線の族に属します。そのペアリングは G1(この曲線上の点)と G2(GF(p²) 上のツイストの点)を GF(p¹²) に写します。これこそが zk-SNARK の検証者や集約署名に必要なものです。
Ethereum は Byzantium アップグレード(EIP-196、EIP-197)で、この曲線上の加算、スカラー倍算、ペアリングチェックを行うプリコンパイル済みコントラクトを追加しました。Ethereum 上の 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)
← すべての曲線