cryptape / ckb-crypto-demo

Fundamental cryptography libraries for CKB
4 stars 4 forks source link

Bulletproof 验证功能开发 #20

Closed timfaner closed 4 years ago

DXPlus commented 4 years ago

接口说明

1. 生成证明函数

let (proof, committed_value) = RangeProof::prove_single(
    &bp_gens,
    &pc_gens,
    &mut prover_transcript,
    secret_value,
    &blinding,
    32,
).expect("A real program could handle errors");

参数说明:

bp_gens:bulletproof生成器,可设置范围证明的最高位数大小以及聚合证明的最大参与数量,以及创建一个用来保存多方参数基点的容器

pc_gens:pedersen承诺生成器,可生成椭圆曲线上的两个基点

prover_transcript:非交互证明转化器,用于生成证明

secret_value:秘密值

blinding:盲化值

committed_value:生成的承诺值

proof:生成的范围证明

32:证明的范围位数

2. 验证函数

let mut verifier_transcript = Transcript::new(b"doctest example");
assert!(
    proof
        .verify_single(
          &bp_gens, 
          &pc_gens, 
          &mut verifier_transcript, 
          &committed_value, 32
  ).is_ok()
);

参数说明:

verifier_transcript:非交互证明转化器,用于验证证明

DXPlus commented 4 years ago

在C++下能用botan跑通验证功能具体指的是什么?是需要把验证函数从Rust语言版本改成C++的吗?还有就是botan库在这其中具体起什么作用呢?

timfaner commented 4 years ago

门罗币C++实现验证部分看看能不能能不能用。 Rust的支持可以先放放,和开发组碰头看看移植的可能性。

DXPlus commented 4 years ago

好的,我先仔细研究研究门罗的这部分代码

DXPlus commented 4 years ago

正在阅读门罗关于BulletProofs实现的代码说明,Monero-Bulletproofs.pdf ,代码比较复杂,进展缓慢

DXPlus commented 4 years ago

门罗关于Bulletproofs实现的文档说明链接: https://ostif.org/wp-content/uploads/2018/10/OSTIF-QuarksLab-Monero-Bulletproofs-Final2.pdf

timfaner commented 4 years ago

条件还不成熟,可考虑之后再做