-
Notifications
You must be signed in to change notification settings - Fork 14
方案实现细节思考
Agzs edited this page Dec 6, 2018
·
5 revisions
该方案主要涉及两大模块:go-ethereum
和libsnark
- 由于账户余额存储于MPT中,需要修改MPT的叶子结点,以支持明文余额和零知识余额;
- 需要额外增加五种交易:Mint,Send,Update,Deposit和Redeem,每笔交易都对应不同的零知识证明。此外,还要包含交易的产生,提交,广播,处理等操作;目前打算使用同一个交易的数据结构,使用标识符进行区分。
- 在每个区块需要增加由cmt_s(由Send操作产生)构成的默克尔树,用户产生
merkle
证明时,通过随机选取区块,将所选取的全部区块(按区块号)中的cmt_s
组织成merkle树;并将区块序列放到交易中。 - 在整个区块链中需要维护一张表,存储已公布的序列号sn;另外,用户自身需要保存自己产生的序列号和随机数;
- 利用以太坊中自带的椭圆曲线加密,随机化公私钥,公钥加密,私钥签名。
- 约束系统初始化参数,分别为五个主要的
gadget
产生各自的密钥(PK, VK),区块链账户均可使用该对密钥产生和验证proof
- SHA256_gadget修改,使其支持多个blocks。
- MerkleT证明
实现go语言对C语言的调用。go语言多线程调用时会存在bug。