您当前的位置: 首页 >  分布式

mutourend

暂无认证

  • 4浏览

    0关注

    661博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ZEXE分布式隐私计算

mutourend 发布时间:2019-11-07 17:28:49 ,浏览量:4

参考2019年2月发表的论文《Zexe: Enabling Decentralized Private Computation》,具体实现见代码库。

1. zexe中的algebra代数运算

zexe\algebra\src\curves中,对bls12_377bls12_381edwards_bls12edwards_sw6jubjubmnt6sw6等共7条曲线做了实现,同时对bls12_377bls12_381sw6做了bench测试。

1.1 FixedBaseMSM运算

zexe/algebra/src/msm/fixed_base.rs中有: 1)get_mul_window_size根据多项式的阶 d d d(即num_scalars)来决定窗口的大小。

 pub fn get_mul_window_size(num_scalars: usize) -> usize {
        if num_scalars < 32 {
            3
        } else {
            (f64::from(num_scalars as u32)).ln().ceil() as usize
        }
    }

2)get_window_table返回的为一个二维数组,列数为:2^{window},行数为outerc=(scalar_size + window - 1) / window,其中的scalar_size为曲线的MODULUS_BITS。其中最后一列,除了前last_in_window个外,之后的均为零值。 [ 0 g 2 g 3 g 4 g . . . ( 2 w i n d o w − 1 ) g 0 ( 2 w i n d o w ) g 2 ∗ ( 2 w i n d o w ) g 3 ∗ ( 2 w i n d o w ) g 4 ∗ ( 2 w i n d o w ) g . . . ( 2 2 ∗ w i n d o w − 1 ) g . . . . . . . . . . . . . . . . . . . . . 0 ( 2 ( o u t e r c − 1 ) ∗ w i n d o w ) g 2 ∗ ( 2 ( o u t e r c − 1 ) ∗ w i n d o w ) g . . . ( l a s t _ i n _ w i n d o w − 1 ) ∗ ( 2 ( o u t e r c − 1 ) ∗ w i n d o w ) g 0 0 ] \begin{bmatrix} 0& g & 2g & 3g & 4g & ... & (2^{window}-1)g\\ 0& (2^{window})g & 2*(2^{window})g & 3*(2^{window})g & 4*(2^{window})g & ... & (2^{2*window}-1)g \\ ... & ... & ... & ... & ... & ... & ...\\ 0 & (2^{(outerc-1)*window})g & 2*(2^{(outerc-1)*window})g & ... & (last\_in\_window-1)*(2^{(outerc-1)*window})g & 0 & 0 \end{bmatrix} ⎣⎢⎢⎡​00...0​g(2window)g...(2(outerc−1)∗window)g​2g2∗(2window)g...2∗(2(outerc−1)∗window)g​3g3∗(2window)g......​4g4∗(2window)g...(last_in_window−1)∗(2(outerc−1)∗window)g​.........0​(2window−1)g(22∗window−1)g...0​⎦⎥⎥⎤​

	pub fn get_window_table(
        scalar_size: usize,
        window: usize,
        g: T,
    ) -> Vec {
        let in_window = 1             
关注
打赏
1664532908
查看更多评论
0.0888s