Pular para o conteúdo
ecdsa.com
LegadaWeierstrass curta

alt_bn128

A BN254 (alt_bn128) é a curva de emparelhamento de Barreto–Naehrig incorporada aos contratos pré-compilados do Ethereum.

alt_bn128 é uma curva na forma curta de Weierstrass y² = x³ + ax + b sobre um campo primo de 254 bits com um subgrupo de ordem prima de 254 bits e cofator 1; o nível de segurança estimado é de 100 bits. Status: ainda segura, em processo de descontinuação.

A BN254 é y² = x³ + 3 sobre um primo de 254 bits, da família de curvas amigáveis a emparelhamentos de Barreto e Naehrig (2005) com grau de mergulho 12. O emparelhamento dela leva G1 (pontos desta curva) e G2 (pontos em uma torção sobre GF(p²)) a GF(p¹²), e é disso que precisam os verificadores de zk-SNARKs e as assinaturas agregadas.

O Ethereum adicionou contratos pré-compilados para adição, multiplicação escalar e verificações de emparelhamento nesta curva na atualização Byzantium (EIP-196, EIP-197), e os verificadores Groth16 e PLONK no Ethereum dependem desses pré-compilados. Os circuitos originais do Zcash Sprout também a usavam.

A segurança dela era estimada em 128 bits quando foi escolhida, mas o crivo de campo numérico em torre estendido (Kim e Barbulescu, 2016) reduziu a estimativa para cerca de 100 bits (Barbulescu e Duquesne, 2019). Projetos novos usam a BLS12-381 em vez dela.

Nomes nos padrões

PadrãoNome
EIP-196alt_bn128
Barreto–NaehrigBN254
librariesBN256

Parâmetros de domínio

campo primo de 254 bits · cerca de 100 bits de segurança

Primo p do campo
0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47
Coeficiente a
0x0
Coeficiente b
0x3
Coordenada x do ponto base
0x1
Coordenada y do ponto base
0x2
Ordem n do ponto base
0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
Cofator h
0x1

Usada em

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

Padrões e referências

Todas as curvas