从区块链到DAG:摆脱中介

在本文中,我将向您介绍DAG(有向无环图)及其在分布式注册表中的使用,并将其与区块链进行比较。



DAG在加密货币领域并不是新事物。 您可能听说过他是解决区块链可扩展性问题的解决方案。 但是今天,我们不再谈论可扩展性,而是谈论使加密货币与其他事物不同的原因:去中心化,缺乏中介机构以及对审查制度的抵制。



我还将向您展示,DAG实际上对审查制度更具抵抗力,并且没有中介机构可以访问注册表。



在我们常用的区块链中,用户无法直接访问注册表本身。 当您要将事务添加到注册表时,必须“询问”区块生产者(区块生产者,又名“矿工”)来执行此操作。 由矿工决定将哪个交易添加到下一个区块,而不是哪个。 矿工拥有对区块的独占访问权,并有权决定接受谁的交易以添加到注册表中。

矿工是您与分布式注册表之间的中介。



实际上,通常,少量的矿工池共同控制着网络一半以上的计算能力。 对于比特币,这是四个池,以太坊是两个。 如果发生合谋,他们可以阻止他们想要的任何交易。



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



对于区块链来说,这是一个不可避免的问题。 而且,如果我们想解决它,我们必须从根本上改变设计并完全摆脱积木和积木制造商的困扰。 并且,我们无需构建区块链,而是将交易本身加入其中,包括在每个交易中包含多个先前交易的哈希。 结果,我们得到了数学上称为有向无环图的结构-DAG。

现在,每个人都可以直接访问注册表,而无需中介。 要将事务添加到注册表中,只需添加它。 选择几个父事务,添加数据,签名并将事务发送给网络上的对等方。 做完了 没有人可以阻止您执行此操作,因此您的事务已在注册表中。

这是在没有中介的情况下向注册表添加事务的最分散,最无审查的方法。 因为每个人都想简单地将其事务添加到注册表中,而无需征求任何人的许可。



DAG可被视为注册表演变的第三阶段。 最初有集中的注册表,由一侧控制对它们的访问。 然后是区块链,其中已经有几个控制器在注册表中记录交易。 最后,在DAG中根本没有控制器,用户可以直接添加其事务。



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

  1. 发生什么事了
  2. 这是以什么顺序发生的?

我们可以轻松地回答第一个问题:将正确创建的事务添加到注册表后,它就发生了。 和重点。 有关此信息的信息可以在不同时间到达所有参与者,但最终所有节点都将接收到该交易并发现它已经发生。

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

在区块链上,矿工还解决了第二个共识问题:秩序。 他们被允许在自己喜欢的地方安排交易。

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



仅仅因为我们的图是有向的,我们已经有了一些顺序。 每笔交易均指一个或多个先前的父代。 父母反过来指的是父母,依此类推。 父母显然先于子女交易。 如果通过单击父子链接可以进行任何交易,那么我们肯定知道该交易链中交易之间的顺序。



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



为了解决这种情况下的歧义,我们依靠所谓的订单提供者。 我们也称他们为“证人”。 这些是普通用户,其任务是不断有序地将交易发送到网络,即 因此,通过单击“父母-孩子”链接可以实现他们之前的每笔交易。 订单提供者是受信任的用户,并且整个网络都依赖它们来违反此规则。 为了合理地信任他们,我们要求每个订单提供者都是知名的(非匿名)人员或组织,并且如果违反规则可能会丢失某些东西,例如声誉或基于信任的业务。



订单提供者由用户选择,每个用户在他发送到网络的每个交易中都包括一个他信任的提供者列表。 此列表包含12个提供程序。 这是一个相当小的数字,因此一个人可以验证他们每个人的身份和声誉,并且足以确保在少数订单提供商遇到不可避免的问题时,网络可以继续工作。

提供商的此列表因用户而异,但是相邻事务的列表可能最多相差一个提供商。



现在有了订单提供者,我们可以在DAG中突出显示他们的交易,并围绕他们创建的订单安排所有其他交易。 有可能创建这样的算法(有关技术细节,请参见Obyte白皮书 )。

但是不能立即确定整个网络中的订单,我们需要时间让订单提供者发送足够数量的交易,以确保过去交易的最终订单。

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



因此,我们对发生的事情达成了共识:任何进入DAG的交易都发生了。 我们还同意事件的顺序:这既可以在相关交易的基础上看到,也可以从订单提供者发送的交易顺序中得出。 所以我们有一个共识。



我们在Obyte拥有这个共识选项。 尽管事实上对Obyte注册表的访问权是完全分散的,但是关于事务顺序的共识仍然是集中的,因为 12个提供者中有10个由创建者(Anton Churyumov)控制,其中只有两个是独立的。 我们正在寻找想要成为订单的独立提供者之一的候选人,以帮助我们分散注册表中订单的建立。

最近,出现了第三位独立候选人,他希望建立和维护订单提供者的节点-尼科西亚大学。



现在,我们如何控制双重支出?

根据规则,当检测到两个花费相同硬币的交易时,以所有交易的最终顺序中较早出现的交易为准。 第二个被共识算法禁用。


如果可以在花费一枚硬币的两个交易之间建立订单(基于父子关系),那么所有节点都会立即拒绝这种双重消费的尝试。



如果在两个此类交易之间的亲子关系中看不到订单,则它们都会被注册系统接受,我们将需要等待共识并使用订单提供者在它们之间建立订单。 然后,较早的交易获胜,而第二个交易无效。



尽管第二笔交易变为无效,但它仍保留在注册表中,因为它已经具有引用它的后续交易,该交易没有违反任何内容,并且不知道将来该交易将变为无效。 否则,我们将不得不从良好的后续交易中删除父交易,这将违反网络的主要原理-注册表中接受任何正确的交易。



这是一个非常重要的规则,它允许整个系统抵抗审查尝试。

假设所有订单提供者合谋企图“审查”一项特定交易。 他们可以忽略它,从不为交易选择“父”,但这还不够,该交易仍可以作为任何不涉及阴谋的网络用户发布的其他交易的父项而间接包含在内。 随着时间的流逝,这样的交易将从普通用户那里接收越来越多的孩子,孙子和曾孙子,并且像滚雪球一样膨胀,所有商定的订单提供者也将不得不忽略这些交易。 最后,他们将不得不审查整个网络,这无异于破坏活动。



因此,即使有订单提供者的勾结,DAG仍然具有抗审查性,从而超过了抗审查性的区块链,如果矿工决定不包括任何交易,我们将无能为力。 这是从DAG的主要属性得出的:参与注册管理机构是绝对独立且没有中介的,交易是不可逆的。

Source: https://habr.com/ru/post/zh-CN477032/


All Articles