一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于在工作量证明区块链网络上进行非并行挖掘的系统和方法与流程

2022-02-20 12:32:54 来源:中国专利 TAG:


1.本公开总体涉及用于提高在网络内执行的计算任务的处理效率、可靠性、安全性和资源要求的方法和系统。本发明特别适合但不限于在区块链相关的挖掘、验证和资源转移方面使用。


背景技术:

2.在本文中,“区块链”一词涵盖所有形式的基于计算机的电子分布式分类账。这些分类账包括基于共识的区块链和交易链技术、许可和非许可的分类账、共享分类账、公共和私有区块链,及其变型。虽然已提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币分类账。为了方便和说明的目的,在本文中可能会提及比特币。但应注意,本公开不限于与落入本公开范围内的比特币区块链以及替代的区块链实施方案和协议一起使用。在本文中,“用户”一词可指人员或基于处理器的资源。在本文中,“比特币”一词可包括源自或基于比特币协议的任何版本或变型。
3.区块链是一种点对点的电子分类账,其实现为基于计算机的去中心化分布式系统,所述系统由区块组成,而区块又由交易组成。每笔交易是一种数据结构,所述数据结构对所述区块链系统中参与者之间的数字资产/资源控制权的转移进行编码,并且包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值,因此区块被链接在一起,以创建自所述区块链创建以来写入其中的所有交易的永久性的不可更改的记录。交易包含嵌入到其输入和输出中的小程序,称为脚本,这些脚本指定如何以及由谁访问所述交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
4.为了将交易写入所述区块链,其必须是“被证实的validated”。网络节点(“矿工”)确保每笔交易均有效,而无效交易则被网络拒绝。安装在所述节点上的软件客户端通过证实未花费的交易是否符合区块链的协议规则,以及通过执行锁定和相应的解锁脚本,对所述未花费的交易执行此验证工作。如果所述锁定和解锁脚本的执行评估为true,则所述交易有效。因此,为了将交易写入所述区块链,所述交易必须:i)由接收所述交易的第一节点进行证实,如果所述交易通过证实,则挖矿节点将其中继到网络中的其他节点;ii)添加到由矿工建造的新区块中;iii)进行挖掘,即添加到过去交易的公共分类账中。
5.为了建造新区块,矿工通过执行资源密集型工作来竞争,其目的是第一个找到计算的解决方案(工作量证明,也称为“pow”或“随机数nonce”),这在本领域也可以被称为难题puzzle或挑战challenge。所述难题的难度可以随着时间的推移进行调整,以影响向所述区块链添加新区块的速率。这是使用可改变的难度参数来执行的,该困难参数影响找到该解决方案的困难程度,使得该协议可以在网络的哈希通证(hash power)改变时以相对一致的速率来维持新的块之间的平均时间。在比特币中,矿工使用sha256哈希算法来查找pow,所述pow在哈希时产生的哈希值低于或等于由网络协议设置的当前难度级别(参数)。
6.如果某个矿工是第一个找到当前难题的pow的矿工,则该矿工就会生成一个新区
块,然后将该新区块以消息广播给网络上的其他矿工。如果其他矿工要接受该新区块为有效,该新区块必须包含可验证的pow。因此,挖掘提供了一种共识机制,所述共识机制确保网络上的节点在所述区块链的合法和当前状态方面同步和一致。此外,所述共识机制还可以防御某些类型的潜在网络攻击,从而为网络提供安全保障。
7.在比特币的早期,挖掘的计算要求足够低,以至于矿工可以使用由标准cpu组成的通用计算机。然而,拥有性能较高的计算机的矿工比拥有性能较低的计算机的矿工更具竞争优势。这种激励,再加上难题难度的历史性增加,导致了专用集成电路(asic)挖掘设备得到广泛使用。此外,还可以将多组asic设备链接在一起,以分担查找pow解决方案所涉及的工作。在这种情况下,可以使用不同的机器来尝试不同的pow随机数或其范围。因此,可以跨设备并行化挖掘算法。
8.然而,功能越强大的设备成本越高,运行和冷却所需的能源也越多。一些人还认为,硬件不平等会促进挖掘能力在网络内潜在集中,从而导致可能的缺陷或漏洞。这些问题引发了人们对开发“抗asic”挖掘解决方案的兴趣。然而,所提出的解决方案包括修改pow算法,以将抗冲突sha256哈希算法更改为所谓的“带宽困难”函数,但成功有限或有争议。
9.因此,还需要解决(至少)这样的技术挑战,即如何保持区块链网络上的竞争节点提供的共识机制和安全性,同时降低所需的成本、能量使用和计算资源,并保持去中心化网络的优势。
10.本公开通过提供包括使用非并行共识机制的非并行挖掘(npm)技术、硬件和软件布置、联网技术和方法及其组合的各方面和实施例,至少解决这些技术问题。本公开可以使用固有顺序算法来为区块链的状态提供安全性并建立共识。
11.在本文中,“顺序算法sequential algorithm”一词是指必须按从开始到结束顺序执行的算法,而不需要并行执行其他处理。示例包括数值迭代方法,例如牛顿法(lipson,john d.,“牛顿法:一种伟大的代数算法”,《第三届acm符号与代数计算研讨会论文集》,acm,1976年),以及可以在数学上使用递归公式表示的算法。
12.在本文中,“固有顺序inherently sequential”(或如本文还可能提到的“非并行non-parallelisable”)算法是指不能使用可并行例程/子例程优化的顺序算法。应该注意的是,该短语在技术领域内没有严格定义,尽管在本文中使用的定义与文献(greenlaw,raymond.,“一种将算法归类为应用于图形搜索的固有顺序算法的模型”,《信息与计算》,97.2(1992年):第133-149页)中存在的术语和定义的直观用法兼容(参见下面在“难度可调挖掘函数”中的详细描述)。


技术实现要素:

13.参考图1,本公开提供了用于区块链挖掘的替代和改进系统和方法。非并行挖掘函数或算法用于挖掘要添加到区块链分类账中的多个区块链交易(utxo)。
14.总而言之,这可以通过以下步骤实现:
15.[步骤1]:从多笔交易(utxo)中识别一笔或多笔交易(utxo)。该多笔交易可以是根据与区块链、区块链协议和区块链网络相关联的区块链协议提供的内存池。在一个或多个实施例中,这是工作量证明区块链/协议/网络
[0016]
[步骤2]:根据协议生成奖励交易(tx0)(如果适用)
[0017]
[步骤3]:生成选择的交易(即区块)的表示r
[0018]
[步骤4]:使用非并行挖掘算法来提供计算输出c,其是区块的计算证明解决方案。这也可以称为工作量证明解决方案
[0019]
[步骤5]:向区块链网络上的一个或多个节点发送消息,该消息包括表示、解c和tx0(如果适用)
[0020]
[步骤6]:接收到消息后,网络节点尝试验证区块。如果经过网络上大多数矿工的验证,区块会被添加到区块链中;否则会被拒绝并且不会添加到区块链中。
附图说明
[0021]
现将仅通过举例的方式并参考附图对本公开的方面和实施例进行说明,其中:
[0022]
图1是示出本公开的一个实施例的概况的流程图。
[0023]
图2是示出可实现各个实施例的计算环境的示意图。
具体实施方式
[0024]
现在描述本公开的一个方面,其包括用于按时间排序的公共交易数据分类账的广义结构,其可以称为非并行挖掘(npm)区块链。它包括以下元素:
[0025]
i.交易,其存在于区块中;
[0026]
ii.区块,其由多组交易组成;
[0027]
iii.加密链接,其位于区块之间。
[0028]
结合在一起时,这些元素组合形成区块链分类账,由此所有交易数据聚集到标准形式的区块中,使得连续的区块彼此相关,从而通过包含指向上一区块的加密链接(例如,哈希值)来形成链。
[0029]
说明性实施例的组成部分
[0030]
现在将描述可根据本公开的一个或多个实施例使用的组成部分,以及在本文中用于指代这些组成部分的术语。
[0031]
区块链交易(tx)是一种标准化数据结构,用于对某些数字资产或资源从第一方到第二方的转移进行编码。在高层次上,每笔交易都包括输入和输出。交易的各项输入均指定以下信息:
[0032]
i.指针,其指向指示存在数字资产的记录,即分类账上的先前输出
[0033]
ii.授权发送者(即第一方)转移资产所有权(即花费资产)的必要解锁条件。这通常是数字签名,或仅对第一方已知的密钥。
[0034]
交易的各项输出均指定以下信息:
[0035]
i.接收者(即第二方),向其转移数字资产所有权。
[0036]
ii.一个或多个锁定条件,其指定接收者随后如何解锁数字资产,从而“花费”数字资产。
[0037]
为要记录在区块链分类账上的每笔交易分配唯一标识符。在本文中,将选择用于一个或多个说明性实施例的标识符称为交易标识符。标识符是交易tx和第二参数x的哈希值,
[0038]
y(tx,x)=h(tx||x)。
[0039]
参数x是上一区块的哈希值。交易还包含时间戳t
tx
,其取决于交易的首次创建时间,而不是矿工/网络节点首次看到它们的时间。
[0040]
此外,每笔交易都包含一个时间戳,用于表示交易创建时间。本公开中描述的区块链实施例使用的非并行挖掘算法使用带时间戳的交易。
[0041]
奖励交易记为tx0,是每个区块中的第一笔交易,并将新铸造的npm币分发给第一名产生有效区块的矿工。如上所述,奖励交易在结构上与标准交易相同,不同之处在于奖励交易只能具有一个输入。这是因为挖掘区块的总奖励被解释为标准区块奖励和交易费用的组合。这意味着不需要通常意义上的“输入”,因此其输入的字段为空,并且可用于存储任意数据。还应当注意,一般而言,奖励交易不需要时间戳,因为它始终是区块中的第一笔交易。
[0042]
区块(b)是聚集一组交易并附加到公共区块链数字分类账中的标准化数据结构。在高层次上,每个区块包括标准交易集s、单笔奖励交易和区块头。交易集s是包括在区块中的n笔交易的完整集合,写为
[0043]
s:={tx1,tx2,

,txn}。
[0044]
奖励交易tx0是可以包括在每个区块中并用于奖励负责将该区块附加到区块链中的矿工的交易。该交易不被视为交易集s的一部分,即使它们都包含在同一区块中。应当注意,根据一个或多个协议,一旦达到预定挖掘阈值,奖励交易可以不包含在区块中,或者可以停止包含在区块中。
[0045]
区块头φ可以包括与其包含的交易区块相关的许多数据字段,如区块编号、区块添加到区块链的时间或所使用的区块链协议规则的版本。但是,必须出现在区块头中的关键元素包括:
[0046]
i.加密链接x;
[0047]
ii.tx0和交易集s的表示r:=g(tx0,s),其中g是算法;
[0048]
iii.挖掘算法的计算解
[0049]
iv.区块时间戳tb[0050]
算法g的要求是,必须将区块中的整个交易集s加上奖励交易tx0作为输入,并且必须返回可用于表示这n 1笔交易的单个值r。g的适当选择是merkle树生成算法,其中r将对应于merkle根。
[0051]
加密链接可以采用多种形式中的一种,例如数字签名或哈希摘要。在本文中,出于说明性目的,以及为了便于引用,将加密链接x视为上一区块头的哈希值。
[0052]
计算解(或c)是将被解释为非并行挖掘技术/算法的输出的值。该解必须在区块添加到区块链中之前计算,并且表示计算证明,在没有计算证明的情况下,任何区块都不能被视为是有效的。本文中所描述的poc解决方案可以被视为类似于比特币pow难题解决方案或“随机数nonce”。在本文中,还可以将其称为c。该poc解决方案是由实现本公开的实施例的节点解决的计算困难但确定性难题的全局解决方案。
[0053]
为了以有意义的方式连接区块,使它们形成一个不可变链,需要一种将一个区块链接到下一区块的方法。这是通过在区块与其直接前身之间构建加密链接x来实现的。此类加密链接所需的属性如下:
[0054]
i.每个链接必须是单向的。
[0055]
ii.每个链接必须正好连接两个区块。
[0056]
iii.每对连接的区块必须连续出现在区块链中。
[0057]
这些特征形成了选择加密链接x作为上一区块头的哈希值的基础,定义如下
[0058]
xi:=h(φ
i-1
),
[0059]
其中索引i代表区块编号。这里,还用h代表单向加密哈希函数。每次构建新区块时,新区块必须在其自己的区块头φi内包含上一区块头h(φ
i-1
)的哈希值。在本文中,术语“上一区块”表示已成功附加到区块链中的最新区块。这意味着每个新区块都会按顺序直接连接到最后一个区块,依次通过链返回,直到达到第一个区块b0。
[0060]
管理npm区块链状态的规则称为其协议规则。这些规则可以概括为:
[0061]
i.交易的格式;
[0062]
ii.区块的格式;
[0063]
iii.交易证实规则;
[0064]
iv.区块证实规则;
[0065]
v.如何将新区块附加到分类账中(通过挖掘过程)
[0066]
交易证实
[0067]
根据协议规则,在大多数情况下,有效的交易必须是可接受的标准格式。
[0068]
交易的一般规则如下
[0069]
·
输入的总值必须大于或等于输出的总值
[0070]
·
交易时间戳必须小于或等于区块时间戳
[0071]
根据本文中所公开的npm区块链系统的实施例,无需强加进一步的条件以确保交易有效。然而,npm区块链的一个或多个实施例可能需要可强加于交易的附加证实规则,诸如每笔交易的最大大小或最大转移或数字资产、对输入/输出的数量的限制以及对输入和输出数据的要求,从而可以适当地建立数字资产所有权。
[0072]
区块证实
[0073]
有效的区块必须包含:
[0074]
i.正好n个标准交易的集合s:={tx1,tx2,

,txn};
[0075]
ii.正好一个奖励交易t0;
[0076]
iii.指向上一区块的有效加密链接x;
[0077]
iv.表示r,与交易集s和tx0一致;
[0078]
v.计算c的有效证明。
[0079]
如果区块满足所有这五个标准,该区块就是有效区块,并且可以附加到区块链中。应当注意,在任何给定的时间,可能存在多个有效的候选区块,不同之处仅在于奖励交易以及向谁支付挖掘奖励。当多名矿工独立计算正确的poc证明c时,就会出现这种情况。
[0080]
挖掘过程的作用是确定将这些许多候选区块中的哪一个区块(来自每名获胜矿工)附加到区块链中。简而言之,始终会有“第一个”找到计算证明c的矿工,该矿工的区块和奖励交易根据协议的挖掘算法附加到区块链中。现在,将注意力转向讨论可由本文中所公开的npm挖掘节点和npm区块链的实施例使用的非并行挖掘(npm)方法。
[0081]
非并行共识机制
[0082]
本公开的实施例采用挖掘技术来以分散的方式就区块链的状态达成共识。实现该
技术的节点使用非并行(也称为固有顺序或“令人尴尬的顺序”)算法来向区块链添加新区块。此外,还会定期就区块链的状态达成共识。
[0083]
这确保了整个网络可以使用抵抗并行计算的算法就新区块达成共识,至少避免了上述技术困难。反过来,这又使得任何挖掘实体或群组都很难通过cpu集群或硬件不平等来增加网络的优势(以及由此产生的潜在控制)。
[0084]
非并行挖掘方法要求网络上的所有矿工竞相成为第一个找到候选区块的poc解决方案的矿工。这些节点采用至少包含以下要求的协议规则:
[0085]
1.矿工尝试在区块中找到正好n笔交易,其中n是预定常量;
[0086]
2.矿工尝试在每个周期内挖掘相同的候选区块;
[0087]
3.挖掘周期时间:
[0088]
a.挖掘周期时间的期望值始终大于区块证实时间;
[0089]
b.挖掘周期时间存在随机变化;
[0090]
4.网络延迟足够低,如下面更详细讨论的达成预先共识
[0091]
矿工需要就应包含在其候选区块中的同一组交易达成共识。换句话说,他们就要包含在候选区块中的交易的集合和顺序达成共识。为了实现这一点,节点至少实现以下规则:
[0092]
·
每笔交易在创建时附加时间戳。
[0093]
·
所有交易都按其时间戳排序。
[0094]
·
该协议能够识别由每个候选区块的时间戳表示的时刻。该时间戳称为区块bi的时间戳
[0095]
为了防止恶意用户选择远远早于实际时间戳的时间戳,根据本发明实施例的协议要求,如果任何交易的时间戳早于已经记录在区块链上(即已经添加到区块链中)的上一区块时间戳,则节点拒绝这些交易。这可确保所有矿工在他们的候选区块中具有相同的交易集,但不包括奖励交易(可以被视为类似于coinbase比特币交易)。
[0096]
公共交易集
[0097]
根据一个或多个实施例,网络上的所有挖掘节点具有要包含在下一区块中的相同交易集(动态内存池)。这可确保所有矿工尝试挖掘包含相同交易(奖励交易除外)的区块。这至少需要满足以下条件:
[0098]
·
每笔交易在创建时附加时间戳。
[0099]
·
所有交易都按其时间戳排序(全局交易排序)。
[0100]
·
时间戳早于t
bi
的所有交易都必须包含在区块bi中。
[0101]
在每个区块bi中挖掘的交易数量ni等于在与(预期区块生成时间)之间看到的(和证实的)交易的总数。下面将进行更为详细的说明。
[0102]
这些条件使得能够建立网络共识。为了防止恶意方选择早于实际时间戳的时间戳,该协议要求拒绝时间戳早于上一区块的时间戳的任何交易。这可确保所有矿工在他们的候选区块中具有完全相同的交易集,但不包括奖励交易。
[0103]
难度可调挖掘函数
[0104]
难度通过对挖掘函数执行的运算次数来衡量。标准挖掘函数可以定义为:
[0105]
f(y1,

,yn,x,t)
[0106]
其中,{y1,

,yn}是n笔交易的标识符的集合,x是上一区块的哈希值,t是包含在区块头中的难度参数。本文中所公开的挖掘协议或函数的主要特征包含:
[0107]
·
非并行算法:该算法需要计算只能按顺序而不是并行执行的中间输出;中间输出的计算采用作为上一次中间计算的输出的输入,并将其结果/输出提供给下一次中间计算。可能会重复执行此操作,直到遇到停止条件
[0108]
·
使用整数参数t的可调计算难度
[0109]
·
输入包含交易标识符/区块头哈希值和难度参数
[0110]
·
计算f需要算术运算的目标次数k
[0111]
非并行算法的典型示例是递归公式,其中函数的输出用作同一函数或另一函数的下一实例化的输入。另一示例是模幂运算或重复平方运算—请参见ronald l.rivest、adi shamir和david a.wagner所著的“时间锁定难题和定时释放加密”(1996年)。
[0112]
以下是同时使用递归和模幂运算的算法的示例:
[0113]
给定{y0,

,yn},
[0114]
计算
[0115][0116]
对于从0到n-1的i,计算
[0117][0118]
其中,该算法的执行得出y
ns
。在这种情况下,挖掘函数可以简洁地写为
[0119]
f(y1,

,yn,x,t)=y
ns
[0120]
挖掘运算目标
[0121]
全局交易集和挖掘函数要求矿工执行k次算术运算,其中
[0122]
k=k(n,t)
[0123]
这可确保区块生成时间tg是一致的,并且可以由网络控制。假设f是具有n次递归的函数,k在n中是线性的,难度参数t是可调的且不直接依赖于交易,从而可以得出很大范围的k值。
[0124]
例如,如上所述使用f,假设难度t=1000。然后,计算f需要为每个y
is
执行2x1000=2000次重复平方运算,因此k=o(2000n)。或者,如果t=1,则k=o(2n)。t是可调的并且包含在区块头中。
[0125]
实施例1:每个区块的最大交易数
[0126]
挖掘技术的一种实现方式在一个区块中最多需要n笔交易,其中n是常量值。通过确保n固定不变,仅通过t就可以控制k的可变性。
[0127]
值得注意的是,矿工也不会被激励在一个区块中包含超过n笔交易,因为这会增加他们的计算时间,并降低他们成为第一个成功挖掘该区块的矿工的概率。
[0128]
伪交易标识符
[0129]
在内存池中可用交易的数量低于n的情况下,可以定义伪交易标识符。假设内存池中交易的总数为n(n≤n),交易标识符为y1,

,yn。创建一系列伪交易标识符,作为使用yn作
为种子生成的哈希链
[0130]yn i 1
=h(y
n i
||x)。
[0131]
然后,这些伪交易标识符将与挖掘函数中的标准交易标识符一起用作输入。应当注意的是,伪交易标识符只能按顺序生成。
[0132]
实施例2:每个区块的可变交易数
[0133]
另一实现方式通过确保每个区块的固定不变来得出可变的n值。在这种情况下,为了有效地控制k,t必须依赖于n,即
[0134]
k=k(n,t),t=g(n),
[0135]
其中g是n的简单函数。因此,不需要计算伪交易标识符。然而,为了处理很大范围的交易量,t可能因区块而异。
[0136]
网络延迟
[0137]
优选地,网络延迟可以忽略不计或相当接近零。这意味着从一个挖掘节点发送到另一挖掘节点的消息将在短时间内在整个网络中传播。更具体地,消息传输时间应远远小于比矿工之间的方差挖掘周期时间,
[0138]
网络延迟<<σ2(tg),
[0139]
其中σ2(tg)是网络的区块生成时间方差。请记住,该方差仅仅是矿工之间顺序计算速度的差异。需要可能的是,如果第一矿工(爱丽丝alice)在第二矿工(鲍勃bob)之前成功获得计算证明解决方案(由于挖掘周期方差),则爱丽丝需要能够在足够短的时间内将其解决方案传播给鲍勃,使得鲍勃不太可能在接收爱丽丝的解决方案消息之前找到该解决方案。
[0140]
挖掘周期
[0141]
构建候选区块-矿工爱丽丝
[0142]
参考图1,假定在步骤1,爱丽丝在其内存池中收集在该时间间隔内创建的所有交易,例如{tx1,

,txn},
[0143][0144]
其中e(tg)是网络上区块的预期区块生成时间,如上所述。将称为区块bi的交易时间窗口。
[0145]
设置很大范围的交易时间允许区块生成时间存在波动。假设bi的区块时间戳将低于交易时间窗口上限,即
[0146][0147]
在区块生成时间超过3e(tg)的情况下(极不可能),网络不能在时间范围内排除/转发交易。
[0148]
然后,她执行如下操作:
[0149]
2.步骤2:爱丽丝构建奖励交易tx0。应当注意的是,该步骤是可选的,因为奖励交易可能并非始终包含在区块中。
[0150]
3.步骤3:爱丽丝计算区块中除奖励交易(如果包含一笔奖励交易)之外的所有交
易的表示r
[0151]
4.步骤4:爱丽丝通过执行非并行挖掘技术的实施例来挖掘区块,例如:
[0152]
a.计算xi=h(φ
i-1
)。
[0153]
b.
[0154]
c.对于i,从2到n
[0155]
i.计算yi=h(txi||x)。
[0156]
ii.计算
[0157]
5.步骤5:爱丽丝设置c=y
ns-区块的计算解
[0158]
6.步骤6:爱丽丝将h(c)、tx0和传播到网络。她通过向节点发送计算证明(poc)消息来实现这一点。
[0159]
7.步骤7:挖掘节点测试爱丽丝提供的poc c;如果npm网络认为爱丽丝的区块正确和有效,则将爱丽丝的区块添加到npm区块链中。
[0160]
应当注意的是,为了清晰起见和便于理解,使用了上述示例性挖掘函数。然而,一般而言,步骤2是执行f以找到计算证明c。
[0161]
验证
[0162]
为了验证h(c),矿工必须找到计算证明解决方案c。接收到爱丽丝的poc消息后,其他矿工将继续工作以找到自己的解决方案。一旦矿工找到自己的解决方案,他就可以将其与爱丽丝的解决方案进行比较,以验证其c版本。为此,该矿工通过添加爱丽丝的奖励交易并将区块头的哈希值与h(bi)进行比较来构建爱丽丝的区块,从而实现这一点。如果哈希值与h(bi)相等,鲍勃将丢弃所有其他计算线程,并继续计算假定爱丽丝的区块正确的线程。如果哈希值与h(bi)不相等,鲍勃将找到与哈希值匹配的下一接收到的ym值线程,并从该线程继续。
[0163]
鲍勃被激励和爱丽丝一样尽快挖掘新区块,否则爱丽丝将能够产生最长的链来获得所有奖励。
[0164]
挖掘循环时间
[0165]
区块生成时间
[0166]
区块生成周期时间是某名第i名矿工使用所提出的挖掘函数f生成区块所花费的时间,记为区块生成时间是给定矿工为候选区块计算正确的计算证明c所花费的时间。
[0167]
假设该周期时间是一个连续、正态分布的随机变量。挖掘周期时间的期望值、方差和标准差分别记为如下
[0168]
e(tg)、σ2(tg)、σ(tg)。
[0169]
区块生成时间是挖掘技术的一个参数,这意味着期望值可以根据实现方式缩放至持续时间。例如,可能希望在一个实施例中设置e(tg)~10分钟而不是在另一实施例中设置e(tg)~1分钟。在任何情况下,根据该组不等式,通过增加在挖掘技术中执行的运算次数m来缩放期望时间
[0170]
e(tg)

m,
[0171]m∝
n,m

t,
[0172]
其中n是区块中的交易数,t是难度参数。
[0173]
区块证实时间
[0174]
考虑两名矿工ma和mb,他们尝试挖掘同一候选区块。这些矿工成功开挖掘该区块所花费的观察时间分别记为和它们都受上述定义的正态分布控制。
[0175]
对于给定周期,如果则ma是根据定义成功挖掘候选区块的第一名矿工。一旦第一名矿工ma通过计算和广播其计算证明ca成功挖掘了给定区块,第二名矿工mb(和所有其他矿工)通过独立完成挖掘周期并证实ma提供的证明等于其独立计算的证明cb来验证该区块。当且仅当cb=ca,第二名矿工会将该区块视为有效。第二名矿工mb执行该证实过程所花费的时间表示为或者在一般情况下,任何第j名矿工对第i名矿工的区块执行证实所花费的时间记为
[0176]
对于足够大的矿工网络,可以假设区块证实时间也是正态分布随机变量,因为它可以构建为两个独立的正态分布随机变量和的组合,并且它们的期望值、方差和标准差是相同的。因此,区块证实时间的期望值、方差和标准差由以下关系给出:
[0177][0178]
假定e(tg)的3个标准差内存在99.7%的可以得出近似值
[0179][0180]
假定上述最小生成时间,预期区块时间可以计算为
[0181][0182]
和标准差
[0183][0184]
这意味着证实时间的范围为
[0185][0186]
这可以视为在按最坏情况限定证实时间:
[0187]
(i)ma首先完成挖掘算法,然后mb尽可能晚地完成算法[rhs条件];和
[0188]
(ii)ma随时完成挖掘算法,mb稍后完成算法[lhs条件]。
[0189]
因此,在本公开中的挖掘算法的一个或多个实施例中,区块生成时间尺度显著大于区块证实时间尺度可以看出,这是关于区块生成时间分布紧密性的假设,将假设写为
[0190][0191]
并使用定义区块证实时间的不等式将其重写为
[0192][0193]
因此,对于参与的网络节点,区块生成时间方差显著小于期望区块生成时间本身。在参考预期时间为e(tg(~10分钟的情况下,这是一个合理的假设,预期方差为几秒。
[0194]
在实践中,挖掘技术可能会产生以下三种常见场景之一。这些场景从诚实的矿工爱丽丝和鲍勃的角度进行了详细说明,他们分别获得了符号ma和mb。此外,还包括第三名恶意矿工mm(马洛里mallory),以说明矿工在典型的非并行挖掘周期中的行为和交互方式。
[0195]
场景1:爱丽丝是第一个成功挖掘并广播有效区块的矿工
[0196]
爱丽丝独立完成挖掘周期,而不知道已经成功挖掘任何其他区块,并将其区块传播到网络。
[0197]
爱丽丝首先从鲍勃那里接收有效区块
[0198]
爱丽丝从另一矿工鲍勃接收区块。她继续挖掘自己的区块,同时并行证实鲍勃的区块。
[0199]
应当注意的是,只有挖掘和证实是并行执行的

挖掘算法本身是非并行的。使用假设爱丽丝将能够在挖掘替代方案之前证实鲍勃的区块。
[0200]
爱丽丝首先从马洛里接收无效区块
[0201]
爱丽丝从恶意矿工马洛里接收区块。她继续挖掘自己的区块,同时并行证实马洛里的区块。应当注意的是,只有挖掘和证实是并行执行的

挖掘算法本身在任何时候是非并行的。
[0202]
dos攻击的可能性
[0203]
由于每次向矿工发送计算解时,矿工都需要打开新线程,因此可能会发起漏洞攻击,例如拒绝服务攻击。这可以通过应用某些规则或约束来解决:
[0204]
1.其他节点只接受每名矿工一条poc消息
[0205]
2.挖掘节点只能在网络上挖掘最后一个区块后经过足够长的时间后才能接受poc消息
[0206]
可以使用一个或多个已知的垃圾邮件防御来防止单个矿工被迫打开大量计算线程。
[0207]
本公开的说明性列举实施例:
[0208]
1.一种计算机或区块链实现(挖矿)的方法,所述方法包括以下步骤:
[0209]
使用非并行算法基于以下项来计算输出:
[0210]
计算难度参数;
[0211]
至少一个区块链交易的哈希值;和/或
[0212]
至少一个区块链区块头的哈希值。
[0213]
非并行算法可以称为顺序算法或固有顺序算法。输出可以是一个值。它可以是难题(或者,也可以称为“挑战”、“计算挑战”或“问题”)的解。它可以是函数或方法的输出。该算法可以由区块链网络的一个或多个节点执行。这些可能是挖掘节点。计算难度参数以及交易和区块头哈希值可以用作算法的输入。此外,还可以向算法提供其他输入。可以向区块链上的(一个或多个)节点提供输出。
[0214]
该方法可以描述为区块链安全方法、区块链挖掘方法、非并行共识机制/方法、区块链共识方法和/或区块链实现的区块生成方法。
[0215]
2.根据1所述的方法,所述方法进一步包括以下步骤:将所述输出或作为或包括所述输出的表示发送到区块链节点网络。所述输出的所述表示可以包括所述输出的哈希值。所述节点可以是区块链网络的挖掘节点。
[0216]
3.根据1或2所述的方法,其中用于获取所述输出的所述非并行算法可以包括以下运算中的至少一个:
[0217]
递归运算;
[0218]
模幂运算;
[0219]
重复平方运算。
[0220]
因此,npm算法可以包括和/或要求执行这些运算的一个、全部或某些组合。
[0221]
4.根据1至3的任意组合所述的方法,包括以下步骤:从一组区块链交易中选择至少一个区块链交易,其中基于在所述至少一个区块链交易中提供的时间戳来选择所述至少一个区块链交易。
[0222]
该组或“多个”区块链交易可以称为“内存池”。所述内存池可以如上所述布置和/或使用。所述内存池可以包括区块链交易,所述区块链交易包括至少一个未花费的输出(utxo)。同一内存池可以由所述区块链网络上的所有(挖掘)节点共享或访问。一个或多个所述节点可以具有自己的集合副本。
[0223]
5.根据4所述的方法,其中所述选择的至少一笔区块链交易可以包括可从所述区块链的状态推导或识别的时间戳。
[0224]
6.根据4或5所述的方法,其中所述选择的至少一笔交易可以包括晚于区块链上记录的区块或区块链交易的时间戳的时间戳。
[0225]
7.根据4、5或6所述的方法,所述方法进一步包括以下步骤:计算所述选择的至少一笔区块链交易的表示。所述选择的至少一笔区块链交易的所述表示可以是哈希值或可以包括哈希值。
[0226]
8.根据1至7的任意组合所述的方法,所述方法包括以下步骤:
[0227]
从第一区块链网络节点接收第二区块链网络节点处的所述输出的表示。所述方法可以进一步包括:验证所述第二区块链网络节点处的所述(接收的)输出。所述验证所述输出的步骤可以包括以下步骤:比较所述接收的输出(或其版本)与由所述第二区块链节点计算的验证输出,其中所述第二区块链节点使用与所述第一区块链节点相同的非并行算法和相同输入来计算所述验证输出。
[0228]
9.根据8所述的方法,其中所述验证所述第二区块链网络节点处的所述输出的步
骤可以包括:
[0229]
计算所述第二区块链网络节点处的所述输出;
[0230]
生成所述第二区块链网络节点处的所述输出的表示;
[0231]
比较在所述第二区块链网络节点处生成的所述表示与从所述第一区块链网络节点接收的所述表示。
[0232]
10.根据1至9的任意组合所述的方法,其中所述计算难度参数是影响、决定和/或控制由所述非并行算法计算所述输出所需的操作次数的值。
[0233]
11.根据1至10的任意组合所述的方法,其中所述非并行算法:
[0234]
i)需要计算一个或多个中间值以计算所述输出;和/或
[0235]
ii)不能由多个并行计算资源执行。
[0236]
12.根据1至11的任意组合所述的方法,所述方法包括以下步骤:生成包括一个或多个区块链交易的区块链区块。
[0237]
13.根据12所述的方法,所述方法进一步包括以下步骤:将所述区块链区块添加到所述区块链中。如上所述,为实现这一点,可以使用加密链接将所述新生成的区块与记录在(即添加到)区块链中的上一(最后)区块相关联。
[0238]
根据本公开的另一方面,提供了一种计算机实现的系统,所述系统用于执行在本文中所描述或要求保护的任何方法步骤或方法步骤组合。提供了一种区块链系统(网络),其包括多个计算机实现的节点,其中所述区块链网络中的每个节点包括:
[0239]
处理器;以及
[0240]
存储器,包括可执行指令,所述可执行指令由所述处理器执行时,使得所述系统执行本文要求或描述的计算机实现的方法的任意变体。
[0241]
所述网络可以用于使用如本文所述的区块链协议来操作。
[0242]
根据另一方面,提供了一种非暂时性计算机可读存储介质,其上存储有可执行指令,计算机系统的处理器执行所述可执行指令时,使得所述计算机系统执行本文要求或描述的计算机实现的方法的任意变体。
[0243]
现在转到图2,提供了可用于实施本公开的至少一个实施例的计算设备2600的说明性简化框图。在各种实施例中,计算设备2600可用于实现以上示出和说明的任何系统。例如,计算设备2600可配置为用作与支付服务或支付客户端实体相关的网络服务器、或一个或多个处理器、或计算设备,即,用于实现负责提供支付服务的主持端、或者用于实现支付端或收款端的支付客户端实体。因此,计算设备2600可以是便携式计算设备、个人计算机或任何电子计算设备。如图2所示,计算设备2600可包括具有一级或多级高速缓存的一个或多个处理器以及存储器控制器(统称为2602),所述存储器控制器可被配置为与包括主存储器2608和永久存储器2610的存储子系统2606通信。如图所示,主存储器2608可以包括动态随机存取存储器(dram)2618和只读存储器(rom)2620。存储子系统2606和高速缓存存储器2602可用于存储信息,诸如与本公开中所描述的交易和区块相关联的细节。处理器2602可用于提供本公开中描述的任何实施例的步骤或功能。
[0244]
处理器2602还可以与一个或多个用户界面输入设备2612、一个或多个用户界面输出设备2614和网络接口子系统2616通信。
[0245]
总线子系统2604可以提供用于使计算设备2600的各个组件和子系统能够按预期
的变体,将被理解为暗示包括所陈述的元件、整体或步骤、或元件、整体或步骤的组合,但不排除任何其他元件、整体或步骤、或元件、整体或步骤的组合。元件的单数形式并不排除此类元件的复数形式,反之亦然。本公开可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个装置的设备权利要求中,这些装置中的几个装置可以由同一硬件来体现。在互不相同的从属权利要求中引用某些措施的事实并不意味着不能有利地使用这些措施的组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献