在区块链节点处进行信息处理的方法及装置
技术领域
本公开总体上涉及信息处理技术,更具体地说,涉及在区块链节点处进行信息处理的方法、装置及相应的计算机可读存储介质。
背景技术
区块链(Block Chain)技术是基于去中心化的对等网络,将密码学原理与共识机制相结合,来保障分布式各节点的数据连贯和持续,实现分布式账本的不可篡改和不可伪造等特性,从而创造了一套隐私、高效、安全的分布式信任体系。区块链账本的数据是以交易为单位执行的。
在区块链系统中,用户向区块链发起交易,区块链接收交易并存储在交易池中,等到节点打包出块时再执行交易,这是一个异步上链过程。为了方便用户查询结果,节点执行完交易后会将所有交易回执保存在本地。用户如果想判断交易执行情况,需要读取交易回执,分析交易回执中的数据来判断交易执行是否有效。然而,这会导致大量无效交易回执会被保存,增加了节点存储数据量并增加了用户分析的数据量。此外,由于交易回执的数据以及判断条件对于不同交易是不确定的,因此不能通过区块链节点硬代码进行区分。
因此,需要一种在区块链节点处对交易回执进行处理的方法。
发明内容
总体上,本公开的实施例提供了在区块链节点处进行信息处理的方法、装置及相应的计算机可读存储介质以至少部分地解决现有技术的上述及其它潜在问题。
本公开实施例的第一方面提供了一种在区块链节点处进行信息处理的方法,所述方法包括:接收并执行第一交易以生成第一交易回执,所述第一交易包括标识信息,所述标识信息表示与要用于处理所述第一交易回执的可执行对象相对应的标识;基于所述标识信息,从可执行对象组中获取与所述标识信息相关联的第一可执行对象;使用所述第一可执行对象来处理所述第一交易回执。
在一个示例中,所述可执行对象组和与所述可执行对象组中的每个可执行对象相对应的标识是通过接收交易组来获得的,并且所述可执行对象组中的每个可执行对象和相对应的标识被关联地存储,其中,所述交易组包括一个或多个交易。
在一个示例中,所述第一可执行对象包括脚本代码。
在一个示例中,使用所述第一可执行对象来处理所述第一交易回执包括:将所述第一交易回执的数据作为输入参数来执行所述第一可执行对象并输出执行结果;基于所述执行结果来处理所述第一交易回执。
在一个示例中,所述第一交易回执的数据包括以下中的至少一个:区块高度、交易索引、交易哈希或事件信息。
在一个示例中,基于所述执行结果来处理所述第一交易回执包括:基于所述执行结果来确定所述第一交易的执行是否有效,如果确定所述第一交易的执行是无效的,则删除所述第一交易回执,或者如果确定所述第一交易的执行是有效的,则对所述第一交易回执执行预定的行为。
本公开实施例的第二方面提供了一种在区块链节点处进行信息处理的装置,所述装置包括:存储器,其用于存储指令;以及处理器,其耦合到所述存储器,所述指令在由所述处理器执行时使得所述装置执行根据本公开实施例的第一方面描述的方法。
本公开实施例的第三方面提供了一种计算机可读存储介质。该计算机可读存储介质存储有指令,所述指令用于执行根据本公开实施例的第一方面描述的方法。
本公开的实施例可以通过在区块链节点处部署可执行对象来有效地处理节点处的交易回执,可以直接剔除无效的交易回执以节省节点的存储空间并减少不必要的查询和分析数据量,并且可执行对象可以被灵活地设计而无需修改节点硬代码。
附图说明
现将仅通过示例的方式,参考所附附图对本公开的实施例进行描述,在附图中,相同或相似的附图标注表示相同或相似的元素,其中:
图1示出了其中可以实现本公开实施例的示例性区块链网络100的示意图;
图2示出了根据本公开实施例的在区块链节点处进行信息处理的示例性方法200的流程图;以及
图3示出了根据本公开实施例的在区块链节点处进行信息处理的示例性装置300的示意图。
具体实施方式
现将结合附图对本公开的实施例进行具体的描述。应当注意的是,附图中对相似的部件或者功能组件可能使用同样的数字标示。所附附图仅仅旨在说明本公开的实施例。本领域技术人员可以在不偏离本公开精神和保护范围的基础上从下述描述得到替代的实施方式。
本文所使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”,表示还可以包括其它内容。术语“基于”是“至少部分地基于"。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”,等等。本文使用词语“示例性”表示“充当示例、实例或举例说明”。本文中被描述为“示例性”的任何实施例都并非必然解释为对于其它实施例而言是优选的或有优势的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。对于附图中的各单元之间的连线,仅仅是为了便于说明,其表示至少连线两端的单元是相互通信的,并非旨在限制未连线的单元之间无法通信。
如前所述,区块链账本的数据是以交易为单位执行的,为了方便用户查询执行结果,会将执行交易之后生成的交易回执保存在本地。然而,这会导致大量无效交易回执会被保存,增加了节点存储数据量并增加了用户分析的数据量。此外,由于交易回执的数据以及判断条件对于不同交易是不确定的,因此不能通过区块链节点硬代码进行区分。有鉴于此,本公开的实施例提供了一种在区块链中筛选交易回执的解决方案,针对不同交易回执,调用不同的处理逻辑,从而有利于节点判断对交易回执进行何种处理。
图1示出了其中可以实现本公开实施例的示例性区块链网络100的示意图。区块链网络100包括多个区块链节点101、102、103、104。由于区块链技术具有去中心化、分布式的特性,各区块链节点可通过各种通信介质互相交换信息。用户可以通过(例如,客户端或应用程序接口)访问区块链节点101-104中的若干个节点发起交易,当交易达到一定数量或超时后,一个或多个交易打包成区块并被发送到节点。此外,可以在各个区块链节点101-104处执行智能合约的管理操作,诸如智能合约的安装和部署等,使得交易是通过调用智能合约来实现的。另外,图1中的区块链节点的数量仅是示意而非限制,其可以是任意数量,该区块链网络100还可以包括其它各种类型的节点。
图2示出了根据本公开实施例的在区块链节点处进行信息处理的方法200的流程。可以在图1的区块链网络的区块链节点处执行方法200。如流程图所示,方法200包括以下步骤:
步骤201:接收并执行第一交易以生成第一交易回执,第一交易包括标识信息,该标识信息表示与要用于处理第一交易回执的可执行对象相对应的标识。例如,在图1的区块链网络100的节点101处接收并执行第一交易并返回第一交易回执,将第一交易回执保存在本地。与传统的区块链不同,第一交易中还包括标识信息,该标识信息表示与要用于处理第一交易回执的可执行对象相对应的标识,以便节点采用相应的可执行对象来处理交易回执。
步骤202:基于标识信息,从可执行对象组中获取与该标识信息相关联的第一可执行对象。例如,区块链节点101可以通过标识信息从可执行对象组中确定将使用哪一个可执行对象来处理第一交易回执。
步骤203:使用第一可执行对象来处理第一交易回执。例如,节点101使用所确定的第一可执行对象来处理第一交易回执。
在一个示例中,可执行对象组和与该可执行对象组中的每个可执行对象相对应的标识是通过接收交易组来获得的,并且该可执行对象组中的每个可执行对象和相对应的标识被关联地存储,其中,该交易组包括一个或多个交易。例如,用户可以通过若干个交易的形式来向区块链节点101提供用于处理交易回执的若干个可执行对象和相应的标识,区块链节点101在接收到包括可执行对象和相应标识的交易后可以将可执行对象和相对应的标识关联地存储在本地。例如,用户可以对可执行对象的内容进行哈希运算以生成摘要作为可执行对象的标识,或者可以使用任何其它方式来生成该标识。例如,区块链节点101可以将可执行对象的标识和可执行对象以键值对的形式存储在本地。与传统区块链不同,节点可以获得用于处理交易回执的可执行对象,以便针对不同的交易回执,采用合适的交易回执进行处理。此外,可以通过一次部署可执行对象来多次用于处理交易回执,而无需第三方参与处理过程。
在一个示例中,第一可执行对象包括脚本代码。例如,可执行对象可以包括脚本代码,脚本代码使用脚本语言来编写的代码,脚本语言是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言,脚本代码不需要编译,可以直接使用,由解释器来负责解释。在其它示例中,可执行对象可以包括但不限于使用任何计算机高级语言来编程设计的其它代码。在传统区块链中,由于交易回执的数据以及判断条件对于不同交易是不确定的,因此不能通过区块链节点硬代码进行区分。与传统区块链不同,可执行对象可以被灵活设计来处理交易回执而无需修改节点硬代码。
在一个示例中,步骤203可以包括:将第一交易回执的数据作为输入参数来执行第一可执行对象并输出执行结果;基于执行结果来处理第一交易回执。在该步骤中,第一可执行对象的输入数据是第一交易回执的数据,可以(例如,通过节点处的解释器)执行第一可执行对象以输出执行结果作为输出数据,其中输出数据可以是一个约定好的结构体,用于节点判断对这个交易回执做何种处理,节点基于该输出数据来处理交易回执。与传统区块链不同,可以在节点处针对交易回执进行有效地处理。
在一个示例中,第一交易回执的数据包括以下中的至少一个:区块高度、交易索引、交易哈希或事件信息。
在一个示例中,基于执行结果来处理第一交易回执包括:基于执行结果来确定第一交易的执行是否有效;如果确定第一交易的执行是无效的,则删除第一交易回执,或者如果确定第一交易的执行是有效的,则对第一交易回执执行预定的行为。在该步骤中,可以针对不同交易回执,调用处理逻辑来有效地处理交易回执。调用的处理逻辑可以由用户根据各自不同的筛选逻辑自定义。与传统区块链不同,节点使用可执行对象来针对不同交易回执进行处理,通过剔除无效交易回执来节省了节点的存储空间,并减少了第三方(例如,用户)查询或分析交易回执所需的数据量。
根据图2描述的实施例,提供了在区块链节点处有效地处理交易的解决方案,该解决方案具有如下优点:可以通过一次部署可执行对象来多次用于处理交易回执,而无需第三方参与处理过程;直接剔除无效的交易回执,从而节省节点的存储空间;当第三方查询或分析交易回执时,由于已经剔除了无效的交易回执,减少了不必要的查询和分析数据量;可执行对象可以被灵活编写判断和处理逻辑,而无需修改节点硬代码。
图3示出了根据本公开实施例的在区块链节点处进行信息处理的示例性装置300的示意图。装置300可以包括:存储器301和耦合到存储器301的处理器302。存储器301用于存储指令,处理器302被配置为基于存储器301存储的指令来使装置300实现针对本公开实施例所描述的方法(例如,图2的方法200)的步骤中的任何步骤中的一个或多个。
如图3所示,装置300还可以包括通信接口303,用于与其它设备进行信息交互。此外,装置300还可以包括总线304,存储器301、处理器302和通信接口303通过总线304来彼此进行通信。
存储器301可以包括易失性存储器,也可以包括非易失性存储器。处理器302可以是中央处理器(CPU)、微控制器、专用集成电路(ASIC)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、或是被配置为实现本发明的实施例的一个或多个集成电路。
此外,替代地,上述的在区块链节点处进行信息处理的方法能够通过计算机程序产品,即有形的计算机可读存储介质来体现。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开实施例的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
以上所述仅为本公开的可选实施例,并不用于限制本公开的实施例,对于本领域的技术人员来说,本公开的实施例可以有各种更改和变化。凡在本公开的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的实施例的保护范围之内。此外,尽管可能关于若干实施方式中的一个来公开实施例的特定特征或方面,但是可以将这种特征或方面与其它实施方式的一个或多个其它特征或方面进行组合,这是由于其对任何给定或特定应用来说是期望且有利的。
虽然已经参考若干具体实施例描述了本公开的实施例,但是应该理解,本公开的实施例并不限于所公开的具体实施例。本公开的实施例旨在涵盖在所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。