6个版本
新版本 0.2.2 | 2024年8月13日 |
---|---|
0.2.1 | 2024年5月23日 |
0.1.3 | 2024年1月20日 |
0.1.1 | 2023年12月12日 |
0.1.0 |
|
#1530 在 加密学 类别中
每月422次下载
60KB
1.5K SLoC
__________ ____ ___________ / ____/ __ \/ __ \/ ___/_ __/___ ________ / /_ / /_/ / / / /\__ \ / / / __ \/ ___/ _ \ / __/ / _, _/ /_/ /___/ // / / /_/ / / / __/ /_/ /_/ |_|\____//____//_/ \____/_/ \___/ ------------------------------------------------- Ed25519 Threshold Signature Database
简介
FROSTore是一个工具,用于防止您的私钥被泄露并被用于未经您许可的数据签名。
FROSTore允许您使用Ed25519阈值签名将分布式信任引入您的应用程序。FROSTore生成的密钥永远不会合并成一个密钥,也不会存储在任何单个设备上。这意味着即使设备被入侵,您的私钥仍然安全。
功能
- 创建、存储和管理阈值签名
- 使用阈值签名签名数据
- 分布式密钥生成(DKG)
- 可自定义的最小和最大阈值
示例
如何使用FROSTore生成密钥对(使用DKG)并签名一些数据的简单示例。
use frostore::*;
static TOTAL_PEERS: u16 = 3;
static MIN_THRESHOLD: u16 = 2;
static BOOT_NODES: [&str; 3] = [
"/ip4/127.0.0.1/tcp/63888/p2p/12D3KooWDThDUUhDC2bi26E8LhHKsvLZq4wi7dNN5zypNVucgbqx",
"/ip4/127.0.0.1/tcp/58521/p2p/12D3KooWEk8vk2vFp7qTbif7X5kjQGJorFThxu8LheTF22Ef2fRc",
"/ip4/127.0.0.1/tcp/58560/p2p/12D3KooWDs3SvAP4pfQAdqse9AroqaAsxDuswV6iFkc6aAwJooVu",
];
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create the network client
let mut swarm = Swarm::builder().build_and_exec()?;
// Add the boot nodes to the client
for boot_node in BOOT_NODES.iter() {
let multiaddr: Multiaddr = boot_node.parse()?;
eprintln!("Adding peer: {:?}", multiaddr);
swarm.add_peer(multiaddr)?.await?;
}
eprintln!("Finished adding peers");
// Generate a new keypair on the network
let pubkey = swarm.generate(MIN_THRESHOLD, TOTAL_PEERS)?.1.await?;
println!("Generated pubkey: {:?}", pubkey);
// Sign some data
let data = b"Hello, World!".to_vec();
eprintln!("Signing data: {:?}", data);
let signature = swarm.sign(pubkey, data.clone())?.1.await?;
println!("Signature: {:?}", signature);
// Verify the signature
let valid = pubkey.verify(&data, &signature).is_ok();
println!("Signature Valid: {}", valid);
assert!(valid);
Ok(())
}
我们提供了一些更多示例来帮助您入门。您可以在/examples/
目录中找到它们。
有关如何使用FROSTore的更多信息,请参阅我们的文档。
研究
FROSTore主要基于以下研究论文
依赖项
~17–54MB
~1M SLoC