从区块链到DAG:摆脱中介

在这篇文章中,我将向您介绍DAG(有向无环图)及其在分布式账本中的应用,并将其与区块链进行比较。

从区块链到DAG:摆脱中介

DAG 在加密货币领域并不是什么新鲜事。 您可能听说过它是区块链可扩展性问题的解决方案。 但今天我们不会谈论可扩展性,而是谈论加密货币与其他事物的不同之处:去中心化、缺乏中介机构和审查制度阻力。

从区块链到DAG:摆脱中介

我还将向您展示 DAG 实际上更具抗审查性,并且没有中间人可以访问账本。

从区块链到DAG:摆脱中介

在我们熟悉的区块链中,用户无法直接访问账本本身。 当你想将交易添加到分类账时,你必须“要求”区块生产者(也称为“矿工”)来执行此操作。 矿工决定将哪些交易添加到下一个区块中,哪些不添加。 矿工拥有对区块的独占访问权,并有权决定谁的交易将被接受并包含在分类账中。

矿工是你和分布式账本之间的中间人。

从区块链到DAG:摆脱中介

在实践中,通常少数矿池集体控制着网络一半以上的算力。 对于比特币来说,有四个矿池,对于以太坊来说,有两个矿池。 如果他们串通,他们可以阻止任何他们想要的交易。

从区块链到DAG:摆脱中介

在过去的几年里,已经提出了许多区块链的变体,其不同之处在于选择区块生产者的原则。 但区块生产者本身并没有去任何地方,他们仍然“站在栅栏上”:每笔交易都必须经过区块生产者,如果他不接受,那么该交易实际上就不存在。

从区块链到DAG:摆脱中介

这是区块链不可避免的问题。 如果我们想解决这个问题,我们必须从根本上改变设计并完全摆脱区块和区块生产者。 我们将连接交易本身,包括每个交易中先前几个交易的哈希值,而不是构建区块链。 结果,我们得到了一种数学上称为有向无环图的结构——DAG。

现在每个人都可以直接访问注册表,无需中介。 当您想将交易添加到分类账时,只需添加即可。 您选择多个父交易,添加数据,签署交易并将其发送给网络上的对等点。 准备好。 没有人阻止你这样做,所以你的交易已经在分类账上了。

这是在没有中介的情况下将交易添加到分类账的最去中心化、最不受审查的方式。 因为每个人都只是将自己的交易添加到注册表中,而无需征求任何人的许可。

从区块链到DAG:摆脱中介

DAG 可以被视为注册管理机构演变的第三阶段。 首先是集中式注册中心,其中一方控制对它们的访问。 然后是区块链,它已经有几个控制器在分类账中记录交易。 最后,DAG 中根本没有控制器;用户直接添加交易。

从区块链到DAG:摆脱中介

现在我们有了这种自由,它不应该导致混乱。 我们必须就注册表的状态达成一致。 这种协议或共识通常意味着在两件事上达成一致:

  1. 发生什么事了吗?
  2. 这是按照什么顺序发生的?

我们可以轻松回答第一个问题:一旦正确创建的交易被添加到分类账中,它就已经发生了。 和时期。 有关此信息可能会在不同时间到达所有参与者,但最终所有节点都会收到此交易并知道它发生了。

如果是区块链,矿工将决定发生什么。 无论矿工决定将什么内容包含在区块中,都会发生什么。 他没有包含在块中的所有事情都不会发生。

在区块链中,矿工还解决了第二个共识问题:秩序。 他们可以按照自己的意愿对区块内的交易进行排序。

如何确定 DAG 中交易的顺序?

从区块链到DAG:摆脱中介

正因为我们的图是有向的,所以我们已经有了一些顺序。 每笔交易都引用一个或多个先前的父交易。 父母又指他们的父母,依此类推。 父母显然出现在孩子交易之前。 如果任何事务可以通过父子链接转换到达,我们就可以准确地知道该事务链中事务之间的顺序。

从区块链到DAG:摆脱中介

但交易之间的顺序并不总是仅根据图表的形状来确定。 例如,当两个事务位于图的并行分支上时。

从区块链到DAG:摆脱中介

为了解决这种情况下的歧义,我们依靠所谓的订单提供商。 我们也称他们为“证人”。 这些是普通用户,其任务是不断有序地向网络发送交易,即以便可以通过沿着父子链接的转换来到达它们之前的每个事务。 订单提供者是值得信赖的用户,整个网络依赖他们不违反这条规则。 为了 合理 为了信任他们,我们要求每个订单提供者都是已知的(非匿名)个人或组织,如果违反规则,就会失去一些东西,例如基于信任的声誉或业务。

从区块链到DAG:摆脱中介

订单提供商由用户选择,每个用户在发送到网络的每笔交易中都包含其可信提供商的列表。 该列表由 12 家提供商组成。 这个数字足够小,足以让一个人验证每个人的身份和声誉,并且足以确保网络在少数订单提供商出现不可避免的问题时继续运行。

该提供者列表因用户而异,但相邻事务的列表可能最多有一个提供者不同。

从区块链到DAG:摆脱中介

现在我们有了订单提供者,我们可以将他们的交易隔离到 DAG 中,并围绕他们创建的订单对所有其他交易进行排序。 可以创建这样的算法(参见。 欧字节白皮书 了解技术细节)。

但整个网络的订单无法立即确定;我们需要时间让订单提供者发送足够数量的交易来验证过去交易的最终订单。

而且,由于顺序仅由提供者的交易在 DAG 中的位置决定,因此网络上的所有节点迟早都会收到所有交易,并就交易的顺序得出相同的结论。

从区块链到DAG:摆脱中介

因此,我们对我们认为发生的事情达成了一致:最终进入 DAG 的任何交易都发生了。 我们还对事件的顺序达成了一致:这要么从交易关系中显而易见,要么从订单提供商发送的交易顺序推断出来。 所以我们有共识。

从区块链到DAG:摆脱中介

我们在 Obyte 中有这个版本的共识。 尽管对 Obyte 账本的访问完全是去中心化的,但关于交易顺序的共识仍然是中心化的,因为10 个提供商中有 12 个由创建者(Anton Churyumov)控制,其中只有两个是独立的。 我们正在寻找愿意成为独立订单提供商之一的候选人,以帮助我们分散账本的订单。

最近,出现了第三个愿意安装和维护订单提供商节点的独立候选人——尼科西亚大学。

从区块链到DAG:摆脱中介

现在我们如何控制双花?

根据规则,如果发现两笔交易花费了同一个币,则所有交易最终顺序中最先出现的交易获胜。 第二个被共识算法失效。

从区块链到DAG:摆脱中介
如果可以在花费相同代币的两个交易之间建立顺序(通过父子连接),那么所有节点都会立即拒绝这种双花尝试。

从区块链到DAG:摆脱中介

如果从两个此类交易之间的父关系中看不到订单,则它们都被接受到分类账中,并且我们需要使用订单提供者等待它们之间达成共识并建立订单。 那么较早的一笔交易获胜,第二笔交易无效。

从区块链到DAG:摆脱中介

即使第二笔交易变得无效,它仍然保留在注册表中,因为它已经有后续交易引用它,这没有违反任何规定,并且不知道该交易将来会变得无效。 否则,我们将不得不删除良好后续交易的父交易,这将违反网络的主要原则 - 任何正确的交易都会被接受到分类帐中。

从区块链到DAG:摆脱中介

这是一条非常重要的规则,可以让整个系统抵御审查尝试。 

让我们想象一下,所有订单提供商串通一气,试图“审查”一笔特定交易。 他们可以忽略它,并且永远不会选择它作为其交易的“父项”,但这还不够,该交易仍然可以间接包含为网络上任何未串通的用户发出的其他交易的父项。 随着时间的推移,这样的交易会从普通用户那里得到越来越多的子孙重孙,像滚雪球一样增长,而所有约定的订单提供者也将不得不忽略这些交易。 最终,他们将不得不审查整个网络,这无异于破坏。

从区块链到DAG:摆脱中介

这样,即使订单提供者之间存在勾结,DAG 仍然能够抵抗审查,从而超越了抵抗审查的区块链,在这种区块链中,如果矿工决定不包含任何交易,我们就无能为力。 这源于 DAG 的主要属性:参与注册完全独立且无中介,交易不可逆转。

来源: habr.com

添加评论