本发明涉及数据存储技术领域,尤其涉及芯片研发交易数据存储方法及系统。
背景技术:
芯片又称微电路(microcircuit)、微芯片(microchip)、集成电路(integratedcircuit,ic),具体是指内含集成电路的硅片,具有较小的体积,通常是计算机其其他电子设备的重要组成部分。芯片研发是一个复杂的过程,总体上包括前端设计和后端设计,而前端设计和后端设计各自又包括有多个设计、验证和生产的过程,因此一个芯片的研发通常需要多个厂商的相互配合。
目前,在芯片研发和芯片交易过程中会产生用于记录研发成果交易和芯片产品交易的过程数据,而这些过程数据存储在传统数据库中。存储在传统数据库中的过程数据容易被篡改且难以进行追溯,导致在芯片研发或芯片交易过程出现问题后无法根据过程数据进行责任追究。
因此,针对以上不足,需要提供一种使得芯片研发交易过程所产生的过程数据可追溯且防篡改的数据存储方法。
技术实现要素:
本发明要解决的技术问题在于芯片研发交易过程所产生的过程数据容易被篡改且难以进行追溯,针对现有技术中的缺陷,提供一种可以对芯片研发交易过程中所产生的过程数据进行追溯,且可以防止过程数据被篡改的技术方案。
为了解决上述技术问题,本发明提供了一种芯片研发交易数据存储方法,包括:
获取预设时间段内进行芯片研发与交易而产生的待存储数据;
从至少两个系统节点和至少一个授权节点中选择至少两个共识节点,其中,所述系统节点为始终在线稳定运行的节点,所述授权节点为具有共识权限的从业用户节点;
利用所述至少两个共识节点依次循环根据所述待存储数据进行至少一次哈希运算而获得相对应的至少一个哈希值,将目标共识节点确定为记账节点,其中,所述目标共识节点优先运算出小于预设的自主挖矿目标值的哈希值;
通过所述记账节点将所述待存储数据存储在生成的新区块中,并将所述新区块链接到区块链上。
可选地,
所述待存储数据包括:交易数据和智能合约消息数据中的至少一个,其中,
所述交易数据为不同从业用户节点之间进行芯片研发和芯片交易时所产生的过程数据;
所述智能合约消息数据为智能合约执行过程中所产生的过程数据。
可选地,
所述至少两个共识节点中不包括所述授权节点。
可选地,
所述从至少两个系统节点和至少一个授权节点中选择至少两个共识节点,包括:
从所述至少一个授权节点中筛选出至少一个目标授权节点,其中,所述授权节点被选中作为所述目标授权节点的概率与所述授权节点对应的参与度成正比,所述参与度由所述授权节点的在线时间和评价得分中的部分或全部而确定;
将所述至少两个系统节点和所述至少一个目标授权节点确定为所述共识节点。
可选地,
所述利用所述至少两个共识节点依次循环根据所述待存储数据进行至少一次哈希运算而获得相对应的至少一个哈希值,包括:
分别生成与每一个所述共识节点相对应的积分奖励交易信息,其中,针对每一个所述共识节点,如果该共识节点为所述系统节点,则该共识节点对应的所述积分奖励交易信息包括奖励积分值和奖励节点标识,所述奖励节点标识用于标识一个所述目标授权节点,如果该共识节点为所述授权节点,则该共识节点对应的所述积分奖励交易信息包括所述奖励积分值;
针对每一个所述共识节点,对该共识节点对应的所述积分奖励交易信息和所述待存储数据进行打包获得区块主体,通过对所述区块主体进行哈希运算获得与该共识节点相对应的第一merkle树根哈希值;
根据预先确定的节点排序结果,每一个所述共识节点依次对相对应的区块头进行至少一次哈希运算而获得至少一个哈希值,其中,针对每一个所述共识节点,与该共识节点相对应的所述区块头包括有与该共识节点相对应的所述第一merkle树根哈希值、所述区块链上末位区块的第二merkle树根哈希值和自主挖矿随机数,所述自主挖矿随机数按照预设的规则变化,使得该共识节点每次对所述区块头进行哈希运算时所述区块头中包括有不同的所述自主挖矿随机数。
可选地,
该芯片研发交易数据存储方法进一步包括:
按照相对应所述参与度由大至小的顺序,将所述至少一个目标授权节点排列在所述至少两个系统节点之后;
根据各个所述共识节点的排列顺序,获得所述节点排序结果。
可选地,
在所述将目标共识节点确定为记账节点之后,进一步包括:
如果所述记账节点为所述系统节点,根据与所述记账节点相对应的所述积分奖励交易信息包括的所述奖励积分值和所述奖励节点标识,向所述奖励节点标识所标识的所述目标授权节点发放与所述奖励积分值相对应的积分;
如果所述记账节点为授权节点,根据与所述记账节点相对应的所述积分奖励交易信息包括的所述奖励积分值,向所述记账节点发放与所述奖励积分值相对应的积分。
可选地,
所述通过所述记账节点将所述待存储数据存储在生成的新区块中,包括:
获取目标区块头,其中所述记账节点对所述目标区块头进行哈希运算所获得的哈希值小于所述自主挖矿目标值;
将获取的所述目标区块头与所述记账节点相对应的所述区块主体相组合,获得所述新区块。
本发明还提供了一种芯片研发交易数据存储系统,包括:至少两个系统节点和至少一个授权节点,其中,
所述系统节点为始终在线稳定运行的节点,所述授权节点为具有共识权限的从业用户节点;
所述至少两个系统节点,用于获取预设时间段内进行芯片研发与交易而产生的待存储数据,并从至少两个系统节点和至少一个授权节点中选择至少两个共识节点;
所述至少两个共识节点,用于依次循环根据所述待存储数据进行至少一次哈希运算而获得相对应的至少一个哈希值,将目标共识节点确定为记账节点,其中,所述目标共识节点优先运算出小于预设的自主挖矿目标值的哈希值;
所述记账节点,用于将所述待存储数据存储在生成的新区块中,并将所述新区块链接到区块链上。
可选地,
该芯片研发交易数据存储系统进一步包括:至少一个普通节点和至少一个访客节点;
所述普通节点为联盟内具有区块读取权限的从业用户节点;
所述访客节点为联盟外具有从区块链中读取与其自身相关的所述待存储数据的用户节点;
所述普通节点,用于递交成为授权节点的申请,并在申请审批通过后成为所述授权节点;
所述访客节点,用于递交成为普通节点的申请,并在申请审批通过后成为所述普通节点。
实施本发明的芯片研发交易数据存储方法及系统,具有以下有益效果:
1、在点对点网络中,系统节点为可以长期稳定运行的节点,授权节点为具有共识权限的从业用户节点,在需要对预设时间段内进行芯片研发和芯片交易而产生的待存储数据进行存储时,从各个系统节点和授权节点中选择多个节点作为共识节点,之后各个共识节点依次循环根据待存储数据进行至少一次哈希运算而获得相对应的至少一个哈希值,进而优先运算出小于预设的自主挖矿目标值的哈希值的一个共识节点会被确定为记账节点,之后由记账节点生产用于存储待存储数据的新区块,并将生成的新区块链接到已有的区块链上。由此可见,参与芯片研发和交易过程中的用户均对应点对点网络中的一个节点,从系统节点和授权节点中选择共识节点,进而通过快速的共识算法选举出记账节点,由记账节点将待存储数据存储到区块链中,从而基于区块链的特性可以保证芯片研发和交易过程中所产生过程数据可追溯且防篡改。
2、将交易数据和智能合约消息数据存储在区块链中,基于区块链所具有的可追溯防篡改的数据存储特性,可以避免交易数据和智能合约消息数据被篡改,从而在需要的时候可以根据区块链中存储的交易数据和智能合约消息数据对芯片研发和芯片交易的过程进行追溯,从而确定交易双方是否存在违约行为,使得违约方无法抵赖。
3、由于系统节点是可以始终在线稳定运行的节点,系统节点的数量、运行的稳定性和安全性均具有可靠的保证,因此从系统节点中选择节点作为共识节点,并保证所有共识节点均属于系统节点,可以保证共识节点进行共识过程的稳定性。
4、从授权节点中选择目标授权节点,将目标授权节点与所有系统节点确定为共识节点,由于系统节点的存在可以保证共识结果的可靠性,选择部分授权节点作为共识节点参与共识过程,可以提高共识过程和共识结果的公信力。
5、可以仅从系统节点中选择节点作为共识节点,也可以将系统节点与从授权节点中选择的目标授权节点作为共识节点,在实际业务实现过程中可以根据需求灵活确定选择共识节点的方法,从而可以提高共识的灵活性。
6、由各个共识节点依次循环对相应的区块头进行哈希运算,将优先运算出小于自主挖矿目标值的哈希值的共识节点确定为记账节点,从而可以缩短选举记账节点所需的时间,即实现了快速共识,提升了共识的效率。另外,由于各个共识节点运算出小于自主挖矿目标值的哈希值的概率相同,从而保证共识过程中各个共识节点之间的公平,从而可以保证共识过程的可靠性。
7、由于系统节点具有较高的可信性,在每一个区块生成过程中均会参与共识,因此将系统节点排列在各个目标授权节点之前。目标授权节点的参与度可以表征目标授权节点的可信性,参与度越高说明相应目标授权节点的可信性越高,因此按照相应参与度由大至小的顺序将各个目标授权节点排列在各个系统节点之后,使得对应参与度较高的目标授权节点可以优先对应参与度较低的目标授权节点进行哈希运算,一方面保证了共识过程的公平性,另一方面保证共识结果的安全性。
8、通过生成积分奖励交易信息,在确定出记账节点之后,根据积分奖励交易信息向参与共识过程的一个授权节点发放积分,积分可以提升节点的参与度,还可以作为虚拟货币在芯片研发和芯片交易过程中用于货币支付,从而可以对授权节点进行激励,保证授权节点积极参与共识过程,保证共识过程可以正常进行。
9、由于区块主体中包括有对应于记账节点的积分奖励交易信息,因此积分奖励交易信息同样被存储到区块链中,后续可以从区块链中读取积分奖励交易信息以对积分发放过程进行追溯,保证积分发放过程的公平性。
附图说明
图1是本发明实施例一提供的一种芯片研发交易数据存储方法的流程图;
图2是本发明实施例五提供的一种记账节点确定方法的流程图;
图3是本发明实施例九提供的一种芯片研发交易数据存储系统的示意图;
图4是本发明实施例十提供的一种芯片研发交易数据存储系统的示意图;
图5是本发明实施例十一提供的一种芯片研发交易数据存储方法的流程图。
图中:301:系统节点;302:授权节点;401:核心层;402:授权层;403:普通层;404:访客层;405:系统节点;406:授权节点;407:普通节点;408:访客节点;409:授权节点;410:授权节点;411:普通节点;412:访客节点。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如图1所示,本发明实施例提供的芯片研发交易数据存储方法,可以包括如下步骤:
步骤101:获取预设时间段内进行芯片研发与交易而产生的待存储数据;
步骤102:从至少两个系统节点和至少一个授权节点中选择至少两个共识节点,其中,系统节点为始终在线稳定运行的节点,授权节点为具有共识权限的从业用户节点;
步骤103:利用至少两个共识节点依次循环根据待存储数据进行至少一次哈希运算而获得相对应的至少一个哈希值,将目标共识节点确定为记账节点,其中,目标共识节点优先运算出小于预设的自主挖矿目标值的哈希值;
步骤104:通过记账节点将待存储数据存储在生成的新区块中,并将新区块链接到区块链上。
本发明实施例提供的芯片研发交易数据存储方法,在点对点网络中,系统节点为可以长期稳定运行的节点,授权节点为具有共识权限的从业用户节点,在需要对预设时间段内进行芯片研发和芯片交易而产生的待存储数据进行存储时,从各个系统节点和授权节点中选择多个节点作为共识节点,之后各个共识节点依次循环根据待存储数据进行至少一次哈希运算而获得相对应的至少一个哈希值,进而优先运算出小于预设的自主挖矿目标值的哈希值的一个共识节点会被确定为记账节点,之后由记账节点生产用于存储待存储数据的新区块,并将生成的新区块链接到已有的区块链上。由此可见,参与芯片研发和交易过程中的用户均对应点对点网络中的一个节点,从系统节点和授权节点中选择共识节点,进而通过快速的共识算法选举出记账节点,由记账节点将待存储数据存储到区块链中,从而基于区块链的特性可以保证芯片研发和交易过程中所产生过程数据可追溯且防篡改。
需要说明的是,系统节点为点对点网络中可以始终在线稳定运行的节点,属于为了保证随时都可以正常进行数据存储而部署的节点,因而系统节点没有相对应的从业单位或从业个人。相应地,授权节点为点对点网络中具有共识权限的从业用户节点,即授权节点对应有从业单位或从业个人,授权节点的在线状态受相应用户的控制。另外,上述从业用户是指参与芯片研发和芯片交易过程的单位或个人。
实施例二
在实施例一所提供芯片研发交易数据存储方法的基础上,需要进行存储的待存储数据可以包括交易数据和智能合约消息数据中的任意一个或全部,而交易数据为不同从业用户节点之间进行芯片研发和芯片交易时所产生的过程数据,智能合约消息数据为智能合约执行过程中所产生的过程数据。
具体地,在两个节点之间进行芯片研发交互或芯片交易买卖过程中,会产生用于记录研发成果交付、款项支付等过程的交易数据,而芯片研发和芯片交易的规则按照存储在区块链上的智能合约进行,在智能合约被执行过程中会产生用于记录阶段性研发成果交付、不同智能合约之间交互等过程的智能合约消息数据。
将交易数据和智能合约消息数据存储在区块链中,基于区块链所具有的可追溯防篡改的数据存储特性,可以避免交易数据和智能合约消息数据被篡改,从而在需要的时候可以根据区块链中存储的交易数据和智能合约消息数据对芯片研发和芯片交易的过程进行追溯,从而确定交易双方是否存在违约行为,使得违约方无法抵赖。
实施例三
在实施例一所提供芯片研发交易数据存储方法的基础上,步骤102从系统节点和授权节点中选择共识节点时,可以仅从系统节点中选择节点作为共识节点,即共识节点中不包括授权节点。具体地,可以将所有的系统节点全部选择作为共识节点,也可以从所有系统节点中选择部分系统节点作为共识节点。
由于系统节点是可以始终在线稳定运行的节点,系统节点的数量、运行的稳定性和安全性均具有可靠的保证,因此从系统节点中选择节点作为共识节点,并保证所有共识节点均属于系统节点,可以保证共识节点进行共识过程的稳定性。
实施例四
在实施例一所提供芯片研发交易数据存储方法的基础上,步骤102从系统节点和授权节点中选择共识节点时,可以从授权节点中选择一个或多个目标授权节点,进而将选择出的目标授权节点和全部的系统节点作为共识节点。具体地,在从授权节点中选择目标授权节点时,可以根据各个授权节点对应的参与度来选择目标授权节点,其中,对应参与度较高的授权节点被选中作为目标授权节点的概率较高,而授权节点对应的参与度由该授权节点的在线时间和评价得分中的部分或全部确定。
需要说明的是,从授权节点中选择出的目标授权节点均是处于在线状态的,非在线状态的授权节点不会被选中作为目标授权节点,从而保证后续快速共识过程可以正常进行。
针对每一个授权节点,该授权节点的在线时间越长,说明该授权节点参与共识或者进行芯片研发交易的累计时间越长,该授权节点的可信程度越高。另外,授权节点每次参与芯片研发或者芯片交易后,会根据芯片研发或者芯片交易的实际完成情况为授权节点评分,进而授权节点的累计评价得分越高说明该授权节点的信誉越好。从而可以根据授权节点的在线时长和评价得分来确定对应的参与度,在线时长越长且评价得分越高的授权节点的参与度越高,对应参与度越高的授权节点的可信度越高。
在从各个授权节点中选择共识节点时,对应参与度越高的授权节点被选中作为共识节点的概率越高,但并非按照对应参与度由高至低的顺序直接选择对应参与度较高的授权节点作为共识节点,这可以保证从授权节点中选择共识节点的公平性。
从授权节点中选择目标授权节点,将目标授权节点与所有系统节点确定为共识节点,由于系统节点的存在可以保证共识结果的可靠性,选择部分授权节点作为共识节点参与共识过程,可以提高共识过程和共识结果的公信力。
综合上述实施例三和实施例四,可以仅从系统节点中选择节点作为共识节点,也可以将系统节点与从授权节点中选择的目标授权节点作为共识节点,在实际业务实现过程中可以根据需求灵活确定选择共识节点的方法,从而可以提高共识的灵活性。
实施例五
在实施例四所提供芯片研发交易数据存储方法的基础上,步骤103利用各个共识节点依次循环根据待存储数据进行至少一个哈希运算而获得对应的至少一个哈希值,进而可以根据共识节点运算出的哈希值从共识节点中确定记账节点。如图2所示,具体确定记账节点的过程可以通过如下步骤实现:
步骤201:分别生成与每一个共识节点相对应的积分奖励交易信息。
针对所确定出的各个共识节点中的每一个共识节点,根据该共识节点的来源不同,所生成的对应于该共识节点的积分奖励交易信息也不同,具体地:
针对任意一个为系统节点的共识节点,针对该共识节点所生成的积分奖励交易信息包括有奖励积分值和奖励节点标识。其中,奖励节点标识用于标识一个目标授权节点,而奖励积分值则定义了所要奖励的积分数额。另外,奖励节点标识所标识的目标授权节点是从各个目标授权就中选择出来的,而对应参与度越高的目标授权节点被选中的概率越高。
针对任意一个为授权节点的共识节点,针对该共识节点所生成的积分奖励交易信息仅包括有奖励积分值。
步骤202:每一个共识节点对相对应的积分奖励交易信息和待存储数据进行打包,获得相对应的区块主体,并对获得的区块主体进行哈希运算而获得相对应的第一merkle树根哈希值。
针对每一个共识节点,该共识节点对其所对应的积分奖励交易信息和待存储的数据进行打包,获得与该共识节点相对应的区块主体,之后通过预先设定的哈希算法对打包获得的区块主体进行哈希运算,获得与该共识节点相对应的第一merkle树根哈希值。
步骤203:根据预先确定的节点排序结果,每一个共识节点依次对相对应的区块头进行至少一次哈希运算获得至少一个哈希值,直至有共识节点运算出小于自主挖矿目标值的哈希值。
预先对各个共识节点进行排序而获得相对应的节点排序结果,之后根据节点排序结果,各个共识节点依次循环对相对应的区块头进行哈希运算,每个共识节点每次对其相对应的区块头进行至少一次哈希运算,每一次哈希运算均获得一个哈希值。其中,针对任意一个共识节点,该共识节点对应的区块头包括有与该共识节点相对应的第一merkle树根哈希值、区块链上末位区块的第二merkle树根哈希值和自主挖矿随机数,自主挖矿随机数可以按照预设的规则变化,使得该共识节点每一次对相应区块头进行哈希运算时区块头中的所包括的自主挖矿随机数均不同。
例如,通过对区块链上的末位区块进行哈希运算,获得第二merkle树根哈希值。100个共识节点按照已经确定出的节点排序结果,依次对各自对应的区块头进行10次哈希运算,每一次对区块头进行哈希运算获得相对应的一个哈希值,直至有共识节点运算出小于自主挖矿目标值的哈希值。针对任意一个共识节点x,根据节点排序结果轮到共识节点x进行哈希运算时,共识节点x对其对应的区块头x进行10次哈希运算,其中,区块头x包括有共识节点x运算出的第一merkle树根哈希值x、第二merkle树根哈希值、自主挖矿随机数、版本号、时间戳和自主挖矿目标值等信息。共识节点x每对区块头x进行一次哈希运算,区块头x中的自主挖矿随机数加1,比如,共识节点x第一次对区块头x进行哈希运算时区块头x所包括的自主挖矿随机数为0,共识节点x第二次对区块头x进行哈希运算时区块头x所包括的自主挖矿随机数为1,共识节点x第三次对区块头x进行哈希运算时区块头x所包括的自主挖矿随机数为2。再比如,之前各个共识节点所进行的哈希运算中均没有运算出小于自主挖矿目标值的哈希值,当共识节点x对区块头x进行第五次哈希运算时,运算出的哈希值小于自主挖矿目标值,则所有共识节点停止对区块头进行哈希运算。
步骤204:将优先运算出小于自主挖矿目标值的哈希值的共识节点确定为记账节点。
各个共识节点依次循环对相应的区块头进行哈希运算获得哈希值,当首个运算出小于自主挖矿目标值的哈希值的共识节点出现后,所有共识节点停止对区块头进行哈希运算,将该优先运算出小于自主挖矿目标值的哈希值的共识节点确定为记账节点。
需要说明的是,共识节点在对区块头进行哈希运算时,具体可以采用pow(proofofwork,工作量证明机制)算法对区块头进行哈希运算。
针对任意一个共识节点,该共识节点对应的区块头中包括有与该共识节点相对应的第一merkle树根哈希值、第二merkle树根哈希值和自主挖矿随机数。由于不同共识节点所生成的积分奖励交易信息不同,因此不同共识节点所对应的第一merkle树根哈希值不同,从而保证不同共识节点在首次对相应区块头进行哈希运算所获得的哈希值不同。另外,针对同一个区块头,由于相应共识节点每次对该区块头进行哈希运算后,该区块头中的自主挖矿随机数都会发生变化,使得任意两次哈希运算中该区块头所包括的自主挖矿随机数不同,从而保证同一个共识节点不同次哈希运算可以获得不同的哈希值。
由各个共识节点依次循环对相应的区块头进行哈希运算,将优先运算出小于自主挖矿目标值的哈希值的共识节点确定为记账节点,从而可以缩短选举记账节点所需的时间,即实现了快速共识,提升了共识的效率。另外,由于各个共识节点运算出小于自主挖矿目标值的哈希值的概率相同,从而保证共识过程中各个共识节点之间的公平,从而可以保证共识过程的可靠性。
实施例六
在实施例五所提供记账节点确定方法的基础上,在步骤203各个共识节点对区块头进行哈希运算之前,需要确定针对各个共识节点的节点排序结果,以使各个共识节点可以根据该节点排序结果依次进行哈希运算。具体地,在从授权节点中选择出目标授权节点之后,根据按照对应参与度由大至小的顺序将各个目标授权节点排列在各个系统节点之后,进而根据排序后的各个共识节点获得对应于各个共识节点的节点排序结果。
由于系统节点具有较高的可信性,在每一个区块生成过程中均会参与共识,因此将系统节点排列在各个目标授权节点之前。目标授权节点的参与度可以表征目标授权节点的可信性,参与度越高说明相应目标授权节点的可信性越高,因此按照相应参与度由大至小的顺序将各个目标授权节点排列在各个系统节点之后,使得对应参与度较高的目标授权节点可以优先对应参与度较低的目标授权节点进行哈希运算,一方面保证了共识过程的公平性,另一方面保证共识结果的安全性。
实施例七
在实施例五所提供记账节点确定方法的基础上,步骤204确定出记账节点之后,可以根据与记账节点相对应的积分奖励交易信息进行积分发放,根据记账节点为系统节点或者授权节点的不同,积分发放方式不同,具体如下:
如果记账节点为系统节点,则根据与记账节点相对应的积分奖励交易信息包括的奖励积分值和奖励节点标识,向奖励节点标识的目标授权节点发放与奖励积分值相对应的积分;
如果记账节点为授权节点,则根据与记账节点相对应的积分奖励交易信息包括的奖励积分值,向记账节点发放与奖励积分值相对应的积分。
由于系统节点没有相对应的从业单元或从业个人,因此向系统节点方法积分没有意义,当系统节点被确定为记账节点后,根据此前记账节点生成的积分奖励交易信息,将积分发放给记账节点此前随机确定出的一个目标授权节点,当目标授权节点被确定为记账节点后,根据此前记账节点生成的积分奖励交易信息,将积分发放给记账节点本身,作为进行新区块生成及上链处理的奖励。
通过生成积分奖励交易信息,在确定出记账节点之后,根据积分奖励交易信息向参与共识过程的一个授权节点发放积分,积分可以提升节点的参与度,还可以作为虚拟货币在芯片研发和芯片交易过程中用于货币支付,从而可以对授权节点进行激励,保证授权节点积极参与共识过程,保证共识过程可以正常进行。
实施例八
在实施例五至实施例七中任一实施例所提供芯片研发交易数据存储方法的基础上,步骤104由记账节点将待存储数据存储在新区块中,具体可以通过如下方式实现:
获取记账节点进行哈希运算获得小于自主挖矿目标值的哈希值时所对应的区块头;
将获取到的区块头与记账节点对应的区块主体相组合,获得新区块。
由于同一共识节点每次对区块头进行哈希运算时区块头中的自主挖矿随机数均不相同,因此需要获取到记账节点运算出小于自主挖矿目标值的哈希值时所对应的区块头。另外,记账节点对应的区块主体中包括有相应的积分奖励交易信息和待存储数据,因此将对应于记账节点的区块头和区块主体组合所生成的新区块中包括有待存储数据,进而在将新区块链接到区块链上之后,便实现了将待存储数据存储到区块链上。
另外,由于区块主体中包括有对应于记账节点的积分奖励交易信息,因此积分奖励交易信息同样被存储到区块链中,后续可以从区块链中读取积分奖励交易信息以对积分发放过程进行追溯,保证积分发放过程的公平性。
需要说明的是,当记账节点将新区块链接到区块链上之后,新区块便成为了区块链上的末位区块,对新区块整体进行哈希运算而获得的第二merkle树根哈希值将被存储到下一次所生成的新区块中。
需要说明的是,在按照上述实施例三仅从系统节点中选择共识节点之后,从共识节点中确定记账节点以及生成新区块的方法可以参照实施例五至实施例八,只是在确定节点排序结果时无需针对目标授权节点进行排序,直接对各个系统节点进行排序即可。
实施例九
本发明一个实施例提供了一种芯片研发交易数据存储系统,如图3所示,该系统可以包括:至少两个系统节点301和至少一个授权节点302;
系统节点301为始终在线稳定运行的节点,授权节点302为具有共识权限的从业用户节点,系统节点301之间、授权节点302之间以及系统节点301与授权节点302之间均通过点对点通信;
至少两个系统节点301,用于获取预设时间段内进行芯片研发与交易而产生的待存储数据,并从至少两个系统节点301和至少一个授权节点302中选择至少两个共识节点301/302;
至少两个共识节点301/302,用于依次循环根据待存储数据进行至少一次哈希运算而获得相对应的至少一个哈希值,将优先运算出小于预设的自主挖矿目标值的哈希值的一个共识节点确定为记账节点301/302;
记账节点301/302,用于将待存储数据存储在生成的新区块中,并将新区块链接到区块链上。
需要说明的是,上述实施例九所提供的芯片研发交易数据存储系统与上述实施例一至八所提供的芯片研发交易数据存储方法基于同一构思,具体内容可以参见上述实施例一至八中的叙述,再次不再赘述。
实施例十
在实施例九所提供芯片研发交易数据存储系统的基础上,该系统可以进一步包括:至少一个普通节点和至少一个访客节点;
普通节点为联盟内具有区块读取权限的从业用户节点,访客节点为联盟外具有从区块链中读取与其自身相关的待存储数据的用户节点,系统节点、授权节点、普通节点和访客节点中任意两个节点之间通过点对点通信;
普通节点,用于递交成为授权节点的申请,并在申请审批通过后成为授权节点;
访客节点,用于递交成为普通节点的申请,并在申请审批通过后成为普通节点。
在本发明实施例中,如图4所示,芯片研发交易数据存储系统可以包括四层,分别为核心层401、授权层402、普通层403和访客层404,而该系统所包括的节点分为四种,分别为系统节点405、授权节点406、普通节点407和访客节点408。系统节点405是平台公认的始终在线的稳定运行的节点;授权节点406是具有共识权力的从业单位节点或从业个人节点,且授权节点406之间对区块链进行同步;普通节点407是联盟内的普通从业单位节点或普通从业个人节点,不过问记账过程(即区块构造过程)也不需同步区块链但具有区块读取权;访客节点408是联盟外的节点,没有记账权和区块读取权,但具有交易权并能读取与自身有关的交易数据。
核心层401的功能是完成区块链共识。该层可以只由系统节点405组成,也可以由全部系统节点405和部分选中的授权节点409组成,这个选项可以提高共识的灵活性。可以只由系统节点405进行共识从而保证稳定性,也可以让部分授权节点409参与共识而提高公信力。这里被选中的授权节点409都是当前区块共识时在线的授权节点410。由于每次区块的共识过程中,核心层401里每次选到的授权节点409可能不一样,所以核心层401和授权层402是动态变化的。
授权层402由当前不参与共识的所有授权节点406组成,其功能相当于维护授权节点、受理普通节点411成为授权节点406的申请和选取授权节点410进入核心层401参与共识。由于每次区块的共识过程中,授权层402里每次选出的授权节点410可能不一样,所以核心层401和授权层402是动态变化的。
普通层403包括所有联盟内的普通从业单位节点和从业个人节点,具有读取区块数据的权力,其功能相当于维护普通节点、受理访客节点412成为普通节点407的申请和递交普通节点411进入授权层402的申请。普通层相对稳定,但也会有所变动,因为普通层的普通节点411可以申请成为授权节点406,而访客节点412在具备从业能力或资格后也可申请成为普通节点407。
访客层404包括所有联盟外的访客节点,具有交易权,不具备区块读取权限但具有读取与访客节点408自身有关的交易数据的权限。其功能相当于维护访客节点、递交访客节点412进入普通层402的申请。访客层404是动态变化的,任何具有上网能力的计算机都可以成为访客节点408。
实施例十一
下面以共识节点包括系统节点和部分授权节点为例,对本发明实施例提供的芯片研发交易数据存储方法作进一步详细说明,如图5所示,该方法可以包括以下步骤:
步骤501:从系统节点和授权节点中选择共识节点。
在本发明实施例中,根据各个授权节点对应的参与度,从各个授权节点中选择至少一个目标授权节点,将选择出的目标授权节点与全部系统节点作为共识节点。其中,在从授权节点中选择目标授权节点时,授权节点对应的参与度越大则该授权节点被选中作为目标授权节点的概率越高。
例如,共计包括有50个系统节点和300个授权节点,按照授权节点的参与度越大则被选中概率越高的规则,从300个授权节点中随机选择出30个目标授权节点,进而将50个系统节点和30个目标授权节点确定为共识节点。
步骤502:对各个共识节点进行排序,获得节点排序结果。
在本发明实施例中,在确定出共识节点之后,按照对应参与度由大至小的顺序将目标授权节点排列在各个系统节点之后,进而获得排序完成后各个共识节点的节点排序结果。
例如,50个系统节点的排序结果为系统节点1至系统节点50,按照对应参与度由大至小的顺序对30个目标授权节点进行排序的结果为目标授权节点1至30,则对应于80个共识节点的节点排序结果为系统节点1、系统节点2、…、系统节点50、目标授权节点1、目标授权节点2、…、目标授权节点30。
步骤503:每一个共识节点生成相对应的积分奖励交易信息。
在本发明实施例中,针对每一个共识节点,生成与该共识节点相对应的积分奖励交易信息,其中,如果该共识节点为系统节点,则与该共识节点相对应的积分奖励交易信息包括奖励积分值和奖励节点标识,而奖励节点标识用于标识选择选择出的一个目标授权节点,如果该共识节点为授权节点,则与该共识节点相对应的积分奖励交易信息仅包括奖励积分值。
例如,系统节点1至50所生成的积分奖励交易信息包括有奖励积分值和奖励节点标识,目标授权节点1至30所生成的积分奖励交易信息仅包括有奖励积分值。
步骤504:每一个共识节点生成相对应的区块主体。
在本发明实施例中,针对每一个共识节点,对与该共识节点相对应的积分奖励交易信息和待存储数据进行打包,获得与该共识节点相对应的区块主体。其中,待存储数据是当前数据存储周期内所获取到的交易数据和智能合约消息数据。
例如,系统节点1通过对其所生成的积分奖励交易信息和待存储数据进行打包,获得相对应的区块主体1,相应地,系统节点2生成相对应的区块主体2,…,系统节点50生成相对应的区块主体50,目标授权节点1生成相对应的区块主体51,目标授权节点2生成相对应的区块主体52,…,目标授权节点30生成相对应的区块主体80。
步骤505:按照节点排序结果,各个共识节点依次循环对相对应的区块主体进行至少一次哈希运算而获得至少一个哈希值,直至有共识节点运算出小于自主挖矿目标值的哈希值。
在本发明实施例中,按照步骤502中确定出的节点排序结果,各个共识节点依次循环执行(从第一个共识节点开始至最后一个共识节点依次执行,最后一个共识节点执行完成后再次从第一个共识节点开始执行,如此循环执行)如下处理:
s1:确定当前共识节点本轮进行哈希运算的运算次数是否达到预先设定的次数阈值,如果是,结束当前流程(即针对当前共识节点流程结束,相应地下一个共识节点的流程开始),否则执行s2。
例如,预先设定的次数阈值为10,在轮流到系统节点11进行哈希运算时,系统节点11每次开始进行哈希运算之前,判断其本轮进行哈希运算的次数是否达到10,如果没有达到10则系统节点11可以继续进行下一次哈希运算,如果达到10则轮到系统节点12开始进行哈希运算。
s2:当前共识节点对与其相对应的区块头进行哈希运算,获得一个哈希值。其中,与当前共识节点相对应的区块头包括第二merkle树根哈希值、相对应的第一merkle树根哈希值、自主挖矿随机数、版本号、时间戳和自主挖矿目标值,通过对区块链上末位区块进行整体哈希运算而获得第二merkle树根哈希值,通过对与当前共识节点相对应的区块主体进行哈希运算而获得第一merkle树根哈希值。
s3:判断运算出的哈希值是否小于自主挖矿目标值,如果是,结束当前流程(所有共识节点全部停止进行哈希运算),否则执行s4。
s4:对当前共识节点对应的区块头中包括的自主挖矿随机数进行改变,并对运算次数加1,之后执行步骤s1。
例如,对区块头中所包括的自主挖矿随机数加1。
步骤506:将优先运算出小于自主挖矿目标值的哈希值的共识节点确定为记账节点。
在本发明实施例中,经过一轮或多轮哈希运算,将优先运算出小于自主挖矿目标值的哈希值的一个共识节点确定为记账节点。
例如,在50个系统节点全部完成一轮哈希运算之后,目标授权节点1开始进行哈希运算,目标哈希节点1在进行第2次哈希运算后,所获得的哈希值小于自主挖矿目标值,则将目标哈希节点1确定为记账节点。
步骤507:记账节点生成新区块,并将新区块链接到区块链上。
在本发明实施例中,在确定出记账节点之后,记账节点将其最后一次进行哈希运算时对应的区块头和与其相对应的区块主体相组合,获得一个新区块,并将所获得的新区块链接到区块链上。在将新区块链接到区块链上之后,所有共识节点进行区块链复制和共享,使得存储在每一个共识节点上的区块链均包括有新生成的新区块。
步骤508:记账节点根据相对应的积分奖励交易信息进行积分发放。
在本发明实施例中,记账节点根据与其相对应的区块主体中所存储的积分奖励交易信息,将积分发放给相应的目标授权节点。具体地,如果记账节点为系统节点,则记账节点根据积分奖励交易信息中记录的奖励节点标识向被标识的一个目标授权节点发放相应的积分;如果记账节点为目标授权节点,则记账节点根据积分奖励交易信息将积分发放给自身。
例如,记账节点为系统节点3,且系统节点3此前所生成的积分奖励交易信息中奖励节点标识对应目标授权节点5,奖励积分值为100积分,则记账节点向目标授权节点5发送100积分。
又例如,记账节点为目标授权节点6,且目标授权节点6此前所生成的积分奖励交易信息中奖励积分值为100积分,则记账节点向其自身发放100积分。
综上所述,本发明实施例提供的芯片研发交易数据存储方法及系统,在点对点网络中,系统节点为可以长期稳定运行的节点,授权节点为具有共识权限的从业用户节点,在需要对预设时间段内进行芯片研发和芯片交易而产生的待存储数据进行存储时,从各个系统节点和授权节点中选择多个节点作为共识节点,之后各个共识节点依次循环根据待存储数据进行至少一次哈希运算而获得相对应的至少一个哈希值,进而优先运算出小于预设的自主挖矿目标值的哈希值的一个共识节点会被确定为记账节点,之后由记账节点生产用于存储待存储数据的新区块,并将生成的新区块链接到已有的区块链上。由此可见,参与芯片研发和交易过程中的用户均对应点对点网络中的一个节点,从系统节点和授权节点中选择共识节点,进而通过快速的共识算法选举出记账节点,由记账节点将待存储数据存储到区块链中,从而基于区块链的特性可以保证芯片研发和交易过程中所产生过程数据可追溯且防篡改。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。