区块链系统、区块生成方法及计算机可读存储介质与流程

文档序号:16039925发布日期:2018-11-24 10:23阅读:202来源:国知局
本发明涉及区块链技术,尤其涉及一种区块链系统、区块生成方法及计算机可读存储介质,该区块链系统运行一种适用于移动网络及移动终端的共识机制。
背景技术
自从2009年比特币系统推出以来,以比特币及其衍生竞争币种为代表的去中心化加密货币受到了广泛关注。这种系统的特点是基于区块链构建分布式共享总账,从而保证系统运行的安全、可靠、去中心化特性。区块链目前分为三类,公有区块链、联盟区块链和私有区块链。公有区块链是最早的区块链,也是应用最为广泛的区块链。公有区块链的共识机制基本有三种。第一种共识机制是工作量证明机制,通过进行大量的sha256计算,找到一个特定的数值,使得包含该数值以及若干交易数据的新区块的hash值满足系统预设的条件。比特币采用该机制,以太坊目前也采用该机制。该sha256计算的工作量非常大,以至于需要采用专用设备,并且消耗大量的电力才能完成。计算量非常大的另一个副作用是,生成新区块的速度难以提高,目前比特币为平均每10分钟一个新区块。而且因为难度太大,只有少量的专业机构才能完成,形成了垄断,与区块链去中心化的初衷发生了背离。工作量证明机制的好处是安全,因为计算工作量太大,想要制造一个新的区块链转移其中存储的数字货币,变得完全没有可能性。第二种共识机制是资产证明机制,是对工作量证明的改良。思路是工作量证明的难度与节点持有的资产成反比,资产越多,工作量证明的难度越低,反之,资产越少,工作量证明的难度就越大。该机制实际上会导致资产持有人两极分化,持有资产越多,挖矿就越容易,资产就会更多,最后还是会形成垄断,形成中心,而且有失公平,但好处是可以降低挖矿难度,提高生成新区块的速度。第三种共识机制是资产授权证明机制。该机制中,每个节点可以将自己持有资产的记账权授权给第三方,最后由系统中获得授权最多的前若干个节点轮流进行区块链记账。该共识机制的好处是生成新区块的速度很快,但缺点还是存在垄断中心,由于记账人缺乏竞争机制,容易产生安全问题。以上三种共识机制都存在中心化趋势的缺陷,如何设计一种快速共识机制,既能提高交易速度,又不需要进行大规模的数学运算,既节能环保,还能去除中心化趋势,确保系统安全性,是区块链领域不断探索的技术课题。技术实现要素:本发明的目的在于提供一种区块链系统,其采用了构成点对点网络的第一节点和与第一节点构成中心化网络的第二节点,能够解决现有区块链系统存在的问题。本发明的第一方面提供了一种区块链系统,包括:多个第一节点,所述多个第一节点之间构成点对点网络;多个第二节点,每个第一节点与所述多个第二节点中的至少一个第二节点相连接,第一节点与所连接的第二节点之间构成中心化网络;其中,所述多个第一节点之间通过点对点方式收发数据,并且通过共识机制生成新的区块并对接收到的新区块的有效性进行验证,在所述共识机制中,通过预定的规则选择所述多个第二节点中的特定第二节点,该特定第二节点跟与其连接的第一节点协同生成新的区块,特定第二节点执行新区块的见证,第一节点执行新区块的发布。所述第一节点是固定节点,所述第二节点是固定节点或移动节点。优选地,所述多个第一节点在所述点对点网络中收集未被记录于区块中的交易信息,记录并维护交易信息,并且生成候选区块,并且所述第一节点存储有与之相连的所有第二节点的列表,当特定第二节点被选中时,与之相连的第一节点被授权将其生成的候选区块由特定第二节点签名后发布到所述点对点网络中,第一节点验证新收到的区块后,将其加到区块链主链中,所述多个第一节点均保存所述区块链主链。优选地,在所述共识机制中,根据所述区块链主链中最优区块的区块头哈希值、产生该最优区块时进行所述见证的第二节点的签名以及满足参与共识的条件的第二节点的地址,来筛选参与共识的第二节点,并且所述第二节点的地址需要具有符合规定条件的历史交易信息以及规定数额的账号余额。优选地,在所述共识机制中,比较sha256(witnessaddress)与sha256(bestblockheaderhash||signature||witnessaddress)的匹配位数,当达到预设的匹配位数时,判定该第二节点能够参与共识,其中,witnessaddress是第二节点的地址,bestblockheaderhash是最优区块头哈希值,signature是产生该最优区块时进行所述见证的第二节点的签名。优选地,当达到预设的匹配位数的第二节点为多个时,匹配位数多的第二节点具有优先见证权。优选地,当达到预设的匹配位数的第二节点不存在时,第一节点在等待规定时间后,允许降低所述预设的匹配位数,再次进行所述比较,直到存在达到预设的匹配位数的第二节点,或接收到其他第一节点发布的新区块为止。优选地,当特定第二节点被选中时,与之相连的第一节点将规定数量的历史区块中的交易信息摘要最为签名信息的一部分发送给该特定第二节点进行签名,作为账本维护的证明。优选地,与特定第二节点相连的第一节点在将候选区块加入所述区块链主链,并发布至所述点对点网络时,该第一节点要向所述区块链主链中的前4个区块的发布节点支付比例为4:3:2:1的费用,并且获得规定数额的奖励,由该第一节点与第二节点按比例分配。优选地,当所述区块链主链中某个区块之前的交易记录中不包含未花交易时,所述多个第一节点不再维护该区块之前的交易记录。优选地,特定第二节点地址匹配位数决定区块的权重,区块链权重为构成区块链的所有区块的权重总和,权重最大的区块链为区块链主链。本发明的第二方面提供了一种基于区块链系统的区块生成方法,所述区块链系统包括多个第一节点和多个第二节点,所述多个第一节点之间构成点对点网络,每个所述第一节点与所述多个第二节点中的至少一个第二节点相连接,第一节点与所连接的第二节点之间构成中心化网络,所述第一节点是固定节点,所述第二节点是固定节点或移动节点,所述多个第一节点之间通过点对点方式收发数据,该区块生成方法包括以下步骤:所述第一节点通过共识机制生成新区块并对接收到的新区块的有效性进行验证;其中,所述第一节点通过预定规则选择与其连接的所述多个第二节点中的特定第二节点,所述特定第二节点协同所述第一节点生成新区块,其中,所述特定第二节点执行新区块的见证,所述第一节点执行新区块的发布。本发明的第三方面提供了一种计算机可读存储介质,其存储有程序,所述程序被处理器执行时可控制包括多个第一节点和多个第二节点的区块链系统,所述多个第一节点之间构成点对点网络,每个所述第一节点与所述多个第二节点中的至少一个第二节点相连接,第一节点与所连接的第二节点之间构成中心化网络,所述多个第一节点之间通过点对点方式收发数据,所述第一节点是固定节点,所述第二节点是固定节点或移动节点,所述程序被处理器执行时控制所述区块链系统实现以下步骤:使所述第一节点通过共识机制生成新区块并对接收到的新区块的有效性进行验证;其中所述第一节点通过预定规则选择与其连接的所述多个第二节点中的特定第二节点,所述特定第二节点协同所述第一节点生成新区块,其中,所述特定第二节点执行新区块的见证,所述第一节点执行新区块的发布。代替工作量证明机制,本发明的区块链系统采用预设的规则无法预知地确定一对获得记账权利的第一节点、第二节点的机制,将移动终端引入到共识机制中,使系统的出块时间达到秒级,可有效提高交易处理能力。当前移动终端数量庞大,性能优异,本发明的区块链系统复用了移动终端这个巨量资源,代替pow机制中消耗的巨量电力资源,这样既可以达到节能环保的目的,又可以提高区块链的出块速度,提高交易处理能力,降低交易账本的维护成本。附图说明构成本说明书的一部分、用于进一步理解本发明的附图示出了优选实施方式并与说明一起用来说明本发明的原理。附图中:图1是根据本发明的区块链系统的第一实施方式的拓扑图。图2是根据本发明的区块链系统的第二实施方式的拓扑图。图3a和3b是根据本发明的区块链系统的第一实施方式中见证节点筛选的流程图。图4是根据本发明区块链系统的第一实施方式中的地址匹配难度调整的示意图。图5是根据本发明的区块链系统的第一实施方式中的地址匹配难度调整的流程图。图6是根据本发明的区块链系统中的第一实施方式中的区块权重分配的示意图。具体实施方式以下结合附图详细说明本发明的优选实施方式。在附图中,相同的部件用同一标号表示。图1是根据本发明的区块链系统的第一实施方式的拓扑图。如上所述,比特币为了解决双花问题,设计了工作量证明机制。工作量证明机制可以理解成增大攻击者的阻尼,降低攻击者的速度,使得攻击者在运算能力少于系统总算力51%的前提下,理论上赶不上系统生成区块的速度,从而无法改变区块数据。工作量证明机制在增加攻击难度的同时也不可避免地限制了区块的出块速度。为解决前文提到的比特币的缺点,本发明的区块链系统采用地址中奖机制代替工作量证明机制,例如将移动终端引入到共识机制中,使系统的出块时间达到秒级,可有效提高交易处理能力。当前移动终端数量庞大,性能优异,本发明的目标就是复用移动终端这个巨量资源,代替pow机制中消耗的巨量电力资源,这样既可以达到节能环保的目的,又可以提高区块链的出块速度,提高交易处理能力,降低交易账本的维护成本。在本发明的共识机制中,定义了一种加密货币作为流通货币。如图1所示,本发明的区块链系统的第一实施方式包括:多个第一节点10,所述多个第一节点10之间构成点对点网络;多个第二节点20,每个第一节点10与所述多个第二节点20中的至少一个第二节点相连接,第一节点10与所连接的第二节点20之间构成中心化网络。此处的中心化网络也称为集中式网络,其中,各个第二节点20都与第一节点10相连。多个第一节点10之间通过点对点方式收发数据,并且通过共识机制对数据的有效性进行验证,在所述共识机制中,通过预定的规则选择所述多个第二节点20中的特定第二节点,该特定第二节点跟与其连接的第一节点协同生成新的区块,特定第二节点20负责新区块见证,第一节点10负责新区块发布。第一节点10是固定节点,第二节点可以是固定节点或移动节点。图1中示出了5个第一节点10,每个第一节点10都连接有若干(图中为3个)第二节点20。在本发明的实施例中,区块链主要用于对交易进行记账,因此在本发明中,第一节点10也称为记账节点10,第二节点20也称为见证节点。这5个记账节点10彼此之间形成点对点网络。记账节点10主要由个人计算机或更大型的服务器组成,用于保存并维护区块链数据。另外,记账节点10还负责收集未被记录于区块中的交易信息,并对交易进行分类排序,生成新的候选区块。此外,记账节点10在发布区块的同时,还需提供其维护历史数据的证明,并由见证节点20和其它记账节点10一起来完成验证。如图1所示,在本发明的区块链系统中,每个记账节点10与所连接的若干见证节点20构成中心化网络。见证节点20主要由移动终端设备组成,其账户应具有一定数量的货币余额,并且在一定时间之前已有交易记录。与比特币网络中的spv节点不同的是,本发明的区块链系统中的所有见证节点20都有均等的机会参与共识过程并从中获得收益。本发明的区块链系统中使用交易地址来标识交易的发起者和接收者,每一个节点都应该至少包含一个交易地址,节点可以选择将交易地址公开或隐藏。通常见证节点20会公开一个地址,用于参与共识见证;而记账节点10也要公开一个地址,以协助见证节点20及其它记账节点10完成历史交易的验证。图1中的5个记账节点10在点对点网络中收集未被记录于区块中的交易信息,记录并维护交易信息,并且生成候选区块,并且每个记账节点10存储有与之相连的所有见证节点20的列表。当特定见证节点20被选中时,与之相连的记账节点10被授权生成并发布新区块,特定见证节点20在此过程中进行新区块的见证。新区块被其他记账节点10接收并验证后,加入各自存储的区块链主链中,并且5个记账节点10均保存该区块链主链。图1中示出了5个记账节点10,但是应该理解,这仅是示例,在本发明的区块链系统中,可以存在更多或更少的记账节点10,并且允许记账节点10自由加入或退出。图2是根据本发明的区块链系统的第二实施方式的拓扑图。如图2所示,与本发明的区块链系统的第一实施方式相比,在第二实施方式中,每个记账节点10还连接了至少一个(仅示出了1个)钱包节点30。也就是说,钱包节点30与记账节点10之间也形成了中心化网络。在第二实施方式中,钱包节点30是用于普通交易活动的节点,交易依赖于记账节点10或区块数据服务提供商。钱包节点30不需要存储交易数据,当其货币余额和交易记录满足见证节点20的门槛要求时,钱包节点30可以自动升级为见证节点20。下面以第一实施方式为例具体说明见证节点的筛选。为缩短达成共识的时间,同时保证公平性,本发明的区块链系统每次根据最优区块筛选出一定数量(如2-3个)的见证节点参与共识过程。记账节点10持续接收并验证生成的新区块,通过验证的具有最高权重的区块称为最优区块,记账节点10构成的点对点网络中的大部分记账节点10认同的最优区块所处的区块链是区块链主链。下面描述的筛选方法所选中的见证节点20获得跟与其连接的第一节点10共同生成新区块的权利。在生成的新区块中,选中的见证节点20及其记账节点10有权利生成铸币交易,获得铸币奖励,选中的见证节点20也称为中奖见证节点。图3a和3b是根据本发明优选实施方式的区块链系统中见证节点筛选的流程图。参照图3a和3b来具体说明见证节点筛选的过程。在图3a中,记账节点10会维护一个与其连接的见证节点20的列表,每当有新的见证节点20与其连接时,都会接收该见证节点20公开的地址(步骤s300)。然后判断该见证节点20是否满足参与共识的限制条件(步骤s302),限制条件包括但不限于:1)该地址已有交易记录,并且最早交易时间在一定时间(比如1天)以前,该条件可防止见证节点临时生成与中奖地址相匹配的地址;2)该地址中具有不低于规定数量的货币,该条件可防止见证节点生成大量空地址来增加被选中的概率,并降低以此为基础进行攻击的风险。在本发明的共识机制中,根据记账节点10内最优区块的区块头哈希值、产生该最优区块时进行见证的见证节点20的签名以及满足参与共识条件的见证节点20的地址,来筛选参与见证共识的见证节点20。如果步骤s302中判定结果为是,则允许该见证节点20参与区块共识(步骤s304)。如果步骤s302中判定结果为否,则处理结束。下面参照图3b说明见证节点的筛选。见证节点20的筛选基于最优区块的区块头哈希以及该区块铸币交易中的见证节点20的签名。具体地,如图3b所示,获取最优区块的区块头哈希值和该区块铸币交易中的见证节点20的签名(步骤s306)。然后,比较见证节点20的地址哈希值sha256(witnessaddress)与sha256(bestblockheaderhash||signature||witnessaddress)的匹配位数(步骤s308)。匹配地址的不同比较方法均在本发明的保护范围内,包括但不限于下列方法:a)比较sha256(witnessaddress)与sha256(witnessaddress||bestblockheaderhash||signature)的匹配位数;b)比较sha256(witnessaddress)与sha256(witnessaddress||bestblockheaderhash||signature||witnessaddress)的匹配位数。如果达到了预设的匹配目标(步骤s308,是),则该见证节点可参与区块共识,生成新的区块(步骤s310)。如果未达到预设的匹配目标(步骤s308,否),则执行延时调整(步骤s312)。执行了步骤s312之后,重复步骤s308,直到找到满足预设目标的见证节点为止。在本发明中,延时调整也称为地址匹配难度调整,下面结合图4和图5详细说明地址匹配难度调整。本发明的区块链系统在区块头中使用2个字节(16比特)表示匹配难度参数,其含义如下表:表1.匹配难度调整参数bits符号含义bit15~bit10a中奖匹配位数bit9~bit0b中奖匹配调整参数表1中a表示见证节点最低匹配位数,b表示a位之后10位数字的范围,其初始值设为512,如图4所示。图5是根据本发明的区块链系统的第一实施方式中的地址匹配难度调整的流程图。根据上述见证节点的筛选规则,当见证节点地址的哈希值sha256(witnessaddress)与sha256(bestblockheaderhash||signature||witnessaddress)的异或结果满足前a比特全部为0,且后续11比特数字在[210,b+210]范围内时,该见证节点即可参与区块共识(步骤s500)。在本发明中,地址匹配难度调整参数可以每隔一段时间调整一次。优选地,地址匹配难度调整参数平均每3天调整一次。例如,假设平均出块时间为10秒,则3天内理论出块个数为25920。记最近25920个区块的出块总时间为t,理论出块总时间为259200秒,即可根据t/259200的比值(记为ratio)来判断当前匹配难度是否偏高或者偏低(步骤s502)。当ratio小于1时,说明当前匹配难度偏低(步骤s502,偏低),造成出块时间较理论值短,此时应增加a或者减小b以增加难度(步骤s504);当ratio大于1时,说明当前匹配难度偏高(步骤s502,偏高),造成出块时间较理论值长,此时应该减小a或者增加b以降低难度(步骤s506)。优选地,在本发明的实施例中,匹配难度的具体调整方案如下:1)当256<ratio*b<768时,则a不作调整,而只调整b为ratio*b;2)当ratio*b<=256时,则a加1,b调整为2*ratio*b;3)当ratio*b>=768时,则a减1,b调整为0.5*ratio*b。另外,当达到预设的匹配位数的见证节点20为多个时,匹配位数多的见证节点20优先。下面说明区块的权重。区块的权重由两部分组成,即地址匹配位数权重和父区块权重。地址匹配位数越高,权重越大,权重计算参数设定如下:匹配位数与目标匹配位数(a)相同时,权重为7。当实际匹配位数超过目标匹配位数5位以下时,实际匹配位数每多一位,权重加4,每少一位,权重减4;当实际匹配位数超过目标匹配位数5位时,权重恒定为27,即单个区块权重的上限。单个区块权重公式表示如下:其中w是权重值,m是实际匹配位数与目标匹配位数(a)之差,m可为负数。区块链中的每一个区块权重均为其父区块权重与当前区块地址匹配位权重之和,即当前区块的权重为区块链上从创世区块到当前区块地址匹配位权重累加之和。该权重累加在区块头中以四个字节表示。当区块链出现分叉时,权重累加较大的区块才能最终加入主链,因此每个记账节点10在接收到同一高度的不同区块时,总是选择累加权重最大的一个。此处,区块的高度是指从创始区块到当前区块的距离,或者经过的区块的数量。图6是根据本发明的区块链系统中的第一实施方式中的区块权重分配的示意图。如图6所示,每个区块右下角为其本身匹配位数对应的权重,左上角为该区块的权重累加。例如,以图中的2a区块为例,其本身匹配位数对应的权重为15,而该区块的权重累加为33。在连接到同一个记账节点10的网络中,如果达到匹配目标的见证节点20不止一个,则匹配位数最多的见证节点20将参与共识过程。预设的匹配目标在区块头中使用两个字节来表示,并可以根据最近一段时间地址匹配情况进行动态调节。地址匹配位数越多,在区块共识中就越有优势。另外,当特定见证节点20被选中时,与之相连的记账节点10将规定数量的历史区块中的交易信息发送给该特定见证节点20进行签名,作为账本维护的证明。在本发明的区块链系统中,为了限制记账节点10发布多个高度相同的区块,设计了一种区块发布费机制,即,与特定见证节点20相连的记账节点10在将候选区块加入区块链主链,并发布至点对点网络时,该记账节点10要向区块链主链中的前4个区块的发布节点支付比例为4:3:2:1的费用。如果记账节点10发布的区块被采纳,则其发布费就可以从其子孙区块的发布费中得到100%或超过100%的补偿;如果该区块未被采纳,则区块发布交易最终会被其它区块包含而生效,并且通常会因为没有子孙区块而无法得到补偿。在本发明的区块链系统中,当区块链主链中某个区块之前的交易记录中不包含未花交易时,记账节点10可选地不再维护该区块之前的交易记录。众所周知,随着时间的增长,区块链需要存储的数据量越来越大,本发明提出一种检查点机制,可以适当缓解存储空间有限的记账节点10的存储压力。在本发明中,检查点是指某一个高度之前的所有区块中都不包含未花费交易输出(utxo)的区块。一旦某个区块成为检查点,对于存储空间有限的记账节点10,可以选择将检查点之前的部分区块在本地删除,但其代价是会错失一部分获取奖励的机会。当按照规则选出的历史记录恰好在检查点之前时,该记账节点10只能错失一次推荐候选区块的机会。在本发明的区块链系统中,记账节点10由固定终端担任,其运算能力和存储能力更强,见证节点20由移动终端担任,其数量庞大,而且均关联了一定的可供交易的数字货币。本发明的区块链系统采用地址中奖机制代替工作量证明机制,将移动终端引入到共识机制中,使系统的出块时间达到秒级,可有效提高交易处理能力。当前移动终端数量庞大,性能优异,本发明复用了移动终端这个巨量资源,代替pow机制中消耗的巨量电力资源,这样既可以达到节能环保的目的,又可以提高区块链的出块速度,提高交易处理能力,降低交易账本的维护成本。本发明的区块链系统的各功能可以通过程序来实现。当要实现本发明的区块链系统的各功能时,将该程序从网络获得,或者从存储介质安装到计算机等电子设备中,由该程序执行一系列处理。存储有该程序的计算机可读存储介质可以是与装置本体分离的、单独向使用者提供程序的可移动介质,也可以预装于装置本体的存储介质中。例如,程序可以存储在计算机可读存储介质中。第一节点和/或第二节点可以读取该程序,并执行该程序,实现区块链系统的上述功能。在第二节点是移动终端的情况下,用户可以安装相应的程序,加入到区块链系统中参与共识机制。这可以提高区块链系统的出块时间,另外,通过一定的奖励机制鼓励更多的用户参与,降低交易账本的维护成本,大幅降低电能消耗。另外,作为上述计算机可读存储介质,可以采用例如cd-rom等的光盘、dvd-rom等相位变化型光盘、mo(magnetoptical,磁光)或md(minidisk,迷你盘)等光磁盘、软盘(注册商标)或移动硬盘等磁盘、闪存(注册商标)、智能媒体、sd存储卡、存储棒、以及通过网络连接的各种存储设备。以上仅为本发明的优选实施方式,旨在对所要求的本发明提供进一步的说明,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改、变化和省略。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1