zksnark的第一步就是由几个随机数作key generation ,在区块链中,显然不会有第三方来提供key generation。好在BCTV2015的结果保证可以使用相同的proving key和verification key。 prover允许知道verification key,verifier也允许知道proving key,但是prover和verifier都不允许知道用来生成key的随机数。我们要求这些随机数被丢弃掉(toxic waste),甚至希望这些随机数从未出现在内存中过。 zcash开发者采用MPC(安全多方计算)来实现,想法是6个参与者每个人提供一个随机数,把随机数乘在一起得到最终的随机数。具体细节见pdf[https://github.com/zcash/mpc/blob/master/whitepaper.pdf] 于是在2016年10月23日,6名开发者在不同位置,使用新电脑完成了这次计算。每个人有两台电脑,一台用来计算而不联网,一台联网而不计算。两者之间通过disc来传输。所有视频、音频和文字材料都公开了。
还有几个有用的链接:zcash中变量的关系图[https://z.cash/downloads/visualization.pdf],对理解snark和zcash交易细节有帮助