Skip to content

Send测试

Agzs edited this page Dec 6, 2018 · 9 revisions

传入数据需满足:v_s < v_old


v_old/value_old:转账人转换前零知识余额对应的明文余额

v_s/value_s:需要被转换的明文余额


理想测试

uint64_t value_old = uint64_t(20); 
uint64_t value_s = uint64_t(7);

结果:Verifying send proof successfully!


v_s = v_old

uint64_t value_old = uint64_t(20); 
uint64_t value_s = uint64_t(20);

结果:generate send proof fail!


v_s > v_old

uint64_t value_old = uint64_t(10); 
uint64_t value_s = uint64_t(20);

结果:generate send proof fail!


v_s =0

uint64_t value_old = uint64_t(20); 
uint64_t value_s = uint64_t(0);

结果:Verifying send proof successfully!


v_s=0 v_old=0

uint64_t value_old = uint64_t(0); 
uint64_t value_s = uint64_t(0);

结果:generate send proof fail!


验证proof时的测试参数及测试结果如下:

(1)当

uint256 sn_old = uint256S("123456");
uint256 cmtS = notes.cm();

sn_old,cmtS为生成proof时的参数,验证proof时通过。

结果:verify result = 1 Verifying send proof successfully!!!


(2)当

uint256 wrong_sn_old = uint256S("666");
uint256 cmtS = notes.cm();

wrong_sn_old为错误的验证参数,验证proof时不通过。

结果:verify result = 0 Verifying send proof unsuccessfully!!!


(3)当

uint256 sn_old = uint256S("123456");
uint256 wrong_cmtS = note_old.cm();

wrong_cmtS为错误的验证参数,验证proof时不通过。

结果:verify result = 0 Verifying send proof unsuccessfully!!!


1. 方案设计

VNT零知识设计方案

方案设计图

2. 方案实现

实现细节思考

2.1 libsnark模块实现

2.2 ethereum模块实现

2.3 cgo模块实现

3. 方案测试

部分问题

整体测试出的问题

3.1 libsnark模块测试

3.2 整体测试

4. 修改汇总

4.1 libsnark模块修改汇总

4.2 ethereum模块修改汇总

4.3 cgo模块修改汇总

5. 开发技巧

修改并编译web3.js文件

libsnark遇到的大“坑”

FZQA

CGO

MPT trie

transaction 部分修改

简易以太坊测试

Clone this wiki locally