一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第22天,点击查看活动详情。
| 有帮助的话请点个赞吧~ |
用一笔私密交易展现一种比特币交易过程,本篇主要介绍pederson证明。
私密交易Confidential Transaction
- 一个payeR发起一笔私密交易,他要向payeE付款,他将发送一个加密的数据包到世界(全网),里面是交易双方的身份,以及密文的交易金额、购买数量等数值内容;
- 此外,他还需附加三个公开的证明内容,供其他所有人查验:
- Pederson承诺:证明输入输出的数学关系;
- 区间证明:证明输入输出均为正数;
- 所有权证明:证明R的账户里有钱。
Pederson承诺
- 这里是基于同态加密实现的,需要一个满足加法同态的加密算法
E,也就是说明文的相加得到的结果和密文相加得到的结果解密相同,即。 - 假如R账户余额为100,要付给E的金额为10,找零就是90,那么他向交易输入,输出给E、输出给R(找零给自己)。
- 外界将看到三个乱码,但是他可以算出输出的两个乱码和相加等于输入的乱码,因而虽然他不知道具体金额,但他不得不相信这笔交易的输入输出之间的数学关系没问题。
- 将具体数字通用化,该过程如图:
- 其中。
- 这个过程通常使用基于椭圆曲线的加密方法,也就是基于离散对数困难问题。但是过程重点在于生成一个承诺,所以是无需解密的。
- 在椭圆曲线密码学场景下,承诺生成公式可以表示为。
- 其中和为特定椭圆曲线的生成元;为要加密证明的数据信息;为一个随机数,保证对同一个生成的承诺不相同;
- 对上述的分别生成上述的证明,然后验证是否成立。
- 过程中需要注意生成时所用到的并不是随机生成的,而是另外两个证明中随机数的和,即
- 此时可以推导一下证明:
- 在椭圆曲线密码学场景下,承诺生成公式可以表示为。
- 这里用来约束加法关系,那其实换个乘法同态方法,也可以验证乘法等各种更为复杂的约束。
问题
- Pederson承诺只能约束数值之间的数学关系,并不能约束数据本身的合法性。
- 比如说R输入他的余额,但是输出给E的内容是一个负数,那么找零给自己的反而还多了,这也就是一个非法印钞的过程;
- 再比如R随便输入一个数,正常输出给E金额,然后把剩下的钱找给自己,那R简直是人有多大胆找零有多长,这是个偷偷铸币的过程。
- 区间证明和所有权证明就是用来解决上述两个问题的,具体后面的文章。
参考
[1] 浅谈零知识证明之二:简短无交互证明(SNARK)_安比实验室SECBIT的博客-CSDN博客
[2] 区块链中的数学 - Pedersen承诺 | 登链社区 | 深入浅出区块链技术 (learnblockchain.cn)
【接着改论文去了、今天谈崩了一笔小生意状态奇差嘤嘤嘤】
| 欢迎指正与讨论! |