Saltar al contenido
ecdsa.com
AceptableWeierstrass corta

BLS12-381

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ándarNombre
draft-irtf-cfrg-pairing-friendly-curvesBLS12-381
EIP-2537BLS12_381

Parámetros de dominio

campo primo de 381 bits · seguridad de unos 117 bits

Primo del campo p
0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab
Coeficiente a
0x0
Coeficiente b
0x4
Punto base x
0x17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb
Punto base y
0x8b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1
Orden n del punto base
0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001
Cofactor h
0x396c8c005555e1568c00aaab0000aaab

Se usa en

  • Ethereum consensus (BLS signatures)
  • Ethereum precompiles (EIP-2537)
  • Zcash Sapling
  • Filecoin
  • drand

Estándares y referencias

Todas las curvas