月亮链 月亮链
Ctrl+D收藏月亮链

DAG:技术分享 | 安全并且公平的Block Dag排序_BLOC

作者:

时间:1900/1/1 0:00:00

前言

在之前的文章中,我们看到了在DAG拓扑结构中可能出现的问题是定义区块和转账的顺序。在这篇文章中,我们描述了Taraxa的机制,该机制不仅可以确保在BlockDAG中进行排序,而且可以确保排序的过程是安全和公平。

为什么排序具有挑战性?

在BlockDAG中进行排序有什么困难?

如果只是查看任何DAG数据结构,我们就只能建立部分排序,这意味着我们只能确定某些块之间的排序关系,而不能确定所有块之间的排序关系。这是一个例子。

在上图中,我们可以100%确定地说在排序中蓝色块肯定在绿色和橙色块之前出现。为什么?由于绿色和橙色块指向蓝色块,这意味着在创建橙色和绿色块时,蓝色块已经存在,否则橙色和绿色块不知道他们会指向它。

但是,怎么才能知道绿色和橙色块之间的排序关系呢?这个问题没有确定的答案,答案具体取决于使用的排序算法的类型,对于不同的算法,顺序可能会完全不同。

在排序过程中,我们不仅要保留一个自由度,而且还需要做出许多选择以确保排序算法既公平又安全,因为需要确保不会出现不诚实地参与者对大多数诚实的网络参与者给予偏见或进行攻击。

现在来看一下Taraxa设计的BlockDAG的排序算法,看看我们如何解决这些问题。

人气比赛

在Taraxa的BlockDAG拓扑结构中,每个区块都包括向后的指针,这些指针不仅指向单个父块,而且还指向区块块提议者已经看到并相信的DAG边界上的所有块。这里有很多概念,让我们一一解开。

什么是边界?在BlockDAG中,边界指代的是一组最新的,没有其他区块指向它们的区块。

声音 | 加密技术分析师:自12月低点以来,莱特币涨幅大于比特币:加密技术分析师Marius Landman今日发推称,自2019年12月17日的近期低点以来,比特币上涨了28%,而莱特币上涨了30%。莱特币才是领先者,比特币更强大只是人们的错觉。[2020/1/8]

在上图中,蓝色块是“边界”区块,而其余块都不是。边界区块链很有趣因为这些区块是所有区块的基础,其他由区块提议者创建的区块从排序上来说都在他们后面。从某种角度上说,下一个新区块一定会引用这些区块。但是,由于每个节点遇到的网络传播延迟不同,在遇到任何给定区块时都会看到完全不同的情况,因此并非每个节点都会看到相同的边界。因此,区块提议者在任何给定的时刻都可能基于不同的边界来构建其区块。

什么是指针或父区块?指针在图中用箭头表示,它是嵌入在一个区块内的数据,该数据将此区块“指向”或引用了另一个区块。在Taraxa的DAG区块结构中,指针会指向父块集。父块是被指针指向的区块,因此可以理解为他们之前区块的父亲。

在上图中,我们看到蓝色区块具有两个指针,指向两个由绿色块表示的父区块。这意味着在提议者创建蓝色区块时,提议者知道BlockDAG边界上的两个区块,并认为这两个区块有效,因此将创建的蓝色块指向他们两个。

这些指针将区块连接起来的过程实际上是一次流行竞赛-简单来说比的是哪个区块会被最多区块所指向并且被认为是有效的。此外,如果指向某个特定区块的区块本身是“受欢迎”的,那么“受欢迎度”也将延续到该特定区块。

分析 | XRP技术分析:价格长期看空:据ambcrypto报道,XRP的价格为0.3765美元,市值为1518万美元,略低于比特币(比特币)。XRP在一小时内的上升趋势是从0.3388美元到0.3603美元,而下降趋势是从0.4955美元到0.3767美元。对XRP的支持在$0.3381,而阻力点分布在$0.4040、$0.4270和$0.4614。XRP一小时图表中的指标都显示市场看涨。一日图与一小时图完全相反,正如博林格带、阿伦和随机所示,它是熊市。[2018/12/2]

现在,我们来衡量每个区块的受欢迎程度。

权重-受欢迎的分数

为了衡量每个街区的受欢迎程度,我们采用了Zohar和Sompolinsky提出的GHOST协议。GHOST有助于根据嵌入在BlockDAG中的指针计算每个块的权重。

什么是“权重”?如果将BlockDAG侧向旋转,则可以认为每个子区块及其后代都与父代区块隔离开了,因此GHOST下任何块的权重就是该区块及其所有后代的权重之和。

权重代表了所有试图在该区块上逐步建立其他区块的集体努力,即使这种努力没有得到协调并分散到多个后代中。

GHOST协议非常简单,

>每个块本身自然具有1的权重

>每个块的重量等于其自身的重量加上指向它的所有块的重量

>从DAG块的边界开始,然后向后测量

这是一个例子。

从边界区块开始,我们可以为每个区块分配权重。蓝色区块位于DAG的边界,没有区块指向它,因此它的权重为1。绿色区块只有一个指向它的区块,因此我们添加了绿色区块自己的区块权重加上指向它的区块的权重,我们得到2,这是绿色区块的新权重。再往前走,橙色区块指向3个方块,因此它的权重是三个方块的权重加上自己的权重1:5+20+12+1=38的总和。

比特币价格技术分析:长期看涨:据Newsbtc分析,BTC价格长期仍看涨。主要原因有:BTC价格在其日常时间框架内形成双底形态,表明正在进行攀升;BTC价格尚未测试1.2万美元压力位以确认长期反弹;图表显BTC跨度为6000美元至1.2万美元,因此最终攀升的数额可能相同。如果BTC达到1万美元的市场心理价位,并有大量出售,BTC的价格可能会跌回大约6500美元的低点。另一方面,BTC价格如果攀升至1.8万美元,则有可能达到创纪录的2万美元。[2018/4/25]

看起来不错,为啥我们现在不能按权重排序?好吧,不完全可以。这种简单的策略存在一些非常细微的问题,让我们进一步研究它们。

混淆顺序的方法

让我们看一个简单的例子来理解为什么仅仅使用权重值作为排序机制的逻辑基础是不够的。

在上图中,我们从场景(a)开始。

(a)我们看到有两个橙色的区块,它们的权重值都是1,所以它们的顺序是模糊的。

(b)增加了另一个区块,它指向前面的两个区块,但是现在它们的权重值都是2,而且仍然有不明确的顺序。

(c)增加了几个区块,橙色区块的问题并没有消失,它们的重量仍然相同。不仅如此现在的情况更糟,新的问题是黄色区块也有模糊的排序。

在上面的例子中,我们假设每个人都是诚实的——但我们仍然会遇到问题。如果你引入了一个恶意的玩家会怎样?那个玩家可以在区块DAG结构上主动地混淆排序。让我们看看下面的例子。

传统的技术分析对加密货币投资者有指导意义:Bitcoin今日发文“像老板一样,付出时间并投入研究去交易加密货币”,文章认为:即便加密货币与股票或外汇市场大不相同,但传统的技术分析仍具有对加密货币投资者的指导意义,‘好的交易者”看多并记住了足够多的蜡烛图中头肩顶、杯柄、三重顶、三重底等形态后,可在日间交易中快速通过潜意识判断价格趋势;此外,除了基本的移动平均线(SMA、EMA、DMA)、相对强弱指数RSI(低于30为“超卖\",超过70为“超买”)外,结合MACD、斐波纳特回撤、艾略特波浪理论等指标,可提高判断成功率。更进一步,“聪明的交易者”也意识到新闻和社区的情绪可以影响数字货币的价格。但文章同时警示道:即使一个技术精湛、密切关注消息的投资者,仍会做出错误预测,你要确保你所看到的是一个真实的图形。[2018/4/2]

在这个例子中,我们从(b)开始。

(b)我们有2个排序不明确的橙色区块。

(d)另一个区块出现并解决了这个问题,我们现在有了明确的排序。万岁!

(e)但好景不长…一个恶意的玩家正在积极寻求保持模糊的排序,并创建了一个区块(红色),这增加了边界区块,算上这个区块的权重就又回到了我们之前的问题,两个橙色的区块再次没有很好的排序。

这种攻击的另一个含义是,恶意的玩家不仅可以保持模糊的排序,还可以通过增加区块前后切换排序,使网络处于持续的混乱状态。

虽然这些都是非常简单的例子,但是这样的问题可能会在更大的范围内发生,也就是说整个区块集群都处于不确定的排序状态中。

那么我们如何解决这个问题呢?我们接下来会介绍锚链和幽灵指针的概念。

锚链-最受欢迎的途径

计算权重之后的下一步是确定BlockDAG中的锚链。如果权重是每个区块的受欢迎度评分,那么锚链是通过BlockDAG中的最受欢迎的路径。在穿越(步行)路径时所观察到的区块,也可以通过网络得到广泛的观察(非常普遍)。

如何构建锚链?简单!只要选择一个起始点—或者在Taraxa的例子中,起始点是前一个具有实时最终性的区块(我们关于实时最终性的文章即将发布)—然后向前走到它的子区块中,每一步都选择权重最高的区块。这里有一个例子,

价格回调利于比特币健康发展 加密货币不能与区块链技术分离:最近比特币价格的大涨大跌引发不同的猜想。Netcoins的CEO迈克尔?沃格尔并不认为比特币和其他数字货币的价格暴跌意味着区块链技术的失败。他解释:回调是比特币健康发展的一部分,加密货币是不能与区块链技术分离的。来自Auxesis的Kumar Gaurav表示:“对于加密货币及区块链技术的观点应该是中立的,而不是基于意识形态。”来自Auxesis的库马尔认为:加密货币应该成为区块链技术的首次使用和支持用例。[2018/2/19]

在上图中,从G区块开始向前走,有3个有重量的区块可供选择(381,765,381),其中最重的区块是765。按照这样的逻辑继续朝这个方向走,从G区块开始直到到达终点的路径,就是构建出的锚链(绿色)。

这就是锚链生成的方法,它将BlockDAG“锚定”到一个路径中,我们现在可以根据这个路径构建一个排序算法。

虽然这种计算锚链的方法解决了每个被指向的块具有相同的重量的问题,但是引出了另外一个问题,因为攻击者仍然可以不断地改变锚链(不收敛得很快)。所以我们引入幽灵指针,以帮助网络更快地收敛到一个固定的锚链上,从而实现确定性排序。

并不是所有的指针都是一样的

为了进一步防止网络陷入无序状态,我们引入了一个称为

幽灵指针的特殊指针。其基本思想是在创建每个区块时,它指向边界上所有它看到并已验证为合法的区块,但是这样的区块是特殊的。

特殊区块是锚链的终止区块,每个新加入的区块除了需要承认BlockDAG的边界上存在其他合法区块外,还将指向这个终止区块的幽灵指针。这里一个重要的变化是区块权重的计算中只考虑幽灵指针指向的区块,而不考虑其他指针指向的区块。

父块变成了只有特殊的幽灵指针指向它的区块。在TaraxaBlockDAG结构中,每一个区块只会指向一个父区块。其他的区块只是简单地观察区块树的其他区块,或者“祖先”——在以太坊,它们被称为“叔叔”或“ommers”。这可以在前面提到,也可以非常明确地说明一个区块可以有多少个父区块存在。

这解决了一个基本问题,即在DAG图所代表的隐式投票过程中,如何保证边界上的所有区块不是以模棱两可的形式呈现。

让我们来快速看一个例子,

>粗箭头是幽灵指针(计算重量)

>细点箭头是确认指针(没有权重)

(a)两个区块(1.1和1.2)指向第一个创世区块(0),粗线是幽灵指针,因为只有一个父区块存在而这两个区块都指向它。现在的顺序是模糊的,但是我们可以使用最低的哈希进行比较,假设(1.1)获胜,并被认为是未来区块的幽灵指针的候选。

(b)增加了3个区块,但因为网络延迟导致,不是所有这些区块都在同一时间看到每一个新出的区块,也就是说某些节点可以更快地看到某些区块。例如,更近的物理距离导致的更少的网络跃点会加快节点看到区块的速度。区块(2.1)和区块(2.2)都见过前面的两个区块(1.1和1.2),所以它们都将幽灵指针指向这两个区块并诚实地将(1.1)标识为锚链上的终止区块。但是,(2.3)没有看到(1.1),所以它只能使用幽灵指针指向(1.2)而无法做其他事情。请注意,根据我们的规则,区块的权重已经更新,但是只计算了使用幽灵指针指向它的子块的部分。

(c)下一层的区块出现了,第(3.1)区块同时看到了(2.1)和(2.2)区块,第(3.2)区块同时看到了(2.1)和(2.3)区块,第(3.3)区块同时看到了(2.1、2.2和2.3)区块。在发布时每个区块选择它们所看到的锚链上的终止区块,并将它的幽灵指针指向它,然后继续。

幽灵指针与锚链一起,有助于迫使网络收敛到锚链上,稳定整体的排序。接下来,我们将描述如何最终基于锚链对区块进行排序。

通过锚链排序

使用幽灵指针,让我们重新计算前面的BlockDAG示例中的权重。请再次注意,只有使用幽灵指针指向的区块才能将其权重计算到父块中。

一旦锚链被绘制出来,我们就在锚链上的每个区块(锚块)周围构造epoch。epoch就是让锚块可以观察到的区块数量,或者是锚块直接或间接指向的块。把他们想成是超级受欢迎的锚块的朋友。

在上图中,我们使用红色虚线绘制每个锚块epoch。不幸的是,第一个重量为25的锚块只有他自己是epoch。下一个重量为21的锚块具有epoc,包括它自己和它可以观察到的另外两个重量为1的块。第三个锚块的重量为18,只能观察到一个锚块。下一个块的重量为17,它的epoch为3,其中包括一个块的重量为1是它能够直接观察到,另一个块的重量为2是它间接观察到的。通过这种方法我们继续区分直到每个锚块的epoch都被绘制出来。

现在我们准备好对区块进行排序了!区块首先按epoch的顺序从最古老到最新(从左到右)。在每个epoch中,通过查看哪个区块指向哪个区块,并使用权重值来决定哪个区块先出现。或者如果这种方式失败,则使用区块hash作为与锚块相同距离的区块的判断方式。

看epoch图,G是第一个(1)。下一个epoch中只有一个区块,所以这个权重25的区块是第二区块(2)。移动到下一个epoch,两个权重值为1的区块在权重21锚块之前(因为它们是指向权重21的区块),比较这两个区块的方式是比较谁的hash值更低来确定(3)和(4),然后,第5个区块(5)是权重值21的区块。我们一直进行下去直到所有epoch内的所有区块都被排序。

如下所示,每个区块中的数字表示顺序,而不是权重。

我们终于搞定了!

但我们真的完成了吗?那些没有被加入排序的区块呢?

在BlockDAG结构边界附近总是有一些区块不属于锚链epoch的一部分。但是不要担心,随着更多的区块被添加到边界,它们最终会被包括在内。

难道锚链(以及因此产生的顺序)不会随着时间而改变吗?

是的!在BlockDAG结构内存在重新排序的风险。这种风险随时间呈指数下降,但从未真正消除,这就是为什么Taraxa需要实现了一个实时最终性过程(文章即将发布)。在BlockDAG结构中引入了真正的实时最终性,并且没有重新排序的风险,这是在网络中构建DApps的基础。

请继续关注。

?

标签:DAGKDABLOCLOCKxdag币价格今日行情KDA价格blockchain钱包中文版下载blockchaininfo登不上

以太坊价格今日行情热门资讯
区块链:蚂蚁开年渲染区块链:三大战略提速引线?_达摩院

作者:王如晨来源:夸克点评你应注意到,2020年一开年(自然年),蚂蚁金服与阿里达摩院各自发出了相近的信息.

1900/1/1 0:00:00
比特币:观点 | 2020后区块链世界及安全的一些思考_区块链上班都是干什么的

作者:余弦来源:懒人在思考在这作为已经是区块链世界的局内人,我有一些思考写出来和我的关注者们聊聊。首先过去两年,我在这已经做了一些主要围绕区块链安全的分享.

1900/1/1 0:00:00
BSV:“不疯魔,不成活”——妖币BSV炼成记_bsv币有价值吗

“不疯魔,不成活”澳本聪再次用BSV一天近150%的涨幅,向其忠实“党羽”宣读了他的伟大愿景——拉盘即正义.

1900/1/1 0:00:00
BTC:10个指标表明 BTC 为何成功_区块链

作者:SylvainSaurel来源:加密谷中本聪于2009年1月3日正式创建了BTC。就在前不久,BTC庆祝了其11岁生日.

1900/1/1 0:00:00
DEX:用数据来回顾去中心化交易所的 2019_KEN

作者:?Alethio翻译:?阿剑原文来源:consensys译文来源:以太坊爱好者去中心化交易所从2018年开始崛起,在过去一年中蓬勃发展.

1900/1/1 0:00:00
联盟链:观点 | 公链的故事还没讲完_TOKE

文|王也?运营|盖遥?编辑|?Mandy王梦蝶出品?|?Odaily星球日报 从争抢百万TPS,到比拼DApp生态,再到借势Staking和Defi,2018到2020,牛熊交替.

1900/1/1 0:00:00