我和Mahnush坐下来,讨论了DFINITY将发布的各种创新,她早就加入了DFINITY团队。话题涵盖诸如阈值签名、随机信标和分布式密钥生成之类的术语。我们不仅讨论这些概念,还讨论它们为何如此重要的原因。
你好,欢迎收看另一部Inside DFINITY。今天,我将要与Mahnush进行交流,她作为研究人员很早就加入了我们。她来自耶鲁大学,今天我们将了解她在DFINITY从事的工作,她之前所做的工作,然后她还将为我们提供DFINITY开发的某些技术和创新的一些见解。
谢谢,您很早就加入了DFINITY。从早期开始,您就一直是我们研究团队的关键部分。也许对于尚未听说您的人,“您在这里做什么?”
因此,我是一名研究人员,我要做的是帮助和设计共识层,并证明共识层和随机信标的安全性。
我的日常工作是收集团队中的想法,使它们更加正式,以便我们可以在彼此之间理解它们,并正式地将它们编写出来,然后我喜欢证明它们是安全的,因此我们可以使用。
我认为您昨天对我的描述的一种很好的方式是:“我接受我们提出的所有建议,并确保了它的安全性。”我证明它是安全的,对于我们正尝试使用DFINITY构建的东西,我认为这是非常重要的属性。
是什么引导您担任这个职位的?你以前做什么?你来自哪里?
加入DFINITY之前,我是耶鲁大学的博士后。在那之前,我是一名博士生。对于我的博士,我从事安全性研究,例如多方计算。
安全的多方计算
安全的多方计算是您必须确保各方达成协议。计算的一个重要部分是输出,每个人都应就输出达成共识。因此,共识和拜占庭协议是MPC协议的重要组成部分。这就是为什么我对共识协议感兴趣的原因。
然后,在耶鲁大学期间,我试图建立一个共识性协议,使用基于委员会的协议扩展到数以百万计的各方。然后,我遇到了Timo和Dominic,我了解到DFINITY正在尝试做同样的事情,这对我来说很有趣。
拥有您真是太好了。我知道自您加入以来,我们已经取得了很大的进步,包括我们在今年年初发布的白皮书,我知道您花了许多不眠之夜进行工作。
云计算
我们在这里要解决的是哪些难题或一些有趣的问题?我认为我们在DFINITY尝试做的是一个新版本的云计算,如果您考虑一下,它实际上是一个状态复制机。
因为您必须拥有很多副本才能确保您不会丢失计算或数据,但是所有这些副本都应该达成协议。因为如果其中一些人认为某个东西是最终的,而其它一些副本则认为其它东西是最终的,那么用户将不知道哪个版本是正确的。
因此,确保所有这些副本都一致是DFINITY的非常重要的部分。这就是为什么共识协议通常对DFINITY非常重要的原因。
现在,如果所有副本都是诚实的,那么这会容易得多,因为我们可以确保例如,如果在Google Cloud中,您有几个副本,并且您确定所有副本都由Google控制,那么……对,因此,由于它们全部由Google控制,因此您可以确保每台计算机都可以应用相同的算法。
这就是您的意思,“他们都很诚实!”的确是,由于它们全部由一个中央团体拥有,因此对他们来说要容易得多,但同时您必须信任Google,以确保它们运行的算法是诚实的。
复制品
但是,在DFINITY中,我们要确保世界上每个人都可以拥有一个副本,而不是假设所有副本都由DFINITY拥有。因此,这就像是一种更开放的云计算方式。
用户无需信任DFINITY,但可以信任DFINITY运行的协议。在某些时候,它也将是开源的,对吗?每个人都可以看代码,每个人都可以有一个副本是什么意思?
基本上,这意味着每个人都可以成为我们系统中的矿工,而DFINITY中仍然需要矿工。尽管它们不会解决工作量证明之谜,但它们却构成了DFINITY上的分布式计算能力。
他们正在帮助计算,正在帮助维护数据,并且正在帮助维护对数据的计算。
实用拜占庭容错协议
如果副本不同,例如计算机位于不同的域上,则其中的某些副本可能会损坏或具有对抗性。在计算机科学中,我们称其为拜占庭,因为它来自拜占庭将军问题。
那么解决这个问题是一个非常困难的问题,它在过去的40年中一直存在于计算机科学中。并且每个人都在尝试改进该解决方案,因为这是一个非常基础的问题。
如果您有效地解决了该问题,那么您会在此之上解决很多问题。现在,不同的尝试是解决该问题的新方法。
因此,当您说问题已经存在很长时间时,就在我的脑中,一种解决方案是,如果我有三个独立的副本,两个说一件事,而第三个说其它话,我总是相信大多数。当前网络中实际发生了什么事情?完全不同的程度是什么?
这是计算机科学家想出的第一个答案,如果您有多个副本,例如三个副本,那么您将无法获得多数。因此,在您占多数之后,每个人都应将自己的输入发送给每个人,这就像一个高度通信深度的电路。
仍然是因为,如果您只同意一个类似的观点,那么多数就可以奏效。但是,如果您像字符串一样同意,那么即使是诚实的团体也可能不同意。因此,针对使用PBFT协议的解决方案之一是选择一个领导者。
PBFT(拜占庭式容错)协议
PBFT是什么意思?这就像拜占庭式容错(BFT),他们称其为“坏方”或“拜占庭方”,而PBFT中的P来自实用。
在该协议中,副本服务器选择一位领导者,因此,就像在现实世界中一样,如果您想达成协议,最好的方法是选择一位领导者,然后领导者说下一步该做什么,每个人都做同样的事情,他们就达成协议。
因此,与PBFT协议类似,他们选择了一个领导者,如果领导者是诚实的,他会向网络中的每个人提出相同的价值,然后他们才能达成协议。
但是问题是,如果领导者不诚实,那么他们就无法达成共识,因此必须更换领导者。检查领导者是否诚实并向每个人提出相同的价值,并且如果不改变领导者(他们称之为改变观点),这是一项非常昂贵的协议,因此它需要进行全方位的沟通,这是非常昂贵的。
区块链协议
然后,区块链协议像比特币一样出现,他们决定不改变领导者,只要他不诚实,他们就决定,好吧,不,仅在领导者不诚实的情况下我们才需要真正改变领导者,我们假设协议是同步的,因此我们在每个新纪元、每个新回合中都更换领导者。
然后,他们需要一种选择领导者的方法,因为您必须选择领导者,然后选择下一个领导者,再选择下一个领导者。
您无需继续检查领导者是否诚实,而只是继续在协议之上,日志之上进行构建。这些领导人中的一位很有可能诚实而健康地达成协议。现在的问题减少到选择领导者来选择需要随机数的领导者。
因为如果您有一个随机数,例如骰子,那么您可以使用该随机数选择一个领导者,这就是工作量证明(POW)的帮助。
工作量证明
从本质上讲,区块链协议是拜占庭协议,因为他们本质上是使用工作量证明来选择领导者。仅通过运行工作量证明,第一个提出工作量证明解决方案的人就是领导者,这是一个随机过程。
因此,当我与父母或对区块链感兴趣的其他人交谈时,我经常这样做,我问他们:您如何在这个房间的人们中随机选择一个,假设房间里有10个人?
首先,每个人都认为这很容易,就像我们只是掷骰子一样。我想。那么,谁掷骰子?他们说,我们只添加所有的出生日期,从您开始,然后我们盘旋直到达到该数字。但是,然后,您如何选择从谁开始呢?
因此,这听起来像是一个非常简单的问题。但是,如果您真的想使其随机,则很难。那是比特币的巨大创新,在同行之间找到一种基本同意随机选择的方式。
从本质上讲,使用工作量证明来创建随机性是创建随机性的一种非常昂贵的方法,因为您必须消耗大量电能。
因此,对于像比特币这样的当前工作而言,它就像一个电力国家一样在燃烧,以解决工作量证明,这就是为什么它本来就非常昂贵的原因。
我们实际上并没有过多地使用比特币,如果您想扩展使用比特币进行大量计算,那么您就必须烧掉它的整个世界。如果我们比较比特币现在的位置以及实现愿景所必须去的位置,您仍将不得不使用比特币的十倍或一百倍。
您已经提到过,它基本上已经消耗了很多电能。因此,我们正在寻找一种更有效的方法来进行领导者选择,以便在同行中选择随机的人。
工作量证明作为同步协议
我们尝试更改比特币创建随机性的方式的另一个原因是,由于工作量证明固有的是同步协议,因此从本质上讲,您必须花费的时间来进行工作量证明是比网络延迟大一个数量级。
否则,您不知道人们是喜欢燃烧电力来解决工作量证明,还是要花费时间来解决工作量证明,或者他们的信息在网络中丢失了。
从本质上讲,工作量证明链或工作量证明共识是低吞吐量的,您不能快速进行打勾,因为从本质上讲,您必须等待比网络延迟更长的时间才能创建下一个随机性。
这就是为什么您不能在此之上具有高吞吐量协议的原因,这也是为什么交易也变得非常昂贵的原因,因为每个块中只能容纳有限数量的交易。我们不能在不弄乱该协议的情况下增加每个时间单位的块数。
DFINITY创建随机数的方式
DFINITY正在尝试解决这个问题,所以第一个想法是,现在我们需要一种创建随机性的新方法,但是现在我们如何创建随机性呢?
正如我所说,这是一个非常困难的问题。因此,一种方法是让一个人创建随机性,但是如果那个人不诚实,他就不能偏向随机性。
现在我们需要一个组来创建随机性,但是如果我们选择一个组,那么如果我是创建随机性的第一个人,而您是第二个人,那么最后一个人可以查看我们的随机数并选择他自己的随机性,其结果就是他想要的,我们称之为最后人偏见。
我们不能有一个由最后一个人选择随机性的组,这就是为什么我们使用阈值密码学。
阈值密码学
阈值密码学的意思是,不是有一组n个人,而是所有n个人都需要创建随机性,而是有一组n个人,但是只需要其中K个人就可以参加。
如果您正在等待K个人,则如果您收到K减去1个参与者的输入,则表示您正在等待一个输入。但任何n减去K的其他方都可以成为最后一个人。因此,没有最后一个人的偏见。
如果最后一个人决定“我不想参加”,那么就有另一方参加,但这还不够。因为现在如果这组K人的成员产生随机性,而另一组K人的行为产生随机性,如果这两个随机性不同,则对手(通过确定我是否要参加该小组)可以使协议产生偏差。这就是为什么我们需要独特性。
唯一性
随机性的唯一性意味着哪个K方参与创建随机性都没有关系,结果始终是唯一的,结果始终相同。首先,这是一种令人难以置信的特性。听起来很不直观,“我们如何到达那里?”
如果您有一条消息,并且如果您使用BLS签名进行阈值签名,那么您需要K个参与者。如果阈值是K,则需要K个参与者对其进行签名,无论k个参与者是谁签名,那么您都会获得唯一身份结果。这是BLS签名的关键属性。
这是基于配对的加密技术。因此,它是新的,但不是太新,因为如果该方案太新,则您会担心安全性,并且会担心它是否被正确证明。如果有足够的人对其进行审查,提出评论并进行测试。
在斯坦福,有足够多的人查看它,该小组做了很长时间才能确保它是安全的,并且就像一个非常安全的协议,周围有很好的实现。因此,我们有一个非常快速的BLS实现,它是开源的,每个人都可以使用它。
也许,只提供一些概述,然后我们还可以讨论随机信标以及其确切含义。但是您已经提到,我认为这很好地解释了从何处开始以及工作量证明在吞吐量和能源使用方面没有超出特定点。
然后用最后一个人的偏见来创建这个随机数的问题,我们通过n个人阈值签名中的k来解决。而且我们使用的BLS签名对于n人中的k个人都是唯一的,并且仍然是随机的。这是两个属性,我仍然很难始终看到它们如何结合在一起。
那么我们该怎么办呢?让我们回到中本聪的区块链,看看它们是如何工作的。因此,Nakamoto的区块链就像完全为每个区块创建随机性一样,意味着对于每个区块,您从一开始就解决了工作量证明,而且您不会在那里重复使用任何随机性。
这就是它非常昂贵的原因之一。因此,在这里我们不想这样做,因为我们知道阈值加密非常昂贵,就像工作量证明世界一样。它不是那么昂贵,但是它仍然是非常昂贵的操作。
我们希望确保大部分昂贵的操作都可以离线进行,然后当我们在线时,我们进行的操作非常少。如果您查看签名方案,则需要处理不同的方法,它们需要起作用。因此,其中之一就是创建密钥,我们称其为分布式密钥生成(DKG)。
DKG(分布式密钥生成)
DKG(分布式密钥生成)是一项非常昂贵的操作,因为您必须每个人都要就他们要签名的公钥达成一致,并且每个人都应为自己输出一个密钥,该密钥是该小组的一个大密钥的一部分,因此他们可以使用它来签名输入。
所有流程都是一个昂贵的过程,您需要使用密钥进行验证,因此这是一个昂贵的过程。只是为了快速讨论一下,我认为这也是一个有趣的话题,它基本上意味着我们都在户外,我们都在互相交谈,但是我们都同意了一个非公开密钥。
令人惊讶的是,我们可以谈论这件事……但这也意味着我们都正确地创建了与该公钥一起使用的私钥,并且即使我们没有向其他任何人提及我们的私钥,我们所有的私钥也可以以某种方式协同工作。
好的方面是,您可以运行一次DKG流程,然后可以使用同一密钥多次签名,这意味着您需要分多次摊销DKG昂贵成本的成本。您可以进行一个回合,然后在一个组中运行DKG,然后,在他们拥有自己的密钥之后,他们可以使用它来签名不同的输入。
他们每次再次签名时,都会得到一个新的随机数,它是一个新的伪随机数,实际上它不再是随机数了,因为第一个是随机的,但在那之后是伪随机函数。它为您充当伪随机数。
然后,通过这种方式,我们可以使签名方案不交互式,这意味着“我不需要与您交谈就可以签名。”
我尽我所能,我签名,您尽自己的本分,您签名,但是我们可以将这些签名放在一起并合并在一起,并获得合并的签名,而无需彼此交谈。
这就是他们所说的非交互式。这是一个很好的属性,因为它使签名方案比非交互式版本快得多。
DFINITY的工作方式是我们创建该组,然后进行DKG,现在我们签署第一个随机性,然后在这一轮中获得一个随机性,然后在下一轮中,我们签署先前的随机性以为下一轮创建新的随机性回合,然后,我们继续签名。
我们要重用同一种原始随机性多长时间?您可以长时间重复使用,您可以重复使用几个月,也可以大约一个月或两个月。因此,只要有足够多的参与者参加该组,他们仍然活跃且诚实,就可以重用相同的随机性。您还提到了群组。
DFINITY的运作方式是否有不同的群体?我们有这个阈值密码学,我们有DKG流程,但是如果您想在像500万比特币这样的大量参与者之间运行此流程,那是非常昂贵的过程,因为您必须向所有人发送消息,每个人都必须签名。
这仍然是一个非常昂贵的过程。我们看了一下这个系统,发现您不需要所有人的签名,不需要所有人参与随机性。您可以随机选择参与方来参与随机性,就像在国家中举行选举一样。
因此,如果您要决定某件事,不需要大家提出法律或做出决定,就可以拥有一个委员会,可以拥有代表而不是由所有人组成,我们应该选择一个小组,但是我们如何选择一个小组呢?
仍然我们可以重用我们自己的随机性,因此,因为随机选择一个组,然后该组具有与实际总方数相似的属性。与其在500万人中运行整个协议,不如在500人中运行该协议,而且速度快了十倍。
不管整个网络中有10万人参与,还是有1亿人参与,该组所经历的过程始终是相似的,因为组的规模是恒定的。选择组的另一个好处是,您不仅可以获得可伸缩性,而且还获得并行性,因为现在我们可以有多个链,而不仅仅是一个链。
分片
每个组负责一个链,那么您可以并行创建多个链,我们称其通常为区块链中的分片。这是很自然的分片方式。
因此,这就是为什么我认为DFINITY具有很好的分片方式,是DFINITY中固有的,因为我们有组,然后每个组都可以有自己的分片。那么,我们现在正在处理哪些更大的问题?
目前,我们在同步设置中有完整的证明。在同步计算或同步通信模型中,当一个诚实方发送消息时,它将由Delta范围内的所有诚实方接收。
例如,在比特币中,当诚实方发送消息时,它将在大约一分钟之内被接收,对于世界上每个人来说,不到一分钟。该协议知道它并使用它。
因此,在比特币中,工作量证明的长度取决于网络的延迟,并且它的长度应该长很多,因此大约是10分钟对于比特币,因为他们认为比特币的长度要长10倍。
同步假设有效,但问题是,如果在实际网络中同步假设不正确,则该协议现在不再安全。
异步网络中的完整证明
我们在DFINITY中所做的是,我们拥有完整同步模型中的安全性证明,并且我们正在更新我们的证明以使其也可用于异步网络。
这是我现在正在研究的领域之一,而我正在研究的另一个领域是我们目前在DKG流程中正在进行的交互式DKG流程,这意味着每个想要参与该活动的参与者在运行DKG协议时,应该可以使用DKG。
非交互式DKG(分布式密钥生成)
我们希望使它成为非交互性的,这意味着各方可以参与并返回,并在协议完成后返回。因此,这就像一种更自然的运行方式,DKG是非交互式版本,而不是交互式版本。
我正在研究的第三件事是分片部分,我刚才谈到了。我们正在为DFINITY设计分片系统。我们已经为类似比特币的网络设计了分片系统,并且我们使用相同的概念,我们的论文将在CCS上发表。这是一篇不错的论文,因此您应该阅读它。
也许只是为了解决这个问题,“DFINITY的要求是什么?有多少人不诚实,网络仍然可以生存?”这是一个很好的问题。
通常,如果您在异步环境或半同步环境中工作,则协议可容忍的参与方数量是三分之一。因此,不诚实参与方的一小部分在异步模型中始终为三分之一,这是下限,所以它不能容忍比这更高的。
DFINTY的分片系统
DFINITY正在该模型中工作,这意味着整个网络中不诚实方的比例应为三分之一,但在每个组中,我们只能容忍一半的比例,因此我们从三分之一变为一半。“我们已经知道这些团体将有多大吗?”
组的大小取决于您想要获得的安全级别的大小,组越大,您获得的安全性越好。目前,对于安全级别大约为86-90的安全级别,从400到800的一组大小似乎是合乎逻辑的,这意味着错误概率将是86左右。您永远不会丢失令牌。
区块时间和最终性
我总结之前的另一个问题是,我们谈论了能源效率,提到了比特币区块链的一些区块时间,您提到这大约是十分钟。那么我们在DFINITY中实现的区块时间是多少?
当前,在我们的测试网络中,区块时间大约是一秒,少于一秒。
DFINITY与比特币之间的另一个区别是,要达到比特币的最终性,因为它们没有实际的共识协议,您需要等待六个区块。对于DFINITY,我们需要两个区块。
因此,这意味着2秒钟,每个块1秒钟,2秒钟确定性,这意味着我们有2秒钟的确定性,而比特币的确定性约为1个小时。
基本上,这就是在DFINITY与比特币上实现类似于信用卡的交易和完成交易的情况,如果我去咖啡店买咖啡,在最坏的情况下,我不得不等一小时才可以使用比特币。确保交易确实进行了,而在DFINITY上可能需要两秒钟。
在最好情况下,如果区块制造商以乐观的态度并且是诚实的,那么您只需要等待两秒钟即可在DFINITY中达到最终状态,那么这就像一个高吞吐量系统。
感谢Mahnush抽出宝贵的时间,引导我们了解DFINITY的一些挑战和创新。

你关心的 IC 内容
技术进展 | 项目信息 | 全球活动

收藏关注 IC 币安频道
掌握最新资讯