3个版本
0.12.2 | 2022年12月1日 |
---|---|
0.12.1 | 2022年12月1日 |
0.12.0 | 2022年12月1日 |
#467 in WebAssembly
用于 near_mimc
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
包包含 Field
和 PrimeField
特质。更多信息请参阅 文档。
#![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
现在实现了 Field
和 PrimeField
。
最低支持的 Rust 版本
需要 Rust 1.56 或更高版本。
最低支持的Rust版本可能在将来更改,但将使用小版本号升级的方式进行。
许可证
许可协议为以下之一
- Apache许可证2.0版本,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则您有意提交的、根据Apache-2.0许可证定义的、旨在包含在本作品中的任何贡献,应按上述方式双重许可,不附加任何额外的条款或条件。
依赖关系
~31–570KB
~13K SLoC