DCS三角形

分散,一致,可扩展。挑选任何两个。

介绍

在这篇文章中,我介绍了DCS(Decentralized-Consistent-Scale)三角形作为比较当今一些流行的分散系统(包括比特币,以太坊,IPFS和BigchainDB)之间权衡的方法。每个系统都有自己的互补用途。这是当今技术的工程陈述,而不是CAP定理中的基本边界。随着工程进展,我设想完全是DCS的系统。

十维推理

任何技术都有权衡。借助新技术,权衡往往更加严苛。第一部iPhone几乎不能用作手机。但它走向了蓝海:它在以前甚至没有考虑过的新尺寸上进行了优化。所以人们买了它,并给它成熟的空间。对于第一个VR(虚拟现实)和第一个AR(增强现实)也是如此。

BigchainDB是一项新技术,也有权衡。在内部,我们使用大约十个维度来评估BigchainDB:吞吐量,延迟,容量,可查询性,许可,分散,不变性,资产支持/图灵完整性,隐私和安全/容错(崩溃和拜占庭故障)。

但我们的猿脑并不是很擅长同时考虑十个维度。很难向别人解释。我发现自己正在进行对话,尝试以尽可能客观的方式解释BigchainDB如何与以太坊IPFS互补。帕累托最优战线(权衡)在哪里是以太坊?IPFS?BigchainDB?十个维度也使计划复杂化。

什么可以帮助减少从10到更少的维度,其中维度仍然有足够的意义来推理它们,并且它们可以被可视化。我们可以将一维和二维分别视为线和双轴图。对于三维,我们可以使用三维图,但这很难使用。三角形更好。超越三维,简单的可视化变得更加困难。

用三角形推理

让我们坚持三个维度。三角形很适合推理三维权衡。三角形简单,熟悉,视觉上平坦。

一个着名的例子是Scope Triangle,它说明了管理项目的成本,时间和质量的权衡。

权衡三角形也出现在分布式系统中:

  • Zooko的三角形:在网络中,名称理想地是人类有意义的,安全的和分散的。挑选任何两个。
  • Brewer的CAP定理:一个数据库是非常 Ç onsistent(总是同步的所有节点),完全一个 vailable(它总是向上)和 p artition宽容。挑选任何两个。另一种成帧方式:如果网络分区,您可以保持可用或一致,但不能同时保持两者。

什么是酷的:乍一看这些看起来像你无法理解的理论。但聪明的工程师有时会找到方法。例如,亚伦·斯沃茨平方 Zooko的三角形通过利用一个blockchain。工程师通过随机化,额外的时间假设,“最终”真正快速的时钟(如扳手)和其他技巧,超越了FLP不可能性定理

DCS三角形

回到BigchainDB。事实证明,我们可以选择三个维度来说明BigchainDB与以太坊或IPFS相比的权衡。

这三个维度是:

  1. 分散,没有单个实体控制网络。 大“ D ”表示无服务器(完全)分散; 任何人都可以加入网络作为验证节点。小“ d ”表示基于服务器的分散。如果不是D或d,则系统是集中的。
  2. 一致的,网络旨在保持数据同步。大“ C ”表示所有节点同时看到相同的数据。大C一致是防止双重花费的先决条件,因此存储有价值的代币。有很多一致性模型 ; 我们的意思是“ CAP ”与CAP定理相同的“一致” ,除了稍微宽松一些(实用主义)。小“ c ”意味着强烈的最终一致性,这样当数据合并时没有冲突,但不足以防止双重花费。如果不是C或c,则系统不一致。
  3. 规模。大“ S ”是行星故事。这意味着足以满足行星规模或企业规模需求的足够性能特征,如“大数据”分布式数据库中常见的那样。这包括100,000 tx / s,1M tx / s或更高的吞吐量; 数百TB或PB或更多的容量; 和延迟<1秒(考虑到WAN设置中的光延迟速度)。作为参考,典型的证券交易所和广告网络的运行速度为100,000-500,000 tx / s。如果不是S,则系统不是行星尺度。

我们稍后会详细说明这些方面。

三个维度形成一个三角形:

DCS三角形

与其他三角形一样,这些特征之间存在权衡。这就是我们今天所拥有的。你可以有两个,但不能有三个。这是当今技术的工程陈述,而不是CAP定理中的基本边界。就像聪明的工程师推动其他三角形的界限一样,我们也看到了这一点。

我们无法将所有维度压缩为三维。相反,我们选择了突出权衡的维度,以促进沟通。例如,维度不会捕获隐私或安全性。

“所有模型都错了,但有些模型很有用”

– GE Box

DCS三角形系统

让我们探索代表性系统,以及如何推动边界。首先,一下子:下面是表明每次权衡的系统。比特币以太坊是DC。IPFS是DcS。BigchainDB是dCS。我会详细说明每一个。

DCS三角形

直流系统

比特币和以太坊体现了DC系统:big-D Decentralized和big-C Consistent,但不是行星规模。

DCS三角形

两者目前都运行基于工作证明(PoW)的一致性算法,其中每个完整节点存储所有数据。没有一个实体控制网络。任何人都可以加入网络并运行完整节点。在运行完整节点时,人们有机会验证与一个运行哈希值的能力成比例的事务块。(这些天实际上没有太多机会实际验证交易,因为ASIC场的哈希率比典型用户高出几个数量级;但它仍然是理论上的差异。)

Both Bitcoin and Ethereum are consistent, in that all nodes see the same data at the same time. This actually isn’t entirely true in a theoretical sense, because they never have a deterministic guarantee of a consistent order; they’re only eventually consistent (in a probabilistic sense) based on longest chain rule as in Bitcoin, or the weighted-tree GHOST protocol as in Ethereum. But let’s be generous and call them consistent, because in practice they are used that way, the workaround being higher latency as one waits for a sufficiently high probability of avoiding inconsistency.

比特币和以太坊都不是行星规模。比特币网络的理论最大值为7 tx / s,实际上甚至更低。Post-Segwit这将高出1.4倍,但远不及100K tx / s。Lightning网络没有完全解决这个问题,因为它放弃了区块链的速度的其他主要优势,即透明度,可审计性,存储和不同的信任模型。(但当然,它对于同一个两个参与者之间的一系列价值转移是有用的。)延迟是60分钟:一个区块确认10分钟; 一个人通常等待3-6个区块,因为该区块保持稳定。容量有限:尽管只持有70GB的数据,但比特币用户担心“膨胀”。以太坊的每个特征大约好10倍,但仍然远远低于行星尺度。

DC路线图

比特币和以太坊在达到全球规模方面的困难部分是因为每个节点必须存储所有数据; 在数据库用语中,这是“ n的复制因子”。如果我们希望网络保持1PB,则每个完整节点需要保持1PB。每个完整节点用户是否都要运行自己的数据中心?

比特币和以太坊如何接近全球规模?一个明显的部分答案是分片,其中每个节点只存储一小部分数据。对于复制因子3(可能更高),也至少会有一些备份。但比特币和以太坊都没有。但它即将到来。例如,以太坊基金会的Casper研究很有前景。另一个明显的答案是擦除编码,就像RAID阵列那样。它比分片需要更少的磁盘空间,以获得相同的冗余保证。以太坊Swarm将使用它。

总而言之,如下所示,以太坊和比特币是DC,但是朝着S(行星尺度)顶点移动。

DCS三角形

DcS系统

IPFS(行星际文件系统)是分散式系统的一个例子,它是DcS:Big-D Decentralized和big-S Scale。对于那些,他们妥协Big-C一致性。但是,它们确实具有很小的一致性。

DCS三角形

IPFS是大D分散的,因为没有人控制网络,任何人都可以加入并成为一个节点。验证更简单,因为它只是检查哈希值; 没有严格的交易顺序来维护。当然,通过对先前散列的对象进行散列会产生隐式排序。

IPFS是行星规模。节点上的吞吐量和延迟仅受节点带宽和摄取数据的能力的限制。节点上的容量仅受节点容量的限制; 给定节点不会尝试存储整个网络。它就像是BitTorrent和Git的混搭; 两者都未显示出重大的规模问题 使行星规模成为可能的部分原因在于它在一致性方面的妥协。

CAP意义上的IPFS不一致,因为所有节点不会同时看到相同的数据。并且,它不会尝试这样做。如果要防止双重花费,则需要一致性,如果要存储有价值的标记,这是先决条件。但是有很多应用程序不需要令牌,例如媒体资产,文档和数据。这些是IPFS的重要用例,以及为什么它与其他系统如此完美地互补。

一致性程度

但是,IPFS确实具有一定程度的一致性。对于我们的FCS三角形,三个级别很有用:

  1. 没有一致性
  2. 强烈的最终一致性,又名little-c
  3. CAP一致性,又名big-C

下图说明了这一点。

DCS三角形

IPFS可以保持简单并且没有一致性,这仍然非常有用。但它走得更远:它通过CRDT(无冲突复制数据类型)实现了强大的最终一致性。CRDT是最近和超酷的计算机科学创新。

想象一下,网络分成两部分,双方各方都在不断添加数据。现在想象一下尝试合并这些变化。使用代码版本控制系统,您可能会遇到合并冲突。但是对于CRDT,数据结构保证不存在合并冲突。令人惊讶的是,可能的数据结构空间仍然相当广泛。例如,在消息传递系统中,它基本上交织消息。类似于共享的Google文档,这就是您从未在Google文档中进行版本控制样式合并的原因。

DcS路线图

但CRDT并不能做到一切。所有IPFS节点都不会同时看到相同的数据。因此,在IPFS中,人们不能防止双倍花费,因此人们不能拥有有价值的代币。如前所述,这很好,因为IPFS有许多其他用途。

但是,IPFS正朝着更高的一致性迈进。它的协议栈有一个共识算法的地方,以实现CAP风格的强一致性; IPFS团队正致力于一致性算法。虽然,这可能不是真正的“CRDT”风格完成后。

相关的,Victor Grishchenko提出了一种建立在CRDT之上的“ Swarm Coin ”。我们的想法不是在理论上使双重花费不可能,而是
让它们变得昂贵,便宜且快速检测。如果确实发生双重花费,则“纠缠矩阵”管理分割。

下图说明了这一趋势。

DCS三角形

dCS系统

BigchainDB是一个分散的系统,它是dCS:big-S Scale和big-C Consistent。对于这些特征,它会折衷大D分散; 虽然它是小D分散的。

DCS三角形

BigchainDB建立在传统的“大数据”分布式数据库之上,增加了三个特征:分散化,不变性和资产。它通过服务器节点联合实现分散。客户端节点可以与服务器节点通信,读取事务,注册资产,传输资产以及创建更复杂的事务,如multisig和escrow。不可变性(更强的防篡改性)是通过散列,备份等。

BigchainDB在CAP意义上是一致的:所有节点都看到相同的数据。BigchainDB利用其较低级别的分布式数据库(RethinkDB),使用其一致性算法确定性地对事务进行排序。BigchainDB的高级联合为每个服务器节点提供一次投票,无论每个事务是否有效。

BigchainDB继承了其低级分布式DB的行星规模特征。它旨在“摆脱RethinkDB的原始性能”。该设计假定带宽和写入是主要约束,并且只要存在处理瓶颈,就要将其并行化。RethinkDB的原始性能是1M写入/秒和具有完整端到端事务的BigchainDB大于100K tx / s(仅在python上运行!)并且很快就会更高。WAN延迟小于1秒; 当消息穿越地球时,主要的瓶颈是光速。容量是分片数量的线性函数; 例如,如果一个人使用具有48TB分片的Amazon XL实例,则可以获得具有64个分片和复制因子3的1 PB容量。(但是这样的大分片会增加数据库时间点恢复。)

BigchainDB是分散的:没有一个实体拥有或控制给定的网络部署。但它并没有完全分散,任何人都可以成为验证者。这种妥协是实现全球规模所必需的。我们来详细说明。

权力下放的程度

有三种程度的权力下放:

DCS三角形
  1. 集中。单个实体控制网络。人们可以拥有一个集中的分布式系统:分布式,因为资源分布在多个物理机器上,但是集中在一起,因为控制仍然掌握在一个实体手中。一致性算法只需要处理崩溃故障,因为所有节点都是无私的。这是Google,Facebook等如何部署其网络的模型。
  2. 基于服务器的分散式,又名“小d”。计算资源是分布式的,但没有一个实体控制网络; 要成为验证者,必须由现有联邦投票。共识算法需要处理崩溃和拜占庭故障。客户端可以是匿名的,但不是必须具有已知身份的验证器。可以部署公共网络,任何人都可以在其中写入或读取网络。这也称为联盟或超级P2P网络。
  3. 无服务器(完全)分散,又名“大D”。计算资源是分布式的,但没有一个实体控制网络; 任何人都可以成为验证者。任何人都可以写入或读取网络。客户端和验证器可能是匿名的。它必须处理崩溃和拜占庭式故障。而且因为任何人都可以成为验证者,它必须处理“克隆人的攻击”Sybil的错误。这也称为(纯)对等网络。

权力下放频谱上的每个点都有其用途。第一个集中化是大多数系统直到最近才建立起来的。对性能进行优化通常更容易,特别是在事物最小化的情况下效果最佳的延迟。许多分布式集中式系统都是行星规模。控制网络更容易,因为它的构建者可以发展技术。对于公司来说,收获网络效应的回报也更容易,正如我们在Facebook等公司看到的那样,我们可以获得丰厚的财富。但是有一个明显的负面影响:它是单一实体手中的权力,导致各种各样的问题。权力下放是减少这些负面影响的途径。

无频谱服务器分散的最后一点是理想的,因为它可以在希望参与的客户之间传播验证功能。而且,验证角色仍然是匿名的。为了允许任何人验证它们是匿名的,这些系统必须是Sybil容忍的,即防止“克隆攻击”,其中一些实体自己制作数千份副本并接管投票控制。比特币(以及目前的以太坊)通过实体投票来解决这个问题。其他人根据系统的股权数量(股权证明)进行实体投票。另一种方式是Stellar Consensus Protocol,每个节点选择其验证器的人,尽管它也没有分片。这意味着,到目前为止,我们还没有看到解决Sybil攻击的方法,同时仍然实现了全球规模。这是一个真正的问题:在构建分散式应用程序方面有无数的努力,其中玩具概念验证正常,但没有办法在行星或企业规模上使用生产系统。我们自己遇到过:我们在比特币上建立了ascribe.io,但是我们无法为每天100,000 吨的客户提供服务。如果我们继续使用比特币网络,我们会淹没它,并产生数千美元的日常交易费用。

权力下放频谱的中间点 – 基于服务器的分散 – 平衡了完全分散的需求与行星和企业规模的需求。投票权在验证节点之间传播,无论是15还是50或更多。每个节点获得一票。可以滚动这个的公共版本,其中客户端节点能够读取任何事务,并写下他们喜欢的内容。这给了权力下放的大部分好处 – 控制权扩散; 并具有透明度,可审计性等等 – 同时获得行星规模的关键特征。中间范式对于部署为生态系统和企业的“联盟数据库”也很有用,他们可能不希望也无法向更广泛的公众披露所有信息,例如财务法规。

总结一下:如果你想要匿名参与和Sybil容忍,那么无服务器分散是有道理的。否则,使用现有的公共网络或滚动自己的网络,基于服务器的分散是有意义的。

dCS路线图

正是这种中间范式 – 基于服务器的分散 – 我们以BigchainDB为目标,知道我们必须在无服务器(完全)分散的情况下妥协。我们还认识到,对于公共部署,无服务器是一个理想的值得努力。在我们的路线图中,我们的目标是构建一个大D服务器免费版本。(对于企业,将始终使用基于服务器的版本。)下图说明了。

DCS三角形

结论

这篇文章介绍了DCS三角形,以显示分散(D)一致(C)和行星尺度(S)的特征。它们在比特币,以太坊,IPFS和BigchainDB等现代分散系统中进行交易。比特币和以太坊是DC,IPFS是DcS,BigchainDB是dCS。每个系统都有自己的互补用途。

这是当今技术的工程陈述,而不是基本边界。(相反,例如CAP,这是一个基本边界)。随着工程进展,我设想完全是DCS的系统。

更新

2017年2月。我在2016年7月写了这篇文章。几个月后,Greg Slepak和Vitalik Buterin各自发现了同样的事情,这里草案)和这里。凉!到2017年2月,我们三个人都知道其他人的工作。

2017年2月,然后在2017年10月,Eleftherios Kokoris-Kogias等人。发表了提出DCS三角形的OmniLedger论文草稿(图1),然后旨在改进与工程的权衡。

如前所述,我认为DCS三角形更像是一项工程挑战而非基本约束,并且希望在保持足够的一致性(防止双重支出)和分散化(Sybil容忍度)的同时改进扩展的努力。扩展工作包括以下内容。有时他们会在D,C或S之外的其他轴上进行权衡。

原创文章,作者:mestery,如若转载,请注明出处:https://ipfsdrop.com/tech/dcs-triangle/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

(+86)18301922335

在线咨询:点击这里给我发消息

邮件:haskell@freechains.cn

工作时间:7×24小时

QR code