BN128曲线

news2024/11/16 19:50:16

1. 引言

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

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

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

从而有:

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

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

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

相应的sage脚本为:

# GF(p) p的質數體,x為generator
sage: P.<x> = PolynomialRing(GF(p))
# 用GF(p) extension 建構Fp2,u為generator
sage: F2.<u> = GF(p).extension(x^2 + 1)

# Fp2的Polynomial ring P,t為generator
sage: P.<t> = F2[]
# 用Fp2 extension 建構Fp6,v為generator
sage: F6.<v> = F2.extension(t^3 - u-9)

# 若可以則執行下列:
# Fp6的Polynomial Ring P,y為generator
sage: P.<y> = F6[]
# 用Fp6 extension 建構Fp12,w為generator
sage: F12.<w> = F6.extension(y^2 - v)

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

  • 曲线C1(基于 F p \mathbb{F}_p Fp)为:
    在这里插入图片描述
  • 曲线C2(基于 F p 2 \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计算结果对应 F p 12 \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] 以太坊黄皮书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

增长思维 —— 撬动企业增长的杠杆

增长一定不是只适用于互联网公司 营销&#xff1a;获客 增长&#xff1a;研究的是用户全生命周期 增长思维&#xff1a;以供需分析为基础&#xff0c;从用户全生命周期寻找增长点的方法论 这个模型的核心是啊哈时刻&#xff0c;指的是一个产品对用户价值感最强的那个点 一个…

画饼画到世界地图上:按比例呈现多组数据

地图是数据可视化的一部分&#xff0c;做群体遗传学、动物学、植物学、微生物学等的朋友经常用到世界地图&#xff0c;比如绘制不同小麦品种的世界分布。一般情况下&#xff0c;我们根据经纬度将数据标注在地图上&#xff0c;然而有些时候&#xff0c;我们会需要更高级的标注&a…

Apache doris 1.2.0 release

亲爱的社区小伙伴们&#xff0c;再一次经历数月的等候后&#xff0c;我们很高兴地宣布&#xff0c;Apache Doris 于 2022 年 12 月 7 日迎来 1.2.0 Release 版本的正式发布&#xff01;有近 118 位 Contributor 为 Apache Doris 提交了超 2400 项优化和修复&#xff0c;感谢每一…

Ubuntu 22.04 桌面美化之Mac Big Sur风格

Ubuntu 默认的桌面也是一个不错的样式&#xff0c;但千篇一律的主题很容易让人疲惫。本文描述了如何通过安装 gnome 桌面主题和动画&#xff0c;使桌面趋向于 Mac 的样式。 美化后的样式如下&#xff0c;请参考&#xff1a; 一、主题和图标美化 1.1 安装 tweaks 打开终端&…

抽奖小程序怎么做?

抽奖小程序怎么做&#xff1f;大概需要多少钱&#xff1f; 价格方面&#xff0c;平台按年收费&#xff0c;一年1498至2498元。 明码标价&#xff0c;7天退款制度&#xff0c;随时退。 抽奖小程序怎么做步骤: 1.进入第三方抽奖小程序制作平台官网注册账号并登录。 抽奖小程…

Kubernetes集群安装卸载

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之…

银河麒麟服务器系统V10开启root用户自动登录的图文教程

HI,最近公司拿回来一个联想服务器,配置还可以啊,所以就想着在本地搭建一套常用的测试环境,但是这个服务器是扁平的,不像是主机那样,这种是锁定在主机箱上的,而且噪音很大,一直嗡嗡嗡的,所以打算弄好之后放在离我远一些的地方,不然真的没法工作,全是噪音,系统都部署…

transformer14

太强了都连载14了~~ 这次是无残差连接或归一化层&#xff0c;也能成功训练深度 尽管取得了很多显著的成就&#xff0c;但训练深度神经网络&#xff08;DNN&#xff09;的实践进展在很大程度上独立于理论依据。大多数成功的现代 DNN 依赖残差连接和归一化层的特定排列&#xff…

ROS多机通信(ssh控制)

这种方法需要在局域网范围内进行&#xff0c;通信距离取决于WIFI模块的传播距离 1、连接同局域网 将主机和从机连接相同的网络&#xff0c;在同一局域网内。例如192.168.0.*&#xff08;前三位相同&#xff09; 网络会自动给每个机器一个IP 2、安装SSH sudo apt-get insta…

SpringBoot自动配置的原理-@SpringBootApplication

文章目录1自动配置原理1.1 SpringBootConfiguration1.2.ComponentScan1.3 EnableAutoConfiguration2 为什么不使用 Import 直接引入自动配置类学完这篇文章&#xff0c;可以了解到 SpringBoot 自动配置原理1自动配置原理 SpringBootConfiguration 是一个组合注解&#xff0c;由…

Pinely Round 1 (Div. 1 + Div. 2) E.Make It Connected(思维题/并查集+分类讨论)

题目 n(n<4e3)个点不包含自环和重边的无向图&#xff0c; 你可以执行以下操作若干次&#xff1a; 1. 选择一个点u 2. 对于每个点v(v≠u)来说&#xff0c;若u、v之间当前有一条边相连&#xff0c;则断开这条边&#xff0c; 否则在u、v之间加一条边&#xff0c;使之相连 …

C++Mysql8.0数据库跨平台编程实战(下)

CMysql8.0数据库跨平台编程实战&#xff08;下&#xff09;第六章 跨平台中文乱码问题和mysql锁1、MySQLAPIC封装策略和方法说明windows上字符集gbk和utf8互转开始写代码把测试框架搭起来linux上字符集GBK和UTF8互转ZPMysql库添加字符集转换函数并测试GBK插入utf-8的数据我们把…

Android之Zygote(下)--- SystemServer详解

SystemServer是由zygote.forkSystemServer函数fork出来的子进程&#xff0c;forkSystemServer是一个native函数&#xff0c; /dalvik/vm/native/dalvik_system_Zygote.c static void Dalvik_dalvik_system_Zygote_forkSystemServer(const u4* args, JValue* pResult) {pid_t …

ABAP学习笔记之——第十章:面向对象ALV

一、ALV ALV 是 ABAP List Viewer 的缩写&#xff0c;是实际业务中查询数据或修改数据时经常使用的程序。 1、ALV的主要功能排序功能 (Ascending/Descending); 过滤设置; 变更列宽; 变更布局; ABC 分析; 下载 Excel及 Word 文档的保存。 2、ALV的类型 Function ALV; …

java计算机毕业设计ssm校园疫情防控系统u3669(附源码、数据库)

java计算机毕业设计ssm校园疫情防控系统u3669&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

Docker安装以及容器使用笔记

我们知道容器是一个打包了应用和相关依赖的盒子,那怎么去操控这个盒子呢? 这一篇我通过一个简单的aspnetcore程序来加深对盒子的理解,使用之前先 安装一下Docker的环境。 一:Docker的安装 官方下载地址:Install Docker Engine on CentOS | Docker Documentation ,跟着文…

深度学习——NiN网络模型(笔记)

网络中的网络&#xff08;NiN&#xff09; 1.全连接层的问题&#xff1a;参数多&#xff0c;容易过拟合。 ①卷积层需要的参数较少 ②卷积层后第一个全连接层参数对比 参数过多带来的问题&#xff1a;1.占内存 2.占用计算的带宽多3.容易过拟合 2.NiN为了解决全连接层参数过多的…

20221208英语学习

今日新词&#xff1a; fragment n.碎片&#xff0c;碎块&#xff0c;破片&#xff1b;片段 cynicism n.愤世嫉俗, 玩世不恭, (古希腊的)犬儒哲学, 冷言冷语, 犬儒学派 slight adj.少量的&#xff1b;轻微的&#xff1b;细小的&#xff1b;纤细的 willing adj.愿意, 乐意, 自…

虚拟存储器

虚拟存储器 文章目录虚拟存储器虚拟存储器概述常规存储器管理方式的特征局部性原理虚拟存储器的定义和特征请求分页存储管理方式请求分页中的硬件支持请求分页中的内存分配页面调入策略页面置换算法最佳(Optimal)置换算法先进先出(FIFO)页面置换算法最近最久未使用(LRU)置换算法…

深度学习下的脑机接口BCI究竟有多远?

BCI | ECoG | 脑机接口 LFP | CMRR | 生物计算 随着生命科学、医药研发、数据分析、数据挖掘、LFP、生物计算、靶点发现、基因测序等技术的快速发展&#xff0c;脑科学逐渐出现在人们的视野中&#xff0c;随之而来的脑机接口技术同时得到快速发展。 脑科学是人类社会面临的…