简介:在上一节《安全多方计算(MPC)从入门到精通:JUGO-IDE及SDK》中,已经介绍了JUGO-IDE及SDK相关的内容,本节也是本系列的最后一篇文章,我们将介绍MPC的经典案例,以及这些案例的代码及实现流程。
1.业务逻辑
该案例为经典的MPC百万富翁问题的一个演示,百万富翁问题是由华裔计算机科学家、图灵奖获得者姚期智教授首先提出的。该问题表述为:两个百万富翁Alice和Bob想知道他们两个谁更富有,但他们都不想让对方知道自己财富的任何信息。
该问题有一些实际应用:假设A希望向B购买一些商品,但她愿意支付的最高金额为x元;B希望的最低卖出价为y元。A和B都非常希望知道x与y哪个大。如果x>y,他们都可以开始讨价还价;如果z 本案实现了经典的百万富翁案例,用户可以在不知道对方的具体数值情况下,与对方计算出谁的数值更大。 1)在页面中输入计算数据值,并向参与计算方发出计算邀请。 2)参与计算方同意并录入数据后,双方开始进行安全多方计算。 3)计算完成后将比较结果返回给双方,完成本次计算任务。 该案例使用了32位比大小算法电路文件;电路文件是由Frutta语言开发、JUGO IDE编译;电路文件以与门和或门构成。 该案例中集成了三大部分的代码。包括:1)算法代码、2)服务端应用代码。 1)初始化节点 描述 引入JUGO平台SDK库; 初始化节点,启动节点监听(包括发起方节点和接收方节点); JUGO的节点初始化是以异步形式进行返回。 代码参考: 2)节点启动任务 描述: 如果是被邀请方,无需启动任务 如果是发起方,需要进行启动任务 JUGO的节点初始化是以异步形式进行返回 代码参考: 1)准备工作 环境搭建(要求linux系统) 安装nginx 安装JDK,配置JDK环境变量 1)描述: 项目依赖gradle进行构建; 可通过gradle指令进行打包,文件输出在同级build目录下; 可通过JAVA IDE打包可执行文件; 2)gradle指令: 1)描述: 在环境中执行以下指令进行监听; 后续可通过统计目录nohup.out查看输出日志 2)指令参考: 部署完毕 在浏览器中输入 http://ip:port/swagger-ui.html,可调试发起方接口 在浏览器中输入 http://ip:port/swagger-ui.html,可调试接收方接口 更多内容可以参考视频:http://edu.51cto.com/course/14087.html 产品实操请访问:https://jugo.juzix.net/home2.案例介绍
3.操作流程
4.所用算法
一、代码
1.算法代码
1. #parties 2
2. #input 1 uint32
3. #input 2 uint32
4. #output 1 uint32
5. function void main()
6. {
7. /* 数据比较电路 (output1=1 && input1>input2)*/
8. output1 = input1/input2;
9. if(output1>0)
10. {
11. output1 = 1;
12. }
13. }
2.服务端代码
1. compare = new Compare(SystemProperties.getDefault().getCompare(), SystemProperties.getDefault().getNode1UserName(), SystemProperties.getDefault().getNode1Password(), mode,SystemProperties.getDefault().getNode1Endpoint(), null, argsAttach);
2. //设置返回的callback对象,处理结果返回数据
3. compare.setOutputCallback(new OutputCallback
1. //初始化计算双方
2. List
二、实现流程
1.MPC应用部署
2.项目打包
1.>cleanbuild
3.项目运行
1.>nohupjava-jarMPCAcceptApp.jar&//启动接收方节点
2.>nohupjava-jarMPCStartApp.jar&//启动发起方节点
4.项目调试