Polynomial Commitments代码实现【2】——lovesh/kzg-poly-commit
与博客Polynomial Commitments代码实现【1】——scipr-lab/poly-commit(含不同曲线性能对比)中类似,lovesh/kzg-poly-commit也是基于论文《Polynomial Commitments∗》的代码实现。
1. finite域及group element运算
https://github.com/lovesh/amcl_rust_wrapper是在https://github.com/miracl/amcl基础上进行了二次封装,同时:
- 重载了
+, -, *, +=, -=
运算,保证方法运行为constant time。对于scalar multiplication,也提供了variable time算法实现。 - 抽象了field元素和group元素vector的创建方法,支持scale,add,inner product和Hadamard product运算。
- 通过
serde
进行序列化。 - 实用
clear_on_drop
来清理不用的field和group元素。 - 提供了wNAF variable time scalar multiplication方法,以及其它constant time和variable time multi-scalar multiplication方法,提供了batch(simultaneous)inversion 和Barrett reduction方法。
在Cargo.toml
中配置features来指定所需使用的曲线(支持bls381/secp256k1等等曲线):
[dependencies.amcl_wrapper]
git = "https://github.com/lovesh/amcl_rust_wrapper"
branch = "master"
features = ["bls381"]
目前https://github.com/miracl/amcl仅做bug维护,不做新功能更新。最新的库见https://github.com/miracl/core,该库为多曲线多语言实现,MIRACL Core was designed from the ground up with side-channel attack resistance in mind.
参考资料:
[1] 论文《Polynomial Commitments∗》
[2] 代码库:https://github.com/lovesh/kzg-poly-commit
[3] 博客polynomial commitment及实现方式对比
[4] 博客椭圆曲线形式下的Pedersen commitment——vector commitmnt和polynomial commitment
Polynomial Commitments代码实现【2】——lovesh/kzg-poly-commit相关推荐
- Functional Commitment Schemes: From Polynomial Commitments to Pairing-Based Accumulators学习笔记
1. 背景知识 Benoˆıt Libert, Somindu C. Ramanna 和 Moti Yung 2016年论文 <Functional Commitment Schemes: Fr ...
- RedShift: Transparent SNARKs from List Polynomial Commitments学习笔记
1. 引言 纽约大学Kattis和Matter Labs团队2019年论文<RedShift: Transparent SNARKs from List Polynomial Commitmen ...
- 论文笔记Dory:Arguments for Inner Products and Polynomial Commitments
Lee, J. (2021). Dory: Efficient, Transparent Arguments for Generalised Inner Products and Polynomial ...
- 【我的Android进阶之旅】Android Studio 中 使用git提交代码报错:Can‘t commit changes from multiple changelists at once
一.错误描述 今天在Android Studio中,Commit代码的时候报错了,然后解决了. 现在模拟复现下之前的错误,如下所示: 0 file committed, 2 files failed ...
- 使用SAP WebIDE往Github上推送代码修改时遇到错误消息 Commit request failed Commit failed. Ref must be HEAD and is HEAD
Created by Jerry Wang, last modified on Nov 08, 2015 试图使用WebIDE 往github上推送change时,遇到如下error message: ...
- Compact Multi-Signatures for Smaller Blockchains代码解析
1. 引言 Boneh等人2018年论文<Compact Multi-Signatures for Smaller Blockchains>,论文解读参见博客 Compact Multi- ...
- Musig方案代码解析
1. 引言 Musig方案由Blockstream团队2018年论文<Simple Schnorr Multi-Signatures with Applications to Bitcoin&g ...
- Polygon zkEVM的pil-stark Fibonacci状态机代码解析
1. 引言 前序博客有: Polygon zkEVM的pil-stark Fibonacci状态机初体验 STARKs and STARK VM: Proofs of Computational In ...
- 双变量polynomial commitment
1. 引言 本博文主要研究的是 Benedikt Bünz 等人(standford,ethereum,berkeley) 2019年论文<Proofs for Inner Pairing Pr ...
- Subvector Commitments with Application to Succinct Arguments学习笔记
1. 背景知识 Russell W. F. Lai 和 Giulio Malavolta 在Crypto 2019上发表的论文<Subvector Commitments with Applic ...
最新文章
- poj2987最大权闭包(输出最少建塔个数)
- 一个标准的PID算法
- 【蓝桥杯Java_C组·从零开始卷】第八节、集合——list详解
- 1106 Lowest Price in Supply Chain(甲级)
- SSM : 环境搭建
- 基于Scrapy框架的Python新闻爬虫
- 单片机是什么?单片机编程怎么入门?
- LumaQQ.NET 试用
- mysql数据库三表联查
- 计算机组成原理期末知识点复习及考点总结
- java.io.IOException: 远程主机强迫关闭了一个现有的连接。
- 红黑树详解三:红黑树的删除
- clip-path应用
- Vultr 修改 Root 账户密码教程
- Python发送邮件(以QQ邮箱为例)
- 浅析网络可视化分析技术
- 如何使用CSS画一个圆圈?圆圈中间写字?
- Hrbust 1176 小陈老师、雪人
- Maven学习(三) -- 仓库(转自--江湖小妞)
- P1162 填涂颜色