Saltar al contenido
ecdsa.com
HeredadaWeierstrass corta

alt_bn128

BN254 (alt_bn128) es la curva de emparejamientos de Barreto–Naehrig integrada en los contratos precompilados de Ethereum.

alt_bn128 es una curva de Weierstrass corta y² = x³ + ax + b sobre un campo primo de 254 bits, con un subgrupo de orden primo de 254 bits y cofactor 1; su nivel de seguridad estimado es de 100 bits. Estado: aún segura, en proceso de retirada.

BN254 es y² = x³ + 3 sobre un primo de 254 bits, de la familia de curvas aptas para emparejamientos de Barreto y Naehrig (2005) con grado de inmersión 12. Su emparejamiento lleva G1 (puntos de esta curva) y G2 (puntos de una curva torcida sobre GF(p²)) a GF(p¹²), que es lo que necesitan los verificadores de zk-SNARK y las firmas agregadas.

Ethereum añadió en la actualización Byzantium (EIP-196, EIP-197) contratos precompilados para la suma, la multiplicación escalar y las comprobaciones de emparejamiento sobre esta curva, y los verificadores Groth16 y PLONK de Ethereum dependen de estos precompilados. Los circuitos Sprout originales de Zcash también la usaban.

Cuando se eligió, su seguridad se estimaba en 128 bits, pero la criba del campo de números en torre extendida (Kim y Barbulescu, 2016) rebajó la estimación a unos 100 bits (Barbulescu y Duquesne, 2019). Los diseños nuevos usan BLS12-381 en su lugar.

Nombres en los estándares

EstándarNombre
EIP-196alt_bn128
Barreto–NaehrigBN254
librariesBN256

Parámetros de dominio

campo primo de 254 bits · seguridad de unos 100 bits

Primo del campo p
0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47
Coeficiente a
0x0
Coeficiente b
0x3
Punto base x
0x1
Punto base y
0x2
Orden n del punto base
0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
Cofactor h
0x1

Se usa en

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

Estándares y referencias

Todas las curvas