CN116049280A - 将区块数据映射成结构化数据的方法和装置 - Google Patents
将区块数据映射成结构化数据的方法和装置 Download PDFInfo
- Publication number
- CN116049280A CN116049280A CN202211733501.1A CN202211733501A CN116049280A CN 116049280 A CN116049280 A CN 116049280A CN 202211733501 A CN202211733501 A CN 202211733501A CN 116049280 A CN116049280 A CN 116049280A
- Authority
- CN
- China
- Prior art keywords
- data
- contract
- target
- rule
- column
- 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.)
- Pending
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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供一种将区块数据映射成结构化数据的方法和装置,该方法由区块链节点执行,包括:获取待执行的目标交易所调用的目标智能合约,所述目标智能合约包括若干合约方法,并具有附加于其上并针对其设置的解析规则;所述解析规则包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则;执行所述目标交易,得到合约回执;根据所述第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,根据所述第二解析规则,将与所述合约回执有关的区块数据映射为第二结构化数据。针对不同的智能合约,均能够高效便捷的实现将区块数据映射成结构化数据。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种将区块数据映射成结构化数据的方法和装置。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链***中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
传统区块链节点中区块数据采用非结构化存储的数据结构,这种数据结构不适合进行复杂的数据查询、数据分析和数据计算等工作。需要将区块数据映射成结构化数据,以供业务提取自身感兴趣的数据字段。
现有技术中将区块数据映射成结构化数据时,针对不同的智能合约,进行单独开发,存在着大量工程的重复和时间的浪费。
发明内容
本发明的目的在于提供一种将区块数据映射成结构化数据的方法和装置,针对不同的智能合约,均能够高效便捷的实现将区块数据映射成结构化数据。
本说明书第一方面提供一种将区块数据映射成结构化数据的方法,该方法由区块链节点执行,包括:
获取待执行的目标交易所调用的目标智能合约,所述目标智能合约包括若干合约方法,并具有附加于其上并针对其设置的解析规则;所述解析规则包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则;
执行所述目标交易,得到合约回执;
根据所述第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,根据所述第二解析规则,将与所述合约回执有关的区块数据映射为第二结构化数据。
本说明书第二方面提供一种将区块数据映射成结构化数据的装置,该装置设置于区块链节点,包括:
获取单元,用于获取待执行的目标交易所调用的目标智能合约,所述目标智能合约包括若干合约方法,并具有附加于其上并针对其设置的解析规则;所述解析规则包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则;
执行单元,用于执行所述目标交易,得到合约回执;
映射单元,用于根据所述获取单元获取的第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,根据所述获取单元获取的第二解析规则,将与所述执行单元得到的合约回执有关的区块数据映射为第二结构化数据。
本说明书第三方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行所述第一方面的方法。
本说明书第四方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现所述第一方面的方法。
通过本说明书实施例提供的方案,区块链节点首先获取待执行的目标交易所调用的目标智能合约,所述目标智能合约包括若干合约方法,并具有附加于其上并针对其设置的解析规则;所述解析规则包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则;然后执行所述目标交易,得到合约回执;最后根据所述第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,根据所述第二解析规则,将与所述合约回执有关的区块数据映射为第二结构化数据。由上可见,本说明书实施例,智能合约具有附加于其上并针对其设置的解析规则,便于区块链节点在得到合约回执后,自动根据解析规则进行将区块数据映射为结构化数据。此外,解析规则具有通用框架,包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则,该通用框架屏蔽了各智能合约间的差异,并且针对不同的应用场景,该通用框架仍保留了足够的灵活度及完备的可扩展性。从而,针对不同的智能合约,均能够高效便捷的实现将区块数据映射成结构化数据。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了一实施例中的区块链架构图;
图2为PBFT共识算法中的共识过程示意图;
图3示出根据一个实施例的将区块数据映射成结构化数据的方法流程图;
图4示出根据一个实施例的将区块数据映射成结构化数据的装置的示意性框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
图1示出了一实施例中的区块链架构图。在图1所示的区块链架构图中,区块链100中包括N个节点,图1中示意示出节点1-节点8。节点之间的连线示意性的表示P2P(Peer toPeer,点对点)连接,所述连接例如可以为TCP连接等,用于在节点之间传输数据。这些节点上可存储全量的账本,即存储全部区块和全部账户的状态。其中,区块链中的每个节点可通过执行相同的交易而产生区块链中的相同的状态,区块链中的每个节点可存储相同的状态数据库。
区块链领域中的交易可以指在区块链中执行并记录在区块链中的任务单元。交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data)。其中,在交易为转账交易的情况中,From字段表示发起该交易(即发起对另一个账户的转账任务)的账户地址,To字段表示接收该交易(即接收转账)的账户地址,Data字段中包括转账金额。
区块链中可提供智能合约的功能。区块链上的智能合约是在区块链***上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。在区块链中调用智能合约,是发起一笔指向智能合约地址的交易,使得区块链中每个节点分布式地运行智能合约代码。
在部署合约的场景中,例如,Bob将一个包含创建智能合约信息(即部署合约)的交易发送到如图1所示的区块链中,该交易的data字段包括待创建的合约的代码(如字节码或者机器码),交易的to字段为空,以表示该交易用于部署合约。节点间通过共识机制达成一致后,确定合约的合约地址“0x6f8ae93…”,各个节点在状态数据库中添加与该智能合约的合约地址对应的合约账户,分配与该合约账户对应的状态存储,并存储合约代码,将合约代码的哈希值保存在该合约的状态存储中,从而合约创建成功。
在调用合约的场景中,例如,Bob将一个用于调用智能合约的交易发送到如图1所示的区块链中,该交易的from字段是交易发起方(即Bob)的账户的地址,to字段为上述“0x6f8ae93…”,即被调用的智能合约的地址,交易的data字段包括调用智能合约的方法和参数。在区块链中对该交易进行共识之后,区块链中的各个节点可分别执行该交易,从而分别执行该合约,基于该合约的执行更新状态数据库。
区块链技术区别于传统技术的去中心化特点之一,就是在各个节点上进行记账,或者称为分布式记账,而不是传统的集中式记账。区块链***要成为一个难以攻破的、公开的、不可篡改数据记录的去中心化诚实可信***,需要在尽可能短的时间内做到分布式数据记录的安全、明确及不可逆。不同类型的区块链网络中,为了在各个记录账本的节点中保持账本的一致,通常采用共识算法来保证,即前述提到的共识机制。例如,区块链节点之间可以实现区块粒度的共识机制,比如在节点(例如某个独特的节点)产生一个区块后,如果产生的这个区块得到其它节点的认可,其它节点记录相同的区块。再例如,区块链节点之间可以实现交易粒度的共识机制,比如在节点(例如某个独特的节点)获取一笔区块链交易后,如果这笔区块链交易得到其他节点的认可,认可该区块链交易的各个节点可以分别将该区块链交易添加至自身维护的最新区块中,并且最终能够确保各个节点产生相同的最新区块。共识机制是区块链节点就区块信息(或称区块数据)达成全网一致共识的机制,可以保证最新区块被准确添加至区块链。当前主流的共识机制包括:工作量证明(Proof ofWork,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法等。其中,在各种共识算法中,通常在预设数目的节点对待共识的数据(即共识提议)达成一致之后,从而确定对该共识提议的共识成功。具体是,在PBFT算法中,对于N≥3f+1个共识节点,可容忍f个恶意节点,也就是说,当N个共识节点中2f+1个节点达成一致时,可确定共识成功。
图2为PBFT共识算法中的共识过程示意图。如图2所示,根据PBFT共识算法,可将共识过程划分为请求(Request)、预备(Pre-Prepare,PP)、准备(Prepare,P)和提交(Commit,C)四个阶段。假设一区块链中包括节点n1-节点n4四个共识节点,其中,节点n1例如为主节点,节点n2-节点n4例如为从节点,根据PBFT算法,在节点n1-节点n4中可容忍f=1个恶意节点。具体是,在请求阶段,区块链的用户可通过其用户设备向节点n1发送请求,该请求例如为区块链交易的形式。在预备阶段,节点n1在从一个或多个用户设备接收到多个交易之后,可将该多个交易打包为共识提议,将该共识提议及节点n1对该共识提议的签名发送给其他共识节点(即节点n2-节点n4),以用于生成区块,该共识提议中可包括该多个交易的交易体和该多个交易的提交顺序等信息。在准备阶段,各个从节点可对共识提议进行签名并发送给其他各个节点。假设节点n4为恶意节点,节点n1、节点n2和节点n3在分别接收到2f=2个其他共识节点的对共识提议的签名之后,可确定准备阶段完成,可进入提交阶段。例如,如图2中所示,节点n1在接收到节点n2和节点n3的签名之后,验证节点n2和节点n3的签名都是正确的对共识提议的签名,则确定准备阶段完成,节点n2在接收到节点n3的签名和预备阶段节点n1的签名并验证通过之后,确定准备阶段完成。在提交阶段,各个共识节点对共识提议进行提交阶段的签名并发送给其他各个共识节点,各个共识节点在接收到2f=2个其他共识节点的提交阶段的签名之后,可确定提交阶段完成,共识成功。例如,节点n1在接收到节点n2和节点n3的提交阶段的签名并验证之后,确定提交阶段完成,从而,节点n1可根据共识提议执行所述多个交易,生成并存储包括所述多个交易的区块(例如区块B1),根据多个交易的执行结果更新世界状态,并将多个交易的执行结果返回给用户设备。类似地,节点n2和节点n3在确定提交阶段完成之后,执行所述多个交易,并根据多个交易的执行结果更新世界状态,生成并存储区块。通过上述过程,实现了节点n1、节点n2和节点n3的存储一致性。也就是说,节点n1-节点n4在存在一个恶意节点的情况下仍可以实现对共识提议的共识成功,完成对区块的执行。
下面基于图1所示的区块链架构图和图2所示的PBFT共识算法中的共识过程示意图,进一步描述将区块数据映射成结构化数据的方法的具体实施步骤。
图3示出根据一个实施例的将区块数据映射成结构化数据的方法流程图。该方法可以通过区块链网络中的区块链节点执行,该节点可以体现为任何具有计算、处理能力的设备、平台或设备集群。如图3所示,将区块数据映射成结构化数据的方法可以包括以下步骤:步骤31,获取待执行的目标交易所调用的目标智能合约,所述目标智能合约包括若干合约方法,并具有附加于其上并针对其设置的解析规则;所述解析规则包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则;步骤32,执行所述目标交易,得到合约回执;步骤33,根据所述第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,根据所述第二解析规则,将与所述合约回执有关的区块数据映射为第二结构化数据。下面分别描述以上各个步骤的具体执行过程。
首先在步骤31,获取待执行的目标交易所调用的目标智能合约,所述目标智能合约包括若干合约方法,并具有附加于其上并针对其设置的解析规则;所述解析规则包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则。可以理解的是,一个智能合约中可以仅包括一个合约方法,也可以包括多个合约方法。
本说明书实施例,可以通过Schema形式与用户交互,用户在部署合约的同时,在合约附加字段中填入结构化解析的Schema,区块链节点会对该合约的合约方法及合约回执自动进行结构化拆解存表。区块数据中常用的是里面的合约方法和合约回执两类数据,本方案支持对这两类数据的解析,其中对合约方法的解析只需在部署合约时配置上结构化框架Schema,对合约回执的解析,除了结构化框架Schema外,在回执数据中还需设定针对当前回执的解析规则字段。
在一个示例中,所述解析规则还包括:至少一张数据表的元数据;
所述第一结构化数据和第二结构化数据,存储于所述至少一张数据表。
进一步地,任意一张数据表的元数据包括:该数据表的表名,所包含的每个列的列信息,所述列信息包括:列名,列类型,以及:
索引,用于指示是否为该列创建索引;
主键,用于指示是否将该列设置为主键;
自增模式,用于指示该列数据是否为自增模式。
举例来说,tables是一个数组结构,用于记录与合约关联的数据表,合约数据可以被拆解到一张或多张表中。每个table需要有一个name显示对应的表名,同时带有一个Schema,在Schema中记录表的完整配置信息。Schema是一个数组结构,每个元素为字符串类型,包含了以下字段的组合,通过分隔符隔开。Schema会包含以下信息:
列名:每一列在数据库中的名字,以字符串形式存储。
列类型:列数据存储的格式,支持常用的字符串、整型的配置,并提供区块链特有的hash配置类型。
index:可选项,表示是否为该列创建索引。
primary:可选项,表示是否将该列设置为主键。
auto_incr:表示该列数据为自增模式。
另一个数据表的信息表示为,
可以理解的是,上述各个字段的具体信息可以由用户配置,保留了足够的灵活度及完备的可扩展性。
进一步地,所述第一解析规则包括:与所述若干合约方法分别对应的若干子规则;任意子规则包括针对的合约方法的方法名,以及至少一段表操作规则,任意一段表操作规则包括:
表名字段,用于指示所述至少一张数据表中的目标数据表;
操作字段,用于指示针对目标数据表进行的目标操作的操作类型;
若干列字段,用于指示目标操作针对的目标数据列以及数据来源,所述数据来源通过预设指示符指示其取自合约参数值,或区块内置的值。
进一步地,所述操作字段的备选取值对应于***、更新或删除;当所述目标操作为更新或删除时,所述任意一段表操作规则还包括键字段,用于指示所述目标操作的查询键。
进一步地,所述若干合约方法包括第一合约方法,所述若干子规则包括第一子规则;所述第一子规则包括,所述第一合约方法的方法名,以及第一表操作规则,所述第一表操作规则在表名字段包括第一数据表,在操作字段包括第一操作,在列字段包括第一数据列,以及通过第一指示符指示的第一数据来源。
举例来说,methods定义了合约方法的解析规则,每个method都有一个name字段标识其合约方法名,同时带有一个tables的配置项。tables定义了一个合约方法调用被拆解成的多张表结构,为数组形式。tables会包含以下字段:
name:数据表名,表示相应的数据会***到对应的表中。
operation:取值为"insert"、"update"或"delete",表示***、更新或删除表数据。
keys:如果为更新或删除操作,需要指定查询键,为数组结构,联合主键时需要指定多个key值。
columns:***或者更新的列,为数组结构,每个元素为字符串类型,包含了以下字段的二元组,通过分隔符隔开:
列名:定义需要将数据***的列,字符串类型。
取值:***数据的来源,本方案提供了三种数据来源的定义:一种数据来源为,通过#取合约参数值,如#param表示取合约参数中param的值,当param为可解析的结构体时取值可以嵌套,如#param.inner1.inner2;另一种数据来源为,通过$取区块内置的值,如$block_number、$tx_index;又一种数据来源为,[]表示数组类型的字段,如#param[]表示param是个数组。
前述methods可以由用户针对特定的智能合约进行配置,例如,配置了一个合约方法的解析规则表示为,
可以理解的是,“CreateUser”对应于前述第一合约方法的方法名,“tables”对应于前述第一表操作规则,“user_info”对应于前述第一数据表,“insert”对应于前述第一操作,“columns”对应于前述列字段。user_id对应于第一数据列,#user_info.id对应于通过第一指示符指示的第一数据来源;name对应于第一数据列,#user_info.name对应于通过第一指示符指示的第一数据来源;balance对应于第一数据列,#balance对应于通过第一指示符指示的第一数据来源;bn对应于第一数据列,$block_number对应于通过第一指示符指示的第一数据来源。
进一步地,所述第一子规则还包括第二表操作规则,所述第二表操作规则在表名字段包括第二数据表。
本说明书实施例,一个合约方法的解析规则中,可以涉及两个表。
前述methods可以由用户针对特定的智能合约进行配置,例如,配置了一个合约方法的解析规则表示为,
可以理解的是,方法名“Transfer”的合约方法涉及两张表,一张数据表的表名为“user_info”,另一张数据表的表名为“data_info”。
进一步地,所述第二解析规则包括:若干段表操作规则,任意一段表操作规则包括:
表名字段,用于指示所述至少一张数据表中的目标数据表;
操作字段,用于指示针对目标数据表进行的目标操作的操作类型;
若干列字段,用于指示目标操作针对的目标数据列以及数据来源,所述数据来源通过预设指示符指示其取自合约回执中的键值对,或区块内置的值。
举例来说,receipts中定义了合约回执的解析规则,每个receipt都有一个type字段指定对其进行解析的规则类型,不同类型会匹配到不同的表中。每个receipt同时带有一个tables的配置项,用于将一个交易回执内容拆解到多张表中。tables为数组结构,包含以下字段:
name:数据表名,表示相应的数据会***到对应的表中。
operation:取值为"insert"或"update",***或者更新表数据。
key:如果为更新操作,需要指定查询键。
columns:***或者更新的列,为数组结构,每个元素为字符串类型,包含了以下字段的二元组,通过分隔符隔开:
列名:定义需要将数据***的列,字符串类型。
取值:有两种形式,1>使用key,未指定符号时,将从回执KV中提取key,将对应值映射到列中;2>$builtin表示取区块内置的值,如$block_number、$tx_index。
然后在步骤32,执行所述目标交易,得到合约回执。可以理解的是,交易的执行,对应于合约方法的执行。
本说明书实施例,可以采用通用的处理过程,执行所述目标交易。
最后在步骤33,根据所述第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,根据所述第二解析规则,将与所述合约回执有关的区块数据映射为第二结构化数据。可以理解的是,结构化数据可以存储于解析规则包括的数据表中。
基于前述示例中介绍的第一解析规则,在一个示例中,所述根据所述第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,包括:
根据所述第一指示符,读取所述第一数据来源的数据取值,基于该数据取值对所述第一数据表中的第一数据列进行所述第一操作。
基于前述示例中介绍的第二解析规则,在一个示例中,所述根据所述第二解析规则,将与所述合约回执有关的区块数据映射为第二结构化数据,包括:
根据所述预设指示符,从所述数据来源中提取与所述合约回执有关的区块数据;
基于该区块数据,对所述表名字段所指示的目标数据表,所述若干列字段所指示的目标数据列,进行所述操作字段所指示的目标操作。
通过本说明书实施例提供的方法,区块链节点首先获取待执行的目标交易所调用的目标智能合约,所述目标智能合约包括若干合约方法,并具有附加于其上并针对其设置的解析规则;所述解析规则包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则;然后执行所述目标交易,得到合约回执;最后根据所述第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,根据所述第二解析规则,将与所述合约回执有关的区块数据映射为第二结构化数据。由上可见,本说明书实施例,智能合约具有附加于其上并针对其设置的解析规则,便于区块链节点在得到合约回执后,自动根据解析规则进行将区块数据映射为结构化数据。此外,解析规则具有通用框架,包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则,该通用框架屏蔽了各智能合约间的差异,并且针对不同的应用场景,该通用框架仍保留了足够的灵活度及完备的可扩展性。从而,针对不同的智能合约,均能够高效便捷的实现将区块数据映射成结构化数据。
本说明书实施例,解析规则可以为框架的形式,整个框架可以JSON、XML、YAML等形式定义,以JSON为例,框架分为protocal、enable、tables、methods、receipts五大部分。
其中,protocol定义了框架的协议规则及版本号,用于协议匹配及向后兼容,在用于生产的环境中都会包含这个字段。其内容可以为跟协议版本相关的一个特殊字符串的描述,也可以带上版本相关信息。enable用于是否启用解析规则,在生产环境中提供该配置可以很方便地控制结构化映射的启停,必要时用户可选择关闭解析。tables、methods、receipts在前面已有过相应介绍,在此不做赘述。整个规则框架包含的组成部分可以如表一所示。
表一:规则框架的结构表
参照表一,对于不同的智能合约均可以采用表一所示的规则框架,在此基础上灵活配置各个字段的取值,从而简化了用户操作。
通常的,由于智能合约的复杂多样,每个独立的区块链应用都需要开发能够导出基于自身合约业务数据的***,存在着大量工程的重复和时间的浪费。劳动性重复:独立业务各自在应用环境中部署一套属于自己的数据导出***。工程性浪费,业务针对各自的合约数据格式开发自己的数据字段解析工具。时效性滞后,链上数据导出***通过监听链上成块事件行为,异步将节点数据拉取到链下,数据可见性与链上真实生成时间存在一个延时。资源性冗余,业务在链下解析链上数据,并按一定的规则存储到链下数据库中,内容与链上重复。当多个联盟参与方都需要在自身的环境中使用这份数据时,数据的重复程度将更为严重。
本说明书实施例,与通常的处理方式不同,为了便于业务合约能更高效便捷地接入到结构化***中,定义了一套针对合约方法、参数以及回执输出内容的通用框架规则。业务合约的输出数据格式由业务自行定义,不同业务间相差甚远。合约数据解析框架屏蔽了各业务间的差异,通过制定一套统一的弱格式Schema,实现对业务输出字段的自适应解析。针对不同的应用场景,合约业务解析框架仍保留了足够的灵活度及完备的可扩展性。
本说明书实施例,通过引入一个配置规则实现区块数据自动结构化映射,不同业务只需设置不同的配置文件。同时当用户需要修改映射规则时只需让区块链重新加载配置文件。通过定义一种结构化表的自动映射规则,实现了不同业务合约自动完成区块数据的结构化映射。
根据另一方面的实施例,提供了一种将区块数据映射成结构化数据的装置,该装置部署在区块链网络中任意的区块链节点中,区块链节点可以体现为任何具有计算、处理能力的设备、平台或设备集群。图4示出根据一个实施例的将区块数据映射成结构化数据的装置的示意性框图。如图4所示,该装置400包括:
获取单元41,用于获取待执行的目标交易所调用的目标智能合约,所述目标智能合约包括若干合约方法,并具有附加于其上并针对其设置的解析规则;所述解析规则包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则;
执行单元42,用于执行所述目标交易,得到合约回执;
映射单元43,用于根据所述获取单元41获取的第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,根据所述获取单元41获取的第二解析规则,将与所述执行单元42得到的合约回执有关的区块数据映射为第二结构化数据。
可选地,作为一个实施例,所述解析规则还包括:至少一张数据表的元数据;
所述第一结构化数据和第二结构化数据,存储于所述至少一张数据表。
进一步地,任意一张数据表的元数据包括:该数据表的表名,所包含的每个列的列信息,所述列信息包括:列名,列类型,以及:
索引,用于指示是否为该列创建索引;
主键,用于指示是否将该列设置为主键;
自增模式,用于指示该列数据是否为自增模式。
进一步地,所述第一解析规则包括:与所述若干合约方法分别对应的若干子规则;任意子规则包括针对的合约方法的方法名,以及至少一段表操作规则,任意一段表操作规则包括:
表名字段,用于指示所述至少一张数据表中的目标数据表;
操作字段,用于指示针对目标数据表进行的目标操作的操作类型;
若干列字段,用于指示目标操作针对的目标数据列以及数据来源,所述数据来源通过预设指示符指示其取自合约参数值,或区块内置的值。
进一步地,所述操作字段的备选取值对应于***、更新或删除;当所述目标操作为更新或删除时,所述任意一段表操作规则还包括键字段,用于指示所述目标操作的查询键。
进一步地,所述若干合约方法包括第一合约方法,所述若干子规则包括第一子规则;所述第一子规则包括,所述第一合约方法的方法名,以及第一表操作规则,所述第一表操作规则在表名字段包括第一数据表,在操作字段包括第一操作,在列字段包括第一数据列,以及通过第一指示符指示的第一数据来源。
进一步地,所述映射单元43,具体用于根据所述第一指示符,读取所述第一数据来源的数据取值,基于该数据取值对所述第一数据表中的第一数据列进行所述第一操作。
进一步地,所述第一子规则还包括第二表操作规则,所述第二表操作规则在表名字段包括第二数据表。
进一步地,所述第二解析规则包括:若干段表操作规则,任意一段表操作规则包括:
表名字段,用于指示所述至少一张数据表中的目标数据表;
操作字段,用于指示针对目标数据表进行的目标操作的操作类型;
若干列字段,用于指示目标操作针对的目标数据列以及数据来源,所述数据来源通过预设指示符指示其取自合约回执中的键值对,或区块内置的值。
进一步地,所述所述映射单元43包括:
提取子单元,用于根据所述预设指示符,从所述数据来源中提取与所述合约回执有关的区块数据;
操作子单元,用于基于提取子单元提取的该区块数据,对所述表名字段所指示的目标数据表,所述若干列字段所指示的目标数据列,进行所述操作字段所指示的目标操作。
通过本说明书实施例提供的装置,区块链节点的获取单元41首先获取待执行的目标交易所调用的目标智能合约,所述目标智能合约包括若干合约方法,并具有附加于其上并针对其设置的解析规则;所述解析规则包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则;然后执行单元42执行所述目标交易,得到合约回执;最后映射单元43根据所述第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,根据所述第二解析规则,将与所述合约回执有关的区块数据映射为第二结构化数据。由上可见,本说明书实施例,智能合约具有附加于其上并针对其设置的解析规则,便于区块链节点在得到合约回执后,自动根据解析规则进行将区块数据映射为结构化数据。此外,解析规则具有通用框架,包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则,该通用框架屏蔽了各智能合约间的差异,并且针对不同的应用场景,该通用框架仍保留了足够的灵活度及完备的可扩展性。从而,针对不同的智能合约,均能够高效便捷的实现将区块数据映射成结构化数据。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行如图3所示的方法。
本说明书实施例还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现如图3所示的方法。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器***。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、***或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (13)
1.一种将区块数据映射成结构化数据的方法,所述方法由区块链节点执行,包括:
获取待执行的目标交易所调用的目标智能合约,所述目标智能合约包括若干合约方法,并具有附加于其上并针对其设置的解析规则;所述解析规则包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则;
执行所述目标交易,得到合约回执;
根据所述第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,根据所述第二解析规则,将与所述合约回执有关的区块数据映射为第二结构化数据。
2.根据权利要求1所述的方法,其中,所述解析规则还包括:至少一张数据表的元数据;
所述第一结构化数据和第二结构化数据,存储于所述至少一张数据表。
3.根据权利要求2所述的方法,其中,任意一张数据表的元数据包括:该数据表的表名,所包含的每个列的列信息,所述列信息包括:列名,列类型,以及:
索引,用于指示是否为该列创建索引;
主键,用于指示是否将该列设置为主键;
自增模式,用于指示该列数据是否为自增模式。
4.根据权利要求2所述的方法,其中,所述第一解析规则包括:与所述若干合约方法分别对应的若干子规则;任意子规则包括针对的合约方法的方法名,以及至少一段表操作规则,任意一段表操作规则包括:
表名字段,用于指示所述至少一张数据表中的目标数据表;
操作字段,用于指示针对目标数据表进行的目标操作的操作类型;
若干列字段,用于指示目标操作针对的目标数据列以及数据来源,所述数据来源通过预设指示符指示其取自合约参数值,或区块内置的值。
5.根据权利要求4所述的方法,其中所述操作字段的备选取值对应于***、更新或删除;当所述目标操作为更新或删除时,所述任意一段表操作规则还包括键字段,用于指示所述目标操作的查询键。
6.根据权利要求4所述的方法,其中,所述若干合约方法包括第一合约方法,所述若干子规则包括第一子规则;所述第一子规则包括,所述第一合约方法的方法名,以及第一表操作规则,所述第一表操作规则在表名字段包括第一数据表,在操作字段包括第一操作,在列字段包括第一数据列,以及通过第一指示符指示的第一数据来源。
7.根据权利要求6所述的方法,其中,所述根据所述第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,包括:
根据所述第一指示符,读取所述第一数据来源的数据取值,基于该数据取值对所述第一数据表中的第一数据列进行所述第一操作。
8.根据权利要求6所述的方法,其中,所述第一子规则还包括第二表操作规则,所述第二表操作规则在表名字段包括第二数据表。
9.根据权利要求2所述的方法,其中,所述第二解析规则包括:若干段表操作规则,任意一段表操作规则包括:
表名字段,用于指示所述至少一张数据表中的目标数据表;
操作字段,用于指示针对目标数据表进行的目标操作的操作类型;
若干列字段,用于指示目标操作针对的目标数据列以及数据来源,所述数据来源通过预设指示符指示其取自合约回执中的键值对,或区块内置的值。
10.根据权利要求9所述的方法,其中,所述根据所述第二解析规则,将与所述合约回执有关的区块数据映射为第二结构化数据,包括:
根据所述预设指示符,从所述数据来源中提取与所述合约回执有关的区块数据;
基于该区块数据,对所述表名字段所指示的目标数据表,所述若干列字段所指示的目标数据列,进行所述操作字段所指示的目标操作。
11.一种将区块数据映射成结构化数据的装置,所述装置设置于区块链节点,包括:
获取单元,用于获取待执行的目标交易所调用的目标智能合约,所述目标智能合约包括若干合约方法,并具有附加于其上并针对其设置的解析规则;所述解析规则包括针对所述若干合约方法的第一解析规则,和针对合约回执的第二解析规则;
执行单元,用于执行所述目标交易,得到合约回执;
映射单元,用于根据所述获取单元获取的第一解析规则,将与所述若干合约方法有关的区块数据映射为第一结构化数据,根据所述获取单元获取的第二解析规则,将与所述执行单元得到的合约回执有关的区块数据映射为第二结构化数据。
12.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-10中任一项的所述的方法。
13.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211733501.1A CN116049280A (zh) | 2022-12-30 | 2022-12-30 | 将区块数据映射成结构化数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211733501.1A CN116049280A (zh) | 2022-12-30 | 2022-12-30 | 将区块数据映射成结构化数据的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116049280A true CN116049280A (zh) | 2023-05-02 |
Family
ID=86123163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211733501.1A Pending CN116049280A (zh) | 2022-12-30 | 2022-12-30 | 将区块数据映射成结构化数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116049280A (zh) |
-
2022
- 2022-12-30 CN CN202211733501.1A patent/CN116049280A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107562775B (zh) | 一种基于区块链的数据处理方法及设备 | |
US11847135B2 (en) | Blockchain node and transaction method | |
CN107577427B (zh) | 用于区块链***的数据迁移方法、设备和存储介质 | |
CN110032599B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
CN110032598B (zh) | 字段更新方法及装置、电子设备 | |
CN115150409B (zh) | 在区块链***中执行交易的方法、区块链***、节点及计算机可读存储介质 | |
WO2024066007A1 (zh) | 区块链***中的交易执行方法、共识节点和区块链*** | |
CN116366666A (zh) | 区块链***中的链状态更新方法和区块链节点 | |
CN114785800B (zh) | 跨链通信方法、装置、存储介质及计算设备 | |
CN116032756A (zh) | 基于区块链更新应用程序的配置信息的方法和区块链节点 | |
CN116049280A (zh) | 将区块数据映射成结构化数据的方法和装置 | |
CN116186763A (zh) | 在区块链***中处理区块数据的方法和装置 | |
WO2024066014A1 (zh) | 区块链***中的交易执行方法和节点 | |
CN118069713A (zh) | 区块链中的交易读写集获取方法及区块链节点 | |
CN116827970A (zh) | 基于区块链***的数据管理方法和区块链节点 | |
CN116126966A (zh) | 在区块链***中查询数据的方法、装置和区块链节点 | |
CN116226277A (zh) | 一种nft资源转移方法和区块链节点 | |
CN116416061A (zh) | 区块链***中的交易处理方法及装置 | |
CN115665176A (zh) | 区块链***中节点类型的转换方法、装置及区块链*** | |
CN116668002A (zh) | 区块链***中的交易分发方法、区块链节点和区块链*** | |
CN116668001A (zh) | 区块链中的交易处理方法和区块链节点 | |
CN117808587A (zh) | 交易去重方法及区块链***中的节点 | |
CN116049170A (zh) | 区块链状态的存储、验证方法及区块链节点 | |
CN116842100A (zh) | 基于区块链的数据管理方法、装置和区块链节点 | |
CN116305311A (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 |