简介

  • github地址: https://github.com/AlexiaChen/mpvss-rs
  • crates.io:https://crates.io/crates/mpvss-rs

这是一个个人业余用Rust编写的PVSS的密码学相关的库,主要是对 Berry Schoenmakers. A Simple Publicly Verifiable Secret Sharing Scheme and its Application to Electronic Voting这篇论文的实现。

这个库的目的是理解secret sharing相关的东西,并且我们公司的区块链(C++编写)的DPoS共识算法中的randomness generation是用的Publicly Verifiable Secret Sharing(PVSS)。当然有些区块链中的共识是用的Verifiable Random Function(VRF)。

PVSS的方案也用在了ouroboros算法中(Cardano的共识算法)。据说后来的Ourboros Praos用的是VRF了,另外我也看见了Cardano的某位committer也实现了这篇论文的算法, rust-pvss, 里面选择的是P256R1的曲线 ,据作者说后面要加入所有的曲线,但是看目前的提交记录,作者估计不想做这样的体力活了,只实现了一个论文的Demo。

但是要注意的是,我这个库里面实现的素阶群选取不是椭圆曲线上的素阶点群,而是 rfc3526 这里面提到的群.所以要适配到自己已有区块链上是目前是不行的,区块链大部分用的还是基于椭圆曲线的,可能后面我会慢慢迭代加入这些功能,另外就是性能上后续我可能还会考虑做一些优化。