什么是安全的多方计算?

安全多方计算

安全的多方计算是加密货币术的一个子领域,其目的是为各方创建方法,以在其输入上共同计算功能,同时保持这些输入为私有

概述

借助区块链,强制执行正确性的解决方案大体上是让每个参与者自己验证链。要确认一个新块,需要完全验证该块以确保正确性。扩大区块链交易能力的大量努力(例如闪电网络)要求利用时间承诺来建立保真度债券(断言/挑战协议),以便断言的数据必须处于争议期限内,区块链上的参与者才能执行状态。这种断言/挑战发展使一个人可以断言某个特定状态是正确的,如果值不正确,则存在争议期,在此期间,另一位观察者可以在某个约定的时间之前提供对该断言进行质疑的证据。在欺诈或错误行为的情况下,区块链可以惩罚错误的行为者。这创建了一种机制,鼓励参与者在断言错误状态的情况下强制执行“且仅”。

通过具有断言/挑战证明的构造,感兴趣的参与者可以向根区块链(例如以太坊)上的不感兴趣的参与者确认基本事实。这种结构不仅可以用于支付,还可以扩展到计算本身,因此,区块链是合约的裁决层。但是,假定所有各方都参与了验证计算。例如,在闪电网络中,构造会对其产生影响,以便可以建立对计算合约状态的承诺(例如,使用条件状态的多签名交易的预签名树)。

这些构造考虑了大规模的强大计算,但是,存在一些问题需要大量外部状态的总和(即,整个系统/市场的总和,大量共享/不完整数据的计算,大量的贡献者)。这种对多方脱链状态(“状态通道”)的承诺要求参与者完全验证计算,否则,即使在单回合游戏中,在计算本身中也建立了相当数量的信任。此外,通常存在“回合”的推定,即在合约启动之前必须完全展开执行路径,这为参与者提供了移除并强制执行链上昂贵的计算的机会(因为无法证明哪一方暂停) 。相反,我们试图设计一种系统,使计算可以在链外进行,但最终在链上可强制执行,并且可在链上更新最少的情况下扩展到每秒数十亿次计算。这些状态刷新发生在一组自主的权益证明验证程序中,这些验证程序被激励采取欺诈行为所强制的正确行为,从而允许进行计算而没有单个参与者能够轻松地停止计算服务。这需要能够限制围绕数据可用性问题的问题(即,块扣缴),最大程度地减少拜占庭行动者在根链上发生的状态更新,以防止根链上的风险折算交易费用,以及一种机制强制状态更改。

定义

在MPC中,给定数目的参与者p1,p2,…,pN各自具有私有数据,分别为d1,d2,…,dN。参与者希望在该私有数据上计算公共函数的值:F(d1,d2,…,dN),同时将自己的输入保密。

例如,假设我们有三方爱丽丝,鲍勃和查理,分别用输入x,y和z表示他们的薪水。他们希望发现这三者中的最高者,而又不会彼此透露他们各自能赚多少。从数学上讲,这转化为它们的计算:

F(x,y,z)=最大值(x,y,z)

如果有一些值得信赖的第三方(例如,他们有一个共同的朋友托尼,他们知道可以保守秘密),那么他们每个人都可以将薪水告诉托尼,他可以计算出最高工资,然后将这个数字告诉所有人。 MPC的目标是设计一种协议,通过仅相互交易所消息,Alice,Bob和Charlie仍可以学习F(x,y,z),而无需透露谁做什么,而不必依赖Tony。他们应该通过参与协议来学习更多,而不是通过与廉洁,完全可信赖的Tony进行交互来学习。

具体来说,各方可以学习的就是他们可以从输出和自己的输入中学到的东西。因此,在给定的示例中,如果输出为z,则Charlie知道他的z是最大值,而Alice和Bob知道(如果x,y和z不同),则它们的输入不等于最大值,并且保持的最大值等于z。基本方案可以很容易地推广到当事方具有多个输入和输出的位置,并且该函数向不同的当事方输出不同的值。

随意地说,多方计算协议旨在确保的最基本属性是:

  • 输入隐私:不能从协议执行期间发送的消息中推断出有关各方拥有的私有数据的信息。可以收集的有关私有数据的唯一信息是仅从函数的输出可以推断出的任何信息。
  • 正确性:在协议执行过程中,愿意共享信息或偏离指令的对抗性合谋方的任何合法子集都不能强迫诚实的方输出错误的结果。此正确性目标有两种形式:保证诚实的一方计算正确的输出(“稳健”协议),或者如果发现错误则中止双方(“带有中止”的MPC协议)。

从简单的任务(例如抛代币)到更复杂的任务(例如电子拍卖(例如计算市场清算价格),电子投票或隐私保护数据挖矿),实际应用范围广泛。一个例子就是百万富翁的问题:两个百万富翁想知道谁更富有,以至于他们两个都不了解另一个的净资产。这种情况的解决方案实质上是安全地评估比较功能。

资讯来源:由0x资讯编译自NVESTLABS。版权归作者manasa所有,未经许可,不得转载

关注我们:Twitter | Facebook | Linkedin | Medium | Telegram | Weibo | WeChat