一种在区块链中实现数据计算可信的方法及系统
技术领域
本申请涉及区块链技术领域,尤其涉及一种在区块链中实现数据计算可信的方法及系统。
背景技术
区块链技术是一种去中心化的系统思想,能通过公众共识的方式,创建一个相对客观的抗抵赖数字环境。区块链技术可以保证网络信息一经发布即不可更改,例如,区块链网络中发生一笔交易,区块链网络中的节点会在生成的区块中记载该笔交易的内容,并将区块数据进行全网广播,网络中的其他节点以同步或异步的方式存储该区块数据,形成不可更改的区块链。
联盟链本质上是一种规模较大的私有链,与公有链不同,联盟链在某种程度上只属于联盟内部成员所有,且很容易达成共识。联盟链由有限的多个节点构成,通常情况下,通过智能合约可以保证多个节点间相对简单的业务逻辑计算能力,使得任一节点获取到经其它节点计算得到的计算结果可信且一致。
现有联盟链系统通过智能合约实现业务逻辑计算能力的流程为,链上的每一个节点采用智能合约分别执行数据计算后统一上链,此时可以保证链上存储的计算结果均为可信。然而,随着计算场景规模越来越大,数据计算量不断增大,不可能通过智能合约满足所有节点分别执行计算、上链过程,实际操作时,仅是通过其中某个节点单独将计算结果上链,此时,其它节点在接收到上链的计算结果时,并不能保证其计算结果的有效性,即上链的结果缺乏可信度。因此,亟需一种实现上链数据计算结果可信的方法,使一个节点的数据计算结果多方可信。
发明内容
本申请提供了一种在区块链中实现数据计算可信的方法及系统,以解决现有技术中面临较大规模的复杂数据计算场景时无法保证计算结果多方可信的问题。
第一方面,本申请提供了一种在区块链中实现数据计算可信的方法,包括:
第一节点接收计算任务;所述计算任务为历史计算结果;所述历史计算结果由数据供应节点对应的可信云数据计算中台计算得到;
第一节点配置的可信数据交换组件根据所述计算任务,获取来自数据供应节点用于生成所述历史计算结果的原始数据及计算方法,并发送至所述第一节点对应的可信云数据计算中台;其中,所述原始数据及计算方法是由数据供应节点配置的数据服务注册组件保存在区块链上、再由所述可信数据交换组件从区块链上获取发送至可信云数据计算中台,或者,是由数据供应节点直接通过建立的可信通道发送至可信云数据计算中台;
所述可信云数据计算中台采用所述原始数据及计算方法计算得到第一计算结果;
所述可信云数据计算中台根据所述第一计算结果对历史计算结果进行校验,得到历史计算结果可信或不可信的校验结果;
所述可信数据交换组件将第一计算结果上链保存。
在一些实施例中,所述第一节点接收计算任务包括:
第一节点接收最新需要计算的原始数据与计算方法。
在一些实施例中,所述原始数据为经哈希计算得出的hash值。
在一些实施例中,所述方法还包括:
所述可信数据交换组件将校验结果上链保存。
在一些实施例中,所述方法还包括:
若所述校验结果为历史计算结果不可信,则根据校验结果生成预警信息;
发送预警信息至所述历史计算结果对应的节点。
第二方面,本申请还提供了一种在区块链中实现数据计算可信的系统,系统包括:
区块链节点,用于接收计算任务;所述计算任务包括历史计算结果;所述历史计算结果由除当前区块链节点之外的其它区块链节点对应的可信云数据计算中台计算得到;
可信数据交换组件,被配置为根据所述区块链节点接收的计算任务,获取与所述计算任务对应的原始数据及计算方法,并发送至所述区块链节点对应的可信云数据计算中台;其中,所述原始数据及计算方法是由数据供应节点配置的数据服务注册组件保存在区块链上、再由所述可信数据交换组件从区块链上获取发送至可信云数据计算中台,或者,是由数据供应节点直接通过建立的可信通道发送至可信云数据计算中台;所述可信数据交换组件包括调取单元,用于根据所述历史计算结果,调取其它区块链节点存储在区块链上的用于生成所述历史计算结果的原始数据及计算方法;
可信云数据计算中台,被配置为采用所述原始数据及计算方法计算得到对应区块链节点的第一计算结果;还被配置为根据所述第一计算结果对历史计算结果进行校验,得到历史计算结果可信或不可信的校验结果;
所述可信数据交换组件还被配置为将计算结果上链保存。
在一些实施例中,所述计算任务包括最新需要计算的原始数据与计算方法。
在一些实施例中,所述可信数据交换组件还被配置为将校验结果上链保存。
在一些实施例中,所述可信云数据计算中台包括预警单元,用于当所述校验结果为历史计算结果可信时根据校验结果生成预警信息,并发送预警信息至所述历史计算结果对应的节点。
本申请提供的方法包括第一节点接收计算任务;第一节点配置的可信数据交换组件根据所述计算任务,获取与所述计算任务对应的原始数据及计算方法,并发送至所述第一节点对应的可信云数据计算中台;所述可信云数据计算中台采用所述原始数据及计算方法计算得到第一计算结果;所述可信云数据计算中台根据所述第一计算结果对历史计算结果进行校验,得到历史计算结果可信或不可信的校验结果;所述可信数据交换组件将第一计算结果上链保存。本申请的方法可对新入链的原始数据及计算方法执行数据计算,还可对其它节点已上链的历史计算结果是否可信实施校验,保证在较大规模的复杂数据计算场景中,数据计算结果多方可信。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的方法的应用场景图;
图2为本申请一种在区块链中实现数据计算可信的方法的流程图;
图3为本申请一种在区块链中实现数据计算可信的方法在另一实施例下的流程图;
图4为本申请提供的方法在获取原始数据及计算方法采用的方式示意图。
具体实施方式
参见图1,为本申请提供的方法的应用场景图;
由图1可知,本申请提供的方法可以应用于位于区块链(或联盟链)上的任意一个节点,各个节点间实现区块同步,每个区块链节点1可以单独接收某个需求方提出的计算请求,例如需求方以外部系统将需要计算的数据发送给区块链节点,再由区块链节点1对数据执行计算以及上链等操作,在本申请中,每个区块链节点位置还配置了可信数据交换组件2以及可信云数据计算中台3,其中可信数据交换组件2用于输入输出相关计算数据与计算方法给可信云数据计算中台3执行计算,并完成计算结果的上链操作;可信云数据计算中台3除了完成计算,还能根据获取到的数据及计算结果完成数据校验的操作。具体的,本申请提供的方法步骤说明如下:
参见图2,为本申请一种在区块链中实现数据计算可信的方法的流程图。
由图2可知,本申请实施例提供的一种在区块链中实现数据计算可信的方法,包括:
S100:第一节点接收计算任务;
在本实施例中,第一节点可以是区块链中任意节点,也称执行本方法的当前节点,当区块链中的任意节点(第一节点)需要验证接收到的计算结果是否可信(前提是对计算结果存疑),或者需对新入链的数据执行计算上链时,此时先要从需求方的外部系统或者区块链中的其它节点接收计算任务,计算任务可以是存储在区块链上的历史计算结果,也可以是最新需要计算的原始数据与计算方法。
在本实施例中,上链(或者入链)是指将至少包含用于计算的原始数据、计算方法和/或计算结果存储到区块链上,使区块链上的各个节点均可获得上链数据,其中,数据存储位置可能是各个节点,也可能是与节点相连的存储器上,在本实施例中不予限制。
S200:第一节点配置的可信数据交换组件根据所述计算任务,获取与所述计算任务对应的原始数据及计算方法,并发送至所述第一节点对应的可信云数据计算中台;如果是新上链的数据,则此时的计算任务中不限于包括原始数据及计算方法,直接提取或全部打包,通过建立的可信通道发送至可信云数据计算中台即可。
S300:所述可信云数据计算中台采用所述原始数据及计算方法计算得到第一计算结果;
在本实施例中,第一计算结果代表了当前节点采用获取到的原始数据及计算方法执行计算后得到的结果,也就是说,每个区块链节点位置执行计算,得到的将是与该节点具备一对一关系的唯一计算结果,相同的原始数据及计算方法在不同的区块链节点位置,将会得到跟各个节点对应的第一计算结果。
在本实施例中,计算所需的原始数据类型、计算方法可以有多种,例如,需要统计某行业中的男女比例,则原始数据可能包含大量的样本数据(总人数、入职率、离职率、个人信息等),而具体采用的计算方法可包含多种数学方法、统计学方法、概率学方法或各种方法的组合。对应的计算结果可以是一个具体数值(例如比例值),也可以是一个取值区间、分布图、表格或其它可能的形式,在本实施例中不与限制。
进一步的,存储在链上的原始数据可以是全部数据实体,但当实体数据量比较大时,可能会影响系统资源占用及处理效率,因此,在一种较优的实施例中,可以在原始数据数据上链前先采用哈希(hash)算法计算得到数据对应的hash值,再将hash值上链保存,这样,不仅节省了存储空间,也能保证原始数据不被修改。
S400:所述可信数据交换组件将第一计算结果上链保存。
在本实施例中,得到的第一计算结果一旦上链保存,即成为了前述历史计算结果中的其中一个计算结果,即已经保存在链上的历史计算结果均是由某一个区块链节点对应的可信云数据计算中台计算得到的第一计算结果上链得到;对于第一节点接收到历史结果,可以是另一个节点(数据供应节点)对应的可信云数据计算中台计算得到的。相对应的,由第一节点位置的可信数据交换组件上链保存的第一计算结果,也可以作为其他节点执行本方法时的历史计算结果。
上述步骤S100-S400是针对新入链的数据执行计算后上链的过程,对于其他区块链节点来说,当接收到历史计算结果时,如果对该历史计算结果的正确性存疑,需要验证该历史计算结果是否可信,因此,在一些实施例中,增加验证步骤后的方法流程图如图3所示。
由图3可知,在另一种实施例中,本申请的方法包括:
S100:第一节点接收计算任务;此时的计算任务为历史计算结果;所述历史计算结果由数据供应节点对应的可信云数据计算中台计算得到;
S200:第一节点配置的可信数据交换组件根据所述计算任务,获取来自数据供应节点用于生成所述历史计算结果的原始数据及计算方法,并发送至所述第一节点对应的可信云数据计算中台;其中,所述原始数据及计算方法是由数据供应节点配置的数据服务注册组件保存在区块链上、再由所述可信数据交换组件从区块链上获取发送至可信云数据计算中台,或者,是由数据供应节点直接通过建立的可信通道发送至可信云数据计算中台;
如图4所示出的,处于数据供应节点的数据供应商,其提供的原始数据与计算方法可能存储在本体位置,也可以通过数据服务注册组件将原始数据与计算方法保持在区块链上,同时,位于第一节点的数据可信交换组件既可以从区块链中调取上述原始数据及计算方法,也可以直接从数据供应商获取,此外,数据可信交换组件还可以直接操作数据供应商中存储的原始数据与计算方法通过可信通道直接发送至可信云数据计算中台完成计算。
其中,要获取与所述计算任务对应的原始数据及计算方法,首先要知晓该历史计算结果是由哪个区块链节点上传,以及该区块链节点采用的原始数据及计算方法是什么,因此,步骤S200具体为:
根据所述历史计算结果,调取存储在区块链上的用于生成所述历史计算结果的原始数据及计算方法,也就是说,历史计算结果与生成该结果的原始数据、计算方法可以成对存储在相同位置,若非存储在区块链上的相同位置,也可以通过上链时建立确定的对应关系相互调取。
S300:所述可信云数据计算中台采用所述原始数据及计算方法计算得到第一计算结果;所述第一计算结果用于检验历史计算结果是否可信,如果是可信的,说明相同的原始数据及计算方法至少在当前节点及计算出历史计算结果的节点均被认可;如果不可信,说明其它节点计算出的历史计算结果并不被当前节点认可,原始数据或计算方法可能存在问题。
S350:所述可信云数据计算中台根据所述第一计算结果对历史计算结果进行校验,得到历史计算结果可信或不可信的校验结果。
在本实施例中,判断历史计算结果是否可信的依据可以有多种,例如,当第一计算结果是一个计算得到的数值时,此时仅需要将第一计算结果的数值与历史计算结果的数值进行比较,如果相等,则可得出历史计算结果可信的校验结果,反之得到不可信的校验结果;进一步的,当第一计算结果是一个取值区间时,此时可以设定第一计算结果的取值区间与历史计算结果的取值区间完全一致时,得出可信的校验结果,也可以是,当第一计算结果包含历史计算结果时得出可信的校验结果,这时认为历史计算结果较第一计算结果来说更精确,同样满足当前节点的计算需求,例如历史计算结果为(10,20)的区间,而第一计算结果为(5,20),可以认为(10,20)的计算结果满足当前节点的计算需求,即历史计算结果仍然是可信的。因此,判断是否可信并非仅指完全对等的情况,也包含不完全对等的情况,例如包含、被包含、大于、小于等等,依据不同的计算需求制定。
S400:所述可信数据交换组件将第一计算结果上链保存。
在本实施例中,将第一计算结果上链保存,一方面是将当前区块链节点计算的结果可供其它节点来验证,另一方面,需要与第一计算结果一同上链的信息还包括节点信息,即标识该第一计算结果是由哪个节点计算得出的,还包括对历史计算结果的校验过程、校验结果等信息,因此,在一种可行性实施例中,所述方法还包括步骤:
所述可信数据交换组件将校验结果上链保存。
通过校验结果可以得知哪些节点对某个历史计算结果执行了校验过程,并且各个节点对该历史计算结果的可信度(是否通过验证)也可相应通过可信数据交换组件随时获取。
进一步的,在步骤S350中,如果所述校验结果为历史计算结果不可信,在一些实施例中可以采取根据校验结果生成预警信息,并发送预警信息至所述历史计算结果对应的节点的方式通知生成该历史计算结果的节点,一方面可以提醒节点对计算结果重新实施计算,查看问题所在,另一方面预警信息还提醒其他将要验证该历史计算结果的节点,对该节点的历史计算节点存疑。
上述步骤S100-S400是针对旧入链(已经上链)的数据执行计算校验的过程,通过对计算结果存疑的相关节点根据链上存储的原始数据、计算方法、计算结果进行校验,可以得知该节点的历史计算结果是否为可信数据。
由上述技术方案可知,本申请提供的方法包括第一节点接收计算任务;第一节点配置的可信数据交换组件根据所述计算任务,获取与所述计算任务对应的原始数据及计算方法,并发送至所述第一节点对应的可信云数据计算中台;所述可信云数据计算中台采用所述原始数据及计算方法计算得到第一计算结果;所述可信云数据计算中台根据所述第一计算结果对历史计算结果进行校验,得到历史计算结果可信或不可信的校验结果;所述可信数据交换组件将第一计算结果上链保存。本申请的方法可对新入链的原始数据及计算方法执行数据计算,还可对其它节点已上链的历史计算结果是否可信实施校验,保证在较大规模的复杂数据计算场景中,数据计算结果多方可信。
对应与上述方法,本申请还提供了一种采用上述方法的系统,系统包括:
区块链节点1,用于接收计算任务;所述区块链节点可以是位于区块链上的任意一个节点;
可信数据交换组件2,被配置为根据所述区块链节点1接收的计算任务,获取与所述计算任务对应的原始数据及计算方法,并发送至所述区块链节点1对应的可信云数据计算中台3;其中,所述原始数据及计算方法是由数据供应节点配置的数据服务注册组件保存在区块链上、再由所述可信数据交换组件从区块链上获取发送至可信云数据计算中台,或者,是由数据供应节点直接通过建立的可信通道发送至可信云数据计算中台;可信数据交换组件2的功能至少包括输出计算数据与计算方法至可信云数据计算中台3,还包括获取计算结果上链。
可信云数据计算中台3,被配置为采用所述原始数据及计算方法计算得到对应区块链节点的第一计算结果;可信云数据计算中台可以在区块链中部署多份,对区块链节点对应,在实际应用中,其不仅需要执行对新入链的计算数据与计算方法的数据计算,得出计算结果,还要对旧入链的计算数据与计算方法计算出结果,并对计算结果实施校验过程。为了完成上述两项需求,要求可信云数据计算中台能够持续地在区块链上检测计算任务(包括最新计算需求以及历史计算结果)。
所述可信数据交换组件还被配置为将计算结果上链保存。
在一些实施例中,所述计算任务包括最新需要计算的原始数据与计算方法。
在一些实施例中,所述计算任务包括历史计算结果;所述历史计算结果由除当前区块链节点之外的其它区块链节点对应的可信云数据计算中台计算得到;
所述可信云数据计算中台还被配置为根据所述第一计算结果对历史计算结果进行校验,得到历史计算结果可信或不可信的校验结果。
在一些实施例中,所述可信数据交换组件包括:
调取单元,用于根据所述历史计算结果,调取存储在区块链上的用于生成所述历史计算结果的原始数据及计算方法。
在一些实施例中,所述可信数据交换组件还被配置为将校验结果上链保存。
在一些实施例中,所述可信云数据计算中台包括预警单元,用于当所述校验结果为历史计算结果可信时根据校验结果生成预警信息,并发送预警信息至所述历史计算结果对应的节点。
上述实施例中的系统,其各结构单元在执行上述方法时起的功能作用参见上述方法实施例中的说明,在此不再赘述。
本申请中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于UE中。可选地,处理器和存储媒介也可以设置于UE中的不同的部件中。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。