BN128曲线
创始人
2024-03-27 20:05:05
0

1. 引言

BN系列椭圆曲线E(Fp):y2=x3+b,其中b≠0E(\mathbb{F}_p):y^2=x^3+b,其中b\neq 0E(Fp​):y2=x3+b,其中b​=0,由Paulo S. L. M. Barreto1 和 Michael Naehrig 在2005年论文 Pairing-Friendly Elliptic Curves of Prime Order中首次提出,在该论文中,提出了构建embedding degree为k=12k=12k=12的BN系列椭圆曲线的有效算法:

  • 基域:素数 p=36x4+36x3+24x2+6x+1p=36x^4+36x^3+24x^2+6x+1p=36x4+36x3+24x2+6x+1
  • scalar域:order (即椭圆曲线上的点的个数)n=36x4+36x3+18x2+6x+1n=36x^4+36x^3+18x^2+6x+1n=36x4+36x3+18x2+6x+1
  • trace:t=6x2+1t=6x^2+1t=6x2+1(trace of Frobenius)
  • n=p+1−tn=p+1-tn=p+1−t

以太坊的alt_bn128曲线,取:
x=4965661367192848881x=4965661367192848881x=4965661367192848881

从而有:

  • p=21888242871839275222246405745257275088696311157297823662689037894645226208583p=21888242871839275222246405745257275088696311157297823662689037894645226208583p=21888242871839275222246405745257275088696311157297823662689037894645226208583
  • n=21888242871839275222246405745257275088548364400416034343698204186575808495617n=21888242871839275222246405745257275088548364400416034343698204186575808495617n=21888242871839275222246405745257275088548364400416034343698204186575808495617
  • t=147946756881789318990833708069417712967t=147946756881789318990833708069417712967t=147946756881789318990833708069417712967

根据herumi/ate-pairing可知,相应的extension field为:

  • Fp2=Fp[u]/(u2+1)\mathbb{F}_{p^2}=\mathbb{F}_p[u]/(u^2+1)Fp2​=Fp​[u]/(u2+1),其中u2=1u^2=1u2=1
  • Fp6=Fp2[v]/(v3−ξ)\mathbb{F}_{p^6}=\mathbb{F}_{p^2}[v]/(v^3-\xi)Fp6​=Fp2​[v]/(v3−ξ),其中v3=ξ,ξ=u+9v^3=\xi,\xi=u+9v3=ξ,ξ=u+9
  • Fp12=Fp6[w]/(w2−v)\mathbb{F}_{p^{12}}=\mathbb{F}_{p^6}[w]/(w^2-v)Fp12​=Fp6​[w]/(w2−v),其中w2=vw^2=vw2=v

相应的sage脚本为:

# GF(p) p的質數體,x為generator
sage: P. = PolynomialRing(GF(p))
# 用GF(p) extension 建構Fp2,u為generator
sage: F2. = GF(p).extension(x^2 + 1)# Fp2的Polynomial ring P,t為generator
sage: P. = F2[]
# 用Fp2 extension 建構Fp6,v為generator
sage: F6. = F2.extension(t^3 - u-9)# 若可以則執行下列:
# Fp6的Polynomial Ring P,y為generator
sage: P. = F6[]
# 用Fp6 extension 建構Fp12,w為generator
sage: F12. = F6.extension(y^2 - v)

Pairing-Friendly Elliptic Curves of Prime Order论文中有:
在这里插入图片描述
以太坊黄皮书中与zkSNARK相关的预编译合约使用的是BN128曲线对:

  • 曲线C1(基于Fp\mathbb{F}_pFp​)为:
    在这里插入图片描述
  • 曲线C2(基于Fp2\mathbb{F}_{p^2}Fp2​)为:
    在这里插入图片描述

相应的sage脚本为:

# G1
sage: F1 = GF(21888242871839275222246405745257275088696311157297823662689037894645226208583)
sage: G1 = EllipticCurve(F1,[0,3])sage: P1 = G1(1,2)# G2
sage: F2 = GF(21888242871839275222246405745257275088696311157297823662689037894645226208583^2,"i",modulus=x^2 + 1)
sage: TwistB = 3*F2("9+i")^(-1)
sage: G2 = EllipticCurve(F2,[0,TwistB])sage: P2x = F2("11559732032986387107991004021392285783925812861821192530917403151452391805634*i + 10857046999023057135944570762232829481370756359578518086990519993285655852781")
sage: P2y = F2("4082367875863433681332203403145435568316851327593401208105741076214120093531*i + 8495653923123431417604973247489272438418190587263600148770280649306958101930")
sage: P2 = G2(P2x,P2y)

基于以上BN128曲线对 构建的pairing计算结果对应 Fp12\mathbb{F}_{p^{12}}Fp12​,即有:
在这里插入图片描述
以太坊EIP-197:Precompiled contracts for optimal ate pairing check on the elliptic curve alt_bn128,以太坊的预编译合约采用以上(公式253)来替代(公式254),从而验证pairing运算结果是否一致。

参考资料

[1] BN128曲线
[2] Paulo S. L. M. Barreto1 和 Michael Naehrig 2005年论文 Pairing-Friendly Elliptic Curves of Prime Order
[3] 以太坊黄皮书

相关内容

热门资讯

原创 在... 在古代,被皇帝赐死其实是一种特殊的待遇,而不仅仅是死亡本身值得关注,更应看赐字所体现的意义。 首...
原创 2... 近日,拥有287万粉丝的抖音网红主播王某强(账号名:某某超市)因被曝多次犯下刑事罪行引发舆论哗然,相...
全球货币政策为何出现明显分化? 2025年岁末,全球金融市场出现“超级央行周”。 从12月10日开始,美国、日本、英国、欧盟、俄罗斯...
广汽自主品牌“三担责”政策发布 IT之家 12 月 28 日消息,广汽集团今日正式发布自主品牌“三担责”政策:三电问题自燃、电池衰减...
原创 他... John McAvoy 是一位来自英国的铁人三项运动员,创造了多个世界纪录,其中包括100,000米...
原创 高... 12月26日这一天,对日本右翼势力来说,具有非常特殊的意义,甚至可能成为东亚局势的一个重要导火索。日...
石景山检察院:侵犯知识产权犯罪... 新京报讯(记者张静姝)12月24日上午,北京市石景山区人民检察院(以下简称“石景山区检察院”)在中关...
暖心!女子买鸭起纠纷,拍摄者自... 智慧中国讯(马泽川)2025年12月26日,湖南衡阳一市场内上演了暖心一幕。一名女子在老人摊位购买鸭...
原创 民... 如今,律师这个职业在社会上的口碑并不特别好,主要原因是有些律师缺乏正义感。在律师圈里,有一些知名律师...
为促进民用航空事业高质量发展提... 法治日报全媒体记者 蒲晓磊 2025年12月27日,十四届全国人大常委会第十九次会议表决通过新修订的...