#参数 #大数 #noir # #模数 #实例 #大整数

程序+库 noir-bignum-paramgen

将模数转换为用于 https://github.com/noir-lang/noir-bignum 的 bignum 实例参数的命令行工具

4 个版本

0.1.3 2024年7月28日
0.1.2 2024年7月27日
0.1.1 2024年7月27日
0.1.0 2024年7月27日

#467 in 数学

Download history 218/week @ 2024-07-23 31/week @ 2024-07-30

每月 249 次下载

Apache-2.0

20KB
358

noir-bignum-paramgen

rust 工具,用于生成 noir 的 noir-bignum 库(https://github.com/noir-lang/noir-bignum)的参数。

该工具接受一个大的整数模数,并打印出一个表示以下内容的字符串

  1. 一个可以用于静态定义域的 BigNumInstance 对象(当域模数是一个电路常数时使用)
  2. 一个可以用于从见证值动态定义域的 runtime_bignum::BigNumInstance 对象(例如 RSA 签名验证)
  3. 表示一个 BigNum 对象的 Field 元素数组
  4. 表示 runtime_bignum::BigNumInstance 对象的 Barrett 减小参数的 Field 元素数组

在构建静态域的参数时,应使用第 1 种情况。

如果格式化的 BigNum 肢是 noir 电路的公开/私有输入,则可以使用第 3 种情况来生成所需的见证值。

如果通过见证定义了域模数,则必须向电路提供 Barrett 减小参数。它仅在非约束函数中使用,可以直接提供而不需要在电路中推导。在这种情况下,应使用第 4 选项。

用法

cargo build --release ./target/release/paramgen [instance, runtime_instance, limbs, redc_param] [bignum modulus in hex or decimal] ?[parameter name]

第一个输入参数定义了正在生成哪个参数。第二个参数定义了大数模数,可以是10进制或16进制(16进制可以以 0x 开头,但不需要)第三个参数是参数名称。

示例用法

./target/release/paramgen实例 0x01C4C62D92C41110229022EEE2CDADB7F997505B8FAFED5EB7E8F96C97D87307FDB925E8A0ED8D99D124D9A15AF79DB117E776F218059DB80F0DA5CB537E38685ACCE9767254A4638810719AC425F0E39D54522CDD119F5E9063DE245E8001 MNT6_753_Fr>out.txt

./target/release/paramgen运行时实例 8444461749428370424248824938781546531375899335154063827935233455917409239041 BLS12_377_Fr>out.txt

./target/release/paramgen数位 01C4C62D92C41110229022EEE2CDADB7F997505B8FAFED5EB7E8F96C97D87307FDB925E8A0ED8D99D124D9A15AF79DB26C5C28C859A99B3EEBCA9429212636B9DFF97634993AA4D6C381BC3F0057974EA099170FA13A4FD90776E240000001 MNT4_753_Fr>out.txt

./target/release/paramgenredc_param 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff Secp256r1_Fq>out.txt

依赖项

~2.4–3MB
~62K SLoC