Skip to content

jixiaohui

chickspy edited this page Dec 20, 2018 · 13 revisions

测试目的

验证Mint、Redeem、Send、Update、Deposit操作的转账金额是否正确,CMT余额利用Redeem方式验证。

测试环境

建立A、B两个节点,A节点挖矿,分别初始化A、B两个账户,A账户余额0x1000000,B账户余额0x1。


测试过程一:

step1:
      A账户执行Mint操作,转账金额0x200。
      A明文余额剩余0xfffe00,CMT余额为0x200。
      结论:验证通过。
step2:
      A账户执行Send操作,向B账户转账,转账金额0x100。
      A账户执行Update操作。
      A明文余额剩余0xfffe00,CMT余额为0x100。
      结论:验证通过。
step3:
      B账户执行Deposit操作。
      B账户执行Redeem操作,转出余额最大为0xff。
      B明文余额剩余0x100,CMT余额为0x1。
      结论:验证通过。

测试过程二:

step1:
      退出A、B节点,重启节点和A、B账户。
      A明文余额剩余0xfffe00,CMT余额为0x100。
      B明文余额剩余0x100,CMT余额为0x1。
      结论:验证通过,与退出前余额相同。
step2:
      B账户执行Mint操作,转账金额0xff。
      B明文余额剩余0x1,CMT余额为0x100。
      结论:验证通过。
step3:
      B账户执行Send操作,向A账户转账,转账金额0xff。
      B账户执行Update操作。
      B明文余额剩余0x1,CMT余额为0x1。
      结论:验证通过。
step4:
      A账户执行Deposit操作。
      A账户执行Redeem操作,转出余额最大为0xff。
      A明文余额剩余0xfffffe,CMT余额为0x1。
      结论:验证通过。

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