关于数据安全:铜锁-Bulletproofs-R1CS-使用教程
背景R1CS 的背景源于零常识证实和可验证计算畛域的钻研,它是一种用于示意计算束缚的形式化模型,能够形容计算中的输出、输入和约束条件之间的关系。R1CS 的设计旨在使计算过程的束缚可能以一种无效和紧凑的形式进行示意,并且可能利用于零常识证实的构建。 在 Bulletproofs 算法中,R1CS(Rank-1 Constraint System)是一种用于构建束缚的模型,用于形容计算过程中的束缚关系。R1CS 提供了一种形式来表白计算中的束缚,为构建零常识证实和爱护隐衷提供了根底。Bulletproofs 利用 R1CS 模型来构建零常识证实,从而实现在不泄露任何无关输出和计算过程的信息的状况下验证计算的正确性。 Bulletproofs 须要相熟其根底概念能力更好的把握和应用,请移步:https://www.yuque.com/tsdoc/ts/bulletproofs 命令行公共参数(-ppgen/-pp)生成公共参数$ tongsuo bulletproofs -ppgen -out ./pp.pem -curve_name sm2 -gens_capacity 64 -party_capacity 1参数阐明,其中 bulletproofs 是 tongsuo 的子命令:bulletproofs 性能。不再赘述。 -ppgen:是 bulletproofs 的子命令,指公共参数的生成,pp 是 pub_param 的缩写,gen 是 generate 的缩写;-out:输入文件门路;-curve_name:椭圆曲线名称;-gens_capacity:椭圆曲线点生成器的容量,对于 r1cs 来说,该数须大于约束条件表达式中乘法变量的数量;-party_capacity:能够生成聚合证实的最大参与方数量,仅对 range proof 无效,r1cs proof 设置为1即可。<!----> 文本显示公共参数-pp 是用来显示公共参数的子命令。 $ tongsuo bulletproofs -pp -in ./pp.pem -text -nooutBulletproofs Public Parameter:curve: SM2 (1172)gens_capacity: 64party_capacity: 1G[n]: [0]: 02:a3:df:fe:3f:b6:88:0e:34:79:be:25:71:b2:03:97:0f:86:58:78:57:32:4d:b4:fa:70:0e:2f:0c:3b:d0:ea:85 [1]: 03:42:ee:45:da:e7:ee:84:78:8f:18:03:42:c4:0f:9e:0e:93:d8:82:54:08:a4:1a:30:38:bc:94:57:e7:9e:8b:61 [2]: 03:8a:7c:c7:fb:87:07:b0:a9:fe:65:1e:2a:b7:6a:98:02:0e:3d:1a:43:7d:7c:1a:d4:62:60:ce:00:87:e3:ec:04 [3]: 03:85:1b:e5:2f:be:1a:91:9c:6a:42:db:22:e0:35:7e:b8:61:67:56:f6:f4:04:51:2d:8d:13:82:58:ec:5a:2d:ec # 太长了,两头省略了 # [60]: 02:21:70:bc:20:33:2e:0b:b3:27:8d:c2:f3:38:f3:a6:8c:8b:05:5d:0a:15:df:ed:5f:ec:2a:3b:bf:d1:4c:fe:eb [61]: 03:53:89:6e:6e:8a:9e:1f:b6:54:63:50:c5:59:14:c5:1f:c2:c4:32:35:d4:8f:43:22:25:cd:3d:52:25:ee:ea:d1 [62]: 03:e4:f5:ff:b3:25:f6:ff:d7:ed:01:db:17:fa:8b:9c:c6:79:84:e3:6a:bf:42:17:b6:7b:9e:f7:d1:3e:7d:41:54 [63]: 02:e8:de:7e:27:21:0d:95:03:5b:f1:0e:1d:04:cb:f0:cd:1d:96:25:e7:4f:8b:49:0c:fb:08:cb:e6:a9:af:7f:0aH[n]: [0]: 03:e5:df:a2:8d:50:4e:d5:7f:64:a6:e5:88:a9:17:de:ff:d8:92:2b:57:1c:25:90:2e:8e:5d:ae:b2:21:f1:68:b4 [1]: 02:30:95:72:37:7c:9f:4c:ec:24:0d:fc:ff:08:38:77:73:49:e8:19:a8:84:cb:6f:0a:24:9e:39:31:01:a0:19:91 [2]: 03:a3:d1:84:c0:6d:c8:fa:1f:35:6c:65:75:e5:ff:63:45:16:29:bc:ee:5e:71:51:97:44:dd:03:15:bd:4f:bf:c3 [3]: 03:c3:06:44:b3:34:5c:ac:d7:ed:91:aa:24:e1:0a:cb:f7:04:61:12:d9:3d:bf:65:98:8b:f4:87:8d:9e:7f:b7:6e # 太长了,两头省略了 # [60]: 03:5f:30:c3:c7:29:02:38:18:5e:d2:ae:34:44:7f:44:52:fb:d1:97:24:7e:a6:7c:9e:f8:16:3f:f9:18:f3:7b:69 [61]: 02:ff:55:39:f5:be:2e:fb:29:b4:36:e6:f5:ce:d4:55:67:e9:59:3b:53:8a:af:ea:5b:6c:c6:db:45:de:5b:8b:71 [62]: 03:e2:2f:0c:fa:30:d2:ec:33:5e:aa:d0:c4:ba:7e:4e:6c:03:50:0f:26:27:72:ae:f0:d5:d8:ad:09:24:d0:94:de [63]: 02:64:af:b1:25:f4:85:c4:6c:da:fe:e3:b6:24:2a:0d:ad:f9:8b:56:96:6c:6b:3e:f1:f5:ef:92:9d:b2:52:8c:40U: 03:85:44:28:a8:55:f4:db:cd:1b:60:42:d0:21:5b:31:ea:0e:fb:b2:2e:46:3d:a3:f0:40:48:50:05:0a:a3:a9:ecH: 02:e5:21:75:20:47:fb:c2:76:c2:86:3c:10:e0:4c:1e:72:66:26:7b:3d:5d:ac:5b:a0:de:ab:11:d3:56:bd:fc:f1如上后果所示,G[n] 和 H[n] 就是随机生成椭圆曲线 SM2 上的点,n = gens_capacity * party_capacity,上图是 64,两头一些随机点因为太长太点篇幅省略掉了。 ...