查看原文
其他

证明技术简介:区块链属性

Dfifans DFINITY 2022-07-07




这是我与Robert交谈的第一部分,Robert在白板上解释了区块链为提供最终交易全序必须具备的可证明属性。链的三个基本属性称为链增长、链一致性和链质量。

欢迎回到Inside DFINITY的另一集。我回到苏黎世,在Robert飞往帕洛阿尔托聚在一起之前,我用了一段时间。今天,Robert和我将谈论我们白皮书的技术性。

早在2018年年初,DFINITY就发布了描述其共识机制的第一份白皮书。对于那些不习惯于经常阅读白皮书的人来说,这可能有些令人生畏,但其中包含许多非常有趣的信息。

今天,我们想向您提供一些背景信息,这些信息可能使您更容易阅读白皮书,并深入了解该白皮书中涉及的一些证据。

DFINITY白皮书

Cédric:事不宜迟,Robert欢迎来到视频现场,继续跟您交谈。

Robert:谢谢Cédric的介绍。正如您所说,我将尝试为您提供有关白皮书中使用的证明技术的概述,并尝试显示我们如何将所有重要属性分解为更具体的属性,以使我们证明系统提供了应提供的功能。

证明技术

Robert:让我们先看一下白皮书中使用的证明技术。在证明任何性质时我们必须问自己的第一个问题是:“我们首先要证明什么?”正如我已经提到的,我们想证明我们系统的某些特性。我们想证明一些属性成立,我们将从非常笼统的属性开始,然后逐步分解它们。

然后,还有一个重要的问题,“在什么情况下,我们的系统应提供这套属性?”随着我们进入更多细节,我们将看到我们将不得不提出模型,其中的属性应该保留在其中。这些模型一方面可以被认为是我们系统的功能,因此系统可以使用该工具集,另一方面,我们还必须对竞争对手的功能进行建模。

Cédric:一方面是我们的系统,另一方面是对手。在我们深入研究细节之前,也许我可以快速总结一下我刚刚听到的内容。完全有道理,但最好在开始时问自己一个问题:如果我们打算证明某件事,我们实际上想证明什么?有两个维度需要考虑,一个是我们要证明的属性,我想我们将从这些属性的口头描述开始,我们可能希望尽可能地接近数学层或逻辑层。

然后,第二种情况下,我们要在什么情况下证明这些属性,您提到了两个方面,一个是我们的系统与对手系统。

安全

Robert:正如我所说,我们从非常广泛的属性入手,这些属性在某种意义上是通用的,它们不仅适用于任何类型的系统,不仅适用于分布式系统,不仅适用于区块链,还适用于计算机上运行的任何类型的系统。计算机上运行的系统应提供哪些属性?系统应该是安全的,因此财产是安全的。

安全意味着系统产生的结果应该是正确的。另一方面,它可能不那么明显,但我们也希望拥有一个可以运行的系统。所以活性是这里的关键词。

活性

Robert:活性意味着系统实际上会产生一些非常笼统的结果。让我们分解一下,区块链是分类账的特例。您可以想到其它分类帐,可以通过使用某种有向图或其它数据结构来创建分类帐,而区块链只是分类帐的一种类型——更笼统的术语。因此,让我们看看分类帐应提供的属性。

我们可以只将安全属性设置为特定于分类帐。我们说分类帐是记录交易和排序交易的一种手段。因此,从这个意义上讲,安全也意味着持久性。在某个位置记录在分类帐中的交易毕竟不应该更改该位置,因为我们希望记录所有交易的全序。一旦系统或分类帐输出某种排序,该排序对于系统中的所有节点或所有参与者都应相同。因此,所有节点的最终次序相同——这是应用于分类帐的安全属性。

让我们应用活力属性。这里我们想要的是每个用户都应该有可能发送交易并实际获得记录在账本中的交易。如果发送了交易,则该交易应出现在所有节点的账本中,或者至少出现在遵循该协议的诚实节点的账本中。这笔交易将最终确定分类帐。这有点具体,但仍然很笼统。

链特性

Robert:正如您之前提到的,在DFINITY我们正在构建区块链,这是分类账的特例。我们必须进一步分解这些属性。所以这是第三步,我们将其称为链属性,现在我们将拥有三个属性,以便获得更细粒度的属性。

链增长

Robert:区块链应该提供的第一个属性是链增长。链增长意味着我们拥有一个不断增长的链,这意味着区块链被附加到链上,并且链随着时间而增加。所以C表示链,C成长。这是第一个属性。

链一致性

Robert:我们要拥有的第二个属性是链一致性。现在,链一致性是什么意思?正如我已经提到的,我们希望有一个持久的、安全的链或全序,这意味着应该以某种特定的顺序完成事务,该顺序对于遵循该协议的所有节点都是相同的。从这个意义上讲,链一致性意味着,如果两个节点在它们看来像是区块链一样已经完成,那么这两个已完成的区块链就不会相互冲突。

如果C像一个节点的链,而C'是另一些节点的链,则C应该像C'中包含的其它块的子集一样是前缀。或者也可能是因为C'比C短,所以也可能是C'短或只是C的前缀。因此,如果这两个属性中的任何一个成立,那么我们可以说链是一致的。

链质量

Robert:我应该继续讲第三点,即链质量。什么是链质量?

在分布式系统中,有多个参与者,我们希望拥有一个分散的系统,这意味着以矿工身份参与的每个人都应有很大的机会创建区块并真正成为系统的一部分。

从这个意义上讲,我们可以说“链质量”意味着每个参与者都应该有公平的机会获得C的一部分。因此,这意味着,如果您以矿工的身份创建一个区块,那么您的区块就应该有很大的机会被纳入链中,即网络中的最终链。

Cédric:好的。因此,我们从第二步开始,现在我们讨论了分类帐属性到链属性。在分类帐属性级别上,我们仍在查看两个属性——活性和安全性。现在我们在链层上有三个,我们能否说这是将其中一个属性分解为两个新属性?我们如何从一个步骤转到下一步?

持久性

Robert:我们可以陈述一个关系,因此,如果我们在这里具有链一致性和链增长,那么我们可以说或证明这给了我们持久性。这是为什么?如果您想象一条链在增长,那么您还具有一致性的特性,这意味着诚实的参与者之间不会有冲突的观点。

因此,他们都将拥有自己的链子集,这些子集将始终彼此一致,并且链子集也会增长,这意味着一旦您在分类账的任何位置或任何区块中包含交易,并且该交易只会增长并且所有参与者的成长都将是一致的,那么很明显,持久性的性质就成立了。

Cédric:在这里,我们已经显示了链层上的两个属性(一致性和增长)与我们在分类账层上定义的持久性属性有关。

活性

Robert:是的。让我们看看链增长和链质量如何一起发挥作用。如果您具有链质量和链增长能力,那么这会给我们带来活性。可以将活性视为具有两个不同方面的财产。因此,我们不仅希望拥有一个不断发展的链,而且我们还提供了一种属性或系统,可以将交易实际添加到区块中。

我们知道,诚实的参与者将提取通过网络发送的交易,并将其添加或包含在其区块中。如果我们具有“链质量”的此属性,这意味着诚实的参与者将有很大的机会将自己的区块包括在链中,同时我们知道链会增长,因此我们也知道交易将被追加链,并将成为分类帐的一部分。这就是为什么链质量和链增长为我们提供账本活性的原因。

Cédric:明白了。因此,链层上的“链增长”是我们既需要活性又需要安全的质量。如果回到最初定义的几个属性。

Robert:链增长是一个非常基本的属性,因为没有链增长就没有什么可谈的。

全序与偏序

Robert:现在也许让我们看看我已经提到的另一个重要方面,我们应该有一个分类帐,该分类帐可以创建交易的最终次序。我还提到了全序这个词,让我们看看这意味着什么以及为什么我们需要全序。也许让我们从差异或两个方面入手,即全序与偏序。这是什么意思?

全序

Robert:全序是一个属性,这意味着如果您有一组交易或一组任何种类的工件或只是数据块,那么您就有某种算法可以输出整个集合的次序,这是清晰而明确的。

另一方面,偏序意味着如果您有一组对象,那么偏序会为您提供两个对象中每对对象的某种等价关系。对于集合中的两个对象的每对,您可以说A先于B或A在B之前或在B之后,因此这意味着您具有一些功能,可以输出两个对象之间的关系。

偏序的问题在于它不能自动保证全序。这是为什么?假设我们在一个集合中有三个对象,并且有一个函数输出这些关系,那么可能会发生A先于B和B先于C,而C先于A。所以我们有一个循环。从A高于B且高于C的意义上讲,不可能得出任何种类的全序。这是不可能的。

支付分类帐

有趣的事实是,对于像比特币这样的支付分类帐,或者对于只想提供或启用支付系统的系统而言,事实证明拥有偏序就足够了,因为如果您查看付款,唯一需要保证的就是交易是您不能将资金或代币花费两次。您可以通过一个在冲突或双花交易中创建偏序的系统来实现这种保证。

Cédric:例如,如果我要将交易发送到网络,在这里我花了一个比特币,然后将其发送给您,同时又试图将其发送给其他人,则可能会发生这种情况。需要有一个命令,其中一个事务被取消,并且对所有节点仅执行其中一个。

Robert:您只需要确保两个有冲突的交易或两次消费之间的顺序得以保留。因此您可以取消一个交易,但不需要全序的交易记录。

Cédric:所以对于我目前拥有的那一个比特币,我们并不真正在乎谁在我之前拥有该比特币,重要的是,当我拿到它时,我是从一个人那里得到的,我无法除了将其发送给我以外,以其它任何方式花费。

原始的中本聪共识区块链

Robert:是的。但必须指出的是,比特币的作用远不止于此。比特币——原始的中本聪共识区块链——为您提供了全序。一段时间后,它将为您提供全序,您需要等待一些区块确认。但是一旦有了概率上的确定性,就可以得出交易中完全有序的历史记录。从这个意义上说,比特币有点过了头。

Cédric:因为它提供的功能超出了建立支付网络所必需的功能。

通用的去中心化应用

Robert:另一方面,DFINITY、以太坊和其它网络希望提供通用智能合约甚至通用分散式应用程序。这也意味着多个人应该可以访问某些应用程序,并且您还希望拥有一些复杂的系统。要启用这样的系统,您需要拥有全序,因为您不仅希望防止重复支出,还希望启用更复杂的交易逻辑。对于通用系统,您需要全序。

有一些有趣的项目,那里的研究论文提出了仅提供偏序但比比特币有效得多的系统。这些是有趣的系统,但是不幸的是,我们无法使用它们,因为我们想提供通用的智能合约。


作者:Cédric Waldburger
(Medium, 2018.10.2)
翻译:Catherine


Arthur和Cédric在“Inside DFINITY”沙发上
如今创建完全去中心化的代币交易所的秘诀
简而言之DFINITY:非技术性介绍


进Dfinity官方社群,请添加小助手微信:

comiocn




长按关注

Dfinity官方微信

给你第一手资讯和项目信息

更可随时答疑解惑



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存