Lecture-1 summary

Lecture-1 summary

ring signature和zk-snark进行比较

  简单理解环形签名,有n个用户,他们都有一对公私钥,有一个用户有一个信息m,需要给其他所有用户证明自己拥有信息m。

  • 第一阶段:签名阶段,这个用户保存其他所有用户的公钥,这个用户用所有人的公钥加上自己的私钥对信息m进行签名得到签名指纹S。
  • 第二阶段:广播阶段,用户将签名指纹S和信息m广播给所有用户。
  • 第三阶段:验证阶段,每个用户都可以用自己的公钥对指纹S和信息m进行验证。

decoy output是什么意思呢,简单理解,就是混入其他多少个公钥进来混淆加密,这样混的多了,任何一个验证方都难以知道是谁发起的这个签名。

项目:https://github.com/t-bast/ring-signatures

为了验证decoy多与少的时间消耗,写了一个脚本:

func sign_time(){
    nums := []int{2, 3,5,7,11,57,111}
    PK, SK := ring.Generate(crand.Reader)
    message := "wtf"
    for _, num := range nums {
            var ringKeys []ring.PublicKey
            ringKeys = append(ringKeys, PK)
            for i :=0;i

结果如下:

decoy number:2 nanosecondsign   run time: 23310644 nanosecond
decoy number:3 nanosecondsign   run time: 32150456 nanosecond
decoy number:5 nanosecondsign   run time: 49989242 nanosecond
decoy number:7 nanosecondsign   run time: 66954814 nanosecond
decoy number:11 nanosecondsign  run time: 103006057 nanosecond
decoy number:57 nanosecondsign  run time: 512016500 nanosecond
decoy number:111 nanosecondsign run time: 991204405 nanosecond

接下来看看zkSNARK,如果要想简单理解,可以参考我这博客:零知识证明中的超级新星:zk-SNARKs

当然要想更加深入理解zk-SNARKs,绝非这么容易,了解下基本的密码学概念:

  • Zero knowledge:零知识,证明者向验证者证明某个信息的情况下,不会给验证者提供任何有用的信息。
  • Succinctness:证据信息较短,方便验证。
  • Non-interactivity:没有交互,这对于区块链来说就非常完美,直接把签名后的“无用”的信息放在公链让验证者可以公开验证。
  • Arguments:证明过程是计算完好(computationally soundness)的,证明者无法在合理的时间内造出伪证。
  • of knowledge:对一个证明者来说,在不知晓特定证明(witness)的前提下,构建一个有效的零知识是不可能的。

有一个C++的zk-SNARKs的项目https://github.com/scipr-lab/libsnark

zk-SNARKs占用空间大约40M左右,环形签名和zk-SNARKs比较,后者的运行更有效率。

bitcoin,Ethereum,menero,zcash和EOS的交易,交易属性,块大小以及填入多少交易


















































币种 出块时间 交易属性 共识算法 块大小 填入交易数
Bitcoin 10min 最终一致性的确认需要多个出块来保证 PoW 1M 2k-3k
Ethereum 14s gas消耗机制,支持图灵完备的智能合约 PoW 最大1500000Gas,每笔转账消耗21000Gas,最大为1M 70
Menero 600s 使用环签名,隐形地址保证匿名 防ASIC的CryptoNote的核心算法 不固定,最大为前100个块大小的中位数的2倍,最小块300KB 交易数量不固定,能接近1000
ZCash 2.5min zk-SNARKs实现匿名 抗ASIC的EquiHash算法 2M 3k左右
EOS 0.5s 快速,地址记忆友好,权限体系 DPoS+PBFT 不固定,可以到几十M 1500以上

你可能感兴趣的:(Lecture-1 summary)