LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > illamanudi矿池创始人Ortis深度解析Mochimo关于区块同步独特精简技术ChainCrunch

illamanudi矿池创始人Ortis深度解析Mochimo关于区块同步独特精简技术ChainCrunch

2019-10-16 六剑客 来源:区块链网络

分布式系统的可伸缩性

实施像区块链这样的分布式系统非常困难,尤其是当该系统必须每秒处理数百笔交易时(加密货币就是这种情况)。 如今,加密货币区块链的最大问题之一是它们的可扩展性,这意味着其生态系统无法扩展以容纳众多用户。 结果,成为其网络组成部分的要求变得异常高且耗时,使普通用户望而却步:

数百GB(有时甚至是TB!)来运行一个节点

数周同步区块链

大量的RAM和CPU要运行

这种无法扩展的后果不容小taken。 在压力时期,我们看到待处理的交易数天,交易费用猛增到令人难以置信的水平。

如此高的进入门槛导致迄今为止令人惊讶地被忽略的情况:当运行节点所需的精力和时间对于普通人来说太高时,他们将依靠外部提供商来控制 他们的资金和/或处理交易。 更具体地说,以天为单位来衡量工作量和时间时,实际上将有多少人启动一个完整的节点来验证其交易? 没有。 他们将(使用我确信我们所有人都会做的,包括我自己在内)使用无数的“区块浏览器”。 换句话说,我们依靠中央机构来验证分散系统上的交易…

1mnL8sLogxQYMLF9oJJyly30gsh11zfQi4unI2wv.jpeg

为了实现真正的分散化,运行节点必须快速(几分钟之内),几乎无成本,完全不受信任,并且必须在普通的消费者级计算机上是可行的。

一些项目选择使用修剪的节点。 修剪节点是不从Genesis块引导其内部分类帐的节点,而是使用分类帐的过去快照,它们将快照时间到现在之间所开采的所有块都应用到该节点。 这不是一个可行的解决方案,因为它不能满足第三个要求,因为它们不是不可信任的。 修剪后的节点需要信任共享账本原始快照的任何人。

Mochimo ChainCrunch

为了保持同步的快速,廉价,更重要的是不信任,Mochimo开发团队创建了ChainCrunch机制。 Mochimo的这项技术使将节点同步所需的数据总量保持在最低水平。 在撰写本文时,区块链已有15个月的历史,已开采超过10万个区块。 但是同步后的数据总量不到100Mb,同步总时间只有几分钟:

65zQEW1VM0bzISzzJZOxhpGrZ9Dz7dvc2vUE7UXq.pngqakhmcAZBaamLw5oy4WMxZ3Yc6HQzAP02SNTKYx4.pngoATb36er80kvTtaUrBfDYjaYdInNltnEngKt7S5h.png

该节点首先在头几秒钟内下载tfile。然后下载块。最后,建立分类帐并验证每个块。同步的总时间为3分24秒。该节点托管在VPS 2 CPU 4GB RAM上,尽管实际仅使用750 Mb。实际上,该节点可以轻松在Raspberry Pi上运行。

有人可能会认为这些值很低,仅是因为Mochimo还是一个年轻的区块链。好,大家好消息!即使我们达到了比特币的峰值利用率,同步所需的数据量和时间也将保持较低水平。

我们来看一些数字。

为了同步区块链,ChainCrunch技术需要255到510个区块,所有已开采区块的预告片以及分类账的快照(在Mochimo生态系统中称为Neo Genesis区块)。每256个区块一次在区块链中铸造一个Neo创世纪区块。这些区块不包含任何交易,也不需要在网络上传播,因为给定的Neo Genesis区块在链的每个节点上都是相同的。

Sd0ydMulf9ft4Ruh25sB1NeGddVvPWZb4amYGdii.png

在Mochimo中,每256个块创建一个Neo Genesis块

比特币区块链上唯一地址的总数在2017年12月达到110万峰值,并且每天的交易总数在同一时期达到50万峰值。 当时,比特币区块链上的区块数量约为50万。

如前一篇文章所述,Mochimo块中的事务大小为8824字节,块头的大小为2220字节,对于160字节

区块预告片,区块时间为337.5秒(每天255区块加上1个Neo Genesis区块)。 这将产生1960个事务的平均块大小* 8824 + 2220 + 160 = 17.3 Mb。 Neo Genesis块的大小为[2208字节(WOTS地址的大小)+ 8字节(帐户余额)] * 1.1M = 2.43Gb。 tfile的大小将为160字节(块尾部)* 500K = 80Mb。

因此,在Mochimo生态系统可能需要处理2017年12月比特币面临的相同条件的情况下,首次以不信任的方式同步完整的Mochimo节点将需要(255至510)* 17.3 Mb + 2.43Gb + 80Mb = 6.9至11.3Gb

让我们检查一下6.9GB的预计下载时间:

svb8RCoOtclZocyAZ9WbkKNEHfH9CakXrDIrua6C.png

9kU5GmYIJ1cEOBRrfpFuGQw9m6aXNjkifX9mZ0Vp.png

请注意,这些计算没有考虑任何压缩数据,也没有考虑到可以同时从不同对等方下载多个块的事实,这将进一步减少同步所需的时间。

ChainCrunch如何运作?

在启动时,Mochimo节点将向不同的对等方询问他们当前正在挖掘的链的权重,并将选择最高的权重,因为该链在该时间点之前花费了最多的计算能力。将节点选为链后,它将首先下载块预告文件(tfile)。请记住,块的预告片包含验证工作量证明所需的所有信息,因此节点可以轻松地从tfile计算权重并验证其是否与对等方通告的值匹配。如果不是,则该节点丢弃该链及其对等节点,并重复搜索过程。

找到最重的链后,节点将下载倒数第二个Neo Genesis块(不是前一个,而是之前的一个)。下载完成后,将计算Neo Neosis块的哈希值并对照tfile中同一块的哈希值进行检查,以确保该块的完整性。从这一点开始,节点将下载所有块直到链的当前状态,并对照tfile检查每个块的哈希值。当到达最后一个Neo创世纪块时,而不是下载它,而是从分类账的当前状态构建它,并根据tfile检查哈希值。这是确保分类帐有效性的第二层安全保护。

瞧,您仅需几分钟即可完成节点与区块链的不信任同步。

—-

编译者/作者:六剑客

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...