Filecoin Blog上个月发表了一片关于Filecoin区块架构 - Tipsets的文章, 对Filecoin的区块架构进行了一些解释,但是,其中对于Filecoin为什么要采用Tipsets,和为什么必然采用Tipsets并没有进行详细分析。为什么要增大区块数量,采用Tipsets是否能达到想要的目的等等语焉不详。本文尝试做一个简单补充。 区块链要解决的一个问题:分叉和收敛 区块链来自与比特币,这个不用多说。但凡对区块链的原理有些了解的同学,就知道在一个去中心化的世界里,每个人的步调是难以一致的,各说各话,但又必须达成一致,这就要依靠共识。但即使有了共识,由于每个矿工的设备不同,网络状况不同,规模不同等等原因,往往也会作出不同的决定,这些决定的不同,导致的一个结果就是分叉。 这里所谈的分叉,不是说一个币分成两个币,BTC产生BCH这类分叉,而是在每一条链上,基本上都在经常发生的,这一点,在Filecoin上月发表的blog - Filecoin区块架构 - Tipsets 的文章中也有描述。一条链要稳定,就必须快速解决分叉,分叉的解决成为收敛,也就是说一条链可能分叉成几条链,但是如果设计得好,矿工会很快作出选择,支持其中的一条而抛弃其他。比特币采用最长链原则解决分叉。但是这种解决方案有一个问题,有一些合法的区块被抛弃了,被抛弃的成为孤块,孤块得不到区块奖励。 而同时,随着区块链技术的发展,出现了不同的解决分叉和收敛的技术,比如说,依靠多轮通信来进行选举,尝试在一个区块时间内选出领导者进行出块,其中比较著名的例子是Algorand。另外一个方向,是采用DAG(有向无环图)来尝试容纳所有合法的区块,比如说IOTA。但这两种方式分别有不同的问题,采用多轮通信进行选举,通信的复杂度会提高,权益的计算也是一个问题;而采用DAG的方式的链一直面临一个快速收敛的难题。 Filecoin 尝试从这两个角度来进行思考,提出了自己的解决方案,那就是 tipsets。Tipsets是一个DAG,但是是一个简化了的DAG,因为它要求在一个Tipsets中的区块必须在同一个高度,而且父tipset也必须相同,因此,Filecoin又可以看成是一个链(这比DAG要简单得多),一个Tipsets组成的链。 POS:无法照抄比特币 比特币的共识机制是POW(工作量证明),这也是其最受诟病的地方,因为太耗费能源。选举过程成本很高,网络越大成本越高。然而其选举过程中的计算结果出来证明领导人合法外基本上没有任何用处。这也是POS(权益证明)被提出来的原因。理想的POS机制应该是十分节能的,因为只要在一定的时间之内证明自己的权益就可以了。我们知道,Filecoin在每一轮的领导人选举过程就是采用POS机制的。这里的S(权益)是指你在网络中存储并证明了的数据量的多少。这相对于传统的POS又进了一步,因为权益是靠有价值的服务产生的。权益产生过程中的计算本身就是有价值的。 那POS能否使用最长连原则呢?答案是“不行”。POW是看谁最先算出来,拼的是计算能力;而POS依靠的是在一个固定的时间区间内证明自己的权益就可以了,算快算慢没那么重要。理想情况下,如果发生分叉,往往分叉链的长度是相同的,一样长,没法办。但转念一想,把所有同一高度的区块都包进来不久好了吗,反正都是有效的,这还没有比特币分叉选择造成孤块的问题。想得没错,但实行起来有难度。 如何选举:还没有完美方案 最关键的问题,在一轮中由谁来出块?因为为了公平,又要安全,那最好是秘密选举,而且要对所有人都是秘密的,同时,最好实现起来特别简单,不需要来回多次通信。这个理想,被成为SSLE(Secret Single Leader Election):秘密单个领导人选举。也就是说,每一轮,十分秘密地,选举出一个,而且只有一个领导人。这个太难了,只要想一下,在一个去中心化的世界里,连加入和退出网络都是十分自由的,那要是选上谁,这个家伙刚好走了,咋办? SSLE这个理想实现不了,怎么办?Filecoin提出了预期共识(EC:Eexpected Consensus),来谁先一个简化了的,折衷的不完美的SSLE。也就是说,EC要实现的是按照概率而言,每一轮期望能产生刚好一位领导人(出块者)。注意,这里说的是期望,概率,不是真的。但是,根据设计,概率上是没错,但通过概率也可以算出来,出一个块的轮次只有36%多一点 (1/e,具体这里不推算,太数学了)。而出空块的轮次也是36%多一点,这就有点高了。当然也有一些轮次有2个块,3个块,甚至更多。 怎么保证每一轮都能出块 Filecoin的POS机制有一个很大的好处是,区块时间相对固定,这对区块链的消息处理来说就太好了,可以预期。不像POW机制,时快时慢,撞大运。但是,区块时间固定虽然好,如果某一轮或连续轮次出空块的话,就不好了,中间间隔的时间又不能预期了。怎么办? 想一下,前面讲的POS,如果一轮出多个区块,把这些区块都打包在一起,形成一个tipset就好了。那么是不是我们可以一轮选举多个领导人,来个集体领导,又时髦又不怕某一位领导缺席。就这么办。一个简单的实现方法就是提高每一个人选举成功的概率,也就是改进的预期共识。这个改进的预期共识要实现的是,每一轮预期产生 e 个领导人。在目前的Testnet中,e=5。那么,也就是说我们预期每一轮产生5个领导。 实际的结果像这样: 很遗憾,上面的图不太完美。 Tipsets包含了尽量多的区块了吗? 我们再回想一下,采用POS的Tipsets机制最开始想要做的是什么?尽量包含合法的区块。但是,我们观察一下上面的图,很明显,有一些区块变成了孤块。如果上一张图不明显,我再上一张: 注:红圈部分,出现孤块主要是目前的设计原因,打上马赛克,避免误解 在这一张图中,有好几个矿工出的区块很多都没有能够进入主链。见红圈标出的部分。为什么会出现这种情况呢?有几个原因: 1)网络延迟,有些矿工出的块由于网络原因花了较长的时间,错过了下一轮矿工打包;但这远不是主要原因。 2)Filecoin打包区块的要求较高。一个最最要命的要求是,在每一轮的出块时间内必须要完成一次时空证明。这个计算量不小,用上GPU也要数秒甚至十几二十秒的时间才能完成。这就大大占用了区块时间,使得: - 拥有打包权的矿工不能等太长时间,必须赶快计算,否则他也会错失机会。目前在Testnet2 的设计中,等待的时间仅有6秒。 - 虽然说6秒时间也不短,但是,如果你计算时空证明的时间再不够快,你出块的时间可能本身就落后了 - 还有一个问题,就是在做时空证明的时候,矿工需要访问存储的数据,而对于大矿工而言,存储可能采用网络存储,存储可能成为瓶颈,同时,如果存储中有故障,那效率就会大打折扣。 在目前的测试网中,我们看到每轮平均出块数在2到3之间,离预期中的5还差一半。 如何改进? 如果主网上线之后,区块被打包的概率如果还是如此,肯定是不行的。怎么办,必须想办法,尽量使得每轮出块量符合预期。实际上当 e=5 时,这个出块量的理论预期值是低于5的(此处不推算,太数学),但至少要高于4才算正常。 有以下一些思路可供参考,Filecoin团队也在权衡,我们希望在最终的Spec中能够看到更好的版本: -进一步提高PoSt的效率,缩短PoSt时间,这可以给矿工更多的时间用于等待更多的区块打包;(一直在做,但比较困难) -不限制ePoSt在一个区块时间内完成,这个对安全性有一些伤害,但需要考虑是否可容忍,或者进一步提高Seal的难度和时间。(有安全性的顾虑,但在考虑之中) -延长区块时间;Filecoin团队本来设计区块时间为30秒,后来希望改为15秒来提高效率;但是在采用ePoSt之后,缩短区块时间十分困难,测试网改为45秒。(进一步延长区块时间阻力很大) -矿工提高硬件配置,缩短PoSt时间。如果上面几点没有采纳或没有提升,这是唯一的出路。 大家有什么想法,也请积极参与讨论,献计献策。Filecoin要形成一个生态,形成一个成熟的去中心化存储市场,需要大家的共同努力。 【IPFS原力区】 价值观:价值 共建 共享 荣耀 总部位于上海,聚集基于分布式网络&存储的众多技术大咖和爱好者,深耕基于 IPFS 的商业生态建设和社区发展。 【原力开放日】 每周二举办,聚集了众多技术大咖和 IPFS 爱好者,通过持续输出全面、精细、优质的IPFS咨询和技术支持,将生态中的爱好者转化为IPFS支持者和参与者,共建IPFS生态的健康发展。 —- 编译者/作者:IPFS原力区 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
技术揭秘丨Filecoin的区块架构 - Tipsets
2020-02-14 IPFS原力区 来源:火星财经
LOADING...
相关阅读:
- 大数据时代数据泄露愈加频繁 IPFS/Filecoin掀起财富新机遇2020-08-04
- IPFS项目Filecoin为什么如此火热?是炒作出来的吗?2020-08-04
- 验证Filecoin的存储教程|时空证明(PoSt)2020-08-03
- 数字货币引起全球众多领域关注,投资Filecoin能否超越比特币神话?2020-08-03
- 【Filecoin动态】“Filecoin Launchpad”加速器正式启动!2020-08-03