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ão
Nome
draft-irtf-cfrg-pairing-friendly-curves
BLS12-381
EIP-2537
BLS12_381
Parâmetros de domínio
campo primo de 381 bits · cerca de 117 bits de segurança