一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第23天,点击查看活动详情。
| 有帮助的话请点个赞吧~ |
用一笔私密交易展现一种比特币交易过程,本篇主要介绍区间证明。
私密交易
回顾一下——
-
一个payeR发起一笔私密交易,他要向payeE付款,他将发送一个加密的数据包到世界(全网),里面是交易双方的身份,以及密文的交易金额、购买数量等数值内容;
-
此外,他还需附加三个公开的证明内容,供其他所有人查验:
- Pederson承诺:证明输入输出的数学关系;
- 区间证明:证明输入输出均为正数;
- 所有权证明:证明R的账户里有钱。
-
之前证明了输入输出的数学关系,但是也发现了要是输出个负数会出大问题,所以就来个区间证明来控制R操作的都是正数。
区间证明Rangeproof
- 这里要用到算术电路。
- 想要证明数字是一个正整数,根据计算机系统字长,可以把问题转化为证明。
- 如果用之前约束0和1的方式构建一个的多项式,就是,那算术电路里要放个乘法门,电路复杂度大到不可估量……
- 那换二进制思路,把拆成256位,只要每一位都是或也能达到同样的目的,判断每一位需要一个乘法门(如图),那就只需要个乘法门,复杂度一下就降了好多。
- 通过个二进制取值约束电路限制了为正整数之后,还要证明一下,刚才取值约束用到的每一位还能拼回去变回,也就是。
- 这里面需要个乘法门。
- 然后把上面两组电路拼起来就可以完成区间证明啦
- 输入的内容是和,前者输入第二个电路,后者输入两个电路;
- 输出为0则证明了可以被256位二进制数表达,且这256位或0或1的数确实是拆出来的。
参考
[1] 浅谈零知识证明之二:简短无交互证明(SNARK)_安比实验室SECBIT的博客-CSDN博客
【和4月say bye啦、话说忙碌到完全没有放假的感觉】
| 欢迎指正与讨论! |