Pular para o conteúdo
ecdsa.com
AceitávelWeierstrass curta

BLS12-381

A BLS12-381 é a curva amigável a emparelhamentos da camada de consenso do Ethereum, do Zcash e do Filecoin.

BLS12-381 é uma curva na forma curta de Weierstrass y² = x³ + ax + b sobre um campo primo de 381 bits com um subgrupo de ordem prima de 255 bits e cofator 76329603384216526031706109802092473003; o nível de segurança estimado é de 117 bits. Status: segura, mas regional ou de nicho.

A BLS12-381 é uma curva de Barreto–Lynn–Scott com grau de mergulho 12, projetada por Sean Bowe para o Zcash em 2017. G1 é y² = x³ + 4 sobre um primo de 381 bits, G2 fica em uma torção (twist) sobre GF(p²), e os dois usam um subgrupo de ordem prima de 255 bits. A segurança dela é estimada em cerca de 117–120 bits depois dos avanços do crivo de campo numérico que enfraqueceram a BN254.

O consenso de prova de participação (proof-of-stake) do Ethereum assina as atestações com assinaturas BLS sobre esta curva (draft-irtf-cfrg-bls-signature), de modo que milhares de assinaturas são agregadas em uma só, e a EIP-2537 acrescenta pré-compilados para ela à camada de execução. O Zcash Sapling, o Filecoin e o beacon de aleatoriedade drand também a usam.

O cofator de G1 é grande (h acima), então as implementações devem verificar se os pontos recebidos estão no subgrupo de ordem prima antes de usá-los.

Nomes nos padrões

PadrãoNome
draft-irtf-cfrg-pairing-friendly-curvesBLS12-381
EIP-2537BLS12_381

Parâmetros de domínio

campo primo de 381 bits · cerca de 117 bits de segurança

Primo p do campo
0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab
Coeficiente a
0x0
Coeficiente b
0x4
Coordenada x do ponto base
0x17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb
Coordenada y do ponto base
0x8b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1
Ordem n do ponto base
0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001
Cofator h
0x396c8c005555e1568c00aaab0000aaab

Usada em

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

Padrões e referências

Todas as curvas