CN115687507A - 适用于区块链操作系统的共识计算方法、系统和存储介质 - Google Patents
适用于区块链操作系统的共识计算方法、系统和存储介质 Download PDFInfo
- Publication number
- CN115687507A CN115687507A CN202110852888.1A CN202110852888A CN115687507A CN 115687507 A CN115687507 A CN 115687507A CN 202110852888 A CN202110852888 A CN 202110852888A CN 115687507 A CN115687507 A CN 115687507A
- Authority
- CN
- China
- Prior art keywords
- operating system
- node
- block
- nodes
- candidate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种适用于区块链操作系统的共识计算方法、系统和存储介质。所述方法包括:区块链操作系统从区块链操作系统的各节点中选出可信任的节点。可信任的节点进行共识计算,并决出达成共识计算目标的目标节点。目标节点将数据信息组装到对应的候选区块,并将候选区块发布到区块链操作系统的各节点。区块链操作系统的各节点根据动态优先级筛选机制从候选区块中选出新区块,并将新区块添加到区块链操作系统维护的区块链上。采用本方法能够过滤掉了拥有超级算力的运算者,保证了区块链去中心化的优点并防止了黑客恶意篡改已有的块链。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种适用于区块链操作系统的共识计算方法、系统和存储介质。
背景技术
工作量证明(Proof of Work)是区块链的一种去中心化的达成共识机制的算法,它被广泛地应用在各种加密货币中。
然而,目前的工作量证明方法具有明显的缺陷,一是超级运算者的出现导致其可以凭借超强算力垄断共识计算,使得区块链的去中心化优点在共识计算环节成为中心化。二是超级运算者可以发起对区块链操作系统的共识攻击,超级运算者就可以重构区块链,更改区块链上的信息,破坏区块链不可篡改的基本特性。三是超级运算者可对区块链操作系统发起“拒绝服务”攻击,导致特定地址的数据信息无法存储到区块链上。
发明内容
基于此,有必要针对上述技术问题,提供一种适用于区块链操作系统的共识计算方法、装置和存储介质。
一种适用于区块链操作系统的共识计算方法,所述方法包括:
区块链操作系统从区块链操作系统的各节点中选出可信任的节点;
所述可信任的节点进行共识计算,并决出达成共识计算目标的目标节点;
所述目标节点将区块信息组装到对应的候选区块并将所述候选区块发布到区块链操作系统的各节点;
所述区块链操作系统的各节点根据动态优先级筛选机制从所述候选区块中选出新区块,并将所述新区块添加到区块链操作系统维护的区块链上。
在其中一个实施例中,所述区块链操作系统从区块链操作系统的各节点中选出可信任的节点,包括:
所述区块链操作系统获取预先设置的筛选规则,并根据所述筛选规则选出满足规则的候选节点;
所述区块链操作系统的各节点对所述候选节点进行投票;
所述区块链操作系统从得票数大于预设阈值的所述候选节点中随机选出预设数量的可信任的节点。
在其中一个实施例中,所述可信任的节点进行共识计算,并决出达成共识计算目标的目标节点,包括:
所述区块链操作系统获取根据哈希计算难度确定的目标值;
所有所述可信任的节点计算哈希值;
当存在所述可信任的节点计算得到小于所述目标值的哈希值时,所述可信任的节点达成共识计算目标成为目标节点。
在其中一个实施例中,在所述目标节点将数据信息组装到对应的候选区块,并将所述候选区块发布到区块链操作系统的各节点之后,包括:
当所述可信任节点收到所述目标节点发布的所述候选区块后,停止本次计算哈希值。
在其中一个实施例中,所述区块链操作系统从区块链操作系统的各节点中选出可信任的节点之后,还包括:
所述区块链操作系统分配给每个所述可信任的节点不同的优先级;
所述区块信息包括所述目标节点的优先级和所述目标节点计算得出哈希值结果的时间戳;
所述区块链操作系统的各节点根据动态优先级筛选机制从所述候选区块中选出新区块,包括:
当所述区块链操作系统的各节点只收到一个所述候选区块时,选择所述候选区块作为新区块;
当所述区块链操作系统的各节点收到超过一个所述候选区块时,选择所述时间戳最早的候选区块作为新区块;
当所述区块链操作系统的各节点收到超过一个所述候选区块且所述候选区块的哈希值计算结果时间戳相同时,选择所述优先级最高的候选区块作为新区块。
在其中一个实施例中,在所述区块链操作系统的各节点根据动态优先级筛选机制从所述候选区块中选出新区块,并将所述新区块添加到区块链操作系统维护的区块链上之后,包括:
所述区块链操作系统的配对节点之间交换添加的所述新区块的信息进行同步论证;
当所述同步论证通过时,则返回区块链操作系统从区块链操作系统的各节点中选出可信任的节点的步骤并继续执行。
在其中一个实施例中,所述区块链操作系统的配对节点之间交换添加的所述新区块的信息进行同步论证,包括:
获取任何两个存在通信历史的节点作为配对节点;
采用无监督的聚类算法通过相邻的配对节点间的投票得到票数满足要求的节点。
一种适用于区块链操作系统的共识计算系统,所述系统包括区块链操作系统;所述区块链操作系统包括至少两个节点;
区块链操作系统用于从区块链操作系统的各节点中选出可信任的节点;
所述可信任的节点用于进行共识计算,并决出达成共识计算目标的目标节点;
所述目标节点用于将数据信息组装到对应的候选区块,并将所述候选区块发布到区块链操作系统的各节点;
区块链操作系统的各节点用于根据动态优先级筛选机制从所述候选区块中选出新区块,并将所述新区块添加到区块链操作系统维护的区块链上。
在其中一个实施例中,所述区块链操作系统还用于获取预先设置的筛选规则,并根据所述筛选规则选出满足规则的候选节点;
所述区块链操作系统网络上的各节点还用于对所述候选节点进行投票;
所述区块链操作系统还用于从得票数大于预设阈值的所述候选节点中随机选出预设数量的可信任的节点。
在其中一个实施例中,所述区块链操作系统还用于分配给每个所述可信任的节点不同的优先级;
所述区块信息包括所述目标节点的优先级和所述目标节点计算得出哈希值结果的时间戳;
所述区块链操作系统的各节点还用于当所述区块链操作系统网络上的各节点只收到一个所述候选区块时,选择所述候选区块作为新区块;
所述区块链操作系统的各节点还用于当所述区块链操作系统的各节点收到超过一个所述候选区块时,选择哈希值计算结果时间戳最早的所述候选区块作为新区块;
所述区块链操作系统的各节点还用于当所述区块链操作系统的各节点收到超过一个所述候选区块且所述候选区块的哈希值计算结果时间戳相同时,选择优先级最高的所述候选区块作为新区块。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
上述适用于区块链操作系统的共识计算方法、系统和存储介质,通过可信任节点的选举机制、共识计算机制和动态优先级筛选机制过滤掉了拥有超级算力的运算者,保证了区块链去中心化的优点并防止了黑客恶意篡改已有的区块。
附图说明
图1为一个实施例中适用于区块链操作系统的共识计算方法的原理图;
图2为一个实施例中适用于区块链操作系统的共识计算方法的流程示意图;
图3为一个实施例中筛选可信任的节点的原理图;
图4为一个实施例中筛选可信任的节点的流程示意图;
图5为一个实施例中动态筛选候选区块的流程示意图;
图6为一个候选区块的结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的适用于区块链操作系统的共识计算方法,可以用图1所示的原理图进行描述。
在第一阶段中,区块链操作系统通过静态条件和动态条件筛选出预设数量的可信任的节点,在图1中为15个可信任的节点,15个可信任的节点是兼顾效率和去中心化的基于经验和测试的优化值。其中,静态条件是指下文中的客观规则,CPU是指处理器,NET是指网络,Memory是指内存。动态条件是指下文中的投票筛选,Pairs数指配对节点,Message是指节点间的通信,PACA是指“粒子积数”。
在第二阶段中,在第一阶段被选出的可信任的节点共同参与共识计算,寻找小于目标值的哈希值,其中Hash是指哈希。
在第三阶段和全网同步阶段中,在第二阶段优先找到小于目标值的哈希值的可信任节点在区块链操作系统中发布候选区块的消息,通过哈希值计算结果的时间戳和优先级等发生筛选出最后的新区块,block是指区块,hash nonce是只使用一次的随机数,InfoBlock是指信息块,Time stamp即下文的哈希值计算结果的时间戳,Priority是值分配给可信任节点的优先级,Add to Block是把时间戳和优先级信息组装到候选区块。
在一个实施例中,如图2所示,提供了一种适用于区块链操作系统的共识计算方法,包括以下步骤:
S202,区块链操作系统从区块链操作系统的各节点中选出可信任的节点。
具体地,可信任的节点是可以用来进行共识计算的节点,通过去除不可信任的节点,可以保证共识计算的安全和准确性,其中可信任的节点一般是需要满足客观条件的规则(即下文中的规则筛选)的节点,即对所有的节点进行规则处理,该客观规则的处理可以是周期性地判断。
区块链操作系统选出可信任的节点包括规则筛选和投票筛选两个环节。区块链操作系统在规则筛选环节中设定了基础条件,区块链操作系统各节点必须满足基础条件才能进入下一轮的投票筛选环节。对于满足基础条件的节点,区块链操作系统的各节点对满足基础条件的节点进行投票,选出可信任的节点。
之所以要分成规则筛选和投票筛选两个环节是因为投票环节会带来较大的网络投票数据传输和投票计算。区块链操作系统通过规则筛选可以筛选去除不符合基础条件的节点,从而去掉了不必要的资源浪费。
S204,可信任的节点进行共识计算,并决出达成共识计算目标的目标节点。
其中,共识计算是指区块链普遍采用的工作量证明。工作量证明一般是要求参与者进行一些耗时适当的复杂运算,并且答案能被快速验证。
具体地,区块链操作系统设定一个目标值,所有可信任的节点开始计算哈希值,优先找到小于该目标值的可信任的节点即完成共识计算目标成为目标节点。在可信任的节点在进行共识计算的过程中,当可信任的节点收到了其他可信任的节点发布的候选区块消息时,可信任的节点停止本次计算哈希值。需要说明的是,可信任的节点可能仅收到一个候选区块消息,或者是同时收到至少两个候选区块消息,当同时收到至少两个候选区块消息时,则根据预设的规则来确定目标节点。
可信任的节点之所以在收到其他可信任的节点发布的候选区块消息时停止本次计算哈希值是为了避免计算资源的浪费。
其中,区块链操作系统所设定的目标值是根据如下公式进行的:
其中,NewTarget为新的共识计算的目标值,OldTarget是上次的共识计算的目标值, IPs是可信任节点的IP值,Hash是哈希值,Avg(IPsHash)是可信任节点的IP值的所有哈希值的均值,real Result是上次的共识计算的实际值。
其中,各可信任节点通过多次尝试一次性的随机数(nonce),将候选区块的区块头进行SHA256计算,来找到一个NONCE值使得区块头的哈希值小于目标值。加入Avg(IPsHash)因子是确认只有可信节点参与计算,而非可信节点被排除在共识计算之外。
S206,目标节点将数据信息组装到对应的候选区块并将候选区块发布到区块链操作系统的各节点。
具体地,目标节点将数据信息组装到候选区块上。其中,区块信息包括但不限于区块链系统的日志和文件的数字指纹,其中日志是指记录了区块链操作系统及其各种服务运行的每个细节的文件,数字指纹是指区块链操作系统中可以唯一找到一个大数据文件的数字标识符。
S208,区块链操作系统的各节点根据动态优先级筛选机制从候选区块中选出新区块,并将新区块添加到区块链操作系统维护的区块链上。
具体地,动态优先级筛选机制是从候选区块中选取新区块的机制,其用于根据候选区块的属性进行筛选。
区块链操作系统的各节点会收到一个或多个候选区块的消息,其中,候选区块的消息结构如图3所示,包括消息头和消息体。其中消息头包括消息类型、目标节点账号、优先级和哈希值计算结果时间戳等。
当区块链操作系统的各节点如果只收到一个候选区块时,那么该候选区块自动成为新区块。当各节点如果收到多个候选区块时,各节点按照哈希值计算结果时间戳对候选区块排序,选择时间戳最早的一个候选区块作为新区块。当出现多于一个候选区块的时间戳也相同时,各节点按照优先级顺序对候选区块排序,选择优先级最高的一个候选区块作为新区块。每个候选区块的优先级来自其对应的目标节点的优先级,每个目标节点被分配到的优先级各不相同,因此选出的新区块必定是唯一的。
将新区块添加到区块链操作系统维护的区块链即实现区块链的生长,且在添加完成并经过认证之后,区块链操作系统继续进行下一区块的计算:重新选取可信任的节点;可信任的节点计算的得到候选区块;区块链操作系统的各节点从候选区块中选出新区块。
上述适用于区块链操作系统的共识计算方法中,区块链操作系统通过可信任节点的选举机制、共识计算机制和动态优先级筛选机制过滤掉了拥有超级算力的运算者,保证了区块链去中心化的优点并防止了黑客恶意篡改已有的区块。
本申请中,区块链操作系统从各节点中选出可信任的节点的原理图可以用图3描述。在规则环节中,Rule Tree是指规则树,不同的规则按照树状结构组合在一起。满足当前条件的就进入下一个条件的判断,没有满足的即被Pass(淘汰)。CPU是指处理器,Memory是指内存,PACA是指粒子积数。在投票环节中,Pair是指配对节点。
在一个实施例中,如图4所示,区块链操作系统从区块链操作系统的各节点中选出可信任的节点,包括:
S402,区块链操作系统获取预先设置的筛选规则,并根据筛选规则选出满足规则的候选节点。
具体地,区块链操作系统设定了基础条件作为筛选规则,这些基础条件包括但不限于:节点加入区块链操作系统的时间是否大于特定时间、节点在最近特定天数内有没有发生过一次离线时间超过特定毫秒的情况、节点加入区块链操作系统以来,平均离线时间是否小于特定毫秒、节点的处理器条件、节点的内存大小、节点的网络情况、节点的IP地址分布、节点之前成为可信任节点的次数、节点是否在最近的特定个周期内当选过可信任的节点、节点获得粒子积数的成功次数、节点持有粒子积数的时间长度和节点拥有粒子积数的总数。其中在实际应用中,区块链操作系统根据需要从上述筛选规则中选择至少一个对各个节点进行筛选得到候选节点。其中,粒子积数是区块链操作系统和传统 UNIX/Linux、Windows和Macintosh操作系统的显著区别之一。粒子积数是有生命周期的,并被应用于记录事件发生的数字化实体。通过规则筛选的成为候选节点进入投票环节。
S404,区块链操作系统的各节点对候选节点进行投票。
具体地,对于满足规则要求的候选节点,区块链操作系统的各节点对候选节点进行投票,选出预设数量的可信任的节点。其中,投票规则包括但不限于:满足规则要求的候选节点的配对节点可以对候选节点投两票、如果在最近的两个周期内和候选节点进行过通信的,相应地针对每个周期投一票,总共两票。其中在实际应用中,区块链操作系统根据需要从上述投票规则中选择至少一个对满足规则要求的候选节点投票。
S406,区块链操作系统从得票数大于预设阈值的候选节点中随机选出预设数量的可信任的节点。
具体地,区块链操作系统统计满足规则要求的每一个候选节点的所有投票。在所有得票数大于预设阈值的候选节点中,随机选取特定数量的可信任的节点。特定数量的设定取决于投票算法中的最小多数值。例如:投票算法中的最小多数值为2/3,则特定数量可以设定为15个可信任的节点,15可被2/3整除,因此满足投票算法中最小多数的值要求。特定数量的设定还可以取决于特定数量是否是奇数以及是否能被基准质数整除,例如:5是基准质数。5和15都是奇数,因此不会出现50vs50的可能。当选择的可信任的节点数量过多时会降低区块链操作系统共识计算的效率,当选择的可信任的节点数量过少时会降低区块链操作系统去中心化的效果。
本实施例中,区块链操作系统从众多节点中选出合格的特定数量的可信任的节点参与下一个阶段的共识计算,达到了筛选掉超级运算者或者说超级算力的目的,从而避免了共识攻击,黑客攻击者没法利用去中心化的特点使用巨大算力去篡改已有的区块。
在一个实施例中,可信任的节点进行共识计算,并决出达成共识计算目标的目标节点,包括:区块链操作系统获取根据哈希计算难度确定的目标值。所有可信任的节点计算哈希值。当存在可信任的节点计算得到小于目标值的哈希值时,可信任的节点达成共识计算目标成为目标节点。
具体地,哈希计算难度是区块链操作系统中可信任的节点进行共识计算的重要参考指标,哈希计算难度决定了可信任的节点需要经过多少次哈希运算才能产生一个合法的区块。例如:区块链操作系统的区块大致每过-2.5分钟生成一个,为了让新区块的产生基本保持这个速率,哈希计算难度必须根据区块链操作系统的全网算力的变化进行调整。哈希函数通过调整难度值来确保每个区块产生的时间大致都在预设的时间范围内,因此哈希计算难度对保证区块链操作系统的安全有重大意义。
具体地,当区块链操作系统设定了一个目标值之后,可信任的节点通过生成区块头部的Nonce一次性使用的随机数来调整每次哈希的结果,使得计算出来的区块的哈希值小于区块链操作系统设定的目标值。
具体地,在可信任的节点计算哈希值的过程中,优先计算得到小于目标值的哈希值的可信任节点即成为目标节点。达成共识计算目标的可信任的节点可以只有一个,也可以有多个可信任的节点同时达成共识计算目标,而这多个可信任的节点都成为了目标节点。
本实施例中,区块链操作系统通过确定一个目标值让系统中的各节点进行哈希计算得到满足小于目标值的哈希值,从而避免了区块链操作系统维护的区块链不会被轻易操纵,从而保证了区块链的安全性。
在一个实施例中,在目标节点将数据信息组装到对应的候选区块,并将候选区块发布到区块链操作系统的各节点之后,包括:当可信任节点收到目标节点发布的所述候选区块后,停止本次计算哈希值。
具体地,区块链操作系统选出的各个可信任的节点独立地进行去中心化共识计算,只有在收到其他目标节点发布的候选区块的消息后,才会停止计算。例如:当可信任节点A达成共识计算目标,发布A组装的候选区块的消息,到可信任节点B收到候选区块的消息这一时间段中,节点B可以完成自身的共识计算并发布B组装的候选区块的消息。
本实施例中,区块链操作系统通过让可信任的节点在收到其他可信任的节点发布的区块消息之后停止共识计算,从而降低了计算资源的消耗。
在一个实施例中,区块链操作系统从区块链操作系统的各节点中选出可信任的节点之后,还包括:区块链操作系统分配给每个可信任的节点不同的优先级。
具体地,区块链操作系统采用随机分配的方式将不同的优先级分配给每一个可信任的节点。区块链操作系统也可以按照投票数量、硬件条件、网络环境、成为可信任节点的次数,获得粒子积数的次数、时间长度和数量等条件分配不同的优先级给每一个可信任的节点。
此外,区块信息包括目标节点的优先级和目标节点计算得出哈希值结果的时间戳。
具体地,目标节点打包的区块中包括了目标节点被分配到的优先级和目标节点计算得出小于目标值的哈希值的时间戳信息。其中,时间戳格式在整个区块链操作系统中是一致的,因此可以相互比较先后。
如图5所示,区块链操作系统的各节点根据动态优先级筛选机制从候选区块中选出新区块,包括:当区块链操作系统的各节点只收到一个候选区块时,选择候选区块作为新区块;当区块链操作系统的各节点收到超过一个候选区块时,选择时间戳最早的候选区块作为新区块;当区块链操作系统的各节点收到超过一个候选区块且候选区块的哈希值计算结果时间戳相同时,选择优先级最高的候选区块作为新区块。
具体地,当区块链操作系统的各节点只收到来自一个目标节点发布的候选区块消息时,说明该目标节点率先达成了共识计算目标,此时不需要进行额外的筛选判断,直接将该目标节点发布的候选区块作为新区块。
具体地,在可信任的节点进行共识计算的过程中,可能出现多个可信任的节点在一定时间内共同达成共识计算目标,因此区块链操作系统按照计算得到小于目标值的哈希值的时间戳将多个候选区块进行排序,从多于一个的候选区块中选择新区块。时间戳根据不同目标节点达成共识计算目标的时间点决定。
具体地,区块链操作系统中的时间戳格式是相同一致的,但是由于时间戳所能表示的时间精度是有限的,特殊情况下仍然可能出现两块候选区块的时间戳完全一致,因此区块链操作系统在用时间戳筛选新区块的基础上还需要使用候选区块中的优先级来最终筛选出唯一的新区块。在多个候选区块的时间戳相等的情况下,区块链操作系统按照优先级将多个候选区块进行排序,因为候选区的优先级是区块链操作系统在选出可信任的节点是分配的,且每个可信任的节点的优先级都是不一样的,因此区块链操作系统可以筛选出唯一的新区块。
本实施例中,由于区块链操作系统各节点选择新区块的逻辑和流程相同且不存在歧义性,所以挑选的新区块相同。区块链操作系统通过使用时间戳和优先级使得参与共识计算的可信任节点之间是互助行为,而非其他区块链的排他性竞争行为,从而从根本上消除了区块链分叉的可能。
其中区块链操作系统在确认新区块阶段。如果因为网络延迟,导致某一个候选区块(比如T1-Block)会早于另一个目标区块(比如T2-Block)到达某个节点(比如NodeA),该节点(NodeA)已经将候选区块T1-Block临时地添加到区块链的本地副本上。当该节点(NodeA)收到目标区块T2-Block后,按照前述的区块挑选原则确认T2-Block为新区块,该节点会将新区块T2-Block添加到临时区块T1-Block在区块链的位置。临时区块T1-Block会被注销,同时临时区块的数据信息返回到NodeA的本地内存中的数据池,等待下一次被组装到新的候选区块中。
在一个实施例中,在区块链操作系统的各节点根据动态优先级筛选机制从候选区块中选出新区块,并将新区块添加到区块链操作系统维护的区块链上之后,包括:区块链操作系统的配对节点之间交换添加的新区块的信息进行同步论证;当所述同步论证通过时,则返回区块链操作系统从区块链操作系统的各节点中选出可信任的节点的步骤并继续执行。
具体地,区块链操作系统的配对节点之间通过交换添加的新区块的信息,比较配对节点之间的新区块信息是否一致,进一步验证区块链操作系统维护的区块链没有产生分叉同时验证节点是否是在线的活跃节点。另外区块链操作系统通过进一步的同步验证,找出特定区域内的核心节点。因为区块链操作系统的各节点分布在全球范围内,节点间的新区块的同步是通过相邻节点进行传输的。根据无监督学习的聚类算法,当特定节点与特定区域(例如大湾区区域) 中的众多节点都有同步通信,则该节点是区域核心节点。
具体地,区块链操作系统的每个节点都会和邻近节点进行通信,任何两个有过通信历史的节点形成了配对节点。通过相邻的配对节点间的投票,采用无监督的聚类算法,特定节点与区域内的众多节点有过通信历史,这样票数越高的节点代表该节点跟域内更多的节点有过通信历史。从而自动找到某特定区域的一个或多个核心节点。跨区的节点的通信非常少。
具体地,当区块链操作系统的各节点通过配对节点间的相互论证时,区块链操作系统完成一个区块周期内的共识计算。接下来区块链操作系统回到第一步,重新开始选择可信任的节点并继续执行后面的步骤直到论证完下一个周期生成的新区块,并不断重复这个共识计算流程的循环。
本实施例中,区块链操作系统通过让配对节点之间交换新区块的信息,从而验证了区块链是否一致并证实了节点是否活跃且在线。此外,区块链操作系统通过统计配对节点间的通信频率可以找出区域内的核心节点。
当同步论证通过时,则返回区块链操作系统从区块链操作系统的各节点中选出可信任的节点的步骤并继续执行。
为了使得本领域技术人员充分了解本申请中的适用于区块链操作系统的共识计算方法,下文就给出一个具体的实施例。
本实施了中,区块链操作系统将选举可信任的节点分成规则筛选和投票筛选两个环节。
具体地,在规则筛选的过程中,区块链操作系统选择满足以下条件的节点进入下一轮的投票环节:加入区块链操作系统网络的时间大于84天;最近3天内,没有发生过一次离线时间超过1毫秒的情况并且加入区块链操作系统网络以来,平均离线时间小于1毫秒;处理器至少双核且单核的主频大于3.7GHz,内存容量大于16GB,网络通信质量好;最近三个周期内没有当选过可信任的节点。
具体地,区块链操作系统中经过规则筛选的节点成为候选节点进入投票环节。如果特定节点是候选节点的配对节点,则该特定节点对候选节点投两票;区块链操作系统中的节点对在最近两个周期内进行过通信的节点投票,每个周期投一票,总计两票。区块链操作系统统计所有的投票,从得票数大于设定阈值的候选节点中随机选择15个可信任的节点参与下一轮的共识计算。15个可信任的节点是兼顾效率和去中心化的基于经验和测试的优化节点数。当节点数过大时会降低效率,当节点数过小时会影响去中心化的效果。区块链操作系统给每一个可信任的节点随机分配15个不同的优先级。
具体地,区块链操作系统根据哈希值计算难度设定一个目标值,区块链操作系统中的各节点开始计算哈希值,优先找到小于设定的目标值的节点成为目标节点。目标节点将日志和文件的数字指纹等信息组装到候选区块中。然后目标节点将候选区块发布到区块链操作系统的各个节点。
候选区块的结构如图6所示,候选区块包括区块头(目标节点账户、目标节点优先级、目标节点计算得到满足要求的哈希值的时间戳)和区块体。
其中,Message Head是指消息头,MsgType是指信息类型,Be-Settled-Block 是指候选区块,WinnerAccount是指目标节点账户,Priority是指优先级,HashResultTimeStamp是指哈希值计算结果时间戳。
其中,Message Body是指消息体,Candidate Block是指候选区块,Block Pointer是指区块指针,PrevBlockHash是指前一个候选区块的哈希值, CurrentBlockHash是指当前区块的哈希值。Block Head是指区块头,MerkleRoot 马克勒树的根哈希值,Nonce一次性使用的随机数,Checksum校验和,TrustIP 所有可信任节点的IP值。Block Body是指区块体,Content是指区块内容。
具体地,区块链操作系统上的各节点会收到一个或多个候选区块的消息,各节点按照动态优先级机制挑选一个候选区块作为新区块加入到区块链中。如果只有一个目标节点,则各节点将收到的候选区块添加到区块链上。如果存在多个目标节点,即有多个可信任的节点同一时间段内都找到了满足要求的哈希值,则各节点根据候选区块中哈希值计算结果的时间戳来选出唯一的候选区块作为新区块。如果两块候选区块的时间戳相等,则根据候选区块上的优先级来判断,候选区块中优先级最高的成为新区块。
具体地,配对节点之间交换上一周期新添加的区块信息,进行同步论证。
具体地,可信任节点在收到候选区块的消息后,停止本次计算哈希值。
具体地,区块链操作系统开始下一轮的共识计算:选举可信任的节点、共识计算和通过动态优先级得到新区块。
本实施例中,区块链操作系统的所有节点运行同一可信任节点的筛选机制过滤掉了垄断性的超级算力节点,避免发生超级算力的攻击。同时,区块链操作系统使用时间戳和优先级等方式使得参与共识计算的可信任的节点之间是互助的行为而非其他区块链的排他性竞争行为,从根本上消除了区块链分叉的可能。
应该理解的是,虽然图2、图4和图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图4和图5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种适用于区块链操作系统的共识计算系统,包括区块链操作系统,区块链操作系统至少包括一个节点:
区块链操作系统用于从区块链操作系统的各节点中选出可信任的节点。
可信任的节点用于进行共识计算,并决出达成共识计算目标的目标节点。
目标节点用于将数据信息组装到对应的候选区块,并将候选区块发布到区块链操作系统的各节点。
区块链操作系统的各节点用于根据动态优先级筛选机制从候选区块中选出新区块,并将新区块添加到区块链操作系统维护的区块链上。
在其中一个实施例中,区块链操作系统还用于获取预先设置的筛选规则,并根据筛选规则选出满足规则的候选节点。区块链操作系统的各节点还用于对候选节点进行投票。区块链操作系统还用于从得票数大于预设阈值的候选节点中随机选出预设数量的可信任的节点。
在其中一个实施例中,区块链操作系统用于获取根据哈希计算难度确定的目标值。所有可信任的节点还用于计算哈希值。可信任的节点还用于当存在可信任的节点计算得到小于所述目标值的哈希值时,可信任的节点达成共识计算目标成为目标节点。
在其中一个实施例中,可信任节点还用于当可信任节点收到目标节点发布的候选区块后,停止本次计算哈希值。
在其中一个实施例中,区块链操作系统从区块链操作系统的各节点中选出可信任的节点之后,区块链操作系统还用于分配给每个所述可信任的节点不同的优先级。区块信息包括目标节点的优先级和目标节点计算得出哈希值结果的时间戳。区块链操作系统的各节点还用于当区块链操作系统的各节点只收到一个候选区块时,选择候选区块作为新区块。区块链操作系统的各节点还用于当区块链操作系统的各节点收到超过一个候选区块时,选择时间戳最早的候选区块作为新区块。区块链操作系统的各节点还用于当区块链操作系统的各节点收到超过一个候选区块且候选区块的哈希值计算结果时间戳相同时,选择优先级最高的候选区块作为新区块。
在其中一个实施例中,在区块链操作系统的各节点根据动态优先级筛选机制从候选区块中选出新区块,并将新区块添加到区块链操作系统维护的区块链上之后,区块链操作系统的配对节点还用于交换添加的所述新区块的信息进行同步论证。区块链操作系统还用于当同步论证通过时,则返回区块链操作系统从区块链操作系统的各节点中选出可信任的节点的步骤并继续执行。
在其中一个实施例中,区块链操作系统获取任何两个存在通信历史的节点作为配对节点;区块链操作系统采用无监督的聚类算法通过相邻的配对节点间的投票得到票数满足要求的节点。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:区块链操作系统从区块链操作系统的各节点中选出可信任的节点。可信任的节点进行共识计算,并决出达成共识计算目标的目标节点。目标节点将数据信息组装到对应的候选区块,并将候选区块发布到区块链操作系统的各节点。区块链操作系统的各节点根据动态优先级筛选机制从所述候选区块中选出新区块,并将新区块添加到区块链操作系统维护的区块链上。
在一个实施例中,计算机程序被处理器执行时所实现的区块链操作系统从区块链操作系统的各节点中选出可信任的节点包括以下步骤:区块链操作系统获取预先设置的筛选规则,并根据所述筛选规则选出满足规则的候选节点。区块链操作系统的各节点对候选节点进行投票。区块链操作系统从得票数大于预设阈值的候选节点中随机选出预设数量的可信任的节点。
在一个实施例中,计算机程序被处理器执行时所实现的可信任的节点进行共识计算,并决出达成共识计算目标的目标节点还包括以下步骤:区块链操作系统获取根据哈希计算难度确定的目标值。所有可信任的节点计算哈希值。当存在可信任的节点计算得到小于目标值的哈希值时,可信任的节点达成共识计算目标成为目标节点。
在一个实施例中,计算机程序被处理器执行时所实现的目标节点将数据信息组装到对应的候选区块,并将候选区块发布到区块链操作系统的各节点之后包括以下步骤:当可信任节点收到目标节点发布的候选区块后,停止本次计算哈希值。
在一个实施例中,计算机程序被处理器执行时所实现的区块链操作系统从区块链操作系统的各节点中选出可信任的节点之后还包括以下步骤:区块链操作系统从区块链操作系统的各节点中选出可信任的节点之后。区块信息包括目标节点的优先级和目标节点计算得出哈希值结果的时间戳。区块链操作系统的各节点根据动态优先级筛选机制从候选区块中选出新区块,包括:当区块链操作系统的各节点只收到一个所述候选区块时,选择所述候选区块作为新区块。当区块链操作系统的各节点收到超过一个所述候选区块时,选择时间戳最早的候选区块作为新区块。当区块链操作系统的各节点收到超过一个所述候选区块且候选区块的哈希值计算结果时间戳相同时,选择优先级最高的候选区块作为新区块。
在一个实施例中,计算机程序被处理器执行时所实现的在区块链操作系统的各节点根据动态优先级筛选机制从候选区块中选出新区块,并将新区块添加到区块链操作系统维护的区块链上之后还包括以下步骤:区块链操作系统的配对节点之间交换添加的新区块的信息进行同步论证。当同步论证通过时,则返回区块链操作系统从区块链操作系统的各节点中选出可信任的节点的步骤并继续执行。
在其中一个实施例中,计算机程序被处理器执行时所实现的区块链操作系统的配对节点之间交换添加的新区块的信息进行同步论证,包括:获取任何两个存在通信历史的节点作为配对节点;采用无监督的聚类算法通过相邻的配对节点间的投票得到票数满足要求的节点。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM) 或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种适用于区块链操作系统的共识计算方法,其特征在于,所述方法包括:
区块链操作系统从区块链操作系统的各节点中选出可信任的节点;
所述可信任的节点进行共识计算,并决出达成共识计算目标的目标节点;
所述目标节点将数据信息组装到对应的候选区块,并将所述候选区块发布到区块链操作系统的各节点;
所述区块链操作系统的各节点根据动态优先级筛选机制从所述候选区块中选出新区块,并将所述新区块添加到区块链操作系统维护的区块链上。
2.根据权利要求1所述的方法,其特征在于,所述区块链操作系统从区块链操作系统的各节点中选出可信任的节点,包括:
所述区块链操作系统获取预先设置的筛选规则,并根据所述筛选规则选出满足规则的候选节点;
所述区块链操作系统的各节点对所述候选节点进行投票;
所述区块链操作系统从得票数大于预设阈值的所述候选节点中随机选出预设数量的可信任的节点。
3.根据权利要求1或2所述的方法,其特征在于,所述可信任的节点进行共识计算,并决出达成共识计算目标的目标节点,包括:
所述区块链操作系统获取根据哈希计算难度确定的目标值;
所有所述可信任的节点计算哈希值;
当存在所述可信任的节点计算得到小于所述目标值的哈希值时,所述可信任的节点达成共识计算目标成为目标节点。
4.根据权利要求3所述的方法,其特征在于,在所述目标节点将数据信息组装到对应的候选区块,并将所述候选区块发布到区块链操作系统的各节点之后,包括:
当所述可信任节点收到所述目标节点发布的所述候选区块后,停止本次计算哈希值。
5.根据权利要求4所述的方法,其特征在于,所述区块链操作系统从区块链操作系统的各节点中选出可信任的节点之后,还包括:
所述区块链操作系统分配给每个所述可信任的节点不同的优先级;
所述区块信息包括所述目标节点的优先级和所述目标节点计算得出哈希值结果的时间戳;
所述区块链操作系统的各节点根据动态优先级筛选机制从所述候选区块中选出新区块,包括:
当所述区块链操作系统的各节点只收到一个所述候选区块时,选择所述候选区块作为新区块;
当所述区块链操作系统的各节点收到超过一个所述候选区块时,选择所述时间戳最早的候选区块作为新区块;
当所述区块链操作系统的各节点收到超过一个所述候选区块且所述候选区块的哈希值计算结果时间戳相同时,选择所述优先级最高的候选区块作为新区块。
6.根据权利要求1所述的方法,其特征在于,在所述区块链操作系统的各节点根据动态优先级筛选机制从所述候选区块中选出新区块,并将所述新区块添加到区块链操作系统维护的区块链上之后,包括:
所述区块链操作系统的配对节点之间交换添加的所述新区块的信息进行同步论证;
当所述同步论证通过时,则返回区块链操作系统从区块链操作系统的各节点中选出可信任的节点的步骤并继续执行。
7.根据权利要求6所述的方法,其特征在于,所述区块链操作系统的配对节点之间交换添加的所述新区块的信息进行同步论证,包括:
获取任何两个存在通信历史的节点作为配对节点;
采用无监督的聚类算法通过相邻的配对节点间的投票得到票数满足要求的节点。
8.一种适用于区块链操作系统的共识计算系统,其特征在于,所述系统包括区块链操作系统;所述区块链操作系统包括至少两个节点;
区块链操作系统用于从区块链操作系统的各节点中选出可信任的节点;
所述可信任的节点用于进行共识计算,并决出达成共识计算目标的目标节点;
所述目标节点用于将数据信息组装到对应的候选区块,并将所述候选区块发布到区块链操作系统的各节点;
区块链操作系统的各节点用于根据动态优先级筛选机制从所述候选区块中选出新区块,并将所述新区块添加到区块链操作系统维护的区块链上。
9.根据权利要求8所述的系统,其特征在于,所述区块链操作系统还用于获取预先设置的筛选规则,并根据所述筛选规则选出满足规则的候选节点;
所述区块链操作系统网络上的各节点还用于对所述候选节点进行投票;
所述区块链操作系统还用于从得票数大于预设阈值的所述候选节点中随机选出预设数量的可信任的节点。
10.根据权利要求8所述的系统,其特征在于,所述区块链操作系统还用于分配给每个所述可信任的节点不同的优先级;
所述区块信息包括所述目标节点的优先级和所述目标节点计算得出哈希值结果的时间戳;
所述区块链操作系统的各节点还用于当所述区块链操作系统网络上的各节点只收到一个所述候选区块时,选择所述候选区块作为新区块;
所述区块链操作系统的各节点还用于当所述区块链操作系统的各节点收到超过一个所述候选区块时,选择哈希值计算结果时间戳最早的所述候选区块作为新区块;
所述区块链操作系统的各节点还用于当所述区块链操作系统的各节点收到超过一个所述候选区块且所述候选区块的哈希值计算结果时间戳相同时,选择优先级最高的所述候选区块作为新区块。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110852888.1A CN115687507A (zh) | 2021-07-27 | 2021-07-27 | 适用于区块链操作系统的共识计算方法、系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110852888.1A CN115687507A (zh) | 2021-07-27 | 2021-07-27 | 适用于区块链操作系统的共识计算方法、系统和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115687507A true CN115687507A (zh) | 2023-02-03 |
Family
ID=85058006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110852888.1A Pending CN115687507A (zh) | 2021-07-27 | 2021-07-27 | 适用于区块链操作系统的共识计算方法、系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115687507A (zh) |
-
2021
- 2021-07-27 CN CN202110852888.1A patent/CN115687507A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102578019B1 (ko) | 블록체인 기반 데이터 검출 방법 및 디바이스, 및 컴퓨터 판독가능 저장 매체 | |
CN108900380B (zh) | 一种节点管理方法及其实现系统 | |
Gupta et al. | Proof of work without all the work | |
Hassanzadeh-Nazarabadi et al. | Lightchain: A dht-based blockchain for resource constrained environments | |
CN110602217B (zh) | 基于区块链的联盟管理方法、装置、设备及存储介质 | |
CN111682942B (zh) | 一种应用于许可链的二元加权拜占庭容错共识方法 | |
WO2022217807A1 (zh) | 区块链共识节点选择方法、装置、计算机设备和存储介质 | |
CN112468255B (zh) | 基于网络共识结合vrf算法的区块链节点时间同步方法 | |
CN111614708A (zh) | 一种基于区块链的交易系统 | |
US11875188B2 (en) | Data processing system using directed acyclic graph and method of use thereof | |
CN112487091A (zh) | 一种确定区块链共识节点的方法及装置 | |
CN110505084B (zh) | 一种区块链打包节点共识推举方法 | |
CN113568972A (zh) | 一种面向图式区块链的混合共识实现装置及实现方法 | |
CN115022326A (zh) | 基于协同过滤推荐的区块链拜占庭容错共识方法 | |
CN115796261A (zh) | 一种基于区块链的轻量级分组共识的联邦学习方法 | |
Aloqaily et al. | Towards blockchain-based hierarchical federated learning for cyber-physical systems | |
CN113377869B (zh) | 一种区块链共享信息均衡存储方法 | |
Wan et al. | AnonymousFox: An efficient and scalable blockchain consensus algorithm | |
CN111131184A (zh) | 一种区块链共识机制的自主调节方法 | |
CN114422146A (zh) | 一种区块链主节点匿名排序方法 | |
CN113923217A (zh) | 一种基于dag的异步拜占庭共识方法及系统 | |
CN112511312A (zh) | 一种可组装的共识方法及系统 | |
CN115687507A (zh) | 适用于区块链操作系统的共识计算方法、系统和存储介质 | |
CN113507528B (zh) | 数据处理方法及电子设备 | |
KR102315226B1 (ko) | 규칙 증명 방식의 합의 알고리즘 기반 블록체인 시스템 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |