BLS12-381 es la curva apta para emparejamientos de la capa de consenso de Ethereum, de Zcash y de Filecoin.
BLS12-381 es una curva de Weierstrass corta y² = x³ + ax + b sobre un campo primo de 381 bits, con un subgrupo de orden primo de 255 bits y cofactor 76329603384216526031706109802092473003; su nivel de seguridad estimado es de 117 bits. Estado: segura, pero regional o de nicho.
BLS12-381 es una curva de Barreto–Lynn–Scott con grado de inmersión 12, diseñada por Sean Bowe para Zcash en 2017. G1 es y² = x³ + 4 sobre un primo de 381 bits, G2 está en una curva torcida (twist) sobre GF(p²), y ambos usan un subgrupo de orden primo de 255 bits. Su seguridad se estima entre unos 117 y 120 bits tras las mejoras de la criba del campo de números que debilitaron BN254.
En el consenso de prueba de participación (proof-of-stake) de Ethereum, cada atestación se firma con una firma BLS sobre esta curva (draft-irtf-cfrg-bls-signature), de modo que miles de firmas se agregan en una sola, y EIP-2537 añade precompilados para ella a la capa de ejecución. Zcash Sapling, Filecoin y la baliza de aleatoriedad drand también la usan.
El cofactor de G1 es grande (h, más arriba), así que las implementaciones deben comprobar que los puntos recibidos están en el subgrupo de orden primo antes de usarlos.
Nombres en los estándares
Estándar
Nombre
draft-irtf-cfrg-pairing-friendly-curves
BLS12-381
EIP-2537
BLS12_381
Parámetros de dominio
campo primo de 381 bits · seguridad de unos 117 bits