交易请求处理方法及系统与流程

文档序号:16244995发布日期:2018-12-11 23:29阅读:298来源:国知局
交易请求处理方法及系统与流程

本发明涉及通信技术领域,特别涉及一种交易请求处理方法及系统。

背景技术

目前,区块链的安全保证机制主要依靠工作量证明的方式,在区块链网络中,由于个别节点的计算能力无法超过其他所有节点的总和,因此现有技术中主要通过将区块链节点所需的计算量提高到一定程度,从而使恶意节点无法对抗其他节点的方式,确保区块链数据的安全。但这种方法对节点的计算量消耗极大,一般完成一笔交易需要耗时10分钟左右,这对区块链的规模化应用造成了阻碍。

具体而言,现有技术中确保区块链数据的安全的方法主要存在以下几个缺点:

1、每生成一个区块需要巨大的计算量,将造成巨大的能源消耗;

2、每生成一个区块大约需要10分钟左右的时间,造成系统处理效率降低;

3、计算能力强的节点优先获取记账的权利,如果一个强计算能力的节点被恶意攻破,将对整个系统造成威胁;

4、随着计算能力的提升,计算量(复杂度)将不断的提升。



技术实现要素:

本发明旨在至少解决上述现有技术中存在的技术问题之一,提供一种交易请求处理方法及系统,能够在不需要进行工作量证明的前提下,确保区块链数据的安全性,同时降低计算能耗和计算时间的开销。

为实现上述目的,本发明提供了一种交易请求处理方法,该交易请求处理方法包括:

第一节点向多个第二节点发送交易请求;

第二节点根据交易请求和自身当前区块链数据计算出对应的第一哈希值,并向第一节点返回所述第一哈希值;

第一节点判断预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值是否相同;

第一节点若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,向至少设定数量个第一哈希值相同的第二节点广播交易请求对应的交易内容;

至少设定数量个第一哈希值相同的第二节点中每个第二节点对交易内容进行验证通过后,将交易内容写入各自新生成的区块,并将新生成的区块写入各自当前的区块链中。

可选地,所述第一节点判断预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值是否相同之后还包括:

第一节点若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值不相同时,向至少设定数量个第一哈希值相同的第二节点发送完整区块链数据获取请求;

所述至少设定数量个第一哈希值相同的第二节点根据完整区块链数据获取请求向第一节点返回当前完整区块链数据;

第一节点根据当前完整区块链数据更新自身当前区块链数据,并执行向至少设定数量个第一哈希值相同的第二节点广播交易请求对应的交易内容的步骤。

可选地,若第一哈希值相同的第二节点的数量大于或等于所述设定数量且小于所述第二节点的总数量时,第一节点向至少设定数量个第一哈希值相同的第二节点广播交易请求对应的交易内容之前还包括:

第一节点向除至少设定数量个第一哈希值相同的第二节点以外的第二节点发送风险提示信息;

所述除至少设定数量个第一哈希值相同的第二节点以外的第二节点根据风险提示信息向所述至少设定数量个第一哈希值相同的第二节点发送完整区块链数据获取请求及对应的第一哈希值获取请求;

所述至少设定数量个第一哈希值相同的第二节点根据完整区块链数据获取请求及对应的第一哈希值获取请求向所述除至少设定数量个第一哈希值相同的第二节点以外的第二节点返回当前完整区块链数据及对应的第一哈希值;

所述除至少设定数量个第一哈希值相同的第二节点以外的第二节点根据当前完整区块链数据和对应的第一哈希值更新自身当前区块链数据。

可选地,所述第一节点根据当前完整区块链数据更新自身当前区块链数据包括:

第一节点根据当前完整区块链数据计算出对应的第三哈希值;

第一节点判断所述第三哈希值与所述至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值是否相同;

第一节点若判断出所述第三哈希值与所述至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,执行更新自身当前区块链数据的步骤。

可选地,所述除至少设定数量个第一哈希值相同的第二节点以外的第二节点根据当前完整区块链数据和对应的第一哈希值更新自身当前区块链数据包括:

所述除至少设定数量个第一哈希值相同的第二节点以外的第二节点根据当前完整区块链数据计算出对应的第四哈希值;

所述除至少设定数量个第一哈希值相同的第二节点以外的第二节点判断所述第四哈希值与所述至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值是否相同;

所述除至少设定数量个第一哈希值相同的第二节点以外的第二节点若判断出所述第四哈希值与所述至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,执行更新自身当前区块链数据的步骤。

为实现上述目的,本发明提供了一种交易请求处理系统,该交易请求处理系统包括第一节点和多个第二节点;

第一节用于点向多个第二节点发送交易请求;

第二节点用于根据交易请求和自身当前区块链数据计算出对应的第一哈希值,并向第一节点返回所述第一哈希值;

第一节点还用于判断预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值是否相同;若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,向至少设定数量个第一哈希值相同的第二节点广播交易请求对应的交易内容;

至少设定数量个第一哈希值相同的第二节点中每个第二节点还用于在对交易内容进行验证通过后,将交易内容写入各自新生成的区块,并将新生成的区块写入各自当前的区块链中。

可选地,第一节点还用于若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值不相同时,向至少设定数量个第一哈希值相同的第二节点发送完整区块链数据获取请求;

所述至少设定数量个第一哈希值相同的第二节点还用于根据完整区块链数据获取请求向第一节点返回当前完整区块链数据;

第一节点还用于根据当前完整区块链数据更新自身当前区块链数据,并执行向至少设定数量个第一哈希值相同的第二节点广播交易请求对应的交易内容的步骤。

可选地,若第一哈希值相同的第二节点的数量大于或等于所述设定数量且小于所述第二节点的总数量时,第一节点还用于向除至少设定数量个第一哈希值相同的第二节点以外的第二节点发送风险提示信息;

所述除至少设定数量个第一哈希值相同的第二节点以外的第二节点还用于根据风险提示信息向所述至少设定数量个第一哈希值相同的第二节点发送完整区块链数据获取请求及对应的第一哈希值获取请求;

所述至少设定数量个第一哈希值相同的第二节点还用于根据完整区块链数据获取请求及对应的第一哈希值获取请求向所述除至少设定数量个第一哈希值相同的第二节点以外的第二节点返回当前完整区块链数据及对应的第一哈希值;

所述除至少设定数量个第一哈希值相同的第二节点以外的第二节点还用于根据当前完整区块链数据和对应的第一哈希值更新自身当前区块链数据。

可选地,第一节点具体用于根据当前完整区块链数据计算出对应的第三哈希值;判断所述第三哈希值与所述至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值是否相同;若判断出所述第三哈希值与所述至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,执行更新自身当前区块链数据的步骤。

可选地,所述除至少设定数量个第一哈希值相同的第二节点以外的第二节点具体用于根据当前完整区块链数据计算出对应的第四哈希值;判断所述第四哈希值与所述至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值是否相同;若判断出所述第四哈希值与所述至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,执行更新自身当前区块链数据的步骤。

本发明具有如下有益效果:

本发明所提供的交易请求处理方法及系统的技术方案中,第一节点若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,向至少设定数量个第一哈希值相同的第二节点广播交易请求对应的交易内容;至少设定数量个第一哈希值相同的第二节点中每个第二节点对交易内容进行验证通过后,将交易内容写入各自新生成的区块,并将新生成的区块写入各自当前的区块链中。从而能够在不需要进行工作量证明的前提下,确保区块链数据的安全性,同时降低计算能耗和计算时间的开销。

附图说明

图1为本发明实施例一提供的一种交易请求处理方法的流程图;

图2为本发明实施例二提供的一种交易请求处理方法的流程图;

图3为本发明实施例三提供的一种交易请求处理系统的结构示意图。

具体实施方式

为使本领域的技术人员更好地理解本发明的技术方案,下面结合附图对本发明提供的交易请求处理方法及系统进行详细描述。

图1为本发明实施例一提供的一种交易请求处理方法的流程图,如图1所示,该交易请求处理方法包括:

步骤101、第一节点向多个第二节点发送交易请求。

步骤102、第二节点根据交易请求和自身当前区块链数据计算出对应的第一哈希值,并向第一节点返回第一哈希值。

步骤103、第一节点判断预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值是否相同,若是,执行步骤104,若否,执行步骤106。

步骤104、第一节点向至少设定数量个第一哈希值相同的第二节点广播交易请求对应的交易内容。

步骤105、至少设定数量个第一哈希值相同的第二节点中每个第二节点对交易内容进行验证通过后,将交易内容写入各自新生成的区块,并将新生成的区块写入各自当前的区块链中,并结束流程。

步骤106、第一节点向至少设定数量个第一哈希值相同的第二节点发送完整区块链数据获取请求。

步骤107、至少设定数量个第一哈希值相同的第二节点根据完整区块链数据获取请求向第一节点返回当前完整区块链数据。

步骤108、第一节点根据当前完整区块链数据更新自身当前区块链数据,并执行步骤104。

本实施例所提供的交易请求处理方法的技术方案中,第一节点若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,向至少设定数量个第一哈希值相同的第二节点广播交易请求对应的交易内容;至少设定数量个第一哈希值相同的第二节点中每个第二节点对交易内容进行验证通过后,将交易内容写入各自新生成的区块,并将新生成的区块写入各自当前的区块链中。从而能够在不需要进行工作量证明的前提下,确保区块链数据的安全性,同时降低计算能耗和计算时间的开销。

图2为本发明实施例二提供的一种交易请求处理方法的流程图,如图2所示,该交易请求处理方法包括:

步骤201、第一节点向多个第二节点发送交易请求。

本实施例中,区块链网络包括第一节点和除第一节点以外的第二节点。当用户在第一节点上产生交易后,第一节点向区块链网络中的多个第二节点广播交易请求。其中,交易请求包括第一节点的标识信息、交易请求的识别信息及发起交易请求的时间签,第一节点的标识信息用于标识发起交易请求的节点为第一节点,交易请求的识别信息用于标识本次交易请求为交易申请,发起交易请求的时间签用于表明第一节点发起交易请求的时间,该时间具体可精确到秒。

例如,区块链网络包括a、b、c、d、e、f、g、h、i、j、k、l、m和n共14个节点,若在当前时间节点a向其他节点b、c、d、e、f、g、h、i、j、k、l、m和n发出了交易请求,那么对于节点a而言,节点a作为第一节点,其他节点b、c、d、e、f、g、h、i、j、k、l、m和n作为第二节点;若在同一时刻,节点b上也产生了交易,节点b也在当前时间发出了交易请求,那么对于节点b而言,节点b作为第一节点,其他节点a、c、d、e、f、g、h、i、j、k、l、m和n作为第二节点,依此类推。

步骤202、第一节点根据自身当前区块链数据计算出对应的第二哈希值。

步骤203、第二节点根据交易请求和自身当前区块链数据计算出对应的第一哈希值,并向第一节点返回第一哈希值。

本实施例中,每个第二节点按照预设的全网最大传输时延,按秒汇总所有的交易请求,其中,全网最大传输时延为门限值,可设定。例如,全网最大传输时延为600毫秒,当前时间是2018年7月13日13点35分07秒,全网中共有10个第一节点分别向相应的第二节点发出了以该当前时间为时间签的交易请求,那么第二节点都会在2018年7月13日13点35分07秒之后的600毫秒内进行一次交易请求汇总。而超过2018年7月13日13点35分07秒600毫秒时刻收到的交易请求都将被第二节点拒绝,具体地,超过2018年7月13日13点35分07秒600毫秒时刻发送交易请求的第一节点将会收到第二节点发出的交易请求超时的消息,该第一节点可根据交易请求超时的消息重新提交交易请求。

具体地,在2018年7月13日13点35分07秒之后的600毫秒内进行一次交易请求汇总后,第二节点根据其自身当前区块链数据计算出对应的第一哈希值,并向各汇总中的交易请求对应的节点返回第一哈希值。

应当注意的是,步骤203中的自身当前区块链数据为第二节点对应的当前区块链数据,而步骤202中的自身当前区块链数据为第一节点对应的当前区块链数据,二者可能相同也可能不同。

步骤204、第一节点判断预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值是否相同,若是,执行步骤205,否则,执行步骤214。

需要说明的是,区块链网络中,步骤201中所述的多个第二节点包括至少设定数量个第一哈希值相同的第二节点和除至少设定数量个第一哈希值相同的第二节点以外的第二节点。其中,设定数量为第二节点的总数量与预设百分比的乘积,例如,预设百分比为70%。一般而言,在区块链网络中,第一哈希值相同的第二节点数量不会少于所述设定数量。但为了避免出现第一哈希值相同的第二节点数量少于所述设定数量的现象发生,本实施例中,设立一个保护机制,在交易不频繁时,设定一个空闲时间门限值,例如,30秒,若区块链网络中超过该空闲时间门限值还未发生交易时,区块链网络中的任意一个节点随机发出虚拟交易请求,例如,区块链网络中的任意一个节点运行一个产生0至9的随机数的随机程序,若产生的随机数为0时,发出一个虚拟交易请求,换言之,区块链网络中的任意一个节点发出虚拟交易请求的概率为10%,该概率为门限值,可设定。在该虚拟交易请求中并无任何实际交易内容,仅作为区块链网络内各节点的区块链数据进行同步验证的依据。换言之,若超出空闲时间门限值区块链网络中还未发生交易时,强制性进行各节点的区块链数据校验。

本实施例中,第一节点若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,即发起交易请求的第一节点对应的第二哈希值与区块链网络中的大多数第二节点对应的第一哈希值相同时,表明发起交易请求的第一节点的自身当前区块链数据并未发生异常,故继续执行步骤205。例如,节点a作为第一节点,其他节点b、c、d、e、f、g、h、i、j、k、l、m和n作为第二节点,节点a对应的第二哈希值为1,其他节点b、c、d、e、f、g、h、i、j、k、l、m和n对应的第一哈希值分别为1、1、1、1、1、1、2、1、1、3、4、1、1,可知,至少设定数量个第一哈希值相同的第二节点包括节点b、c、d、e、f、g、i、j、m、n共10个节点,占第二节点的总数量的76.9%,大于预设百分比70%,而节点a对应的第二哈希值与76.9%的第二节点对应的第一哈希值相同,故可执行步骤205。

第一节点若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值不相同时,即发起交易请求的第一节点对应的第二哈希值与区块链网络中的大多数第二节点对应的第一哈希值不相同时,表明发起交易请求的第一节点的自身当前区块链数据发生异常,故执行步骤214。例如,节点a对应的第二哈希值为2,与76.9%的第二节点对应的第一哈希值不相同,故执行步骤214。

步骤205、第一节点若判断出预先生成的第二哈希值与所有第二节点对应的第一哈希值相同时,执行步骤210,否则,执行步骤206。

具体地,第一节点若判断出预先生成的第二哈希值与所有第二节点对应的第一哈希值相同时,表明区块链网络中所有节点的当前区块链数据均未出现异常,故直接执行步骤210;否则,表明所有第二节点中,还有少部分第二节点的第一哈希值与第二哈希值不同,该少部分第二节点的当前区块链数据异常,因此需要执行步骤206。换言之,若第一哈希值相同的第二节点的数量大于或等于所述设定数量且小于所述第二节点的总数量时,执行步骤206,若第一哈希值相同的第二节点的数量等于所述第二节点的总数量时,执行步骤210。

步骤206、第一节点向除至少设定数量个第一哈希值相同的第二节点以外的第二节点发送风险提示信息。

具体地,第一节点向除至少设定数量个第一哈希值相同的第二节点以外的第二节点发送风险提示信息,风险提示信息包括用于向除至少设定数量个第一哈希值相同的第二节点以外的第二节点提示其对应的第一哈希值与第二哈希值不同的信息,以及至少设定数量个第一哈希值相同的第二节点中每个第二节点的节点标识信息。其中,至少设定数量个第一哈希值相同的第二节点中每个第二节点的节点标识信息用于标识至少设定数量个第一哈希值相同的第二节点中的每个第二节点。例如,节点a作为第一节点,至少设定数量个第一哈希值相同的第二节点包括节点b、c、d、e、f、g、i、j、m、n共10个节点,那么除至少设定数量个第一哈希值相同的第二节点以外的第二节点包括节点h、k、l共3个节点,那么本步骤中,节点a向节点h、k、l发送风险提示信息,以提示节点h、k、l各自对应的第一哈希值与区块链网络中的节点a对应的第二哈希值及节点b、c、d、e、f、g、i、j、m、n对应的第一哈希值不相同。

步骤207、除至少设定数量个第一哈希值相同的第二节点以外的第二节点根据风险提示信息向至少设定数量个第一哈希值相同的第二节点发送完整区块链数据获取请求及对应的第一哈希值获取请求。

其中,对应的第一哈希值获取请求为至少设定数量个第一哈希值相同的第二节点对应的第一哈希值获取请求。

由于步骤201中,第二节点可能收到不同第一节点同时发送的交易请求,因此,除至少设定数量个第一哈希值相同的第二节点以外的第二节点也可能接收到多个风险提示信息,但本实施例中,除至少设定数量个第一哈希值相同的第二节点以外的第二节点只对收到的第一个风险提示信息进行处理即可。

本实施例中,除至少设定数量个第一哈希值相同的第二节点以外的第二节点在收到风险提示信息时,并不需要向用户发出安全提示,因为哈希值不同可能是由于没有完全同步交易导致,例如,除至少设定数量个第一哈希值相同的第二节点以外的第二节点的区块链只保存到了第1860步交易,而至少设定数量个第一哈希值相同的第二节点的区块链已更新到第1861步交易,故造成此时除至少设定数量个第一哈希值相同的第二节点以外的第二节点对应的第一哈希值与至少设定数量个第一哈希值相同的第二节点对应的第一哈希值不同。

步骤208、至少设定数量个第一哈希值相同的第二节点根据完整区块链数据获取请求及对应的第一哈希值获取请求向除至少设定数量个第一哈希值相同的第二节点以外的第二节点返回当前完整区块链数据及对应的第一哈希值。

其中,对应的第一哈希值为至少设定数量个第一哈希值相同的第二节点对应的第一哈希值。

步骤209、除至少设定数量个第一哈希值相同的第二节点以外的第二节点根据当前完整区块链数据和对应的第一哈希值更新自身当前区块链数据。

具体地,步骤209包括:

步骤2091、除至少设定数量个第一哈希值相同的第二节点以外的第二节点根据当前完整区块链数据计算出对应的第四哈希值。

步骤2092、除至少设定数量个第一哈希值相同的第二节点以外的第二节点判断第四哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值是否相同,若是,执行步骤2093,否则执行步骤207。

步骤2093、除至少设定数量个第一哈希值相同的第二节点以外的第二节点执行更新自身当前区块链数据的步骤。

具体地,除至少设定数量个第一哈希值相同的第二节点以外的第二节点若判断出所述第四哈希值与所述至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,验证通过,可根据当前完整区块链数据更新自身当前区块链数据。除至少设定数量个第一哈希值相同的第二节点以外的第二节点若判断出所述第四哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值不相同时,则重复执行步骤207,若连续验证不通过时,则断开与区块链网络的连接,并提示用户进行安全检查和处理,例如,重新安装区块链程序等。

步骤210、第一节点向至少设定数量个第一哈希值相同的第二节点广播交易请求对应的交易内容。

本实施例中,若第一哈希值相同的第二节点的数量大于或等于所述设定数量且小于所述第二节点的总数量时,步骤210和上述步骤206可同时执行,亦可不同时执行,即本实施例中,若第一哈希值相同的第二节点的数量大于或等于所述设定数量且小于所述第二节点的总数量时,步骤205之后,可以不必等待步骤206至步骤209执行结束之后再执行步骤210。

步骤211、至少设定数量个第一哈希值相同的第二节点中每个第二节点对交易内容进行验证通过后,将交易内容写入各自新生成的区块,并将新生成的区块写入各自当前的区块链中,结束流程。

具体地,至少设定数量个第一哈希值相同的第二节点中每个第二节点均具体执行以下过程:

按照预设的全网最大等待时延,等待交易请求对应的交易内容,并以秒为时间单位汇总收到的各交易请求对应交易内容。其中,全网最大等待时延为门限制,可设定,例如全网最大等待时延为2秒。例如,在2018年7月13日13点35分9秒600毫秒时,汇总2018年7月13日13点35分07秒600毫秒时收到的交易请求所对应的交易内容。汇总后,对每条交易内容进行验证,例如,验证交易发起方的签名,根据区块链中记录的内容数据验证交易内容是否合法,验证是否有足够的余额等。而后,将验证通过的交易内容写入新生成的区块中,并向至少设定数量个第一哈希值相同的第二节点中的其他第二节点广播该新生成的区块对应的哈希值。同时接收其他第二节点新生成的区块对应的哈希值,将该两个哈希值进行对比,若对比一致的其他第二节点的数量大于或等于所述设定数量与预设百分比的乘积时,例如,预设百分比为60%,直接将新生成的区块写入自身当前的区块链中,并随机产生一个随机数1或0,随机数的值为0时,不进行下一步操作,随机数的值为1时,向所述第一节点和除至少设定数量个第一哈希值相同的第二节点以外的第二节点推送其新生成的区块。若对比一致的其他第二节点的数量小于所述设定数量与预设百分比的乘积时,向其他第二节点请求其他第二节点的新生成的区块,并写入自身当前的区块链中。若对比一致的其他第二节点的数量小于预设门限值时,说明此次交易全部失败,新生成的区块为空的区块,或者不生成新的区块而是直接向发起交易请求的第一节点发送交易失败信息。

步骤212、至少设定数量个第一哈希值相同的第二节点中每个第二节点向第一节点和除至少设定数量个第一哈希值相同的第二节点以外的第二节点推送其新生成的区块。

步骤213、第一节点在新生成的区块中验证本次交易是否成功,并结束流程。

具体地,第一节点在新生成的区块中验证本次交易是否成功,本次交易已写入新生成的区块时表示本次交易成功,未写入时,表示本次交易失败。

步骤214、第一节点向至少设定数量个第一哈希值相同的第二节点发送完整区块链数据获取请求。

具体地,第一节点可以向至少设定数量个第一哈希值相同的第二节点中所有的第二节点发送完整区块链数据获取请求,也可以只向至少设定数量个第一哈希值相同的第二节点中的部分第二节点发送完整区块链数据获取请求,只要能够收到一份当前完整区块链数据即可。

具体地,第一节点向至少设定数量个第一哈希值相同的第二节点发送完整区块链数据获取请求,同时向至少设定数量个第一哈希值相同的第二节点广播除至少设定数量个第一哈希值相同的第二节点以外的第二节点中每个第二节点的节点标识信息,其中,除至少设定数量个第一哈希值相同的第二节点以外的第二节点中每个第二节点的节点标识信息用于标识除至少设定数量个第一哈希值相同的第二节点以外的第二节点中的每个第二节点。

本实施例中,第一节点若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值不相同时,并不需要立即向用户发出安全提示,因为哈希值的不同可能是由于没有完全同步交易导致的。

步骤215、至少设定数量个第一哈希值相同的第二节点根据完整区块链数据获取请求向第一节点返回当前完整区块链数据。

步骤216、第一节点根据当前完整区块链数据更新自身当前区块链数据。

步骤216包括:

步骤2161、第一节点根据当前完整区块链数据计算出对应的第三哈希值。

步骤2162、第一节点判断第三哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值是否相同,若是,执行步骤2163,否则,执行步骤214。

步骤2163、第一节点执行更新自身当前区块链数据的步骤。

具体地,第一节点若判断出第三哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,验证通过,可根据当前完整区块链数据更新自身当前区块链数据。第一节点若判断出第三哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值不相同时,验证不通过,则可重复执行步骤214,若连续验证不通过时,则断开与区块链网络的连接,并提示用户进行安全检查和处理,例如,重新安装区块链程序等。

步骤217、若第一哈希值相同的第二节点的数量等于第二节点的总数量时,第一节点执行步骤210,若第一哈希值相同的第二节点的数量大于或等于设定数量且小于第二节点的总数量时,第一节点执行步骤206。

具体地,若第一哈希值相同的第二节点的数量等于第二节点的总数量时,表明此时区块链网络中仅有第一节点的当前区块链数据出现异常,故执行步骤214至步骤216后直接跳转至执行步骤210;若第一哈希值相同的第二节点的数量大于或等于设定数量且小于第二节点的总数量时,表明所有第二节点中,还有少部分第二节点的第一哈希值与至少设定数量个第二节点所对应的第一哈希值不同,在区块链网络中,第一节点和该少部分第二节点的当前区块链数据异常,因此在执行步骤214至步骤216后需要跳转至执行步骤206。

本实施例中,区块链网络中每个节点在发起交易时,首先向区块链网络中的其他节点广播一个交易请求,其他节点在收到交易请求后向发起交易请求的节点返回一个当前区块链的哈希值,发起交易请求的节点计算当前自身保存的区块链的哈希值并将该哈希值与其他节点的哈希值进行对比,如果发起交易请求的节点对应的哈希值与其他节点中的大多数其他节点对应的哈希值相同时,则判定当前交易环节安全,可直接向该大多数其他节点广播交易内容,同时对于哈希值与大多数其他节点不同的少数其他节点进行风险提示,以使哈希值与大多数其他节点不同的少数其他节点通过获取大多数其他节点的完整区块链数据进行更新自愈。如果发起交易请求的节点对应的哈希值与其他节点中的大多数其他节点对应的哈希值不相同时,则判定当前交易环节不安全,发起交易请求的节点可通过获取大多数其他节点的完整区块链数据进行更新自愈,同时对于哈希值与大多数其他节点不同的少数其他节点进行风险提示,以使哈希值与大多数其他节点不同的少数其他节点通过获取大多数其他节点的完整区块链数据进行更新自愈。本实施例中,在产生交易,区块链网络中的节点生成新的区块时,不需要进行工作量证明,采用多数哈希值一致的判断方式进行区块链数据的更新自愈,即可确保区块链数据的安全性,同时降低了区块链网络中的节点的计算量,即降低了计算能耗和计算时间的开销。

本实施例中,区块链网络中初始节点的内容固定,例如,该内容为一个128字节的全零字符串。

本实施例中,为了避免区块链数据被篡改但各节点的哈希值未被篡改的情况发生,在每次对比验证时,各节点对应的哈希值均需重新根据各节点对应的区块链数据计算获取。

本实施例所提供的交易请求处理方法的技术方案中,第一节点若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,向至少设定数量个第一哈希值相同的第二节点广播交易请求对应的交易内容;至少设定数量个第一哈希值相同的第二节点中每个第二节点对交易内容进行验证通过后,将交易内容写入各自新生成的区块,并将新生成的区块写入各自当前的区块链中。从而能够在不需要进行工作量证明的前提下,确保区块链数据的安全性,同时降低计算能耗和计算时间的开销。

图3为本发明实施例三提供的一种交易请求处理系统的结构示意图,如图3所示,该交易请求处理系统包括:第一节点31和多个第二节点32。

其中,第一节31用于点向多个第二节点32发送交易请求。第二节点32用于根据交易请求和自身当前区块链数据计算出对应的第一哈希值,并向第一节点31返回所述第一哈希值,多个第二节点32包括至少设定数量个第一哈希值相同的第二节点321和除至少设定数量个第一哈希值相同的第二节点321以外的第二节点322。第一节点31还用于判断预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点321所对应的第一哈希值是否相同;若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点321所对应的第一哈希值相同时,向至少设定数量个第一哈希值相同的第二节点321广播交易请求对应的交易内容。至少设定数量个第一哈希值相同的第二节点321中每个第二节点还用于在对交易内容进行验证通过后,将交易内容写入各自新生成的区块,并将新生成的区块写入各自当前的区块链中。

具体地,第一节点31还用于若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点321所对应的第一哈希值不相同时,向至少设定数量个第一哈希值相同的第二节点321发送完整区块链数据获取请求。至少设定数量个第一哈希值相同的第二节点321还用于根据完整区块链数据获取请求向第一节点31返回当前完整区块链数据。第一节点31还用于根据当前完整区块链数据更新自身当前区块链数据,并执行向至少设定数量个第一哈希值相同的第二节点321广播交易请求对应的交易内容的步骤。

具体地,若第一哈希值相同的第二节点的数量大于或等于所述设定数量且小于所述第二节点的总数量时,第一节点31还用于向除至少设定数量个第一哈希值相同的第二节点321以外的第二节点322发送风险提示信息。所述除至少设定数量个第一哈希值相同的第二节点321以外的第二节点322还用于根据风险提示信息向所述至少设定数量个第一哈希值相同的第二节点321发送完整区块链数据获取请求及对应的第一哈希值获取请求。所述至少设定数量个第一哈希值相同的第二节点321还用于根据完整区块链数据获取请求及对应的第一哈希值获取请求向所述除至少设定数量个第一哈希值相同的第二节点321以外的第二节点322返回当前完整区块链数据及对应的第一哈希值。所述除至少设定数量个第一哈希值相同的第二节点321以外的第二节点322还用于根据当前完整区块链数据和对应的第一哈希值更新自身当前区块链数据。

具体地,第一节点31具体用于根据当前完整区块链数据计算出对应的第三哈希值;判断所述第三哈希值与所述至少设定数量个第一哈希值相同的第二节点321所对应的第一哈希值是否相同;若判断出所述第三哈希值与所述至少设定数量个第一哈希值相同的第二节点321所对应的第一哈希值相同时,执行更新自身当前区块链数据的步骤。

具体地,所述除至少设定数量个第一哈希值相同的第二节点321以外的第二节点322具体用于根据当前完整区块链数据计算出对应的第四哈希值;判断所述第四哈希值与所述至少设定数量个第一哈希值相同的第二节点321所对应的第一哈希值是否相同;若判断出所述第四哈希值与所述至少设定数量个第一哈希值相同的第二节点321所对应的第一哈希值相同时,执行更新自身当前区块链数据的步骤。

本实施例所提供的交易请求处理系统,用于实现上述实施例二提供的交易请求处理方法,具体描述可参见上述实施例二,此处不再赘述。

本实施例所提供的交易请求处理系统的技术方案中,第一节点用于若判断出预先生成的第二哈希值与至少设定数量个第一哈希值相同的第二节点所对应的第一哈希值相同时,向至少设定数量个第一哈希值相同的第二节点广播交易请求对应的交易内容;至少设定数量个第一哈希值相同的第二节点中每个第二节点用于对交易内容进行验证通过后,将交易内容写入各自新生成的区块,并将新生成的区块写入各自当前的区块链中。从而能够在不需要进行工作量证明的前提下,确保区块链数据的安全性,同时降低计算能耗和计算时间的开销。

可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1