5 个版本
0.2.4 | 2023年8月25日 |
---|---|
0.2.3 |
|
0.1.0 | 2023年7月22日 |
1404 在 密码学
每月下载量 293
395KB
8K SLoC
MPC-Stark
示例
mpc-stark
提供了一个恶意安全的 SPDZ 风格的两方安全计算框架。电路是即时构建的,通过重载 MPC 类型的算术运算符,以下示例中,每一方共享一个值,然后他们一起计算乘积。
use mpc_stark::{
algebra::scalar::Scalar, beaver::SharedValueSource, network::QuicTwoPartyNet, MpcFabric,
PARTY0, PARTY1,
};
use rand::thread_rng;
#[tokio::main]
async fn main() {
// Beaver source should be defined outside of the crate and rely on separate infrastructure
let beaver = BeaverSource::new();
let local_addr = "127.0.0.1:8000".parse().unwrap();
let peer_addr = "127.0.0.1:9000".parse().unwrap();
let network = QuicTwoPartyNet::new(PARTY0, local_addr, peer_addr);
// MPC circuit
let mut rng = thread_rng();
let my_val = Scalar::random(&mut rng);
let fabric = MpcFabric::new(network, beaver);
let a = fabric.share_scalar(my_val, PARTY0 /* sender */); // party0 value
let b = fabric.share_scalar(my_val, PARTY1 /* sender */); // party1 value
let c = a * b;
let res = c.open_authenticated().await.expect("authentication error");
println!("a * b = {res}");
}
测试
通过以下方式提供库的独立部分的单元测试:
cargo test --lib
本库的大部分测试最好与实际通信结合进行;因此,大多数测试都是集成测试。集成测试可以运行如下:
./run_integration.zsh
或者更直接地作为:
docker compose up
依赖项
~20–35MB
~575K SLoC