众所周知,在区块链中,只有大部分人受利益(挖矿奖励等)的驱动表现出诚实行为整个区块链才能正常运行,但如果诚实行为获益低于欺骗行为,就会有人铤而走险,如果铤而走险的人占据大多数,整个区块链就会出现各种各样的问题,最典型的莫过于 51% 算力攻击。
CSW又出幺蛾子:我可以摧毁匿名币
自称为比特币创造者的CSW(Craig Wright)又整幺蛾子了。这一次他说自己可以摧毁“威胁社会”的匿名币。
尽人皆知,在区块链中,只需大部分人受优点(挖矿嘉奖等)的驱动表现出老实行动全部区块链才一般运转,但如果老实行动获益低于诳骗行动,就会有人官逼民反,如果官逼民反的人占有大多数,全部区块链就会涌现林林总总的问题,最典范的莫过于 51% 算力进击。
那末问题来了,去中间化完成了权利的下放,而下放后权利又该如何制衡保证不作歹?
外洋大神Tomaz Kariz遭到矿池的启示,提出在挑选区块链时将区块链中的“诸侯”矿池作为一个影响要素,引入区块链评分机制以及责罚机制,赏罚连系从而让51%进击的本钱更高。
那末,矿池与区块链的挑选如何连系?效果又会如何?让我们跟着大神一探终究!
前段时候,以太坊典范( ETC )区块链遭受了51%算力进击,这引发了我深深的思索。
从理论上来讲,我以为 51% 算力进击并非区块链收集设想的败笔,但我们是不是有要领让这些 51% 算力进击的进击者支付更高贵的代价?
当一个区块链节点客户端发现同时存在多个区块链时,它必需决议挑选哪一个区块链,这时候节点客户端会离别盘算每一个区块链的评分 chainScore ,然后挑选分数最高的区块链。
在PoW共鸣的区块链中,挑选区块链的划定规矩一般被称为“最长链划定规矩”,个中区块链的评分 chainScore 即是该区块链上完成事情量的总和。这类依据评分来挑选区块链的优点在于它是完整客观的。
一个主观评分的例子是,区块链节点客户端对区块链的打分规范不仅依据在该区块链上完成了若干事情量,还斟酌到了如果切换到该区块链时将从当地庇护的区块链中删除若干个区块,即对那些大概须要你更改当地庇护区块链的区块链带有私见。
基于将从当地庇护区块链中删除的区块数目的主观区块链评分
另一个主观区块链挑选划定规矩的例子是照旧盘算区块链评分 chainScore ,但只需在切换到它须要从当地区块链中删除的区块数不凌驾 20 个时才切换到这个具有更高评分的区块链(该划定规矩一般被称为最大化重组掩盖,max reorg cap )。
这个划定规矩不仅会涌现“新节点问题”(如上图所示),而且纵然一切节点都运转着雷同版本的客户端程序,它也大概会致使硬分叉。
所以我们要防止主观地对区块链举行评分,因为如许做我们的区块链挑选逻辑就会很难诠释,而且纵然每一个客户端节点都遵照雷同的划定规矩也大概会致使硬分叉
区块链挑选划定规矩
以太坊典范运用的区块链挑选划定规矩是挑选完成事情量最多的区块链。假定一个名叫 Bob 的以太坊典范客户端正在第一次衔接以太坊典范收集,Bob 必需在多个区块链之间做出挑选,不过这并非问题,他所要做的就是盘算每一个区块链上完成了若干事情量并挑选完成事情量最多的区块链。
纵然我们有恣意多 Bob 如许的新入网以太坊典范客户端,对每一个区块链它们都邑盘算出完整雷同的评分 chainScore 。
在区块链体系中给定 N 个节点,这 N 个节点组成一个完整图(每一个节点都衔接到其他一切节点),区块链挑选划定规矩应具有以下属性:
每一个节点都应将同一个区块链视为最好挑选。
区块链挑选划定规矩还应为区块链 C 供应雷同的评分 chainScore ,不管恣意时候点以及恣意高度 H ,这意味着评分 chainScore 应当仅取决我们正在评价的区块链上的数据。
这些属性确保 Bob 和长寿命节点就须要跟随的区块链杀青一致,并使它们随时候的推移逐步收敛到同一个区块链上。
须要注重的是,正如我们上面提到的,当下以太坊典范中评分chainScore最大的区块链是那些完成事情量最多的区块链。
区块链挖矿
关于零丁挖矿的矿工而言,除非他掌控相当大的哈希算力,不然他不太大概会挖出区块。
矿池就是为了处理这个问题而被发现的,矿池自创了“众人拾柴火焰高”的头脑,大批底本零丁挖矿的矿工聚在一起抱团取暖和,配合挖矿,配合分享收益,所以纵然某些矿工大概都没有挖出一个区块,但始终能取得稳固的事情报答。
假定区块链收集中有多个矿池,它们统共占有收集中的大部分哈希算力。
每一个区块都包括一个被叫做 coinbase / etherbase 的数值,它用来指代挖出该区块的矿工,示意应当吸收挖矿嘉奖的地点。
大多数区块都是由矿池开采的,每一个矿池一般都邑指定一个用来吸收挖矿嘉奖的地点。
下面是以太坊典范区块链上从高度 7283680 到高度 7283695 开采出的 16 个一连区块,以及它们吸收挖矿嘉奖的矿工地点:
以太坊典范区块链上高度 7283680 到高度 7283695 的区块,以及它们吸收挖矿嘉奖的矿工地点
正如预期的那样,绝大多数区块都是由以太坊典范收集中运营的矿池开采出的,个中矿池 Ethermine 开采了 5 个区块,矿池 MiningPoolHub 开采了 4 个区块,矿池 NanoPool 开采了 3 个区块。
在灰色的区块中挖矿嘉奖被发送到我不知道一切者是谁的地点,但它们极大概也是矿池。
这好像给了我们一点启示……
应用矿池下降51%进击?真的!
假定我们有能一连挖出新区块的矿池,我们应当能常常看到区块的产出。当进击者举行 51% 算力进击时,他一般会离线一连发掘 N 个区块,然后宣布一个比当前共鸣链更长的区块链,从而致使当前共鸣链的重组。
进击者开采的区块一般不运用我们过去观察到的矿池的地点。
如果对矿池挖矿的前后不一致性举行责罚,我们就可以在共鸣划定规矩大抵稳定的前提下大大增添进击者发起进击的本钱,从而庇护我们免受 51% 算力进击。
在这里,我们须要先明白一下 51% 算力进击是如何发作的:
运用算力租赁效劳(比方 NiceHash )来实行进击(假定 NiceHash 并非矿池)。
一些矿池暗中勾通实行进击。
上面二者的连系:矿池暗中勾通+算力租赁效劳实行进击。
运用专用集成电路(ASIC)实行进击。
矿池前后一致性指数
区块链挑选划定规矩不仅可以斟酌已完成的事情量,还可以斟酌矿池的前后一致性。我们可以经由历程将 chainScore 的定义更改为以下公式来到场矿池的影响:
chainScore = parentChain.score +(block.PoW_score * PCI)
个中 parentChain.score 为前序区块链的评分,block.PoW_score 为该区块链所做的事情量, PCI(矿池前后一致性指数,Pools Consistency Index)为介于0和1之间的值。
这里的 PCI 示意矿池的前后一致性。让我们来看一个运用矿池信息来评价区块链“康健”水平的一个完成。
在末了 3000 个区块上运用滑动窗口来权衡事情量前后一致性的示例。
chainScore 函数的代码完成以下所示:
滑动窗口矿池前后一致性增量的参考完成
当收集中多个区块链共存时,我们以为最大概成为共鸣链的会是那些矿工在延续挖矿的区块链。这类说法并非百分百准确,但关于大多数状况都是云云,除非涌现控制凌驾 51% 哈希算力的矿池哗变的状况。
这类连系矿池信息的要领可以展望区块链的将来是什么样的,并责罚那些歹意行动者,而这些在过去是不大概完成的。当我们对矿池的前后不一致设置异常高的责罚时,会涌现以下两种状况:
收集中仅存在一个区块链,一些矿池住手挖矿。因为关于一切的矿工而言,他们的 PoW 值都邑响应的下降,所以这对矿工来讲可有可无,因为区块链评分 chainScore 很低并不会影响他们的挖矿收益。
收集中多个区块链共存,在这类状况下,矿池前后一致性较低的区块链(一般是 51% 算力进击)将遭到责罚。
那末,这类要领在上面所提到的几种51%算力进击眼前效果如何?
运用算力租赁效劳(比方 NiceHash )来实行进击
因为其他矿池不会在他的区块链上继承挖矿,跟着时候的推移进击者会遭到矿池前后不一致责罚。
两个共控制全网 60% 哈希算力的矿池团结实行进击
为了处理这个问题,我们不仅须要斟酌矿池的哈希算力,还须要斟酌在区块链上挖矿的矿池的数目。如果我们有大于 10 个具有大抵雷同哈希算力的矿池,那末这个问题就会变得更轻易处理。
二者的连系
比方一个控制全网 40% 哈希算力的矿池又租用了全网 30% 的哈希算力实行进击。
跟着时候的推移进击者会遭到矿池前后不一致责罚。值得注重的是,纵然进击者将租用哈希算力挖出区块的矿工地点设置为底本矿池的地点也杯水车薪,因为我们会检察已挖出区块过去的数据。
运用专用集成电路(ASIC)实行进击
这看起来像是历久的 51% 算力进击。进击者会跟着时候的推移遭到矿池前后不一致责罚,但如果他能继承对峙下去,他就大概会成为我们参考的“过去的矿池”。在这类状况下,问题演化成了如果一个矿池哗变。
虽然这类要领并没有处理 51% 算力进击,但它能使进击者的进击本钱变得越发奋发,因为进击者会在很长一段时候内延续遭到责罚(许多个区块时候)。
如果几个矿池倏忽住手挖矿,监控体系可以觉察这类状况,社区会有一些时候来做出回响反映,比方入手下手本身挖矿(但因为责罚机制的存在他们必需警惕)或许只是在发作这类状况时守候更多后续区块的确认。
基于这些状况,我们先做了以下假定:
将矿池作为收集的一部分从而增强区块链的安全性。固然了如果一个矿池可以经由历程种种手腕控制全网 51% 的哈希算力,那末他照样可以实行 51% 算力进击,不过这并非我们引发的新问题,就我现在的相识,业界还没有针对这类问题的处理计划。
一旦矿池 A 挖出了一个区块,一切接下来的 29 个区块都将取得矿池 A 的前后一致性嘉奖,不管这些区块是由谁挖出的,因而,与其别人比拟,矿池 A 并没有取得任何上风。
“墙头草”矿工依然受欢迎,但如果他们倏忽入手下手挖出大批区块,他们大概会遭到责罚。如果他们有些前后一致性,我们不会对他们举行大批责罚,他们可以轻松地挖出新的区块。有人大概会说如许会下降安全性,但我的预见是,你从取得矿池前后一致性指数取得的收益远远凌驾没有“墙头草”矿工而落空的收入。
只需每一个新区块保证为区块链增加一些主动代价,挖矿就可以在没有矿池存在的状况下继承运转。
因为单独挖矿的矿工很难开采出一个区块,因而责罚对他们的影响基本上为零。我以为他们中的大多数人都愿望介入到矿池当中。
新来的更大的矿池将不得不逐步到场区块链中,不然它们会因为矿池挖矿前后不一致致使其挖出的区块遭到责罚。
矿池前后一致性公式( PCI )以及区块链评分 chainScore 可以有多种定义要领。
关于具有较低区块间隔时候的区块链,这类要领可以更好地事情,因为一样的一段时候里这类区块链可以取得更多有关矿池一致性的信息。
接下来,我们须要用博弈论的要领来对这个假定举行考证。须要注重的是,可以斟酌不调解 PoW 的值,而是运用 PCI 作为附加值来对峙 PoW 一致。
滑动窗口矿池前后一致性增量测试的效果
我经由历程模拟出一个抱负的区块链从而在一系列的一连区块中检测矿池前后一致性的主意。
虽然效果显现,运用滑动窗口矿池前后一致性增量与最长区块链机制(当前被大部分区块链采纳)比拟, 51% 算力进击的本钱会越发高贵,但应当注重的是,因为测试历程当中大概存在瑕疵,代码中大概存在毛病,或许是模拟出的环境过于抱负/简朴/毛病,如许的结论大概会存在问题,因而离在区块链上实际运用大概另有很长的路要走。
在此次试验中我创建了约莫 5500 个区块(历程延续了 5500 * 14 秒),进击者在高度为4850的区块处举行分叉。默许状况下,区块的间隔时候约为 14 秒,在代码上我做了许多的简化,并没有完整符合在当前区块链中运用的逻辑(比方,区块时候的盘算不一样,没有叔块)。
只管存在差别,但我以为这个试验足以磨练我们的主意。试验效果以下所示,效果中 Ratio (比值)示意主链和进击者在区块高度 4850 处生成的分叉链之间区块链评分 chainScore 的比值,如果这个比值低于 1.0 意味着主链的区块链评分 chainScore 的总和低于进击者分叉链的总和。
我们还可以从图中看到两个区块链到达的高度。
试验效果
从图中我们可以看出,较传统的最长链要领,滑动窗口矿池前后一致性增量要领更轻易选中主链,不过纵然这类要领得胜许多,在实在的区块链环境中这类要领的功效另有待磨练。
从上面这个效果表中我们可以看到,在一切的状况下分叉链终究都挖出了更多的区块,但在滑动窗口评分要领中分叉链的评分 chainScore 从未凌驾主链(这并不完整准确,因为它大概在入手下手时取得了更高的分数,但在此次测试中,分叉链起码抢先主链 30 个区块,而且评分也更高)。
如果进击者可以对峙充足长的时候,他就有大概成为“矿池汗青”的一部分,跟着时候的推移分叉链的评分chainScore 会凌驾主链。
固然了,此次试验代码除了我之外还没有任何人搜检过。如果你发现了代码中存在的问题,请向我提交。
已知的进击向量
51%算力进击
只管云云,进击的本钱大概要贵很多。
矿池假装进击
进击者可以挖出更长的区块链并在个中插进去其他矿池的矿工地点,从而将进击者挖出区块的矿池散布调解为与进击前大抵雷同的散布。
为了提防这类状况,我们须要为矿工供应某种情势的身份证明。这可以经由历程在区块头中增加名为 minerSig (矿工署名)的身份考证信息来处理。 minerSig是运用矿工私钥署名的前序区块哈希值 parentHash 和该区块的随机数 nonce ,为了使区块有用,我们须要搜检这个考证。
进击者到场主收集
进击者可以到场主收集并挖出一些区块,以防止今后被识别出倏忽大批挖矿。这类状况可以参考如果一个矿池哗变。
革新步伐:挣脱矿池假定
在协定级别上实行矿池机制可以保证矿池确切存在。但纵然我们没有矿池,协定也可以针对这类状况举行响应的优化。
就比如说,我们可以勉励矿工群集起来,组建肯定数目的矿池,详细的要领就是依据每一个矿池的哈希算力赋予挖矿嘉奖,从而会聚成统共 N 个矿池。如果我们想要约莫 20 个矿池,那末关于占有全网哈希算力 5% 的矿池,挖矿嘉奖最高(4 ETC)。
如果矿池的算力多于/少于这个值,那末矿池取得较低的嘉奖,盈余的嘉奖将依据其他矿池的哈希算力分配给他们。因为我们终究为每一个区块创建了雷同数目的挖矿嘉奖(在这类状况下为 4 ),因而它并不会转变钱银政策中定义的流畅中的总钱银。鼓励步伐须要准确完成,以便矿工根据我们的主意群集。
这里要提示开发者以下,纵然一个人具有 5 个矿池,每一个矿池都控制全网 5% 的哈希算力,这也没有问题,因为它增强了矿池的前后一致性,从而为我们供应了分外的安全性。
如果已存在矿池,就比如说当下的以太坊典范,那末如果须要,也可以在稍后阶段实行。
其他大概的矿池前后一致性定义
矿池前后一致性公式可以实行以下操纵。
基于矿池数据和类似剖析的线性回归。
责罚哈希算力的增进(不管是对零丁的矿工照样对全部收集)。对收集责罚的主意是,如果没有歹意区块链,那末对每一个人的责罚都是雷同的,如果存在一个想要抢占先机的歹意区块链,那末它将遭到更多的责罚。因为区块时候戳多是捏造的,因而仅从区块链数据中很难给出如许的客观分数。
如果单独挖矿的矿工或矿池在给定的区块窗口内过快地增添发掘区块的比值,则给他们“超速罚单”。
对矿工的数据举行统计剖析。
协定级矿池的矿池前后一致性示例
假定我们有一个区块链,它具有内置的鼓励机制,用于让每一个矿池的哈希算力收敛到全网的 1% ,从而构成统共约 100 个矿池。
为了使矿池可以对矿池前后一致性指数做出孝敬,它须要在末了 3000 个区块上以约莫 1% 的哈希算力举行一致地发掘。矿池前后一致性指数将是经由历程此规范的矿池的比值。
比如说,如果末了 100 个区块由 50 个差别的矿池挖出,则矿池前后一致性指数将即是 0.5 ,因而孝敬 0.5 难度。
在这类状况下,如果进击者想要举行进击,他须要挖末了 3000 个具有差别矿工地点的区块中的 50% 才入手下手取得与主链雷同的矿池前后一致性指数。除此之外,我们还可以对矿池发“超速罚单”。
假定我们有 100 个具有雷同哈希算力的矿池,我们也可以做一些统计剖析。一切矿池都具有雷同的“被挑选”的几率,这意味着我们可以盘算末了 100 个区块状况的大概性,假定它们是随机挑选的,那末我们可以对效果不太大概发作的事宜举行责罚。
写在末了
说了这么多,我并非说人们应当转变他们的共鸣算法,而是应当有一个很好的理由来推动共鸣算法的革新,而且在斟酌任何更改之前都应当很好地研讨替换计划。
这只是我对共鸣算法革新的一些思索,我的主意能下降收集51%算力进击发作的大概性。
不管如何,矿池将成为区块链收集的一部分,所以为何不物尽其用来为区块链增添安全性呢?
我们依然可以将这类要领看做一种最长链机制,差别之处在于我们转变了丈量区块链长度的体式格局。我更喜爱于人们运用更通用的形貌,比方最大区块链评分划定规矩。
愿望这篇文章能对你有协助。关于应用矿池削减51%进击的尝试,你有什么主意,连忙留言通知营长吧~
作者 | phyro — Tomaz Kariz
译者 | Guoxi
出品 | 区块链大本营(blockchain_camp)
比特币:www.btcmoney.cc
比特币; https://www.btcmoney.cc/detail/23340.html
加入新手交流群:每天早盘分析、币种行情分析
添加助理微信,一对一专业指导:chengqing930520
上一篇:
不惧狂跌 区块链资产仍获大型资管公司喜爱
下一篇:
CSW又出幺蛾子:我能够摧毁匿名币
加入新手交流群:每天早盘分析、币种行情分析,添加助理微信
一对一专业指导:chengqing930520
最新资讯
提供比特币数字货币以太坊eth,莱特币ltc,EOS今日价格、走势、行情、资讯、OKEX、币安、火币网、中币、比特儿、比特币交易平台网站。
2021 数字货币 网站地图