本文へスキップ
ecdsa.com
レガシー短縮ワイエルシュトラス形式

alt_bn128

BN254(alt_bn128)は、Ethereum のプリコンパイル済みコントラクトに組み込まれている Barreto–Naehrig ペアリング曲線です。

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-196alt_bn128
Barreto–NaehrigBN254
librariesBN256

ドメインパラメーター

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)

規格と参考文献

すべての曲線