Skip to content

zhangtong

huitiancontinue edited this page Dec 20, 2018 · 2 revisions

测试用例5

测试目的

测试对同一笔Send交易进行多次Deposit,理论上同一笔Send交易只能执行一次Deposit,再次执行Deposit会报错。

操作步骤

(1)A发起Mint交易,向自己的零知识余额转账;

(2)A向B发送Send交易,将一部分零知识余额转账给B;

(3)B对该Send交易执行Deposit;

(4)B再次对同一Send交易执行Deposit。

测试结果

前三步执行成功,第四步执行失败,错误提示:pubkeyb can not be used for a second time

测试用例6

测试目的

测试A账户发起send交易后继续执行Deposit交易,理论上一个账户在执行完Send交易后必须执行Update交易,否则不能执行其他任何交易,因此Deposit会执行失败。

操作步骤

(1)A发起Mint交易,向自己的零知识余额转账;

(2)A向B发送Send交易,将一部分零知识余额转账给B;

(3)C发起Mint交易,向自己的零知识余额转账;

(4)C向A发送Send交易,将一部分零知识余额转账给A;

(5)A对C发起的Send交易执行Deposit。

测试结果

前四步执行成功,第五步执行失败,错误提示:cannot send DepositTx after sendTx

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