#finite-fields #prime-field #wasm32-unknown-unknown #ff #remove #independent #architecture

无 std ff_wasm_unknown_unknown

独立适配开源库ff,移除与wasm32-unknown-unknown架构不兼容的特性

3个版本

0.12.2 2022年12月1日
0.12.1 2022年12月1日
0.12.0 2022年12月1日

#467 in WebAssembly


用于 near_mimc

MIT/Apache

21KB
270

ff_wasm_unknown_unknown

ff_wasm_unknown_unknown 是开源库 ff 的独立适配版本,移除与wasm32-unknown-unknown架构不兼容的特性,特别是需要伪随机数生成的函数。

ff

ff 是用纯Rust编写的有限域库,没有 unsafe{} 代码。

免责声明

  • 此库不提供恒定时间保证。特质允许下游用户暴露恒定时间逻辑,但 #[derive(PrimeField)] 特质本身不生成恒定时间代码(即使是返回与恒定时间兼容值的特质方法)。

使用方法

ff 包添加到您的 Cargo.toml

[dependencies]
ff = "0.12"

ff 包包含 FieldPrimeField 特质。更多信息请参阅 文档

#![derive(PrimeField)]

如果您需要一个素域实现,此库还提供了一个过程宏,当提供模数时,将展开为一个高效的素域实现。 PrimeFieldGenerator 必须是 Fp 的 p-1 阶元素,同时也是二次非剩余。

首先,启用 derive 包功能

[dependencies]
ff = { version = "0.12", features = ["derive"] }

然后像这样使用宏

#[macro_use]
extern crate ff;

#[derive(PrimeField)]
#[PrimeFieldModulus = "52435875175126190479447740508185965837690552500527637822603658699938581184513"]
#[PrimeFieldGenerator = "7"]
#[PrimeFieldReprEndianness = "little"]
struct Fp([u64; 4]);

就是这样! Fp 现在实现了 FieldPrimeField

最低支持的 Rust 版本

需要 Rust 1.56 或更高版本。

最低支持的Rust版本可能在将来更改,但将使用小版本号升级的方式进行。

许可证

许可协议为以下之一

由您选择。

贡献

除非您明确声明,否则您有意提交的、根据Apache-2.0许可证定义的、旨在包含在本作品中的任何贡献,应按上述方式双重许可,不附加任何额外的条款或条件。

依赖关系

~31–570KB
~13K SLoC