CN111666343B - 基于共识机制的数据上链方法、装置及可读存储介质 - Google Patents
基于共识机制的数据上链方法、装置及可读存储介质 Download PDFInfo
- Publication number
- CN111666343B CN111666343B CN202010537030.1A CN202010537030A CN111666343B CN 111666343 B CN111666343 B CN 111666343B CN 202010537030 A CN202010537030 A CN 202010537030A CN 111666343 B CN111666343 B CN 111666343B
- Authority
- CN
- China
- Prior art keywords
- node
- performance information
- calculation
- consensus
- block
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种基于共识机制的数据上链方法、装置及可读存储介质,中心节点在产生新区块情况下,广播与新区块对应的广播信息至所有的共识节点,各个共识节点在接收到广播信息后,反馈针对历史区块号对应的区块数据的读写性能信息和采用随机数据和计算轮数计算历史区块号对应的区块数据得到的计算性能信息,中心节点再基于每个共识节点反馈读写性能信息和/或计算性能信息,确定共识节点的网络性能信息,基于共识机制,综合考虑基于每个共识节点的读写性能信息、计算性能信息和网络性能信息,更为合理确定出对新区块进行打包上链的候选节点,最后,均衡考虑每个候选节点产生的历史区块数量,更公平地从候选节点中确定出目标节点。
Description
技术领域
本发明涉及电子技术领域,尤其涉及一种基于共识机制的数据上链方法、装置及可读存储介质。
背景技术
区块链根据参与者的公开程度分为三种类型,即公有链、联盟链、私有链,区别于公有链对计算能力的要求,私有链和联盟链对打包上链的有效性和公平性具有更多的需求,现有的针对私有链和联盟链的共识机制通常通过生成一个随机数据,每个链上的客户端计算区块数据与随机数据的差值,将差值最小的客户端作为打包新区块数据的节点。如果某个节点故意伪造差值,其他客户端也无法进行校验,导致打包权的分配不公平,并且,仅基于节点的算力分配打包权,节点打包上链的效率无法得到有效保障。
发明内容
本发明实施例提供了一种基于共识机制的数据上链方法、装置及可读存储介质,用于公平有效地分配区块数据打包权。
第一方面,本发明提供了一种基于共识机制的数据上链方法,应用于区块链网络中的中心节点,包括:
在产生新区块情况下,广播与所述新区块对应的广播信息至所述区块链网络中所有的共识节点,其中,所述广播信息包括指定的历史区块号、随机数据、计算轮数;
接收每个所述共识节点基于所述广播信息反馈的针对所述历史区块号对应的区块数据的读写性能信息和采用所述随机数据和所述计算轮数计算所述历史区块号对应的区块数据得到的计算性能信息;
基于每个共识节点反馈所述读写性能信息和/或所述计算性能信息,确定该共识节点的网络性能信息;
基于每个共识节点的所述读写性能信息、所述计算性能信息和所述网络性能信息,从所有共识节点中确定出满足预设条件的候选节点;
基于每个所述候选节点产生的历史区块数量,从候选节点中确定出目标节点,其中,所述目标节点用于对所述新区块的数据进行打包上链。
可选的,所述读写性能信息包括对应的共识节点读取所述历史区块号对应的区块数据的读取时长,所述计算性能信息包括对应的共识节点采用预设哈希算法对所述历史区块号对应的区块数据进行所述计算轮数次计算的计算结果和计算时长,其中,每一轮计算的数据为上一轮的计算结果与所述随机数据之和,初始数据为所述历史区块号对应的区块数据。
可选的,所述基于每个共识节点反馈所述读写性能信息和/或所述计算性能信息,确定该共识节点的网络性能信息,包括:
确定接收每个共识节点发送的所述读写性能信息和/或所述计算性能信息的接收时长,该共识节点的网络性能信息包括所述接收时长。
可选的,所述基于每个共识节点的所述读写性能信息、所述计算性能信息和所述网络性能信息,从所有共识节点中确定出满足预设条件的候选节点,包括:
基于每个所述共识节点的所述计算结果,从所有的共识节点中确定出计算结果正确的第一候选共识节点;
按预设加权方式对每个第一候选节点对应的读取时长、计算时长和接收时长进行加权计算,获得该第一候选节点的综合性能值,所述加权计算的计算公式为Sum = CPU *K1 + IO * K2 + Network * K3,其中,K1 + K2 + K3 = 1, Sum代表所述综合性能值,CPU代表所述计算时长,IO代表所述读取时长,Network代表所述接收时长,K1>K3>K2;
将所有第一候选共识节点按综合性能值由小到大进行排序,将前N个第一候选节点作为所述满足预设条件的候选节点,其中,N为大于0的整数。
可选的,所述基于每个所述候选节点产生的历史区块数量,从候选节点中确定出目标节点,包括:
基于每个所述候选节点产生历史区块的数量,确定目标值,所述目标值大于产生的历史区块数量的最大值,
确定产生每个所述候选节点的节点标签的数量为所述目标值与该候选节点产生历史区块数量的差值;
按节点标签的数量产生对应候选节点的节点标签;
从产生的所有节点标签中随机确定出目标节点标签,将所述目标节点标签对应的候选节点作为所述目标节点。
第二方面,本发明实施例提供了一种基于共识机制的数据上链方法,应用于区块链网络中的共识节点,包括:
接收所述区块链网络中的中心节点广播的与新区块对应的广播信息,其中,所述广播信息包括指定的历史区块号、随机数据、计算轮数;
基于所述广播信息,反馈针对所述历史区块号对应的区块数据的读写性能信息和采用所述随机数据和所述计算轮数计算所述历史区块号对应的区块数据得到的计算性能信息;
如果接收到所述中心节点发送的确定信息,将所述新区块的数据进行打包上链。
第三方面,本发明实施例提供了一种基于共识机制的数据上链装置,应用于区块链网络中的中心节点,包括:
广播单元,用于在产生新区块情况下,广播与所述新区块对应的广播信息至所述区块链网络中所有的共识节点,其中,所述广播信息包括指定的历史区块号、随机数据、计算轮数;
接收单元,用于接收每个所述共识节点基于所述广播信息反馈的针对所述历史区块号对应的区块数据的读写性能信息和采用所述随机数据和所述计算轮数计算所述历史区块号对应的区块数据得到的计算性能信息;
第一确定单元,用于基于每个共识节点反馈所述读写性能信息和/或所述计算性能信息,确定该共识节点的网络性能信息;
第二确定单元,用于基于每个共识节点的所述读写性能信息、所述计算性能信息和所述网络性能信息,从所有共识节点中确定出满足预设条件的候选节点;
第三确定单元,用于基于每个所述候选节点产生的历史区块数量,从候选节点中确定出目标节点,其中,所述目标节点用于对所述新区块的数据进行打包上链。
第四方面,本发明实施例提供了一种基于共识机制的数据上链装置,应用于区块链网络中的共识节点,包括:
接收单元,用于接收所述区块链网络中的中心节点广播的与新区块对应的广播信息,其中,所述广播信息包括指定的历史区块号、随机数据、计算轮数;
反馈单元,用于基于所述广播信息,反馈针对所述历史区块号对应的区块数据的读写性能信息和采用所述随机数据和所述计算轮数计算所述历史区块号对应的区块数据得到的计算性能信息;
打包单元,用于如果接收到所述中心节点发送的确定信息,将所述新区块的数据进行打包上链。
第五方面,本发明实施例提供了一种基于共识机制的数据上链装置,所述装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前述第一方面和第二方面实施例中所述的基于共识机制的数据上链方法的步骤。
第六方面,本发明实施例提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述第一方面实施例和第二方面实施例中所述的基于共识机制的数据上链方法的步骤。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明实施例的技术方案中,针对私有链和联盟链的区块链网络,中心节点在产生新区块情况下,广播与新区块对应的广播信息至区块链网络中所有的共识节点,其中,广播信息包括指定的历史区块号、随机数据、计算轮数,全网的各个共识节点在接收到广播信息后,反馈针对历史区块号对应的区块数据的读写性能信息和采用随机数据和计算轮数计算历史区块号对应的区块数据得到的计算性能信息,中心节点再基于每个共识节点反馈读写性能信息和/或计算性能信息,确定该共识节点的网络性能信息,基于共识机制,综合考虑基于每个共识节点的读写性能信息、计算性能信息和网络性能信息,更为合理确定出对新区块进行打包上链的候选节点,最后,均衡考虑每个候选节点产生的历史区块数量,从候选节点中确定出目标节点。这样,确定出用于产生新区块的目标节点能够极大的提高快速数据上链的效率,同时打包权的分配也能够兼顾公平,保障打包权分配公开透明以及公平合理。
附图说明
图1为本发明第一实施例中的一种基于共识机制的数据上链方法的流程图;
图2为本发明第二实施例中的一种基于共识机制的数据上链方法的流程图;
图3为本发明第三实施例中的装置的示意图;
图4为本发明第四实施例中的装置的示意图;
图5为本发明第五实施例中的装置的示意图。
具体实施方式
本发明实施例提供了一种基于共识机制的数据上链方法、装置及可读存储介质,用于公平有效地分配区块数据打包权。应用于中心节点的基于共识机制的数据上链方法,包括:在产生新区块情况下,广播与所述新区块对应的广播信息至所述区块链网络中所有的共识节点,其中,所述广播信息包括指定的历史区块号、随机数据、计算轮数;接收每个所述共识节点基于所述广播信息反馈的针对所述历史区块号对应的区块数据的读写性能信息和采用所述随机数据和所述计算轮数计算所述历史区块号对应的区块数据得到的计算性能信息;基于每个共识节点反馈所述读写性能信息和/或所述计算性能信息,确定该共识节点的网络性能信息;基于每个共识节点的所述读写性能信息、所述计算性能信息和所述网络性能信息,从所有共识节点中确定出满足预设条件的候选节点;基于每个所述候选节点产生的历史区块数量,从候选节点中确定出目标节点,其中,所述目标节点用于对所述新区块的数据进行打包上链。
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
实施例
请参考图1,本发明第一实施例提供一种基于共识机制的数据上链方法,应用于区块链网络中的中心节点,该基于共识机制的数据上链方法包括如下步骤:
S101:在产生新区块情况下,广播与所述新区块对应的广播信息至所述区块链网络中所有的共识节点,其中,所述广播信息包括指定的历史区块号、随机数据、计算轮数;
S102:接收每个所述共识节点基于所述广播信息反馈的针对所述历史区块号对应的区块数据的读写性能信息和采用所述随机数据和所述计算轮数计算所述历史区块号对应的区块数据得到的计算性能信息;
S103:基于每个共识节点反馈所述读写性能信息和/或所述计算性能信息,确定该共识节点的网络性能信息;
S104:基于每个共识节点的所述读写性能信息、所述计算性能信息和所述网络性能信息,从所有共识节点中确定出满足预设条件的候选节点;
S105:基于每个所述候选节点产生的历史区块数量,从候选节点中确定出目标节点,其中,所述目标节点用于对所述新区块的数据进行打包上链。
具体的,在本实施例中,该基于共识机制的数据上链方法应用于区块链网络中的中心节点,即中心节点,本实施例的方法主要是应用于区块链中的联盟链和私有链这种对算力要求不高的区块链网络。当然,还可以应用于其他类型的区块链网络,在此,本实施例不做限制。
本实施例中,区块链网络中存在中心节点和与之连接的很多共识节点,共识节点就是区块链网络中的各个客户端。 对于区块链中的各个共识节点,由于其是一个终端设备,其当前的计算能力,当前的网络状况是会实时进行变化的,磁盘IO(输入输出)能力也是变化的。那么对于一个新的区块的产生,共识节点进行打包权竞争,则由几个因素来决定,包括当前的计算能力,可以体现该节点打包交易计算出下个区块的能力,当前的网络状况,当前的磁盘读写能力。举例来说,如果共识节点当前正在进行一些数据计算,已经消耗了大量的计算资源,那么此时其计算下个区块的计算资源则是一个受限的状态。而对于区块链节点计算完一个区块后,其是需要广播到整个链上的所有节点,那么其网络状况也会区块上链数据的关键。而磁盘IO是由于整个区块的计算需要读取大量磁盘文件来计算区块,因此如果此时其磁盘正在清理数据,或者进行大量文件读写操作,那么则会导致其整个区块的计算比较慢。因此本实施例则基于上述这些因素来采集共识节点的各个指标进行上报到中心节点中,从而中心节点可以基于各个节点的上报数据来选择更合理的区块计算节点,即本实施例中用于对新区块打包上链的目标节点。
基于上述分析,本实施例中的方法,首先,中心节点在确定需要产生新的区块情况下,通过步骤S101,向全网的共识节点广播广播信息,各个共识节点需要遵从共识机制,采用广播信息进行相关信息反馈。广播信息中包括指定的历史区块号、随机数据、计算轮数,这些参数均是共识节点参与竞争新区块打包权所需要的信息。
进而,在共识节点接收到广播的广播信息后,反馈两种的性能信息:
第一种:读写性能(IO性能)信息,包括对应的共识节点读取所述历史区块号对应的区块数据的读取时长。
具体的,在本实施例中,每个共识节点收到广播信息后,解析广播信息,并依据广播信息中指定的历史区块号,来从本地磁盘读取该历史区块号对应的区块数据,读取完成后,记录下读取整个区块所消耗的读取时长,此读取时长则可以表明对应共识节点的IO性能数据,读取时长越小说明该共识节点当前对于区块链的整个数据读取性能比较好,IO读取性能高。本实施例中的读写性能采用的是针对历史区块数据进行读取的能力,而不是读取磁盘其他文件的数据的能力,因为读取磁盘其他文件数据并不能够真实反映读取区块链数据的IO能力,所以设计成读取一个区块链的区块数据,区块的数据才是真实的后续计算下一个区块所需要读取的数据,才能真实的反映读取区块的IO性能。
第二种:计算性能信息,包括对应的共识节点采用预设哈希算法对所述历史区块号对应的区块数据进行所述计算轮数次计算的计算结果和计算时长,其中,每一轮计算的数据为上一轮的计算结果与所述随机数据之和,初始数据为所述历史区块号对应的区块数据。
具体的,在本实施例中,针对共识节点的计算性能信息,此性能信息是通过计算也前述读取性能信息中读取到的整个历史区块的数据,将该区块数据和广播信息中的随机数据一起来计算其预设哈希算法SHA-256的hash结果,并且的计算算法则是对区块数据和随机数据一起来不断的迭代计算得到结果,计算完成服务器指定的次数来得到整个计算过程的计算时长。由于每个共识节点在计算时需要按照中心节点指定的历史区块号对应的区块数据和随机数据进行计算,防止一些伪造者提前计算好,而加入了随机数据则必须依赖于随机数据计算的结果才是正确的结果,那么随机数据一变整个结果都会发生变化,同时计算轮数和计算的具体区块都是由中心节点来指定,从而任何一个共识节点都无从提前指定也无法提前计算好,避免了作弊不公平竞争的情况。计算算法如下:
初始化初始数据 result = block ; 其中block则是读取的历史区块数据。Result则是计算的初始数据。
For (int i = 0; i < Times; i++){通过循环来迭代计算中心节点下发的计算轮数。
Result = sha-256. create( result + rand); }
其中使用了sha-256算法来迭代计算hash。Rand则是中心节点下发的随机数据。计算完成的result数据又是下一轮计算的初始数据,并且每一轮迭代必须加入随机数据,这样随机数据在每一轮都能够起到作用,从而伪造比较困难。计算完成后,则会记录整个计算过程所消耗的计算时长,计算时长越短,则说明该共识节点的计算性能越好,在具体实施过程中,预设哈希算法可根据实际需要进行设置,要求哈希结果的位数超过预设位数(如:50、100等),在此本实施例不做限制。
这样中心节点就可以通过步骤S102,接收每个共识节点按照广播信息采用共识机制指定的方式反馈的上述读写性能信息和计算性能信息。进而通过步骤S103确定每个共识节点的网络性能信息。具体的,可执行步骤确定接收每个共识节点发送的所述读写性能信息和/或所述计算性能信息的接收时长,该共识节点的网络性能信息包括所述接收时长。
具体的,在本实施例中,由于当得到打包权的目标节点计算完成区块后,需要广播到区块链网络中的核心节点,那么其广播到核心节点的速度则反映了其网络的状态,也会决定进行新区块数据打包上链的实际能力。而广播区块数据是上行网络,因此从中心节点接收广播信息则无法反映各共识节点的网络性能,而需要各共识节点上报数据到中心节点才能知道其上传带宽能力,因此,当各个共识节点按前述方式计算完成sha-256的结果后,需要将结果数据上传到中心节点,并且中心节点会记录整个共识节点的各个性能信息,包括磁盘IO性能信息、计算性能信息。而上传数据则由其开设上传到上传结束,中心节点来计算其总的接收时长,即上传读写性能信息和/或计算性能信息所需的上传时间,从而得到其网络性能信息。
在确定了各个共识节点的读写性能信息、计算新能信息以及网络性能信息后,则中心节点就可以通过步骤S104,基于这三种信息来从全网的共识节点中确定出用于对新区块进行打包上链的候选节点,具体可通过如下步骤实现:
基于每个所述共识节点的所述计算结果,从所有的共识节点中确定出计算结果正确的第一候选共识节点;
按预设加权方式对每个第一候选节点对应的读取时长、计算时长和接收时长进行加权计算,获得该第一候选节点的综合性能值,所述加权计算的计算公式为Sum = CPU *K1 + IO * K2 + Network * K3,其中,K1 + K2 + K3 = 1, Sum代表所述综合性能值,CPU代表所述计算时长,IO代表所述读取时长,Network代表所述接收时长,K1>K3>K2;
将所有第一候选共识节点按综合性能值由小到大进行排序,将前N个第一候选节点作为所述满足预设条件的候选节点,其中,N为大于0的整数。
具体的,在本实施例中,中心节点对各共识节点上报的性能信息进行存储和校验。中心节点收到共识节点的上报计算性能信息之前会提前采用广播信息中的随机数据以及计算轮数,采用同样的预设哈希算法对指定的历史区块号的区块数据进行计算,得到计算结果,
从而在接收到各个共识节点反馈的性能信息后,可以对比出各个共识节点的计算结果是否与自己的计算结果一致,如果一致,则表明计算正确。进而挑选出计算结果正确的第一候选共识节点。然后各个第一候选共识节点综合性能值进行排序,排序算法则是以3种性能信息进行预设加权方式计算后进行的由小到大的排序。对于本区块链来说,计算性能指标是首选的,其次是网络指标,再其次是磁盘IO指标,综合性能值采用的计算方式如下:
Sum = CPU * K1 + IO * K2 + Network * K3; 其中(K1 + K2 + K3 = 1)
其中,CPU代表计算性能信息中的计算时长,IO代表前述读写性能信息中的读取时长,Network则代表前述网络性能信息中的接收时长。而每个性能数据给予一个权重K1,K2,K3,并且权重总和为1。其中,由于算力是体现共识节点对新区块数据的打包能力,能够较大程度地影响打包上链的效率,是最主要考虑的因素,所以K1的比重最大。其次,由于体现的是将新区块信息广播至全网的能力,也会一定程度影响打包上链的效率,所以K3小于K1,读取磁盘中区块数据的能力是最后考虑的因素,其对于打包上链的效率影响相较于前述的算力和网络能力较小,所以,K2小于K3 ,即K1>K3>K2。
传统的打包权竞争基本是基于计算能力来分配,本实施例中的方法,结合联盟链和私有链的特性,在私有链和联盟链中,因为节点相对较少,记账的数据量小,所以,对计算能力的要求并不高。本实施例中的方法,不仅仅考虑节点的计算能力,还考了其他的数据读取能力,数据上传能力,能从多方面来体现节点的综合性能,这样,在根据综合性能确定打包节点时,能避免因单纯考虑算力,而其他能力不足,导致确定出的节点打包效率很慢。
综合性能值越小代表该共识节点的整个性能是越好。而通过加权方式来确定各个共识节点的综合性能值,即可以反映出3个指标的数据,且计算速度更快,排序起来也更快,同时也不会造成异常。举例来说,一个共识节点其CPU是最快速的,其消耗时间几乎是0毫秒,而假设其磁盘IO非常差,比如读取磁盘数据其消耗了10秒,而其网络数据是正常的比如消耗了1秒,那么总体是11秒,而通过将3个数据加权相加,任意一个性能都会反映到总体的综合性能值上,从而避免一些共识节点仅因为某一个指标特别好,而某个指标特别差的情况,不合理的竞争到对新区块的打包权,导致新区块打包上链的效率低下。中心节点对各个第一候选节点的综合性能值按由小到大的顺序排序好后,可以选择排在前N(如:10000、20000等)个第一候选节点作为满足预设条件的候选节点。在具体实施过程中,排序的方式,选择的第一候选节点个数均可根据实际需要进行设置,在此,本实施例不做限制。
最后,中心节点通过步骤S105,基于每个候选节点产生的历史区块数量,从候选节点中确定出目标节点,具体的,可通过如下方式实现:
基于每个所述候选节点产生历史区块的数量,确定目标值,所述目标值大于产生的历史区块数量的最大值,
确定产生每个所述候选节点的节点标签的数量为所述目标值与该候选节点产生历史区块数量的差值;
按节点标签的数量产生对应候选节点的节点标签;
从产生的所有节点标签中随机确定出目标节点标签,将所述目标节点标签对应的候选节点作为所述目标节点。
具体的,在本实施例中,对于如何选择进行新区块打包上链的目标节点,既要考虑均衡,同时算法不能太过复杂,造成大量计算从而消耗资源和时间。
中心节点则会记录下每次产生区块的目标节点的标签,并且中心节点会基于每个候选节点产生历史区块的数量,来做均衡。通过一定算法来进行选择,从而能够达到各个共识节点的均衡,不至于某个共识节点性能最好每次都挑选该节点。那么中心节点的挑选原则则是对各个节点的挑选次数达到均衡。具体算法如下:
首先对于排序结果筛选的N个候选节点,读取每个候选节点以往产生区块的数量,确定产生区块数量最多的共识节点,并记录其数量值为M,确定一个稍大于M的目标值Max,比如Max比M大2,然后对每个候选节点使用Max值来减去其产生的历史区块数量的值,得到的值后以该值的个数来产生一个节点的唯一标签。举例来说,Max为10,对于候选节点A,产生历史区块数量为2,则差值为8,需要产生8个候选节点A的节点标签。对于每个候选节点都以上述方式产生对应数量的节点标签,将产生的节点标签存储到数组中,存储完成后,那么产生过区块越多的候选节点,在数组中对应的节点标签的个数就越少,而产生过区块越少的候选节点,在数组中对应的节点标签的个数就越多。然后需要随机算法来将Node的数据进行打乱,可通过Rand(Node)这个函数实现,此接口Rand是将Node中存储的数据进行随机的打乱。中心节点从数组中选择节点则是使用之前产生的随机数据,计算算法可以采用Node_Index = rand % Node.Size(),其中rand则是中心节点之前广播的随机数据。Node.size()标示数组中的所有存储的节点标签的个数。通过求余数则可以从Node数组中随机选择一个节点。计算得到值则是Node_Index即为目标节点对应的节点标签,进而确定出目标节点。
在中心节点确定出用于对新区块进行打包上链的目标节点后,即可广播确认信息至全网的共识节点,各个共识节点根据确认信息确定自己是否分配得到打包权,在确认目标节点为自己时,对新区块进行打包上链。
本实施例中的方法,考虑共识节点各个方面的性能,又能够兼顾公平,确定出用于产生新区块的目标节点能够极大的提高快速数据上链的效率,同时打包权的分配也能够兼顾公平,保障打包权分配公开透明以及公平合理。
请参见图2,本发明第二实施例提供了一种基于共识机制的数据上链方法,应用于区块链网络中的共识节点,包括:
S201:接收所述区块链网络中的中心节点广播的与新区块对应的广播信息,其中,所述广播信息包括指定的历史区块号、随机数据、计算轮数;
S202:基于所述广播信息,反馈针对所述历史区块号对应的区块数据的读写性能信息和采用所述随机数据和所述计算轮数计算所述历史区块号对应的区块数据得到的计算性能信息;
S203:如果接收到所述中心节点发送的确定信息,将所述新区块的数据进行打包上链。
本实施例中的共识节点基于共识机制进行数据上链的方法已在前述第一实施例中详细阐述,在此,本实施例不再赘述。
请参见图3,本发明的第三实施例提供了一种基于共识机制的数据上链装置,应用于区块链网络中的中心节点,包括:
广播单元301,用于在产生新区块情况下,广播与所述新区块对应的广播信息至所述区块链网络中所有的共识节点,其中,所述广播信息包括指定的历史区块号、随机数据、计算轮数;
接收单元302,用于接收每个所述共识节点基于所述广播信息反馈的针对所述历史区块号对应的区块数据的读写性能信息和采用所述随机数据和所述计算轮数计算所述历史区块号对应的区块数据得到的计算性能信息;
第一确定单元303,用于基于每个共识节点反馈所述读写性能信息和/或所述计算性能信息,确定该共识节点的网络性能信息;
第二确定单元304,用于基于每个共识节点的所述读写性能信息、所述计算性能信息和所述网络性能信息,从所有共识节点中确定出满足预设条件的候选节点;
第三确定单元305,用于基于每个所述候选节点产生的历史区块数量,从候选节点中确定出目标节点,其中,所述目标节点用于对所述新区块的数据进行打包上链。
进一步,在本实施例中,所述读写性能信息包括对应的共识节点读取所述历史区块号对应的区块数据的读取时长,所述计算性能信息包括对应的共识节点采用预设哈希算法对所述历史区块号对应的区块数据进行所述计算轮数次计算的计算结果和计算时长,其中,每一轮计算的数据为上一轮的计算结果与所述随机数据之和,初始数据为所述历史区块号对应的区块数据。
进一步,在本实施例中,所述第一确定单元303具体用于:
确定接收每个共识节点发送的所述读写性能信息和/或所述计算性能信息的接收时长,该共识节点的网络性能信息包括所述接收时长。
进一步,在本实施例中,所述第二确定单元304具体用于:
基于每个所述共识节点的所述计算结果,从所有的共识节点中确定出计算结果正确的第一候选共识节点;
按预设加权方式对每个第一候选节点对应的读取时长、计算时长和接收时长进行加权计算,获得该第一候选节点的综合性能值,所述加权计算的计算公式为Sum = CPU *K1 + IO * K2 + Network * K3,其中,K1 + K2 + K3 = 1, Sum代表所述综合性能值,CPU代表所述计算时长,IO代表所述读取时长,Network代表所述接收时长,K1>K3>K2;
将所有第一候选共识节点按综合性能值由小到大进行排序,将前N个第一候选节点作为所述满足预设条件的候选节点,其中,N为大于0的整数。
进一步,在本实施例中,所述第三确定单元305具体用于:
基于每个所述候选节点产生历史区块的数量,确定目标值,所述目标值大于产生的历史区块数量的最大值,
确定产生每个所述候选节点的节点标签的数量为所述目标值与该候选节点产生历史区块数量的差值;
按节点标签的数量产生对应候选节点的节点标签;
从产生的所有节点标签中随机确定出目标节点标签,将所述目标节点标签对应的候选节点作为所述目标节点。
请参见图4,本发明的第四实施例提供了一种基于共识机制的数据上链装置,应用于区块链网络中的共识节点,包括:
接收单元401,用于接收所述区块链网络中的中心节点广播的与新区块对应的广播信息,其中,所述广播信息包括指定的历史区块号、随机数据、计算轮数;
反馈单元402,用于基于所述广播信息,反馈针对所述历史区块号对应的区块数据的读写性能信息和采用所述随机数据和所述计算轮数计算所述历史区块号对应的区块数据得到的计算性能信息;
打包单元403,用于如果接收到所述中心节点发送的确定信息,将所述新区块的数据进行打包上链。
请参见图5,本发明的第五实施例提供了一种基于共识机制的数据上链装置,该实施例的装置包括:处理器501、存储器502以及存储在所述存储器中并可在所述处理器上运行的计算机程序,例如第一实施例或第二实施例中基于共识机制的数据上链方法对应的程序。所述处理器执行所述计算机程序时实现上述第一实施例或第二实施例中各基于共识机制的数据上链方法中的步骤。或者,所述处理器执行所述计算机程序时实现上述第三实施例或第四实施例的装置中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述计算机装置中的执行过程。
所述装置可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图5仅仅是计算机装置的示例,并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述装置还可以包括输入输出设备、网络接入设备、总线等。
所称处理器501可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器502可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明第六实施例提供了一种计算机可读存储介质,其上存储有计算机程序,本发明第三实施例中的所述装置和第四实施例中的所述基于共识机制的数据上链装置集成的功能单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述第一实施例或第二实施例的基于共识机制的数据上链方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
在本发明实施例的技术方案中,针对私有链和联盟链的区块链网络,中心节点在产生新区块情况下,广播与新区块对应的广播信息至区块链网络中所有的共识节点,其中,广播信息包括指定的历史区块号、随机数据、计算轮数,全网的各个共识节点在接收到广播信息后,反馈针对历史区块号对应的区块数据的读写性能信息和采用随机数据和计算轮数计算历史区块号对应的区块数据得到的计算性能信息,中心节点再基于每个共识节点反馈读写性能信息和/或计算性能信息,确定该共识节点的网络性能信息,基于共识机制,综合考虑基于每个共识节点的读写性能信息、计算性能信息和网络性能信息,更为合理确定出对新区块进行打包上链的候选节点,最后,均衡考虑每个候选节点产生的历史区块数量,从候选节点中确定出目标节点。这样,确定出用于产生新区块的目标节点能够极大的提高快速数据上链的效率,同时打包权的分配也能够兼顾公平,保障打包权分配公开透明以及公平合理。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种基于共识机制的数据上链方法,应用于区块链网络中的中心节点,其特征在于,包括:
在产生新区块情况下,广播与所述新区块对应的广播信息至所述区块链网络中所有的共识节点,其中,所述广播信息包括指定的历史区块号、随机数据、计算轮数;
接收每个所述共识节点基于所述广播信息反馈的针对所述历史区块号对应的区块数据的读写性能信息和采用所述随机数据和所述计算轮数计算所述历史区块号对应的区块数据得到的计算性能信息;
基于每个共识节点反馈所述读写性能信息和/或所述计算性能信息,确定该共识节点的网络性能信息;
基于每个共识节点的所述读写性能信息、所述计算性能信息和所述网络性能信息,从所有共识节点中确定出满足预设条件的候选节点;
基于每个所述候选节点产生的历史区块数量,从候选节点中确定出目标节点,其中,所述目标节点用于对所述新区块的数据进行打包上链。
2.如权利要求1所述的方法,其特征在于,所述读写性能信息包括对应的共识节点读取所述历史区块号对应的区块数据的读取时长,所述计算性能信息包括对应的共识节点采用预设哈希算法对所述历史区块号对应的区块数据进行所述计算轮数次计算的计算结果和计算时长,其中,每一轮计算的数据为上一轮的计算结果与所述随机数据之和,初始数据为所述历史区块号对应的区块数据。
3.如权利要求2所述的方法,其特征在于,所述基于每个共识节点反馈所述读写性能信息和/或所述计算性能信息,确定该共识节点的网络性能信息,包括:
确定接收每个共识节点发送的所述读写性能信息和/或所述计算性能信息的接收时长,该共识节点的网络性能信息包括所述接收时长。
4.如权利要求3所述的方法,其特征在于,所述基于每个共识节点的所述读写性能信息、所述计算性能信息和所述网络性能信息,从所有共识节点中确定出满足预设条件的候选节点,包括:
基于每个所述共识节点的所述计算结果,从所有的共识节点中确定出计算结果正确的第一候选共识节点;
按预设加权方式对每个第一候选节点对应的读取时长、计算时长和接收时长进行加权计算,获得该第一候选节点的综合性能值,所述加权计算的计算公式为Sum = CPU * K1 +IO * K2 + Network * K3,其中,K1 + K2 + K3 = 1, Sum代表所述综合性能值,CPU代表所述计算时长,IO代表所述读取时长,Network代表所述接收时长,K1>K3>K2;
将所有第一候选共识节点按综合性能值由小到大进行排序,将前N个第一候选节点作为所述满足预设条件的候选节点,其中,N为大于0的整数。
5.如权利要求1所述的方法,其特征在于,所述基于每个所述候选节点产生的历史区块数量,从候选节点中确定出目标节点,包括:
基于每个所述候选节点产生历史区块的数量,确定目标值,所述目标值大于产生的历史区块数量的最大值,
确定产生每个所述候选节点的节点标签的数量为所述目标值与该候选节点产生历史区块数量的差值;
按节点标签的数量产生对应候选节点的节点标签;
从产生的所有节点标签中随机确定出目标节点标签,将所述目标节点标签对应的候选节点作为所述目标节点。
6.一种基于共识机制的数据上链装置,应用于区块链网络中的中心节点,其特征在于,包括:
广播单元,用于在产生新区块情况下,广播与所述新区块对应的广播信息至所述区块链网络中所有的共识节点,其中,所述广播信息包括指定的历史区块号、随机数据、计算轮数;
接收单元,用于接收每个所述共识节点基于所述广播信息反馈的针对所述历史区块号对应的区块数据的读写性能信息和采用所述随机数据和所述计算轮数计算所述历史区块号对应的区块数据得到的计算性能信息;
第一确定单元,用于基于每个共识节点反馈所述读写性能信息和/或所述计算性能信息,确定该共识节点的网络性能信息;
第二确定单元,用于基于每个共识节点的所述读写性能信息、所述计算性能信息和所述网络性能信息,从所有共识节点中确定出满足预设条件的候选节点;
第三确定单元,用于基于每个所述候选节点产生的历史区块数量,从候选节点中确定出目标节点,其中,所述目标节点用于对所述新区块的数据进行打包上链。
7.一种基于共识机制的数据上链装置,其特征在于,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-5中任一项所述的基于共识机制的数据上链方法的步骤。
8.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5中任一项所述的基于共识机制的数据上链方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010537030.1A CN111666343B (zh) | 2020-06-12 | 2020-06-12 | 基于共识机制的数据上链方法、装置及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010537030.1A CN111666343B (zh) | 2020-06-12 | 2020-06-12 | 基于共识机制的数据上链方法、装置及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111666343A CN111666343A (zh) | 2020-09-15 |
CN111666343B true CN111666343B (zh) | 2022-05-10 |
Family
ID=72387294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010537030.1A Active CN111666343B (zh) | 2020-06-12 | 2020-06-12 | 基于共识机制的数据上链方法、装置及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111666343B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112600887B (zh) * | 2020-12-03 | 2023-03-24 | 中国联合网络通信集团有限公司 | 算力管理方法和装置 |
CN112954009B (zh) * | 2021-01-27 | 2023-05-02 | 咪咕音乐有限公司 | 区块链共识方法、设备及存储介质 |
CN113486118B (zh) * | 2021-07-21 | 2023-09-22 | 银清科技有限公司 | 共识节点选取方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107124403A (zh) * | 2017-04-14 | 2017-09-01 | 朱清明 | 区块链中共识区块的生成方法与计算设备 |
WO2019192062A1 (zh) * | 2018-04-04 | 2019-10-10 | 上海金丘信息科技股份有限公司 | 一种基于信任成员的动态权益的共识方法 |
CN110995439A (zh) * | 2019-11-20 | 2020-04-10 | 上海链颉科技有限公司 | 区块链共识方法、电子装置及存储介质 |
-
2020
- 2020-06-12 CN CN202010537030.1A patent/CN111666343B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107124403A (zh) * | 2017-04-14 | 2017-09-01 | 朱清明 | 区块链中共识区块的生成方法与计算设备 |
WO2019192062A1 (zh) * | 2018-04-04 | 2019-10-10 | 上海金丘信息科技股份有限公司 | 一种基于信任成员的动态权益的共识方法 |
CN110995439A (zh) * | 2019-11-20 | 2020-04-10 | 上海链颉科技有限公司 | 区块链共识方法、电子装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
一种基于权益代表的可扩展共识协议;李忠诚等;《应用科学学报》;20200130(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111666343A (zh) | 2020-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111666343B (zh) | 基于共识机制的数据上链方法、装置及可读存储介质 | |
CN108596621B (zh) | 区块链记账节点生成方法、装置、计算机设备及存储介质 | |
CN108053211B (zh) | 基于区块链的交易处理方法及装置 | |
CN106355391B (zh) | 一种业务处理方法及装置 | |
CN110868441A (zh) | 区块链公链的维护方法、装置、节点及区块链公链 | |
CN107454110A (zh) | 一种数据校验方法及服务器 | |
CN112926897A (zh) | 基于联邦学习的客户端贡献计算方法和装置 | |
CN104965844A (zh) | 信息处理方法及装置 | |
CN110675183B (zh) | 一种营销对象的确定方法、营销推广方法及相关装置 | |
CN106075912A (zh) | 一种网络游戏互助的方法及网络游戏*** | |
CN111061505B (zh) | 基于机器学习的优化打ab包方法 | |
CN107465698A (zh) | 一种数据校验方法及服务器 | |
CN107682328A (zh) | 一种数据校验方法及客户端 | |
CN108304354A (zh) | 一种预测模型训练方法及装置、存储介质、电子设备 | |
CN107623865A (zh) | 一种数据校验方法及服务器 | |
CN107426253A (zh) | 一种数据校验方法及客户端 | |
CN111047348A (zh) | 一种新型区块链共识算法及基于该算法的区块链网络*** | |
CN108241970B (zh) | 基于区块链的挖矿方法、装置及计算机可读存储介质 | |
CN107528855A (zh) | 一种数据校验方法及服务器 | |
CN107507020B (zh) | 获取网络传播影响力竞争优势最大化的方法 | |
CN112995167A (zh) | 基于Kafka机制的用电信息采集方法、区块链网络及用户端 | |
CN108415686B (zh) | 随机数提供过程中的分账计算方法和装置 | |
CN111160886A (zh) | 电子账单的发送方法、装置、存储介质和计算机设备 | |
CN116185731A (zh) | 一种基于区块链网络的终端测试***、方法和电子设备 | |
CN109544158A (zh) | 区块数据处理方法及计算机存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20200915 Assignee: Yidu Lehuo Network Technology Co.,Ltd. Assignor: WUHAN DOUYU YULE NETWORK TECHNOLOGY Co.,Ltd. Contract record no.: X2023980041383 Denomination of invention: Method, device, and readable storage medium for data chaining based on consensus mechanism Granted publication date: 20220510 License type: Common License Record date: 20230908 |