3 个稳定版本
1.1.2 | 2023年9月1日 |
---|---|
1.0.1 | 2023年2月25日 |
#764 在 密码学
228 每月下载量
30KB
635 行
Libecvrf
来自 Orand 的库,Orand 是一个去中心化 RNG(或公共随机性信标)@ Orochi 网络
概述
在密码学中,可验证随机函数(VRF)是伪随机函数的公钥版本。它生成一个伪随机输出,并提供一个证明来证明输出是正确计算的。
VRF 包含一对密钥,即公钥和私钥。私钥与输入一起由持有者用于计算 VRF 的值及其证明,而公钥由任何人用于验证计算的正确性。
传统伪随机函数的问题在于,其输出无法在没有种子知识的情况下进行验证。因此,恶意对手可以选择一个对他有利的输出,并声称它是函数的输出。VRF 通过引入一个公钥和可以公开验证的证明来解决此问题,同时所有者可以保留私钥来生成与随机选择的数字不可区分的数字。
VRF 在各个方面都有应用。其中之一是在互联网安全中,它用于提供对存储在基于哈希的数据结构中的数据的离线枚举(例如,字典攻击)的隐私保护 irtf-vrf15。VRF 还用于彩票系统 MR02 和电子现金 BCKL09。
功能
这个库是 Orand 的一个组成部分,Orand 是一个去中心化 RNG(或公共随机性信标)。这个 crate 提供两个主要功能,普通的 ECVRF 如 irtf-vrf15 中所述,以及与 Chaink VRF 验证器在 Solidity 中兼容的 EVM 友好的 ECVRF。
使用方法
use libecvrf::{
extends::ScalarExtend,
secp256k1::{curve::Scalar, SecretKey},
util::thread_rng,
ECVRF,
};
fn main() {
let secret_key = SecretKey::random(&mut thread_rng());
let ecvrf = ECVRF::new(secret_key);
let alpha = Scalar::randomize();
let proof = ecvrf.prove(&alpha);
println!("result: {:#?}", proof);
println!("{:?}", ecvrf.verify(&alpha, &proof));
let smart_contract_proof = ecvrf.prove_contract(&alpha);
println!("result: {:#?}", smart_contract_proof);
}
许可证
此项目根据 Apache 许可证,版本 2.0 授权。
用 ❤️ 和 🦀 构建
依赖项
~1.5–2.2MB
~47K SLoC