本文介绍了Kaspa使用的GHOSTDAG协议,该协议通过使用有向无环图(DAG)结构和贪婪最重观察子树(GHOST)规则,在保留所有有效区块的同时,解决了传统工作量证明(PoW)中浪费算力的问题。GHOSTDAG协议通过选择链来确定交易的执行顺序,并处理非选择区块中的非冲突交易,从而实现了更高的吞吐量。
这是关于区块链的一系列文章的一部分。如果你是第一次看到这篇文章,我强烈建议从本系列文章的开头开始阅读。
上次,我们偏离了主线,讨论了 Hedera,一个用于共识的基础数据结构不是区块链,而是 Hashgraph 的网络。
实际上,Hashgraph 只是一个 有向无环图 (DAG) 的花哨说法,这是一种众所周知且非常有用的图类型。
但 Hedera 的方法也具有颠覆性,因为它抛弃了 区块 的概念,转而支持 事件。所以我想我们可以问自己,是否存在一个中间点:保留区块,但使用 DAG 而不是区块链。
嗯,严格来说,区块链就是一个 DAG,其中每个节点都只有一个祖先。不过,将其与链表进行比较,在语义上可能更准确。也许是哈希链表?
有趣的是,这实际上是我在学习区块链系统时问自己的第一个问题之一。不过,不久之后我意识到,由于一些强大的原因,这在技术上是一项非常艰巨的任务,所以我当时停止了追求这个想法。
几年后,事实证明人们确实在尝试 DAG 的概念——但也许不是我预想的方式。
所以今天,我想向你展示一种使用带有区块作为节点的 DAG(如果你愿意,可以称之为 BlockDAG)的方法,以及他们如何使用它来发展我们的一位老朋友:工作量证明。
系好安全带,让我们直接进入正题!
让我们从与上一篇文章几乎相同的思路开始:回到 最基本的。
在本系列文章中,我们已经广泛讨论了分叉,但现在,我希望我们从稍微不同的角度重新审视它们。
在工作量证明中,当两个矿工在大致相同的时间找到一个有效的区块时,网络会 暂时分裂 成两条竞争链。这两个区块都是完全有效的,因为它们包含合法的交易,并代表诚实的计算工作。但最终,一条链会变得更长,导致另一条(较短的)链被网络放弃。
这是 浪费的。所有投入到被丢弃区块中的计算努力?消失了。
所以你的意思是所有的工作都白费了?
是的。虽然交易最终会进入另一个区块,但我们不禁想到可能有另一种方法——一种避免必须抛弃所有这些宝贵努力的方法。
这是其他共识机制出现的部分原因,它们试图创建更有效的算法,以及其他因素。
这样的替代方案确实存在。面对传统工作量证明的低效率,我们可以采取一种 不同的立场。如果我们不丢弃任何区块呢?如果我们能够 利用 其中包含的所有信息呢?
当然,这不是一项简单的任务。
重要的是要考虑 为什么 传统的工作量证明选择丢弃较短的竞争链。这背后有非常好的理由。
如果我们设计的系统能够保留这些分支分叉,那么我们将面临几个问题,即:
中本聪选择拥有一个单一的获胜链,只是为了避免所有这些复杂情况。这是一个干净且确定性的解决方案——但代价是浪费了大量的计算。
然而,自那以后,技术已经发展了很多。而 Kaspa 的人们着手保留区块,并同时解决所有这些挑战。
Kaspa 是一个相对年轻的区块链,在撰写本文时只有近 4 年的历史。但不要让它的年龄欺骗你——它建立在一些非常复杂的基础之上。
像比特币一样,它使用 UTXO 模型 和工作量证明共识,所以我们在这里处于熟悉的领域。
但是 与 比特币 不同,比特币每 10 分钟产生一个区块,Kaspa 每 秒 产生一个区块。是的,你没看错——每秒一个区块,使用工作量证明。
随着最新的更新,我认为实际上甚至不止每秒一个区块。
是的,我知道你在想什么。感觉很奇怪。工作量证明的整个要点是找到一个新区块需要 时间和精力。因此,很自然地会问自己,这怎么会最终不会变成彻底的混乱。
为了使事情顺利进行,Kaspa 的人们提出了一种他们称为 GHOSTDAG 协议 的共识算法。
嗯…… 差不多了
GHOST 代表 贪婪最重观察子树(Greedy Heaviest Observed Sub-Tree)。我并不认为仅凭这个缩写就能轻易理解它的含义。所以为了澄清,它本质上是一种为分叉选择提供偏好机制的方法,通过选择“较重的那一个”,通常以计算工作量来衡量。这听起来应该很熟悉!
而 DAG,嗯…… 你已经知道它是什么意思了!
为了在深入细节之前给你一个大致的了解,发生的情况是,每个有效的区块都会被保留,但在交易排序方面,区块并 不 被认为是相等的。这实际上是核心秘诀。
但是这是如何运作的呢?首先,Kaspa 中的区块可以引用 多个父区块。
哦耶
当然,这会导致一个类似网络的结构,最终成为我们的 DAG。你可以想象,这本身并没有真正实现任何目标,除了制造比平时更大的混乱。
免费加入 Medium,以获取这位作家的更新。
然而,一旦我们应用 GHOST 规则,事情就开始变得有意义了。这是问题的核心,所以让我们一步一步地分解它。
我们现在有一个充满区块的 DAG,我们需要的是一种确定 实际执行哪些交易 以及以什么 顺序 执行交易的方法。我们不能只执行所有交易——这会导致冲突、双重支付和各种问题。这并不是我们感兴趣的系统类型。
完全按照我们设计的方式!
GHOST 通过引入 选定链 的概念来解决这个问题,选定链是 DAG 中的一个线性子图(所以是一条 链)。
可以把它想象成在一个高度复杂的道路网络中找到主干道。
假设我们拥有以巨型 DAG 形式存在的网络当前状态。要确定选定链,我们将遵循以下步骤:
好吧,这肯定是一大堆。而且如前所述,几乎是 不可行的。所以让我们稍微分解一下,好吗?
首先,我们应该如何理解 最重子 DAG?我们如何衡量 累积工作?以及在同一条线上,我们如何衡量在 单个区块 中花费的工作?
我们已经知道,挖掘一个区块就是找到一些 nonce,它会产生一个满足一些 特殊条件 的 区块哈希。例如,我们可以要求哈希的二进制表示的前 6 位是 1,就像这样:
1111110000000010011110010000110001101010011000010100101110100011001101001101000110101101010010100001100000110101001101110011011111100100110010100110011010011100100111100101100110100000100000101100001101010011001100010000110110100000101010011100100010010010
有趣的事实:这是字符串“Kaspa GHOSTDAG 共识机制”的 SHA-256。我必须摆弄一段时间的输入——证明了这是一个不容忽视的问题!
但通常,我们所做的是将哈希解释为一个正整数,并简单地检查其值是否低于某个 阈值。这很容易检查,事实上,这个阈值有一个名称:它被称为区块的 难度目标。
难度目标越低,你就需要投入更多的 工作 才能找到一个有效的区块。也就是说,这些值是 成反比 的。
太棒了——我们现在有了一种衡量 工作 的方法。下一步是什么?
如前所述,下一步涉及计算 DAG 所有尖端的子 DAG 的 累积权重。
我们这样做的原因是,我们仍然需要一个 单一事实来源:我们需要从我们的 DAG 中导出一个有意义的 事件历史,并避免冲突和双重支付。
我们通过为每个可能的链分配一个 分数 来做到这一点,我们使用的指标是 累积权重,它只是单个子 DAG(或更准确地说,路径)中区块的各个权重的总和。
如果你想要一个更 数学化 的视角,我们所做的是推导出与尖端相关的所有可能子 DAG 集合的 拓扑排序,这使我们能够选择拓扑的上限。
或者用简单的英语来说:我们有一个基于 累积权重 的区块 总排序!
当把所有东西放在一起时,结果最终与传统工作量证明中的结果相同:工作量 最多的链仍然获胜。然而,在这种情况下,每个区块 都有助于权重计算。从这个意义上说,我们可以说没有工作是真正浪费的。
这几乎是它的主要部分!我们获得了一种确定 选定链 的确定性方法,这条链将被我们解释为网络中的 事件历史。
重要的是,我们在这里停下来,专注于一个小细节。如果我们必须为 每个新区块 都进行这种子 DAG 计算,那么由于不断增长的 DAG 的庞大规模,这将Simply 成为一个不可行的过程。
因此,算法 缓存 通向创世的路径的权重是绝对必要的。这是该策略成功的关键!
我想还有一个小小的剩余部分需要解决:非选定 区块中的所有这些交易会发生什么?我们能以某种方式使用它们吗?
请记住,我们没有丢弃这些区块——它们是 完全有效 的 工作,仍然是 DAG 的一部分,并有助于整体安全性。
在这里,GHOSTDAG 做了一些非常聪明的事情:它也处理非选定区块中的所有交易,只要它们与选定路径中的交易不冲突!
哇哦
事实上,它甚至更进一步:如果两个非选定区块之间的两个交易发生冲突,它只会处理 总排序 中排在前面的区块中的交易。因为请记住——我们有一种方法可以按 累积工作 对区块进行排序。
从本质上讲,我们有一种方法可以对 DAG 中的每个区块进行排序!
这样,每个矿工都可以获得对其工作的奖励,并且他们的大多数交易仍然可以包含在整体历史中。
此外,如果我们假设同一高度的大多数区块将具有非冲突的交易(类似于 Aptos 方法),那么就会发生一些美好的事情:可以处理已挖掘区块中的 大多数交易!
只有在非选定区块中的每个交易都与选定链冲突的极端情况下,我们才会有效地仅执行选定链中的区块——因此它会退回到区块链的行为。
这有多酷?
我不知道你怎么想,但我发现这真是太棒了。
通过摆脱区块链结构,我们似乎可以充分利用工作量证明。GHOSTDAG 确实有一些很棒的优势,例如:
所有这一切都遵循着相同的旧原则:工作量最大的链仍然获胜。
但有所转折!
所以你明白了。两个协议以非常不同的方式使用 DAG,但主要 替换 区块链结构。
Kaspa 和 Hedera 并不孤单。一些其他协议,如 Taraxa 或 BlockDAG(这很有趣,因为它就像称区块链为“区块链”)也在尝试使用 DAG。
老实说,我不知道这是否会成为未来,但我喜欢的是,区块链领域完全充满了酷炫和创新的想法,不断突破可能的界限。
依我拙见,这就是它如此吸引人的原因!
话虽如此,我们旅程的下一个目的地将再次带我们回到熟悉的领域,我们将探索另一个区块链。你知道,没有疯狂的底层结构。然而,下一个区块链带来了非常酷的想法,并且可能与我们迄今为止所见 不同。
我说的是我个人最喜欢的:Polkadot。我们将在下一篇文章中开始分解它!
- 原文链接: medium.com/@francomangon...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!