Zum Inhalt springen
ecdsa.com
AuslaufendKurze Weierstraß-Form

alt_bn128

BN254 (alt_bn128) ist die paarungsfreundliche Barreto-Naehrig-Kurve, die in die Precompiled Contracts von Ethereum eingebaut ist.

alt_bn128 ist eine Kurve in kurzer Weierstraß-Form y² = x³ + ax + b über einem 254-Bit-Primkörper mit einer 254-Bit-Untergruppe von Primordnung und dem Kofaktor 1; das geschätzte Sicherheitsniveau beträgt 100 Bit. Status: noch sicher, wird schrittweise abgelöst.

BN254 ist y² = x³ + 3 über einem 254-Bit-Primkörper und gehört zur Familie der paarungsfreundlichen Kurven von Barreto und Naehrig (2005) mit Einbettungsgrad 12. Die Paarung bildet G1 (Punkte auf dieser Kurve) und G2 (Punkte auf einem Twist über GF(p²)) nach GF(p¹²) ab – genau das brauchen Verifizierer von zk-SNARKs und aggregierte Signaturen.

Mit dem Byzantium-Upgrade (EIP-196, EIP-197) hat Ethereum Precompiled Contracts für Addition, Skalarmultiplikation und Paarungsprüfungen auf dieser Kurve eingeführt, und Verifizierer für Groth16 und PLONK auf Ethereum stützen sich auf diese Precompiles. Auch die ursprünglichen Sprout-Schaltkreise von Zcash nutzten die Kurve.

Als die Kurve ausgewählt wurde, lag ihre geschätzte Sicherheit bei 128 Bit, doch das Extended Tower Number Field Sieve (Kim und Barbulescu, 2016) senkte die Schätzung auf etwa 100 Bit (Barbulescu und Duquesne, 2019). Neuentwicklungen setzen stattdessen auf BLS12-381.

Namen in Standards

StandardName
EIP-196alt_bn128
Barreto–NaehrigBN254
librariesBN256

Domainparameter

254-Bit-Primkörper · etwa 100-Bit-Sicherheit

Primzahl p des Körpers
0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47
Koeffizient a
0x0
Koeffizient b
0x3
x-Koordinate des Basispunkts
0x1
y-Koordinate des Basispunkts
0x2
Ordnung n des Basispunkts
0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
Kofaktor h
0x1

Verwendet in

  • Ethereum precompiles (EIP-196, EIP-197)
  • Groth16 and PLONK zk-SNARKs
  • Zcash Sprout (historical)

Standards und Quellen

Alle Kurven