通过混合和Multi-PoW挖矿实现加密货币共识

我碰巧参与了加密货币挖掘机制的开发,使您可以使用不同的哈希算法来构建区块链。 目标是使具有任何设备(ASIC,GPU,CPU)的矿工支持网络,覆盖网络参与者的所有可能受众。 在本文中,我将告诉您关于使用混合采矿进行比特币和其他一些加密货币采矿的结果。



在大多数加密货币中,除了奖励采矿和奖励是硬币发行的主要来源这一事实外,该机制最重要的功能是在网络参与者之间达成共识。 一条简单的法律可以确保共识-在分支一个区块链(分支)时,该链被认为是真实的,在构建过程中执行了最大数量的哈希(工作)。

要构建多混合挖矿,需要解决两个任务-为每种算法计算目标并找到一种比较机制,使您可以做最困难的事情-比较由具有不同算法的块组成的链,因此工作量也大不相同。


多混合挖掘是一个未定义的术语,在本文中用于表示几种算法上的挖掘证明(POW)。 在说英语和说俄语的加密社区中,公认的名称是Multi-PoW。 将以具有五种算法的Verge加密货币为例进行考虑。 混合采矿是一个普遍接受的术语,适用于使用POW和存款/权益证明(POS)存储的加密货币。 我们将以这种解决方案的先驱之一-Novacoin为例来考虑它。

要了解挖掘机制,您需要了解加密货币中的以下基本概念-工作和目的(目标)。 目标是一个数值,它定义适合在链中创建块的哈希的上限。 工作-统计上找到较小或相等目标的哈希值所需的平均搜索次数。

工作并对准手指
考虑一卷20面D&D立方体的示例。 我们将骰子分发给地球上的每个D&D玩家,并要求他们掷骰子。 骰子的一半将具有从1到10的值,第二个从11到20的值。假定对于游戏中所需的事件,该值应从1到10。让玩家继续滚动直到所有人抛出所需的值。 每次掷球时,剩余玩家的数量减半,事实证明,每个玩家的平均掷骰数将根据以下公式计算:

 operatorname\,= frac operatorname\,\, operatorname\,\,

假设地球上有5亿人在玩游戏,那么最“幸运”的玩家将不得不掷骰子约29次,但每位玩家的平均投篮次数将为2。该公式中的掷骰次数与哈希生成行为的次数相同并且与工作相对应。 因此,合适的哈希值的数量等于目标值+1。使用256位哈希的完整公式为:

work= frac2256target+1

比特币正好使用它,使用此公式的代码在此处在这里,工作用于达成共识-比较区块链分叉并选择最佳链。

目标的主要目的是设置为在给定的时间间隔内发生块释放时间的值。 对于比特币,间隔为10分钟。 比特币的目标重新计数每2016个区块进行一次。 为了设定新的目标,比特币确定平均哈希率-之前2016年区块每单位时间的网络工作量。 计算10分钟内的预期工作,并为其设定目标,为下一个2016年区块设置其价值。 对于比特币,考虑到先前的2016年区块的目标(以及工作)的相等性,在减少和近似后,目标的计算以相当简单的公式给出。

targetnew= frac2256worknext1= frac225610min cdothashrateaver1= frac2256 frac10min cdotwork2016time20161=

= frac2256 cdottime201610min cdot2016 cdot frac2256targetprev+11= fractime2016 cdot lefttargetprev+1 right10min cdot20161\大 fractime2016 cdottargetprev10min cdot2016



除加密货币外,目标,工作和哈希率(哈希生成速度)的任务还可以通过来解决。 该池不知道单个矿工的直接哈希值。 由于带宽限制和毫无意义,因此不可能获得所有哈希值-检查它们的成本就等于挖矿。 池接收来自矿工的响应,其目标不足以形成一个块,确定矿工在池中的份额,哈希率并为每个矿工设置这样的目标,以使来自矿工的响应不会占用所有流量。


玩家在100秒内以1卷/秒的哈希率投掷12个切面骰子的投掷图。 每个点是绘制面的值,右Y轴是落入目标的值的数量。 可以看出,目标2中有20个投篮-值为1和2的投掷是合适的,对作品的评估为20 * 12/2 = 120枪,对于目标6,作品的评估为53 * 12/2 = 106。在有足够统计数据的情况下,目标将获得接近参与者的工作和哈希值的准确值。

具有多种算法(例如池)的加密货币应评估参与者算法的哈希值,并选择一个目标,该目标将在块之间提供所需的时间间隔。 除间隔外,正确的目标计算机制还应提供区块链中不同块的适当份额。

值得一探历史,以了解在比特币之后发行的加密货币中计算目标的特征。 在破旧的年代,勇敢的altcoinstruction的先驱者采用了比特币代码,进行了最小的更改,并推出了“比特币杀手”。 甚至还有新的altcoin代码存储库的在线生成器。 这种方法导致了许多问题,其中一个涉及目标的计算,并且在以下情况下出现。 哈希率显着高于其他参与者的矿工与加密货币挖矿有关。 由于目标很少被重述,因此这样的矿工以非常短的间隔创建了区块,并设法在几个小时内创建了每周的区块数量,并因此获得了每周奖励。 到达要重新计算目标的区块后,矿工使用另一个哈希率合适的山寨币。 随着目标的增加,其余矿工无法在合理的时间生成一个区块,更不用说在重新计算目标并离开山寨币之前所有区块的生成。 区块链硬币最终停止了。 解决此问题的主要方法是重新计算每个块的目标。

乍一看, Novacoin中目标的计算与比特币中的计算没有太大不同。 Novacoin正确区分了POS和POW的计算。 在Novacoin中计算POS区块目标的最终公式如下

targetnew=targetlast cdot frac7day10min+2 cdottimepos intrerval7day+10min

与计算比特币的平均哈希值和对其的预测相比,这完全没有意义。 此公式中的任何统计信息都是间接涉及的-都一样,先前的目标值是根据区块链中先前结果的结果计算得出的。 总体上,该机制类似于驾车保持距离,间隔不到10分钟-我们松开油门踏板,更多-我们按一下。

POW的计算几乎相同,不同之处在于Novacoin要求POW和POS块使用不同的频率,并且计算间隔为10分钟至30分钟,具体取决于区块链中的位置。 您可以看到,如果网络急剧丢失其POW或POS哈希,则目标将保持有效,直到在挖矿机制上出现失去电源的新块之前。

Verge中的目标计算使用了Dark Gravity Wave机制,这是Kimoto Gravity Well提出的思想的发展。 无需深入研究所有这些方法的数学原理,毫无疑问,这些方法的目标就以诗名命名。它的目的之一是确保目标的转换足够快,以响应网络哈希率的变化。 尽管代码有些独创性,但其数学却可以归结为相当简单的公式。 Verge计算所选算法的12个块的平均目标,其中最后一个块被计数两次:

targetaver= frac2 cdottargetlast+targetlast1+...+targetlast1113

然而,立即出现的关于添加目标的合法性的问题具有数学上的理由。 产生的目标是谐波平均功的目标。

 frac13 cdottargetaver+12256= frac2 cdottargetlast+12256+ fractargetlast1+12256+...+ fractargetlast11+12256

其余的计算与通过比特币的平均哈希率进行的计算完全一致。

targetnew\大 fractime12 cdottargetaver0.5min cdot5 cdot12

值得注意的是,Verge中的哈希率是根据平均谐波功和算术平均时间计算得出的,因此,如果时间和功在相同的工具上使用,则该工具的不等式将具有较低的值。

在使用混合证明/算法的项目中计算目标的数学方法与比特币中的原始方法明显不同。 目标机制和工作的第二面是共识问题的解决方案-定义区块链分支,在发生争议时被视为真正的分支。 混合区块链的基本问题是,在对所有算法/证明使用块的总和进行比较时,无法进行选择。 显然,具有这种原始逻辑的算法/证据固有地具有更高的哈希率,将主导区块链。

在Novacoin中,尽管在注释和变量命名中使用了一定的信任度,但对逻辑的详细分析却仅是一项工作。 POS的计算与工作公式完全吻合, POW计算可以认为是在某种递减的常数系数下进行的 。 其余的其他计算看起来像是目标机制的其他平衡块顺序。 应当指出,这不是最佳解决方案。 如稍后所示,只有一个目标足以平衡块。 此外,具有公共父对象的POS和POW块可能不相等,尽管具有公共父对象的有效块的出现应定义为它们的相等性。

在考虑共识机制的当前状态之前,Verge将提供有益的信息,以回顾其过去。 在2018年春季,Verge幸存了几次攻击。 在不深入研究攻击机制的情况下,当时用于选择分叉的代码包含可疑的逻辑。 如果我们假设POW加密货币中的IsProofOfStake()函数可以返回真实值,则如上所述,添加不同的算法将导致哈希率较高的算法占主导地位。 否则,仅通过链的长度进行选择,如果链的长度正确地计算出目标(其目的是块的统一外观),则可以使分支的相等性,而实际完成的工作却非常不同。

当前代码中,Verge使用常数系数进行比较。 假设这些系数考虑到了采矿设备能力的某些相关性,那么这种选择的明显缺点就是新设备出现时相关性的丧失。

目标数学和工作的本机属性使我们能够在区块链上构建更简单,更易理解的计算模型。 考虑使用四种算法模拟区块链目标计算的模型和代码 。 让其中两个占据三分之一的街区。 为了简化建模,我们可以假定与上一个间隔最小的模块是构建电路的最佳模块。 在实际的加密货币中,这种选择对应于最常见的情况。 该模型还测试了一种算法的哈希率的增加和减少。

目标的计算将根据最后300个块的统计数据根据工作和时间的算术平均值计算得出。 最终计算公式:

target= frac2256k cdot60 cdothashrateaver1

其中k是应针对其计算目标的算法的一个块的间隔数。

让我们在表中汇总10,000个块的初始值和计算值。
算法1个234
哈希率4080指数<4000:20
4000>索引<6000:150
索引> 6000:20
100
间隔60
3333333316661666
工作24000000480000002760000060,000,000
我要指出,电路的计算值是通过以下公式计算的:

workalgo=hashratealgo cdottimeallblock

网络中的哈希计算是在所有算法的时间范围内进行的,而不仅仅是在各个算法的时间间隔内进行。 如同具有二十面立方体的示例一样-无论选择的目标如何,作品的评价都将相等。 为了进行计算,需要考虑系数k,该系数k用于通过散列率来计算新块的目标,并一直将其用于计算功。
算法1个234
间隔59595759
3306332016911683
工作23847014470854872702827260499076
如您所见, 仿真结果与根据源数据进行的计算非常吻合。

框图3850-4650

框图5599-6399

在工作随时间变化的图表上,可以看到当哈希率变化时,块的密度如何增加和减少。 原则上,这是一种逻辑上的行为,但是使用诸如“暗重力波”之类的技术对其进行调节也非常合适,因为它会增加最后一块以及其他块的影响。

关于从具有不同算法的块中确定派生共识的问题,值得注意以下基本属性-具有相同前一个块的块彼此等效。 他们的目标和绩效评估给予了平等参与链的权利。 这种观察立即导致了使用等价的想法-使用工作量,与目标比率不同的系数等。忽略所有这些想法的缺点,我们将继续进行最完全满足区块链要求的方法。

如果我们考虑所有块算法工作的几何均值预测,那么这些等效作业的总和就是比较分叉的最佳特征。

workequal= sqrt[k1]workalgo1 cdot sqrt[k2]workalgo2 cdot... cdot sqrt[kn]workalgon

其中k是算法的一个块必须落在的间隔数,为此计算目标。

此类等效工作具有以下属性:

  • 当所有算法的哈希率更改n次时,链共识估计也将更改n次
  • 通过增加其中一种算法的哈希率并在相等的挖掘份额中减少其他n次,链的共识估计将相等
  • 在相同比例的算法和相同算法的哈希率下,等效运算和任何算法的运算都将相等

等效的操作机制使在区块链上的攻击51大大复杂化。 通过哈希率表示的等效工作公式使您可以估计攻击的必要能力。

workequal= sqrt[k1]k1 cdott cdothashratealgo1 cdot sqrt[k2]k2 cdott cdothashratealgo2 cdot... cdot sqrt[kn]kn cdott cdothashratealgon

如果攻击者决定根据其中一种算法进行攻击,并且无法计算其余部分,则必需的哈希率将必须大大超过网络哈希率。
例如,在攻击表中,块之间的时间为60。假设攻击者在三种算法中只能提供50%的哈希率。
算法1个234相等
部分3366
净哈希率40802010011862
攻击者哈希率16040105011862

为了实现与网络的平等,根据第一种算法,他将必须具有比网络哈希率高4倍的哈希率。

下图显示了模拟对区块链的攻击的结果。



攻击从块1000开始。 两个分支在仿真中的等效作业总和略有不同,并显示了分支的相等性。

综上所述,可以注意到,具有混合算法/证明的加密货币中的共识机制可以在数学上被证明是合理的,并且这种加密货币更难以攻击51。

祝大家区块链快乐,并感谢您对本主题的关注。

Source: https://habr.com/ru/post/zh-CN455736/


All Articles