CN113988845B - 基于智能合约的数据处理方法、设备以及可读存储介质 - Google Patents

基于智能合约的数据处理方法、设备以及可读存储介质 Download PDF

Info

Publication number
CN113988845B
CN113988845B CN202111229632.1A CN202111229632A CN113988845B CN 113988845 B CN113988845 B CN 113988845B CN 202111229632 A CN202111229632 A CN 202111229632A CN 113988845 B CN113988845 B CN 113988845B
Authority
CN
China
Prior art keywords
contract
local
node
service
request
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.)
Active
Application number
CN202111229632.1A
Other languages
English (en)
Other versions
CN113988845A (zh
Inventor
蓝虎
王宗友
时一防
刘汉卿
朱耿良
刘区城
廖志勇
刘攀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202111229632.1A priority Critical patent/CN113988845B/zh
Publication of CN113988845A publication Critical patent/CN113988845A/zh
Application granted granted Critical
Publication of CN113988845B publication Critical patent/CN113988845B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/12Accounting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Theoretical Computer Science (AREA)
  • Finance (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种基于智能合约的数据处理方法、设备以及可读存储介质,该方法包括:业务节点获取用于执行交易业务的初始合约调用请求;基于第一合约标识和第一映射关系,在业务节点的节点内存中查询与目标链上合约相关联的第二合约标识,基于第二合约标识获取目标本地合约,调用目标本地合约执行交易业务所指示的本地业务,得到本地交易执行结果;基于本地交易执行结果和初始合约调用请求,确定用于发送给共识节点的目标合约调用请求,将目标合约调用请求转发至共识节点,以使共识节点基于目标合约调用请求中的第一合约标识,获取目标链上合约,且调用目标链上合约执行交易业务所指示的共识业务。采用本申请,可以减轻共识节点的压力。

Description

基于智能合约的数据处理方法、设备以及可读存储介质
本申请为在2021年08月12日提交中国专利局、申请号为202110923438.7、申请名称为“基于智能合约的数据处理方法、设备以及可读存储介质”的中国专利申请的分案申请,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及区块链技术领域,尤其涉及一种基于智能合约的数据处理方法、设备以及可读存储介质。
背景技术
在区块链系统中,智能合约是一种区块链上各个节点可以理解并执行的代码,可以执行任意逻辑并得到结果,智能合约可以理解为是可执行程序,而区块链可以理解为是提供程序运行环境的操作系统。在实际应用中,智能合约可以通过区块链上的交易来管理与试用。
在传统区块链网络中,业务对象可以通过发起一笔交易的方式,调用区块链上已经部署好的智能合约。其中,所有智能合约均部署并运行于区块链网络中的共识节点上,各个共识节点分别运行交易所指定的智能合约,对于需要读取数据的智能合约,各共识节点会访问自己的账本,最终,各个共识节点会互相验证执行结果是否一致(共识),若一致则将执行结果存入各自的账本中,并将执行结果返回给业务对象,也可以将执行结果同步至其它类型的节点上,这样使得共识节点需要承担更多的数据存储数量以及运算工作量,进而加重了共识节点的压力。
发明内容
本申请实施例提供了一种基于智能合约的数据处理方法、设备以及可读存储介质,可以减轻共识节点的压力。
本申请实施例一方面提供了一种基于智能合约的数据处理方法,该方法由业务网络中的业务节点执行,包括:
获取用于执行交易业务的初始合约调用请求;初始合约调用请求包括用于调用目标链上合约的第一合约标识;目标链上合约部署在独立于业务网络的核心共识网络的共识节点上;共识节点和业务节点的节点内存中均存储有第一合约标识与第二合约标识之间的第一映射关系;第二合约标识为部署在业务节点上的目标本地合约的合约标识;
基于第一合约标识和第一映射关系,在业务节点的节点内存中查询与目标链上合约相关联的第二合约标识,基于第二合约标识获取目标本地合约,调用目标本地合约执行交易业务所指示的本地业务,得到本地交易执行结果;
基于本地交易执行结果和初始合约调用请求,确定用于发送给共识节点的目标合约调用请求,将目标合约调用请求转发至共识节点,以使共识节点基于目标合约调用请求中的第一合约标识,获取目标链上合约,且调用目标链上合约执行交易业务所指示的共识业务。
本申请实施例一方面提供了一种基于智能合约的数据处理方法,该方法由核心共识网络中的共识节点执行,包括:
获取用于执行交易业务的目标合约调用请求;目标合约调用请求是指独立于核心共识网络的业务网络的业务节点基于本地交易执行结果和初始合约调用请求所确定的请求;本地交易执行结果是由业务节点调用目标本地合约执行交易业务所指示的本地业务得到的;目标本地合约是业务节点基于第二合约标识获取到的;第二合约标识是指业务节点基于第一合约标识和第一映射关系,在业务节点的节点内存中查询到的与目标链上合约相关联的合约标识;第一合约标识是指初始合约调用请求中用于调用目标链上合约的合约标识;初始合约调用请求用于执行交易业务;目标链上合约部署在共识节点上;共识节点和业务节点的节点内存中均存储有第一合约标识与第二合约标识之间的第一映射关系;第二合约标识为部署在业务节点上的目标本地合约的合约标识;
基于目标合约调用请求中的第一合约标识,获取目标链上合约,调用目标链上合约执行交易业务所指示的共识业务,得到链上交易执行结果;
根据链上交易执行结果生成待添加至区块链的区块,对区块进行上链处理;区块链为目标链上合约所属的区块链。
本申请实施例一方面提供了一种基于智能合约的数据处理装置,该装置运行在业务网络的业务节点中,包括:
获取模块,用于获取用于执行交易业务的初始合约调用请求;初始合约调用请求包括用于调用目标链上合约的第一合约标识;目标链上合约部署在独立于业务网络的核心共识网络的共识节点上;共识节点和业务节点的节点内存中均存储有第一合约标识与第二合约标识之间的第一映射关系;第二合约标识为部署在业务节点上的目标本地合约的合约标识;
执行模块,用于基于第一合约标识和第一映射关系,在业务节点的节点内存中查询与目标链上合约相关联的第二合约标识,基于第二合约标识获取目标本地合约,调用目标本地合约执行交易业务所指示的本地业务,得到本地交易执行结果;
转发模块,用于基于本地交易执行结果和初始合约调用请求,确定用于发送给共识节点的目标合约调用请求,将目标合约调用请求转发至共识节点,以使共识节点基于目标合约调用请求中的第一合约标识,获取目标链上合约,且调用目标链上合约执行交易业务所指示的共识业务。
其中,上述业务节点的节点内存中存储有本地合约信息;本地合约信息包括关系映射表;关系映射表存储有第一合约标识与第二合约标识之间的第一映射关系;
上述执行模块,包括:
查询单元,用于在关系映射表中查询与第一合约标识具有第一映射关系的合约标识,将查询到的合约标识确定为与目标链上合约相关联的第二合约标识,将第二合约标识所对应的本地合约确定为目标本地合约。
其中,本地合约信息还包括目标本地合约对应的本地合约函数;
上述执行模块,包括:
读取单元,用于调用目标本地合约在本地合约信息中读取本地合约函数;
执行单元,用于通过本地合约函数从业务节点的节点内存中访问与本地业务相关联的本地业务数据,通过本地业务数据执行交易业务所指示的本地业务,得到本地交易执行结果。
其中,本地合约函数包括与本地业务相关联的预检查函数;
上述执行单元,包括:
预检查子单元,用于通过预检查函数从业务节点的节点内存中访问与本地业务相关联的第一本地业务数据,基于第一本地业务数据对初始合约调用请求中的请求参数进行预检查处理;若请求参数满足本地业务所指示的上链条件,则将满足本地业务所指示的上链条件的请求参数确定为合法请求参数,将合法请求参数作为本地业务对应的本地交易执行结果。
其中,该装置还包括:
请求反馈模块,用于若请求参数不满足本地业务所指示的上链条件,则将不满足本地业务所指示的上链条件的请求参数确定为非法请求参数,将非法请求参数作为本地业务对应的本地交易执行结果;根据非法请求参数生成请求失败信息,将请求失败信息返回至发送初始合约调用请求的第一用户终端。
其中,本地合约函数包括与本地业务相关联的信息补全函数;
上述执行单元,包括:
信息补全子单元,用于通过信息补全函数从业务节点的节点内存中访问与本地业务相关联的第二本地业务数据,基于第二本地业务数据对初始合约调用请求中的请求参数进行信息补全处理;将信息补全后的请求参数作为本地业务对应的本地交易执行结果。
其中,业务网络与核心共识网络所在的区块链网络中还包括用于进行网络隔离的路由网络;
上述转发模块,具体用于基于本地交易执行结果和初始合约调用请求,确定用于发送给共识节点的目标合约调用请求,将目标合约调用请求通过路由网络中的路由节点转发至共识节点。
其中,该装置还包括:
合约部署模块,用于获取第二用户终端发送的用于部署一个或多个预置本地合约的合约部署请求,将合约部署请求转发至共识节点,以使共识节点对合约部署请求进行共识,且当合约部署请求共识通过时,根据合约部署请求生成一个或多个预置本地合约对应的本地合约汇总信息,将本地合约汇总信息存储至共识节点的节点内存中;一个或多个预置本地合约包括目标本地合约;
合约同步模块,用于向共识节点发送合约同步请求,以使共识节点对合约同步请求进行共识;当合约同步请求共识通过时,获取共识节点发送的本地合约信息;将本地合约信息存储至业务节点的节点内存中,基于本地合约信息部署目标本地合约;合约同步请求包括业务节点对应的业务节点标识;本地合约信息是指由共识节点基于业务节点标识,在本地合约汇总信息中获取到的信息;本地合约信息包括关系映射表以及本地合约信息表;关系映射表存储有第一映射关系以及第二合约标识与业务节点标识之间的第二映射关系;本地合约信息表包括目标本地合约对应的合约信息栏。
本申请实施例一方面提供了一种基于智能合约的数据处理装置,该装置运行在核心共识网络的共识节点中,包括:
获取模块,用于获取用于执行交易业务的目标合约调用请求;目标合约调用请求是指独立于核心共识网络的业务网络的业务节点基于本地交易执行结果和初始合约调用请求所确定的请求;本地交易执行结果是由业务节点调用目标本地合约执行交易业务所指示的本地业务得到的;目标本地合约是业务节点基于第二合约标识获取到的;第二合约标识是指业务节点基于第一合约标识和第一映射关系,在业务节点的节点内存中查询到的与目标链上合约相关联的合约标识;第一合约标识是指初始合约调用请求中用于调用目标链上合约的合约标识;初始合约调用请求用于执行交易业务;目标链上合约部署在共识节点上;共识节点和业务节点的节点内存中均存储有第一合约标识与第二合约标识之间的第一映射关系;第二合约标识为部署在业务节点上的目标本地合约的合约标识;
执行模块,用于基于目标合约调用请求中的第一合约标识,获取目标链上合约,调用目标链上合约执行交易业务所指示的共识业务,得到链上交易执行结果;
上链模块,用于根据链上交易执行结果生成待添加至区块链的区块,对区块进行上链处理;区块链为目标链上合约所属的区块链。
其中,该装置还包括:
合约部署模块,用于获取业务节点转发的由第二用户终端所发送的用于部署一个或多个预置本地合约的合约部署请求,对合约部署请求进行共识,当合约部署请求共识通过时,根据合约部署请求生成一个或多个预置本地合约对应的本地合约汇总信息,将本地合约汇总信息存储至共识节点的节点内存中;一个或多个预置本地合约包括目标本地合约;
合约同步模块,用于获取业务节点发送的合约同步请求;合约同步请求包括业务节点对应的业务节点标识;对合约同步请求进行共识,当合约同步请求共识通过时,基于业务节点标识,在本地合约汇总信息中获取本地合约信息,将本地合约信息发送至业务节点,以使业务节点将本地合约信息存储至业务节点的节点内存,且基于本地合约信息部署目标本地合约;本地合约信息包括与目标本地合约相关联的信息。
其中,合约部署请求包括每个预置本地合约分别对应的合约关键字段,合约关键字段包括本地合约标识、本地合约版本号、本地合约类型、本地合约代码、本地合约描述信息、关联合约标识以及可执行节点标识列表;关联合约标识是指部署在共识节点上的与每个预置本地合约相关联的链上合约的合约标识;可执行节点标识列表包括一个或多个可执行节点标识;可执行节点标识是指具有针对每个预置本地合约的执行权限的节点所对应的节点标识;目标本地合约对应的可执行节点标识列表包括业务节点标识。
其中,合约部署请求还包括第二用户终端对应的终端签名信息以及终端标识;
上述合约部署模块,包括:
第一共识单元,用于对终端签名信息以及终端标识进行共识;
映射表生成单元,用于当终端签名信息以及终端标识均共识通过时,根据合约部署请求中的本地合约标识、关联合约标识以及可执行节点标识列表,生成汇总关系映射表;汇总关系映射表包括一个或多个预置本地合约分别对应的映射关系栏;映射关系栏用于存储本地合约标识与关联合约标识之间的映射关系,以及本地合约标识与可执行节点标识之间的映射关系;
信息表生成单元,用于根据本地合约标识、本地合约代码、关联合约标识以及可执行节点标识列表,生成汇总合约信息表;汇总合约信息表包括一个或多个预置本地合约分别对应的合约信息栏;
确定存储单元,用于将汇总关系映射表以及汇总合约信息表确定为一个或多个预置本地合约对应的本地合约汇总信息,将本地合约汇总信息存储至共识节点的节点内存中。
其中,合约同步请求还包括节点签名信息;
上述合约同步模块,包括:
第二共识单元,用于对节点签名信息以及业务节点标识进行共识;
第一查询单元,用于当节点签名信息以及业务节点标识均共识通过时,基于业务节点标识在汇总关系映射表中进行查询,将查询到的具有与业务节点标识相同的节点标识的映射关系栏确定为关系映射表;关系映射表存储有第一映射关系以及第二合约标识与业务节点标识之间的第二映射关系;
第二查询单元,用于将关系映射表中的本地合约标识确定为关键合约标识,基于关键合约标识在汇总合约信息表中进行查询,将查询到的具有与关键合约标识相同的合约标识的合约信息栏确定为本地合约信息表;本地合约信息表包括目标本地合约对应的合约信息栏;
确定发送单元,用于将关系映射表以及本地合约信息表确定为本地合约信息,将本地合约信息发送至业务节点。
本申请实施例一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信功能,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中的方法。
在本申请实施例中,在核心共识网络的共识节点调用部署在该共识节点上的目标链上合约来执行交易业务所指示的共识业务之前,业务网络中的业务节点可以先获取用于执行该交易业务的初始合约调用请求,该初始合约调用请求包括用于调用该目标链上合约的第一合约标识,由于部署在该业务节点上的目标本地合约与目标链上合约相关联,且共识节点和该业务节点的节点内存中均存储有第一合约标识与目标本地合约对应的第二合约标识之间的第一映射关系,因此该业务节点可以基于上述第一合约标识以及第一映射关系,在该业务节点的节点内存中查询与目标链上合约相关联的第二合约标识,并可以基于第二合约标识获取目标本地合约,进而可以调用该目标本地合约执行上述交易业务所指示的本地业务,从而得到本地交易执行结果。进一步,该业务节点可以基于本地交易执行结果和初始合约调用请求来确定目标合约调用请求,最终可以将目标合约调用请求转发至共识节点。其中,由于业务节点可以先于共识节点对接收到的合约调用请求进行相应的处理,而不需要将所有与合约调用请求相关的操作都积压在共识节点上执行,从而可以减轻共识节点的压力,并可以提高区块链网络整体的交易处理效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链网络分层结构的示意图;
图2a-图2b是本申请实施例提供的一种数据处理的场景示意图;
图3是本申请实施例提供的一种基于智能合约的数据处理方法的流程示意图;
图4是本申请实施例提供的一种基于智能合约的数据处理方法的流程示意图;
图5a-图5c是本申请实施例提供的一种数据处理的场景示意图;
图6是本申请实施例提供的一种基于智能合约的数据处理方法的流程示意图;
图7是本申请实施例提供的一种基于智能合约的数据处理方法的流程示意图;
图8是本申请实施例提供的一种数据处理方法的流程示意图;
图9是本申请实施例提供的一种基于智能合约的数据处理装置的结构示意图;
图10是本申请实施例提供的一种基于智能合约的数据处理装置的结构示意图;
图11是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,图1是本申请实施例提供的一种区块链网络分层结构的示意图。区块链(Blockchain)是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链。本申请实施例中的区块链网络分层结构可以为图1所示的区块链网络1W,该区块链网络1W对应的完整区块链业务体系可以由图1所示的业务网络、核心共识网络以及路由节点10D所在的路由网络(也可称为路由代理网络)所组成。
应当理解,该路由网络中的路由节点的节点数量可以为一个或者多个,在此不做限定。本申请实施例以路由节点10D为例,该路由节点10D可以用于对该业务网络和核心共识网络进行网络隔离。该路由节点10D可以是独立的一个物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,在此不做限定。该路由节点10D可以将点对点(Peer ToPeer,简称P2P)网络进行网络分层,以形成“业务网络—核心共识网络”这样的分层结构,进而能够提高区块链上数据的保密性和安全性。
其中,图1所示的业务网络(即见证网络)与核心共识网络彼此独立,业务网络对应的区块链节点系统(即第一区块链节点系统)中可以包括一个或者多个区块链节点,这里将不对第一区块链节点系统中的节点数量进行限制。比如,第一区块链系统具体可以包括节点110a、节点110b、节点110c、…、节点110n。应当理解,本申请实施例可以将处于业务网络中的区块链节点称之为业务节点,该业务节点不需要参与记账共识,主要用于执行交易业务,以得到与该交易业务相关联的交易数据。其中,这里的业务节点可以为包含完整的区块链数据库的全量节点(Full Node),也可以为存储区块链数据库中的部分数据的轻量节点(Simplified Payment Verification,简称SPV),这里将不对其进行限定。为了减少业务节点的存储空间的浪费,本申请实施例中的业务节点可以以轻量节点为例,该业务节点不需要存储完整的交易数据,而是通过路由节点10D,从图1所示的核心共识网络中,获得区块头数据和部分授权可见的区块数据(例如,与业务节点自身相关联的交易)。
其中,图1所示的核心共识网络对应的区块链节点系统(即第二区块链节点系统)中也可以包括一个或者多个区块链节点,这里将不对第二区块链节点系统中的节点数量进行限制。比如,第二区块链系统具体可以包括节点120a、节点120b、节点120c、…、节点120m。应当理解,本申请实施例可以将处于该核心共识网络中的节点称之为共识节点(即记账节点),该共识节点可以运行有区块链共识协议。其中,本申请实施例中的共识节点可以为包含完整的区块链数据库的全量节点,该共识节点可以参与校验、广播交易数据以及区块信息,且会发现和维持与其他节点的连接。
应当理解,本申请实施例可以将路由节点、业务节点以及共识节点统称为区块链网络1W中的区块链节点。其中,该区块链节点可以为接入该区块链网络1W中的服务器,也可以为接入该区块链网络1W中的用户终端,这里对区块链节点的具体形式不做限定。可以理解的是,图1所示的业务网络和核心共识网络可以处于不同的网络环境,例如,通常来说,业务节点部署在处于公网的业务网络中,而运行区块链共识协议的共识节点则部署在私有的核心共识网络中,二者可以通过路由边界进行交互。可选的,在一种实施方式中,业务节点和共识节点可以不通过路由节点而直接进行数据传输。
其中,可以理解的是,区块链系统中可以包括有智能合约,该智能合约在区块链系统中可以理解为是一种区块链各节点(包括共识节点)可以理解并执行的代码,可以执行任意逻辑并得到结果。本申请实施例可以将部署且仅运行在业务网络的业务节点上的智能合约统称为本地合约,将部署在核心共识网络的共识节点上的智能合约统称为链上合约。业务对象(可以为请求执行交易业务的用户或请求部署智能合约的用户)可以通过用户终端上的客户端发起一个合约调用请求(也可称为交易业务请求)的方式,调用区块链系统中已经部署好的智能合约(可以是本地合约或链上合约)。应当理解,区块链系统中可以包括一个或多个智能合约,这些智能合约可以以合约标识(例如标识号(Identity document,ID)或名称,还可以包括合约地址或合约函数名(也可以称为合约方法名))来进行区分,而客户端发起的合约调用请求中,也可以携带智能合约的标识号或名称,以此指定区块链需要运行的智能合约。而若客户端所指定的智能合约为需要读取数据的合约,则相关节点会访问本地存储来进行数据的读取。对于需要上链的交易,最后各个共识节点会互相验证执行结果是否一致(也就是进行共识),若一致则可以将执行结果存入各自的本地账本中,并将执行结果返回至客户端。
在本申请实施例中,可以将业务对象指定调用的链上合约称为目标链上合约,将目标链上合约的合约标识称为第一合约标识,同理,可以将与目标链上合约相关联的本地合约称为目标本地合约,将目标本地合约的合约标识称为第二合约标识,需要说明的是,共识节点和部署有该目标本地合约的业务节点的节点内存中均存储有第一合约标识与第二合约标识之间的映射关系,可将该映射关系称为第一映射关系,其中,这里的业务节点特指业务网络中具有针对目标本地合约的执行权限的节点,可以由业务对象在图1所示的业务网络中指定一个节点(例如图1所示的节点110a)作为该业务节点,也就是说,目标本地合约部署并运行于该业务节点上。
在本申请实施例中,该业务节点可以先获取第一用户终端发送的初始合约调用请求,其中,这里的第一用户终端是指发送初始合约调用请求的用户终端,初始合约调用请求包括第一合约标识,可用于执行相关的交易业务,进而可以基于第一合约标识和第一映射关系,在该业务节点的节点内存中查询与目标链上合约相关联的第二合约标识,随后可以基于第二合约标识获取目标本地合约,并调用目标本地合约执行交易业务所指示的本地业务,从而得到本地交易执行结果。进一步,可以基于本地交易执行结果以及初始合约调用请求,确定目标合约调用请求,需要说明的是,执行本地业务后,得到的目标合约调用请求可能是与初始合约调用请求相同的请求,也可能是与初始合约调用请求不相同的请求。随后,该业务节点可以将目标合约调用请求转发至共识节点,共识节点接收到目标合约调用请求后,可以基于目标合约调用请求中的第一合约标识,获取目标链上合约,进而可以调用目标链上合约执行交易业务所指示的共识业务,得到链上交易执行结果,最终,可以根据该链上交易执行结果生成待添加至区块链的区块(即待上链区块),并对该区块进行上链处理。其中,该区块链为目标链上合约所属的区块链。
上述可知,本申请实施例提供的本地合约是一种特殊的、不在共识节点执行而仅在业务节点执行的合约,通过在初始合约调用请求中指定与目标本地合约相关联的目标链上合约的方式,使得业务节点可以先调用目标本地合约执行相应的本地业务,再由共识节点调用目标链上合约执行相应的共识业务。例如,针对国家总局建立的区块链,各省局可以作为业务节点接入,除了满足国家相关要求外,每个省份又可以有各自不同的政策,此时每个省份的业务节点可以部署不同的本地合约,只为这个省份服务。一方面,本地合约可以做提前的检查与计算,减轻共识节点的压力;另一方面,本地合约可以更好地访问与利用本地业务数据,使本地业务数据无需上链,减轻共识节点存储压力的同时也更好地保护自己的隐私。
为便于理解,进一步地,请参见图2a-图2b,图2a-图2b是本申请实施例提供的一种数据处理的场景示意图。本申请实施例中的用户终端20a可以为任意一个用户终端,用户终端20a与业务对象A具有绑定关系,该用户终端20a可以通过发起合约调用请求的方式来调用已经部署的智能合约(链上合约或本地合约)。本申请实施例中的业务节点20b可以为业务网络中部署有本地合约的业务节点,该业务节点20b可以为上述图1所示的业务网络中的任意一个业务节点,例如,节点110a。本申请实施例中的共识节点20c可以为核心共识网络中部署有链上合约的共识节点,该共识节点20c可以为上述图1所示的核心共识网络中的任意一个共识节点,例如,节点120a。
应当理解,业务网络中部署有本地合约的业务节点可以调用该本地合约执行交易业务所指示的本地业务,核心共识网络中部署有链上合约的任一共识节点均可以调用该链上合约执行交易业务所指示的共识业务。例如,这里的交易业务可以为资产转移业务,其中,该资产转移业务可以用于转移游戏金币、游戏钻石、电子票据等虚拟资产,这里将不对虚拟资产的类型进行限定。又例如,这里的交易业务可以为文件转移业务,其中,该文件转移业务可以用于转移电子合同、电子公文等各类形式的电子文件。此外,这里的交易业务还可以为查询业务、存储业务等,本申请对此不做限定。需要说明的是,在业务节点上部署本地合约时,可以指定关联的链上合约,这样可以复用该链上合约的一些数据。
如图2a所示,业务网络中的任意一个业务节点(例如,业务节点20b)均可以部署一个或多个本地合约(即预置本地合约),每个本地合约可以执行不同的功能,该业务节点拥有针对这一个或多个本地合约的执行权限,也就是说,这个业务节点可以调用部署在该业务节点上的本地合约。例如,以业务节点20b为例,可以在业务节点20b上部署多个(例如,10个)本地合约,具体可以包括本地合约201b、本地合约202b、…、本地合约210b,这些本地合约的相关信息可以存储在业务节点20b的节点内存20d中,其中,每个本地合约均可以采用唯一的合约标识(例如标识号或名称)进行区分,例如,本地合约201b对应的合约标识为合约标识1b,本地合约205b对应的合约标识为合约标识5b,本地合约210b对应的合约标识为合约标识10b。如图2b所示,核心共识网络中的任一共识节点(例如,共识节点20c)均可以部署一个或多个链上合约,且每个共识节点上部署的链上合约是相同的,每个链上合约也可以执行不同的功能。例如,以共识节点20c为例,可以在共识节点20c上部署多个(例如,30个)链上合约,具体可以包括链上合约201c、链上合约202c、…、链上合约230c,这些链上合约的相关信息可以存储在共识节点20c的节点内存20f中,其中,每个链上合约均可以采用唯一的合约标识(例如标识号或名称)进行区分,例如,链上合约201c对应的合约标识为合约标识1c,链上合约210c对应的合约标识为合约标识10c,链上合约230c对应的合约标识为合约标识30c。
需要说明的是,每个本地合约均可以与一个或多个链上合约建立关联关系,在一种实施方式中,可以采用本地合约的合约标识与该本地合约相关联的链上合约的合约标识之间的映射关系来表征两者的关联关系,并且可以将这些映射关系以关系映射表的形式存储至共识节点以及相关的业务节点的节点内存中。请再参见图2a,如图2a所示,业务节点20b的节点内存20d中存储有关系映射表20e,关系映射表20e中可以存储一个或多个映射关系,例如,合约标识3c与合约标识1b之间的映射关系,即表示链上合约203c与本地合约201b相关联,合约标识20c与合约标识2b之间的映射关系,即表示链上合约220c与本地合约202b相关联。同理,如图2b所示,共识节点20c的节点内存20f中也可以存储有关系映射表20e,可以理解,关系映射表20e仅包括与业务节点20b相关的映射关系,节点内存20f中还可以存储与其它业务节点有关的映射关系,本申请实施例仅以关系映射表20e为例进行说明。
如图2a所示,业务对象A可以通过用户终端20a(即第一用户终端)将合约调用请求B(即初始合约调用请求)发送至业务节点20b,其中,该合约调用请求B可用于执行业务对象A发起的交易业务(例如,业务对象A向业务对象F转移数量为待转移资产量的虚拟资产,如转账500元),业务对象A可以通过用户终端20a选择已经部署好的链上合约(即目标链上合约,例如,链上合约210c),即可以在合约调用请求B中指定该链上合约的合约标识(即第一合约标识,例如,合约标识10c)。假设已经预先指定链上合约210c与本地合约205b(即目标本地合约)之间存在关联关系,则链上合约210c的合约标识10c(即第一合约标识)与本地合约205b的合约标识5b(即第二合约标识)之间存在映射关系201e(即第一映射关系)。业务节点20b接收到用户终端20a发送的合约调用请求B时,可以在关系映射表20e中查询与合约标识10c具有映射关系201e的合约标识,进而可以将查询到的合约标识5b确定为第二合约标识,且可以基于合约标识5b获取本地合约205b。进一步,业务节点20b可以调用本地合约205b执行上述交易业务所指示的本地业务(例如,预先检查业务对象A的剩余资产量是否满足转账条件,即业务对象A的剩余资产量是否大于或等于待转移资产量(如500元)),得到交易执行结果C(即本地交易执行结果),进而可以基于交易执行结果C和合约调用请求B,确定用于发送给共识节点的合约调用请求D(即目标合约调用请求),最终业务节点20b可以通过路由网络中的路由节点将合约调用请求D转发至共识节点(例如共识节点20c),或者,业务节点20b可以直接将合约调用请求D转发至共识节点。需要说明的是,合约调用请求D中仍包括合约标识10c。
在一种实施方式中,在一个或多个合约调用请求从业务节点转发至核心链(即核心共识网络)上前,该业务节点可以执行对应的本地合约,以对这些合约调用请求进行预先的检查和过滤(即预检查处理),只有满足上链条件的合约调用请求才会最终转发至核心链上进行处理。例如,在转账场景下,合约调用请求D可以是合约调用请求B中满足转账条件(即上链条件)的请求,例如,业务节点20b检查到业务对象A的剩余资产量大于500元,即合约调用请求B满足转账条件,则可以将合约调用请求B作为合约调用请求D转发至共识节点20c,再由共识节点20c执行向业务对象F转账500元的操作;反之,若业务对象A的剩余资产量小于500元,即合约调用请求B不满足转账条件,则业务节点20b可以根据交易执行结果C生成请求失败信息(例如,用于提示业务对象A剩余资产量不足的信息),并将该请求失败信息返回至用户终端20a。
需要说明的是,除了上述举例的预检查处理,不同的交易业务所指示的本地业务也可以包含不同的内容,例如信息补全处理、统计归类处理等,本申请实施例对此不做限定。
进一步,如图2b所示,共识节点20c接收到业务节点20b转发的合约调用请求D后,可以基于合约调用请求D中的合约标识10c,获取链上合约210c,进而可以调用链上合约210c执行上述交易业务所指示的共识业务(例如,可以执行业务对象A转账500元至业务对象F的转账业务),从而得到交易执行结果E(即链上交易执行结果)。其中,图2b所示的区块链20g可以为共识节点20c所在的核心共识网络中的每个共识节点均共享的一条相同的区块链,每个共识节点均可以在该区块链20g中获取该区块链上所存储的数据信息,应当理解,该区块链20g中可以包括多个(例如101个)区块,分别为区块1、区块2、…、区块100以及目标区块,例如,该区块1可以称之为该区块链20g的创世区块。该区块链20g中的目标区块包含交易执行结果E。其中,假设共识节点20c为核心共识网络中的具备出块功能的共识节点,则共识节点20c可以根据交易执行结果E生成待添加至区块链20g的待上链区块,并对待上链区块进行上链处理,即共识节点20c可以将待上链区块发送至核心公式网络中的其它共识节点,以使其它共识节点对待上链区块进行区块共识,得到用于返回至共识节点20c的区块共识结果,若该区块共识结果为共识通过结果,则共识节点20c可以将该待上链区块作为目标区块,以写入图2b所示的区块链20g中,也就是将该目标区块作为区块100的下一区块。例如,共识节点20c可以调用链上合约210c执行转账业务,并修改业务对象A与业务对象F的剩余资产量,根据业务对象A的最新剩余资产量以及业务对象F的最新剩余资产量生成待上链区块,并将该待上链区块添加至区块链20g中,以完成将业务对象A的最新剩余资产量以及业务对象F的最新剩余资产量写入区块链20g中。
随后,共识节点20c可以通过业务节点20b将交易执行结果(如转账成功结果)返回至用户终端20a以及与业务对象F绑定的用户终端20h,业务对象A通过用户终端20a查询自己的剩余资产量时,所呈现的剩余资产量则为业务对象A的最新剩余资产量;业务对象F通过用户终端20h查询自己的剩余资产量时,所呈现的剩余资产量则为业务对象F的最新剩余资产量。
应当理解,本申请实施例提供的方法可以应用于转移虚拟资产(例如游戏金币、游戏钻石、电子票据)或者转移电子文件(例如电子合同、电子公文)等业务场景,或者其它需要本地合约做提前的检查与计算的业务场景。由于业务节点可以先于共识节点调用本地合约对接收到的合约调用请求进行相应的处理,而不需要将所有与合约调用请求相关的操作都积压在共识节点上执行,从而可以减轻共识节点的压力,并可以提高区块链网络整体的交易处理效率。
进一步地,请参见图3,图3是本申请实施例提供的一种基于智能合约的数据处理方法的流程示意图。如图3所示,该方法可以由业务网络中的业务节点执行,该业务节点可以为接入至该业务网络中的服务器,也可以为接入至该业务网络中的用户终端,这里对业务节点的具体形式不做限定。其中,该业务节点可以为上述图1所示的业务网络中部署有目标本地合约的业务节点,例如,节点110a。该方法至少可以包括以下步骤S101-步骤S103:
步骤S101,获取用于执行交易业务的初始合约调用请求;初始合约调用请求包括用于调用目标链上合约的第一合约标识;共识节点和业务节点的节点内存中均存储有第一合约标识与第二合约标识之间的第一映射关系;
在本申请实施例中,目标本地合约部署在业务网络中指定的业务节点上,目标链上合约则部署在核心共识网络的共识节点上,该核心共识网络独立于业务网络,两者通过路由网络进行网络隔离。其中,业务节点可以接收来自用户终端发送的交易请求(例如,合约部署请求或初始合约调用请求),而共识节点可以接收经由业务节点转发的交易请求,其中,交易请求可为用户终端根据业务对象发起的交易业务所生成的请求。为便于后续理解和区分,可以将发送初始合约调用请求的用户终端称为第一用户终端,将发送合约部署请求的用户终端称为第二用户终端,其中,第一用户终端和第二用户终端可以为同一个用户终端,也可以为不同的用户终端。
应当理解,业务对象可以通过发起合约部署请求的方式在业务节点上部署一个或多个本地合约。以部署目标本地合约为例,业务对象可以通过第二用户终端发起合约部署请求,通过该合约部署请求,业务对象可以在指定的业务节点上部署目标本地合约,其中,指定的业务节点可以包括核心共识网络中的一个或多个业务节点。
应当理解,业务对象可以通过指定智能合约的合约标识(例如,ID或名称)来对智能合约进行唯一标识,区块链节点(业务节点或共识节点)可以通过合约标识来调用对应的智能合约。在本申请实施例中,目标链上合约对应的合约标识为第一合约标识,目标本地合约对应的合约标识为第二合约标识。鉴于此,业务对象还可以在合约部署请求中指定目标本地合约所关联的一个或多个链上合约的合约标识,其中,这一个或多个链上合约包括目标链上合约。共识节点和指定的业务节点的节点内存(例如,硬盘、存储器或数据库等)中均可以存储第一合约标识与第二合约标识之间的第一映射关系。可以理解,部署其它本地合约的过程与部署目标本地合约的过程一致,部署本地合约的具体实现方式可以参见后续图4所对应实施例中的步骤S201以及图7所对应实施例中的步骤S401,这里不进行展开。
应当理解,目标本地合约部署成功后,指定的业务节点可以将部署成功结果返回至第二用户终端。进一步,业务对象可以通过第一用户终端发起用于执行交易业务(例如,资产转移业务、文件转移业务、查询业务、存储业务等)的初始合约调用请求,该初始合约调用请求中可以携带业务对象指定的目标链上合约所对应的第一合约标识,第一用户终端可以将该初始合约调用请求发送至部署有目标本地合约的一个或多个业务节点,该一个或多个业务节点在接收到该初始合约调用请求后,可以根据该初始合约调用请求调用与目标链上合约相关联的目标本地合约,调用目标本地合约的具体实现方式可以参见步骤S102。为便于说明,后续的步骤仅以其中一个业务节点为例进行说明。
可以理解的是,第一用户终端和第二用户终端可以为不同的用户终端,例如,第二用户终端为用户终端A,第一用户终端为用户终端B,业务节点在部署完成后可以将部署成功结果发送至用户终端A;业务节点也可以向用户终端B发送部署成功结果,则用户终端B可以基于部署成功结果向业务节点发送初始合约调用请求。可选的,用户终端A在接收到业务节点发送的部署成功结果后,可以向用户终端B发送业务节点已部署完成的通知,随后用户终端B可以向业务节点发送初始合约调用请求。
步骤S102,基于第一合约标识和第一映射关系,在业务节点的节点内存中查询与目标链上合约相关联的第二合约标识,基于第二合约标识获取目标本地合约,调用目标本地合约执行交易业务所指示的本地业务,得到本地交易执行结果;
应当理解,业务节点的节点内存中存储有本地合约信息,该本地合约信息是指部署在该业务节点上的本地合约(包括目标本地合约)相关的信息,其中,该本地合约信息可以包括这些本地合约的合约标识与相关联的链上合约的合约标识之间的映射关系,例如,业务节点A上部署了本地合约A1以及本地合约A2,且本地合约A1与指定的链上合约B1相关联,本地合约A2与指定的链上合约B2相关联,链上合约B1与链上合约B2均部署在共识节点B上,则业务节点A需要在其节点内存的本地合约信息中存储本地合约A1的合约标识与链上合约B1的合约标识之间的映射关系,以及本地合约A2的合约标识与链上合约B2的合约标识之间的映射关系,此外,共识节点B也可以在其节点内存中存储这些映射关系。
可以理解,上述映射关系可以存储在关系映射表中,其中,该关系映射表包括第一合约标识与第二合约标识之间的第一映射关系。关系映射表的一种可选的形式可以参见上述图2a所示的关系映射表20e,当然,也可以采用其它的形式来存储上述映射关系,本申请对此不做限定。
在本申请实施例中,业务节点可以在关系映射表中查询与第一合约标识具有第一映射关系的合约标识,进而可以将查询到的合约标识确定为与目标链上合约相关联的第二合约标识,随后,可以将第二合约标识所对应的本地合约确定为目标本地合约。可以理解,一个本地合约与一个链上合约具有唯一的映射关系,关系映射表可以包括一个或多个映射关系栏,一个映射关系栏可用于存储一个映射关系,因此,业务节点可以将关系映射表中存储有第一合约标识以及第一映射关系的映射关系栏确定为目标映射关系栏,进而可以将该目标映射关系栏中存储的不同于第一合约标识的合约标识确定为第二合约标识。例如,请再次参见图2a,业务节点20b可以基于合约调用请求B中的合约标识10c以及映射关系201e,在关系映射表20e中查询到与合约标识10c具有映射关系201e的合约标识5b。
可以理解,本地合约信息还可以包括目标本地合约对应的本地合约函数,业务节点可以通过调用本地合约函数来执行交易业务所指示的本地业务,具体的,业务节点可以先调用目标本地合约在该本地合约信息中读取本地合约函数,进而可以通过该本地合约函数从业务节点的节点内存中访问与本地业务相关联的本地业务数据,随后可以通过本地业务数据执行交易业务所指示的本地业务,得到本地交易执行结果。在一种实施方式中,本地合约信息还可以包括合约代码,业务对象可以在目标本地合约中部署该业务对象编写的合约代码(即合约程序语句),该合约代码是指支持目标本地合约执行本地业务的合约程序语句,其中,该合约代码可以包括本地合约函数对应的合约函数名以及该合约函数名对应的函数语句,业务节点可以调用目标本地合约在本地合约信息中获取本地合约函数对应的合约函数名,进而可以获取该合约函数名对应的函数语句。应当理解,该函数语句中可以指出业务节点的节点内存中与本地业务相关联的本地业务数据所在的存储位置,即业务节点可以通过该函数语句向业务节点的节点内存发送数据读取请求,进而可以获取到该存储位置上的本地业务数据,该本地业务数据可用于执行交易业务所指示的本地业务。需要说明的是,本地业务数据可以指该业务节点所服务的业务对象相关的数据,该本地业务数据可以来自于相关的用户终端,也可以来自于区块链网络中的其它区块链节点(例如参与交易业务的其它业务节点,或者该业务节点的上级节点,或者核心共识网络中的共识节点)。
其中,本地业务是指业务节点可以利用本地业务数据执行的业务,例如,检查某个合约调用请求是否满足上链条件(即预检查处理,如检查该合约调用请求是否满足所在省份的相关政策),或者,补全一些业务节点独有的信息(即信息补全处理,如分配发票号、补全公章或签名等),或者,对相关交易数据进行统计和归类,并按指定的格式输出(即统计归类处理,例如统计某个公司当天进行转账的交易数量),本申请对此不做限定。下面分别以预检查处理和信息补全处理为例进行说明。
针对本地业务为预检查处理的场景,本地合约函数可以包括与本地业务相关联的预检查函数,业务节点可以通过该预检查函数从业务节点的节点内存中访问与本地业务相关联的第一本地业务数据,进而可以基于第一本地业务数据对初始合约调用请求中的请求参数进行预检查处理。例如,企业A向企业B转移一张电子票据,由此可生成相关的请求参数,则业务节点可以在自己的节点内存中查找该电子票据的历史交易信息,如,判断企业A的账户是否存在这一张电子票据、企业A和企业B的账户是否有误、企业A所拥有的这张电子票据的来源、判断该电子票据的号码是否有误等等。进一步,若该请求参数满足本地业务所指示的上链条件,则可以将满足本地业务所指示的上链条件的请求参数确定为合法请求参数,进而可以将该合法请求参数作为本地业务对应的本地交易执行结果。反之,若该请求参数不满足本地业务所指示的上链条件,则可以将不满足本地业务所指示的上链条件的请求参数确定为非法请求参数,并将该非法请求参数作为本地业务对应的本地交易执行结果,进而可以根据该非法请求参数生成请求失败信息,随后可以将请求失败信息返回至发送初始合约调用请求的第一用户终端,也就是说,业务节点可以将不满足上链条件的合约调用请求进行过滤或拦截。其中,请求失败信息用于表示初始合约调用请求被拒绝,可以包括具体的拒绝原因、错误信息等。可以理解,在业务节点上对初始合约调用请求进行预检查处理,可以拦截掉一些恶意的或有问题的请求,一方面可以减少共识节点上的计算量,减轻共识节点的压力,否则共识节点会面临很多的合约调用请求,另一方面,当共识节点不具备相关的判断能力时,业务节点可以利用自身的本地业务数据进行判断。
其中,上链条件的具体内容与交易业务相关,这里将不对其进行限定。例如,在电子票据场景中,业务节点可以为具有目标区域属性(例如省、市、区等)的业务节点,共识节点可以为该业务节点的上级节点,则此时上链条件可以为与该目标区域属性相关联的政策(例如省的政策、市的政策、区的政策等)。例如,省份A的业务节点可以预先检查用于开具电子票据的合约调用请求B(即初始合约调用请求)是否满足省份A的相关政策,只有合约调用请求B满足省份A的相关政策(例如针对单笔交易金额的限制政策)时,省份A的业务节点才会将合约调用请求B再转发到由共识节点组成的国家链上进行后续处理。又例如,在转账场景中,上链条件可以为交易发起方拥有足够的剩余资产量,也就是说,当交易发起方的剩余资产量大于或等于待转移资产量时,业务节点可以将用于转账的合约调用请求C转发到共识节点上,由共识节点继续执行转账操作,否则,业务节点会对合约调用请求C进行拦截。
应当理解,请求参数可以指与交易业务相关的参数,对于不同的交易业务,请求参数所包含的具体内容也不相同。例如,在电子票据场景中,请求参数可以包括与电子票据的整个生命周期的流转逻辑相关的参数,例如电子票据开具信息、电子票据申领信息、电子票据的票据状态、数据的访问权限、电子票据上的关键字等;在转账场景中,请求参数可以包括交易发起方的剩余资产量、签名信息、待转移资产量、交易接收方标识(例如交易接收方的账号)等;在电子文件场景中,请求参数可以包括电子文件的公章信息、签名信息、状态信息等。
针对本地业务为信息补全处理的场景,本地合约函数可以包括与本地业务相关联的信息补全函数,业务节点可以通过信息补全函数从业务节点的节点内存中访问与本地业务相关联的第二本地业务数据,进而可以基于第二本地业务数据对初始合约调用请求中的请求参数进行信息补全处理,随后,可以将信息补全后的请求参数作为本地业务对应的本地交易执行结果。例如,在电子票据场景中,省税务局可作为业务节点,在开具电子票据时,该业务节点可以补全一些本省税务局才有的信息,如分配发票号。又例如,在电子文件场景中,地方法院作为业务节点向最高法院(即共识节点)转移一份电子文件前,可以补全该地方法院自身的公章或签名等信息。可以理解,通过部署本地合约,区块链网络可以不用将所有的数据均存储至共识节点上,而是采用业务节点自身拥有的数据或特有的能力(例如链上合约不具备的能力)去做信息补全(即数据补全),从而可以减少多方交互,且减轻共识节点的存储压力和计算压力,还可以保护业务节点的数据隐私。
步骤S103,基于本地交易执行结果和初始合约调用请求,确定用于发送给共识节点的目标合约调用请求,将目标合约调用请求转发至共识节点,以使共识节点基于目标合约调用请求中的第一合约标识,获取目标链上合约,且调用目标链上合约执行交易业务所指示的共识业务。
在一种实施方式中,业务网络与核心共识网络所在的区块链网络中还可以包括用于进行网络隔离的路由网络,业务节点可以基于本地交易执行结果和初始合约调用请求,确定用于发送给共识节点的目标合约调用请求,进而可以将目标合约调用请求转发至共识节点。
结合上述步骤S102,下面仍以预检查处理和信息补全处理为例进行说明。
针对本地业务为预检查处理的场景,当本地交易执行结果为合法请求参数时,业务节点可以将包含合法请求参数的初始合约调用请求确定为目标合约调用请求,也就是说,当初始合约调用请求中的请求参数满足本地业务所指示的上链条件时,初始合约调用请求与目标合约调用请求为相同的合约调用请求。反之,当本地交易执行结果为非法请求参数时,业务节点可以对初始合约调用请求进行拦截,并可以向第一用户终端返回请求失败信息。可以理解,若初始合约调用请求的数量为一个或多个,则业务节点可以将一个或多个初始合约调用请求中满足上链条件的合约调用请求确定为目标合约调用请求。进一步,业务节点可以将目标合约调用请求通过路由网络中的路由节点转发至共识节点,可选的,业务节点也可以直接将目标合约调用请求发送至共识节点。
针对本地业务为信息补全处理的场景,业务节点可以根据本地交易执行结果以及初始合约调用请求生成目标合约调用请求,该目标合约调用请求中可以包括信息补全后的请求参数,其中,信息补全后的请求参数可以包括初始合约调用请求中原始的请求参数以及经过信息补全处理后生成的更新请求参数(即附加了业务节点自己的信息),也就是说,业务节点可以将更新请求参数添加至初始合约调用请求的请求参数中,从而可以得到包含信息补全后的请求参数的目标合约调用请求,进而可以将目标合约调用请求通过路由网络中的路由节点转发至共识节点,或者,不通过路由节点而直接将目标合约调用请求发送至共识节点。可以理解,此时初始合约调用请求与目标合约调用请求是不相同的合约调用请求。例如,在开具电子票据时,用户终端X1(即第一用户终端)可以发起一个用于开具电子票据的合约调用请求Y1(即初始合约调用请求),且合约调用请求Y1包括请求参数Z1,业务节点X2接收到合约调用请求Y1后,可以基于其本地业务数据为该电子票据分配发票号,进而可以根据该发票号生成请求参数Z2(即更新请求参数),随后可以将请求参数Z2添加至合约调用请求Y1的请求参数Z1中,从而可以得到请求参数Z3(即信息补全后的请求参数),则可以将包含请求参数Z3的合约调用请求Y1称为合约调用请求Y2(即目标合约调用请求),然后可以通过路由节点X3将合约调用请求Y2发送至共识节点X4。可选的,业务节点也可以根据本地交易执行结果,对初始合约调用请求中的相关字段进行更新,得到包含更新字段的目标合约调用请求,进而可以将目标合约调用请求(通过路由节点或者不通过路由节点)转发至共识节点,以使共识节点可以调用目标链上合约将更新字段解析为更新请求参数。
需要说明的是,在本申请实施例中,业务网络中的业务节点可以具有不同的层级,例如具有上下级关系(如县级、市级、省级),下级节点接收到初始合约调用请求后,可以调用部署在该下级节点上的本地合约,得到第一合约调用请求,进而可以将该第一合约调用请求发送至上级节点,上级节点可以调用部署在该上级节点上的本地合约,得到第二合约调用请求,依此类推,最后一级业务节点得到的合约调用请求可以作为发送给共识节点(具有最高级别)的目标合约调用请求。
后续共识节点接收到目标合约调用请求后,可以基于目标合约调用请求中的第一合约标识,获取目标链上合约,进而可以调用目标链上合约执行交易业务所指示的共识业务。共识节点执行共识业务的具体实现方式可以参见后续图6所对应实施例中的步骤S302。
需要说明的是,目标链上合约可以为已经成功部署在共识节点上的合约,也可以为空的链上合约,可选的,当目标链上合约为空合约时,共识节点不会调用任意一个链上合约。可选的,业务对象还可以通过第一用户终端在合约调用请求中直接指定目标本地合约,即第一用户终端可以将包含有第二合约标识的合约调用请求发送至部署有目标本地合约的业务节点,该业务节点可以基于第二合约标识获取到目标本地合约,进而可以调用目标本地合约执行本地业务,从而得到本地交易执行结果,随后可以将本地交易执行结果返回至第一用户终端。例如,业务对象A希望得知本人在一个时间段内应缴纳的税额,则可以通过用户终端A1(即第一用户终端)发起一个用于计算税额的合约调用请求B,在该合约调用请求B中可以指定与税额计算相关的本地合约C(即目标本地合约)对应的合约标识C1(即第二合约标识),则用户终端A1可以将合约调用请求B发送至业务节点A2,进而业务节点A2可以通过合约标识C1获取本地合约C,并可以通过本地合约C从业务节点A2的节点内存中获取与税额计算相关的本地业务数据D(例如纳税政策、纳税公式、业务对象A的收入、各项支出、占用的耕地面积等),最终业务节点A2可以基于本地业务数据D计算出业务对象A的应纳税额E,并将应纳税额E返回至用户终端A1。可以理解,当业务对象不希望开发新的程序/服务/进程时,可以利用本地合约执行一些数据统计、查询或计算等操作(例如在本地合约中编写一些内部使用的代码),而不必放到核心共识网络上去处理。
可以理解,业务对象还可以自定义本地合约的其它功能,以适应不同的业务场景,本申请对此不做限定。此外,与现有方案相比,本申请实施例提供的合约调用方法可以降低合约调用的错误率,并且便于智能合约的管理,例如,每个省份有各自不同的政策,A省的业务节点所部署的本地合约只为A省服务,而不会出现B省人员错误调用到A省的本地合约的情况。
进一步,请参见图4,图4是本申请实施例提供的一种基于智能合约的数据处理方法的流程示意图。如图4所示,该方法可以由业务网络中的业务节点执行。该方法至少可以包括以下步骤S201-步骤S203:
步骤S201,获取第二用户终端发送的用于部署一个或多个预置本地合约的合约部署请求,将合约部署请求转发至共识节点;
具体的,业务对象可以通过第二用户终端发起用于部署一个或多个预置本地合约的合约部署请求,其中,业务对象可以通过合约部署请求在每个预置本地合约中添加合约函数(例如目标本地合约对应的本地合约函数)以实现相应的功能,并且可以指定业务网络中可以执行每个预置本地合约的业务节点(即部署该预置本地合约的业务节点)对应的节点标识,此外,还可以在合约部署请求中为预置本地合约指定关联的链上合约(可以为共识节点上已经部署的链上合约或空的链上合约)。需要说明的是,业务对象指定的这些信息均可以由合约关键字段表示,第二用户终端可以基于合约关键字段生成对应的合约部署请求,进而可以将该合约部署请求发送至业务网络中的任意一个业务节点。
进一步,业务节点可以接收该合约部署请求,进而可以将该合约部署请求通过路由网络中的路由节点转发至核心共识网络中的任意共识节点,或者,不通过路由节点而直接将该合约部署请求发送至任意共识节点。共识节点接收到该合约部署请求后,可以对该合约部署请求进行共识,当该合约部署请求共识通过时,共识节点可以根据该合约部署请求生成一个或多个预置本地合约对应的本地合约汇总信息,该本地合约汇总信息包括每个预置本地合约对应的信息,进而可以将本地合约汇总信息存储至该共识节点的节点内存中,此时可认为一个或多个预置本地合约成功部署到核心链上。应当理解,一个或多个预置本地合约包括目标本地合约,相应的,共识节点生成的本地合约汇总信息会包括目标本地合约对应的信息。共识节点对合约部署请求进行共识以及生成本地合约汇总信息的具体实现方式可以参见后续图7所对应实施例中的步骤S401。
其中,本地合约汇总信息可以采用表格存储、键值存储(即Key-Value存储,简称KV存储)、文件存储等形式存储在共识节点的节点内存中,本申请对此不做限定。在一种实施方式中,可以采用键值存储的形式来存储本地合约汇总信息,这样后续进行本地合约的同步或调用时,可以通过设定的Key(例如,关系映射表中链上合约的合约标识)快速查询到相应的Value(例如,关系映射表中本地合约的合约标识)。
为便于理解,请一并参见图5a-图5c,图5a-图5c是本申请实施例提供的一种数据处理的场景示意图。如图5a所示,用户终端30a(即第二用户终端)发起一个合约部署请求A,该合约部署请求A用于部署两个本地合约(即预置本地合约),分别为本地合约L1以及本地合约L2,其中,本地合约L1的合约标识为“Local_A”,本地合约L1与合约标识为“发票”的链上合约C1相关联;本地合约L2的合约标识为“Local_B”,本地合约L2与合约标识为“协作”的链上合约C2相关联。可以理解,链上合约C1可用于处理与发票(即电子票据)相关的业务,例如发票开具、发票报销等,而链上合约C2可用于处理不同业务对象/企业/机构/单位之间的协作业务(如多方协作处理电子文件),例如,业务对象1和业务对象2需要共同签订一份合同,则调用链上合约C2,可以将业务对象1签订后的合同流转到业务对象2继续签订。
如图5a所示,用户终端30a可以将合约部署请求A发送至业务网络30b,其中,业务网络30b可以包括业务节点301b以及业务节点302b,可以理解,该业务网络30b还可以包括其它未显示在图5a上的业务节点,例如业务节点303b、…、业务节点30mb。业务网络30b中的任意一个业务节点(例如业务节点301b)均可以获取合约部署请求A,在本申请实施例中,假设业务节点301b成功接收到合约部署请求A,则业务节点301b可以将合约部署请求A转发至核心共识网络30c,其中,核心共识网络30c可以包括多个未显示在图5a上的共识节点,例如共识节点301c、共识节点302c、…、共识节点30nc,核心共识网络30c中的每一个共识节点均可以获取合约部署请求A,以共识节点301c为例,共识节点301c接收到合约部署请求A后,可以将合约部署请求A广播至核心共识网络30c中的其它共识节点,使得每个共识节点均可以对合约部署请求A进行验证(例如终端签名验证、部署权限验证等),当验证成功时(即共识通过),共识节点301c可以基于合约部署请求A生成本地合约汇总信息30d,并将其存储至共识节点301c的节点内存中,可以理解,其它共识节点的节点内存中也存储有与本地合约汇总信息30d相同的数据。
如图5a所示,本地合约汇总信息30d可以包括汇总合约信息表30e以及汇总关系映射表30f。在本申请实施例中,汇总合约信息表30e以及汇总关系映射表30f均以键值存储的形式进行存储。其中,汇总合约信息表30e可以存储本地合约L1以及本地合约L2各自对应的合约信息,例如对应的合约标识、合约代码(包括合约函数的代码)、相关联的链上合约的合约标识以及执行标识列表,执行标识列表(也可以称为可执行节点标识列表)可以包括指定部署该本地合约的业务节点所对应的节点标识,例如,合约部署请求A中指定本地合约L1需要部署在业务节点301b以及业务节点302b上,则本地合约L1对应的执行标识列表可包括业务节点301b对应的节点标识ID1以及业务节点302b对应的节点标识ID2;而本地合约L2需要部署在业务节点303b上,因此本地合约L2对应的执行标识列表可包括业务节点303b对应的节点标识ID3。其中,汇总关系映射表30f则可以存储与本地合约L1以及本地合约L2相关的映射关系,例如,以本地合约L1为例,本地合约L1与合约标识为“发票”的链上合约C1相关联,因此汇总关系映射表30f中可以存储合约标识“发票”与合约标识“Local_A”之间的映射关系,此外,为了便于后续的合约同步,还可以将部署有本地合约L1的业务节点的节点标识(例如ID1、ID2)与合约标识“Local_A”之间的映射关系也存储至汇总关系映射表30f中。
步骤S202,向共识节点发送合约同步请求,以使共识节点对合约同步请求进行共识;当合约同步请求共识通过时,获取共识节点发送的本地合约信息;将本地合约信息存储至业务节点的节点内存中,基于本地合约信息部署目标本地合约;
应当理解,需要将预置本地合约真正部署到相应的业务节点上才能实现后续的本地合约调用,其中,业务网络中的任一业务节点可以通过路由网络中的路由节点向核心共识网络中的共识节点发送合约同步请求,或者,不通过路由节点而直接将合约同步请求发送至核心共识网络中的共识节点,以同步需要部署在该业务节点上的预置本地合约所对应的合约信息,而核心共识网络中的任意一个共识节点接收到该合约同步请求后,可以将该合约同步请求广播至其它共识节点,使得共识节点可以对该合约同步请求进行共识,其中,该合约同步请求包括业务节点对应的业务节点标识。进一步,当该合约同步请求共识通过时,共识节点可以基于该业务节点标识,从存储在其节点内存的本地合约汇总信息中获取与该业务节点标识相关的本地合约信息,进而可以将本地合约信息经由路由节点返回(或者,直接返回)至该业务节点。进一步,该业务节点可以将接收到的本地合约信息存储至该业务节点的节点内存中,并可以基于本地合约信息创建对应的预置本地合约(例如目标本地合约)。需要说明的是,对于一个预置本地合约来说,只有具有针对该预置本地合约的执行权限的业务节点所发送的合约同步请求才能通过共识,也就是说,共识节点需要检验每一个发送合约同步请求的业务节点是否具有部署某个预置本地合约的权限。共识节点对合约同步请求进行共识以及获取本地合约信息的具体实现方式可以参见下述图7所对应实施例中的步骤S402。
以指定部署目标本地合约的业务节点为例,当该业务节点向共识节点发送的合约同步请求共识通过时,可以得到共识节点发送的本地合约信息,该本地合约信息可以包括目标本地合约以及同样部署在该业务节点上的其它本地合约的信息,因此,该本地合约信息具体可以包括关系映射表以及本地合约信息表,其中,关系映射表可以存储有第一合约标识与第二合约标识之间的第一映射关系,以及第二合约标识与业务节点标识(即该业务节点的节点标识)之间的第二映射关系,而本地合约信息表则可以包括目标本地合约对应的合约信息栏。
在本申请实施例中,为便于区分,可以将获取并转发合约部署请求的业务节点称为第一业务节点(例如图5a中的业务节点301b),将发送合约同步请求的业务节点(例如图5b中的业务节点301b和业务节点303b)称为第二业务节点,第一业务节点与第二业务节点均可以为业务网络中的任意一个业务节点,第一业务节点和第二业务节点可以是相同的业务节点,也可以是不同的业务节点。
为便于理解,请一并参见图5b,如图5b所示,结合上述图5a中的描述,核心共识网络30c中的共识节点(例如共识节点301c)基于业务节点301b所转发的合约部署请求A生成了本地合约汇总信息30d,因此业务网络30b中的业务节点(例如业务节点301b、业务节点303b)可以将相关的合约信息同步到本地。例如,以业务节点301b为例,业务节点301b向核心共识网络30c发送携带有节点标识ID1的合约同步请求B,核心共识网络30c中的共识节点可以对合约同步请求B进行共识,当共识通过时,任一共识节点(例如共识节点301c)可以在本地合约汇总信息30d中查询与节点标识ID1相关的信息,例如,共识节点301c可以在汇总关系映射表30f中查询到具有节点标识ID1的映射关系栏,因此可以将该映射关系栏作为关系映射表301f,其中,关系映射表301f存储有节点标识ID1与合约标识“Local_A”之间的映射关系以及合约标识“发票”与合约标识“Local_A”之间的映射关系;进而可以基于合约标识“Local_A”在汇总合约信息表30e中查询到具有合约标识“Local_A”的合约信息栏,因此可以将该合约信息栏作为本地合约信息表301e,其中,本地合约信息表301e存储有本地合约L1相关的合约信息。随后,共识节点301c可以将关系映射表301f以及本地合约信息表301e作为本地合约信息返回至业务节点301b,业务节点301b可以基于关系映射表301f以及本地合约信息表301e部署本地合约L1。类似的,业务节点303b也可以向核心共识网络30c发送携带有节点标识ID3的合约同步请求C,最终可以获取到关系映射表302f以及本地合约信息表302e,进而可以基于关系映射表302f以及本地合约信息表302e部署本地合约L2。可以理解,经过类似过程,业务节点302b上也可以部署本地合约L1。
步骤S203,获取用于执行交易业务的初始合约调用请求;在关系映射表中查询与第一合约标识具有第一映射关系的合约标识,将查询到的合约标识确定为与目标链上合约相关联的第二合约标识,将第二合约标识所对应的本地合约确定为目标本地合约,调用目标本地合约执行交易业务所指示的本地业务,得到本地交易执行结果;基于本地交易执行结果和初始合约调用请求,确定用于发送给共识节点的目标合约调用请求,将目标合约调用请求转发至共识节点。
本步骤的具体实现过程可以参见上述图3所对应实施例中的步骤S101-步骤S103,这里不再进行赘述。
例如,针对本地业务为预检查处理的场景,请一并参见图5c,如图5c所示,结合上述图5b中的描述,业务节点301b已经基于关系映射表301f以及本地合约信息表301e成功部署了本地合约L1(即目标本地合约),进而用户终端30g(即第一用户终端)可以将携带有合约标识“发票”(即第一合约标识)的合约调用请求D(即初始合约调用请求)发送至业务节点301b,进一步,业务节点301b可以在关系映射表301f中查找到与合约标识“发票”具有映射关系的合约标识“Local_A”(即第二合约标识),进而可以根据合约标识“Local_A”,在本地合约信息表301e中查找到具有合约标识“Local_A”的合约信息栏,因此可以根据合约标识“Local_A”获取本地合约L1,并且可以调用本地合约L1在该合约信息栏中读取到预检查函数S的合约代码,随后,可以通过预检查函数S,在业务节点301b的节点内存中访问本地业务数据T(即第一本地业务数据),进而可以基于本地业务数据T对合约调用请求D中的请求参数进行预检查处理(即对请求参数进行校验),并可以将检验成功(即满足上链条件)的请求参数确定为本地交易执行结果R。进一步,业务节点301b可以基于本地交易执行结果R和合约调用请求D,得到合约调用请求D’(即目标合约调用请求),可以理解,此时合约调用请求D’与合约调用请求D是相同的请求。最终,业务节点301b可以将合约调用请求D’转发至核心共识网络30c上继续处理,后续核心共识网络30c中的共识节点可以调用合约标识“发票”对应的链上合约C1执行与发票相关的业务(即共识业务),从而可以得到发票数据30h(即链上交易执行结果),例如可以包括发票1、发票2以及发票3,进而可以将发票数据30h打包至待上链区块,并对该待上链区块进行上链处理。可以理解,部署有本地合约L1的业务节点302b同样可以通过类似过程对合约调用请求D进行处理,且业务节点302b与业务节点301b之间互不感知,各自独立执行相应的预检查处理。
上述可知,本申请实施例提供的本地合约方案,可以应用于存在不对等节点的区块链系统中。本地合约可以在不同层级的业务节点上执行,在本申请实施例中,业务节点可以先于共识节点调用本地合约对接收到的合约调用请求进行相应的处理(例如预检查处理、信息补全处理等),而不需要将所有与合约调用请求相关的操作都积压在共识节点上执行,从而可以减轻共识节点的运算压力,并可以提高区块链网络整体的交易处理效率。在本地合约执行时,业务节点可以使用自身节点的数据(即本地业务数据),使本地业务数据无需上链,且无需多方进行交互,因此可以保护数据隐私,减轻共识节点的存储压力。
进一步地,请参见图6,图6是本申请实施例提供的一种基于智能合约的数据处理方法的流程示意图。如图6所示,该方法可以由核心共识网络中的共识节点执行,该共识节点可以为接入至该核心共识网络中的服务器,也可以为接入至该核心共识网络中的用户终端,这里对共识节点的具体形式不做限定。其中,该共识节点可以为上述图1所示的核心共识网络中的任意一个节点,其部署有目标链上合约,例如,节点120a。该方法至少可以包括以下步骤:
步骤S301,获取用于执行交易业务的目标合约调用请求;
具体的,共识节点可以接收用于执行交易业务的目标合约调用请求。其中,该目标合约调用请求是指独立于核心共识网络的业务网络的业务节点基于本地交易执行结果和初始合约调用请求所确定的请求,本地交易执行结果是由业务节点调用目标本地合约执行交易业务所指示的本地业务得到的;目标本地合约是业务节点基于第二合约标识获取到的;第二合约标识是指业务节点基于第一合约标识和第一映射关系,在业务节点的节点内存中查询到的与目标链上合约相关联的合约标识;第一合约标识是指初始合约调用请求中用于调用目标链上合约的合约标识;初始合约调用请求用于执行交易业务;目标链上合约部署在共识节点上;共识节点和业务节点的节点内存中均存储有第一合约标识与第二合约标识之间的第一映射关系;第二合约标识为部署在业务节点上的目标本地合约的合约标识。业务节点执行的具体过程可以参见上述图3所对应的实施例,这里不再进行赘述。应当理解,目标合约调用请求携带有第一合约标识。
步骤S302,基于目标合约调用请求中的第一合约标识,获取目标链上合约,调用目标链上合约执行交易业务所指示的共识业务,得到链上交易执行结果;
应当理解,共识节点可以基于第一合约标识在多个部署好的链上合约中进行查找,进而可以将具有第一合约标识的链上合约确定为目标链上合约,进一步,共识节点可以调用目标链上合约在该共识节点的节点内存中读取链上合约函数,进而可以通过链上合约函数在该共识节点的节点内存中访问与共识业务相关联的共识业务数据,进而可以通过共识业务数据执行交易业务所指示的共识业务,从而得到链上交易执行结果。其中,共识业务是指由共识节点执行的业务(如转移虚拟资产、开具电子票据等),其具体内容与交易业务相关,本申请对此不做限定。对于需要读取数据的链上合约,各个共识节点在业务执行过程中需要访问自己的账本来进行数据的读取。
步骤S303,根据链上交易执行结果生成待添加至区块链的区块,对区块进行上链处理;区块链为目标链上合约所属的区块链。
具体的,共识节点可以根据链上交易执行结果生成目标交易数据,并且可以将该目标交易数据广播至其它共识节点,随后每个共识节点可以将该目标交易数据放入各自的交易池中等待后续的打包处理,可以理解,可以通过共识算法(例如leader出块、轮流出块、算力竞争出块等)在多个共识节点中选择一个节点作为第一共识节点(也可称为打包节点、出块节点),第一共识节点获得记账权后,可以从其交易池中抽取一定数量的交易数据进行打包。当目标交易数据被打包进一个新的区块(即待上链区块)时,第一共识节点可以将该待上链区块广播至第二共识节点(即核心公式网络中除了第一共识节点之外的节点),随后第二共识节点可以对该待上链区块进行区块共识,得到区块共识结果,并可以将区块共识结果返回至第一共识节点,若区块共识结果为共识通过结果,则第一共识节点可以将待上链区块添加至目标链上合约所属的区块链中。
可以理解,在执行步骤S301-步骤S303之前,需要在业务节点上部署目标本地合约。进一步,请参见图7,图7是本申请实施例提供的一种基于智能合约的数据处理方法的流程示意图。如图7所示,该方法可以由核心共识网络中的共识节点执行。该方法至少可以包括以下步骤:
步骤S401,获取业务节点转发的由第二用户终端所发送的用于部署一个或多个预置本地合约的合约部署请求,对合约部署请求进行共识,当合约部署请求共识通过时,根据合约部署请求生成一个或多个预置本地合约对应的本地合约汇总信息,将本地合约汇总信息存储至共识节点的节点内存中;
具体的,第二用户终端可以将用于部署一个或多个预置本地合约的合约部署请求发送到业务节点,业务节点成功接收后,可以将该合约部署请求通过路由网络中的路由节点转发(或者,直接发送)至共识节点,进而共识节点可以接收该合约部署请求。其中,一个或多个预置本地合约包括目标本地合约。应当理解,合约部署请求可以包括每个预置本地合约分别对应的合约关键字段,其中,合约关键字段至少可以包括以下几种字段,分别为本地合约标识(localContractID,也可称为本地合约编号)、本地合约版本号(version)、本地合约类型(type)、本地合约代码(code)、本地合约描述信息(desc)、关联合约标识(chainContractID)以及可执行节点标识列表(executableNodeList)。其中,本地合约类型可用于标记每个预置本地合约的调用时机,例如,本地合约类型为A类型的本地合约可在将数据转发到核心共识网络前调用,而本地合约类型为B类型的本地合约可在数据同步回业务节点后调用;本地合约描述信息可用于描述每个预置本地合约的功能,可选的,业务对象也可以选择不描述;关联合约标识是指部署在共识节点上的与每个预置本地合约相关联的链上合约的合约标识;可执行节点标识列表可以包括一个或多个可执行节点标识,可执行节点标识是指具有针对每个预置本地合约的执行权限的节点(即业务对象指定需要部署每个预置本地合约的业务节点)所对应的节点标识,其中,目标本地合约对应的可执行节点标识列表包括业务节点标识。
此外,合约部署请求还可以包括第二用户终端(即请求发起方)对应的终端签名信息、终端标识以及请求时间戳等通用字段。基于此,共识节点可以对终端签名信息以及终端标识均进行共识,具体的,共识节点可以基于第二用户终端对该合约部署请求进行签名时所使用的私钥,重新计算出该合约部署请求期望的签名信息,进而可以将该签名信息与终端签名信息进行比对,若比对结果一致,则认为该合约部署请求通过安全验证,表示该合约部署请求在网络传输过程中没有被篡改,否则共识节点可以拒绝该合约部署请求,并可以根据比对结果向第二用户终端返回请求拒绝信息;此外,共识节点还可以通过终端标识获取第二用户终端的部署权限,并对部署权限进行识别,若识别到该部署权限为合法权限,则可以认为该合约部署请求通过权限验证,表示第二用户终端有权限将本地合约部署到指定的业务节点上,否则共识节点可以拒绝该合约部署请求,并可以根据识别结果向第二用户终端返回请求拒绝信息。可以理解,不同的业务场景会存在不同的分级,因此第二用户终端的部署权限可能与其级别相关。
当终端签名信息以及终端标识均共识通过时,可以根据合约部署请求中所有预置本地合约对应的本地合约标识、关联合约标识以及可执行节点标识列表,生成汇总关系映射表,该汇总关系映射表可以包括每个预置本地合约分别对应的映射关系栏,每个映射关系栏可用于存储其对应的预置本地合约的本地合约标识与关联合约标识之间的映射关系,以及该本地合约标识与对应的可执行节点标识之间的映射关系。例如,请再次参见图5a,如图5a所示,本地合约L1与本地合约L2为两个预置本地合约,核心共识网络30c中的共识节点(例如共识节点301c)可以根据合约部署请求A生成汇总关系映射表30f,可以看到,汇总关系映射表30f可以包括合约标识“Local_A”(即本地合约L1对应的本地合约标识)与合约标识“发票”(即本地合约L1对应的关联合约标识)之间的映射关系,以及合约标识“Local_A”与节点标识ID1、节点标识ID2(即本地合约L1对应的可执行节点标识)之间的映射关系,还有合约标识“Local_B”(即本地合约L2对应的本地合约标识)与合约标识“协作”(即本地合约L2对应的关联合约标识)之间的映射关系,以及合约标识“Local_B”与节点标识ID3(即本地合约L2对应的可执行节点标识)之间的映射关系。
同时,共识节点可以根据所有预置本地合约对应的本地合约标识、本地合约代码、关联合约标识以及可执行节点标识列表,生成汇总合约信息表,该汇总合约信息表可以包括每个预置本地合约分别对应的合约信息栏。如图5a所示,核心共识网络30c中的共识节点(例如共识节点301c)可以根据合约部署请求A生成汇总合约信息表30e,可以看到,汇总合约信息表30e存储有本地合约L1以及本地合约L2分别对应的合约信息栏,例如,本地合约L1对应的合约信息栏可以包括合约标识“Local_A”(即本地合约标识)、合约代码“XXXXXX”(即本地合约代码)、合约标识“发票”(即关联合约标识)、可执行节点标识列表[ID1,ID2]。
进一步,共识节点可以将上述汇总关系映射表以及汇总合约信息表确定为一个或多个预置本地合约对应的本地合约汇总信息(例如,图5a所示的本地合约汇总信息30d),进而可以将该本地合约汇总信息存储至共识节点的节点内存中。
步骤S402,获取业务节点发送的合约同步请求,对合约同步请求进行共识,当合约同步请求共识通过时,基于业务节点标识,在本地合约汇总信息中获取本地合约信息,将本地合约信息发送至业务节点;
应当理解,共识节点只会将本地合约同步给可以执行这个本地合约的业务节点,在同步时,共识节点可以通过访问本地合约部署时的可执行节点标识列表,便可以快速算出哪些业务节点可以拿到本地合约的信息。具体过程为:共识节点可以获取业务节点发送的合约同步请求,该合约同步请求可以包括该业务节点的业务节点标识以及节点签名信息,进而可以对该节点签名信息以及业务节点标识进行共识,具体的,共识节点可以基于该业务节点对该合约同步请求进行签名时所使用的私钥,重新计算出该合约同步请求期望的签名信息,进而可以将该签名信息与节点签名信息进行比对,若比对结果一致,则认为该合约同步请求通过安全验证,表示该合约同步请求在网络传输过程中没有被篡改,否则共识节点可以拒绝该合约同步请求,并可以根据比对结果向该业务节点返回请求拒绝信息;此外,共识节点还可以通过业务节点标识获取该业务节点的执行权限,并对执行权限进行识别,应当理解,共识节点可以在一个或多个预置本地合约分别对应的可执行节点标识列表中查询是否存在该业务节点标识,若查询到该业务节点标识,则可以识别出该执行权限为合法权限,即认为该合约同步请求通过权限验证,表示该业务节点有权限部署并执行指定的本地合约,否则共识节点可以拒绝该合约同步请求,并可以根据识别结果向该业务节点返回请求拒绝信息。
当节点签名信息以及业务节点标识均共识通过时,可以基于业务节点标识在汇总关系映射表中进行查询,将查询到的具有与该业务节点标识相同的节点标识的映射关系栏确定为关系映射表。进一步,可以将该关系映射表中的本地合约标识确定为关键合约标识,基于该关键合约标识在汇总合约信息表中进行查询,可以将查询到的具有与该关键合约标识相同的合约标识的合约信息栏确定为本地合约信息表。随后,可以将关系映射表以及本地合约信息表确定为本地合约信息,并可以将本地合约信息发送至上述业务节点。其中,关系映射表存储有第一合约标识与第二合约标识之间的第一映射关系以及第二合约标识与该业务节点标识之间的第二映射关系,本地合约信息表可以包括目标本地合约对应的合约信息栏。该业务节点接收到本地合约信息后,可以将本地合约信息存储至该业务节点的节点内存,进而可以基于本地合约信息部署包括目标本地合约在内的一个或多个本地合约。
例如,可以再次参见图5b,如图5b所示,业务节点301b可以向核心共识网络30c中的共识节点(例如共识节点301c)发送合约同步请求B,当合约同步请求B共识通过时,共识节点301c可以先在汇总关系映射表30f中查询到与业务节点301b的节点标识ID1具有映射关系的合约标识“Local_A”(即关键合约标识),并可将存储有该映射关系的映射关系栏确定为关系映射表301f,进而可以根据合约标识“Local_A”在汇总合约信息表30e中进行查询,并将存在合约标识“Local_A”的合约信息栏确定为本地合约信息表301e,随后可以将关系映射表301f以及本地合约信息表301e返回至业务节点301b。
可选的,业务节点和共识节点之间可以建立长连接,则共识节点可以每隔一段时间主动向具有执行权限的业务节点(即本地合约汇总信息中存储的可执行节点标识所对应的业务节点)推送相应的本地合约信息,以使这些业务节点可以将本地合约信息存储至该业务节点的节点内存中,并基于本地合约信息部署指定的本地合约。
需要说明的是,可选的,在本地合约信息同步成功后,共识节点可以对其节点内存中的本地合约信息进行删除处理,以减轻数据存储压力;可选的,由于业务节点处于公共网络中,可能会被其它不确定的网络终端访问,导致本地合约信息被篡改,因此,在本地合约信息同步成功后,共识节点仍然可以在其节点内存中保留该本地合约信息,后续可以基于存储的本地合约信息进行相关验证。
可以理解,当需要对已经部署的本地合约进行修改(更新或删除)时,也可以通过发起请求的方式来改变本地合约的执行逻辑,该过程与部署本地合约的过程类似。
步骤S403,获取用于执行交易业务的目标合约调用请求,基于目标合约调用请求中的第一合约标识,获取目标链上合约,调用目标链上合约执行交易业务所指示的共识业务,得到链上交易执行结果,根据链上交易执行结果生成待添加至区块链的区块,对区块进行上链处理。
本步骤的具体过程可以参见上述图6所对应实施例中的步骤301-步骤S303,这里不再进行赘述。
进一步,请一并参见图8,图8是本申请实施例提供的一种数据处理方法的流程示意图。该方法可以由区块链网络中的任一共识节点执行。如图8所示,该方法可以包括如下步骤:
步骤S1,各共识节点的RPC(Remote Procedure Call,远程过程调用)层获取用户请求(例如,目标合约调用请求),用户请求也称为交易。其中,RPC层是各共识节点所提供的一种对外接口,可用于获取前述目标合约调用请求。
步骤S2,各共识节点间相互广播交易,并由其中某一共识节点将若干交易打包成一个区块(即待上链区块),并广播给其它共识节点。出块节点(即第一共识节点)的选择,因共识算法而异,可以包括领导者(leader)出块,轮流出块,算力竞争出块等。图8中的区块链共识网络即上述的核心共识网络。
步骤S3,各共识节点都收到该区块之后,开始执行该区块里的交易。在逻辑计算层,解析交易参数,并执行合约(即目标链上合约)。执行过程中可能会需要读取存储(如节点内存)中的数据,如图8中示例的节点1从存储中读取历史交易数据(即共识业务数据)。
步骤S4,合约执行完毕后,各共识节点对执行结果(即上述的链上交易执行结果)进行互相校验。校验方法可以为将执行结果或对存储的变更组织成结果merkle(默克尔)树,将结果树根(即结果根哈希)放入区块头中,最终校验各共识节点区块hash一致即可。
步骤S5,共识成功后,各共识节点将本区块相关的数据落入存储,主要有区块头,区块包含的所有交易,执行结果等。
上述步骤S1-步骤S5的详细过程可以参见图6所对应的实施例中的步骤S301-步骤S303,此处不再展开赘述。
上述可知,共识节点可以联合业务节点,快速实现本地合约的部署与同步。本申请实施例提供的本地合约方案,可以应用于存在不对等节点的区块链系统中,业务节点成功部署本地合约后,可以先于共识节点调用本地合约对接收到的合约调用请求进行相应的处理(例如预检查处理、信息补全处理等),而不需要将所有与合约调用请求相关的操作都积压在共识节点上执行,从而可以减轻共识节点的运算压力,并可以提高区块链网络整体的交易处理效率。在本地合约执行时,业务节点可以使用自身节点的数据(即本地业务数据),使本地业务数据无需上链,且无需多方进行交互,因此可以保护数据隐私,减轻共识节点的存储压力。
进一步地,请参见图9,图9是本申请实施例提供的一种基于智能合约的数据处理装置的结构示意图。该数据处理装置1可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如,该数据处理装置1为一个应用软件;该数据处理装置1可以用于执行本申请实施例提供的方法中的相应步骤。如图9所示,该数据处理装置1可以运行于业务网络中的业务节点。该数据处理装置1可以包括:获取模块11、执行模块12、转发模块13;
获取模块11,用于获取用于执行交易业务的初始合约调用请求;初始合约调用请求包括用于调用目标链上合约的第一合约标识;目标链上合约部署在独立于业务网络的核心共识网络的共识节点上;共识节点和业务节点的节点内存中均存储有第一合约标识与第二合约标识之间的第一映射关系;第二合约标识为部署在业务节点上的目标本地合约的合约标识;
执行模块12,用于基于第一合约标识和第一映射关系,在业务节点的节点内存中查询与目标链上合约相关联的第二合约标识,基于第二合约标识获取目标本地合约,调用目标本地合约执行交易业务所指示的本地业务,得到本地交易执行结果;
转发模块13,用于基于本地交易执行结果和初始合约调用请求,确定用于发送给共识节点的目标合约调用请求,将目标合约调用请求转发至共识节点,以使共识节点基于目标合约调用请求中的第一合约标识,获取目标链上合约,且调用目标链上合约执行交易业务所指示的共识业务;
在一种实施方式中,业务网络与核心共识网络所在的区块链网络中还包括用于进行网络隔离的路由网络;
上述转发模块13,具体用于基于本地交易执行结果和初始合约调用请求,确定用于发送给共识节点的目标合约调用请求,将目标合约调用请求通过路由网络中的路由节点转发至共识节点。
其中,获取模块11的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101,执行模块12的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,转发模块13的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
请一并参见图9,上述数据处理装置1还可以包括:请求反馈模块14;
请求反馈模块14,用于若请求参数不满足本地业务所指示的上链条件,则将不满足本地业务所指示的上链条件的请求参数确定为非法请求参数,将非法请求参数作为本地业务对应的本地交易执行结果;根据非法请求参数生成请求失败信息,将请求失败信息返回至发送初始合约调用请求的第一用户终端。
其中,请求反馈模块14的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
请一并参见图9,上述数据处理装置1还可以包括:合约部署模块15、合约同步模块16;
合约部署模块15,用于获取第二用户终端发送的用于部署一个或多个预置本地合约的合约部署请求,将合约部署请求转发至共识节点,以使共识节点对合约部署请求进行共识,且当合约部署请求共识通过时,根据合约部署请求生成一个或多个预置本地合约对应的本地合约汇总信息,将本地合约汇总信息存储至共识节点的节点内存中;一个或多个预置本地合约包括目标本地合约;
合约同步模块16,用于向共识节点发送合约同步请求,以使共识节点对合约同步请求进行共识;当合约同步请求共识通过时,获取共识节点发送的本地合约信息;将本地合约信息存储至业务节点的节点内存中,基于本地合约信息部署目标本地合约;合约同步请求包括业务节点对应的业务节点标识;本地合约信息是指由共识节点基于业务节点标识,在本地合约汇总信息中获取到的信息;本地合约信息包括关系映射表以及本地合约信息表;关系映射表存储有第一映射关系以及第二合约标识与业务节点标识之间的第二映射关系;本地合约信息表包括目标本地合约对应的合约信息栏。
其中,合约部署模块15的具体功能实现方式可以参见上述图4所对应实施例中的步骤S201,合约同步模块16的具体功能实现方式可以参见上述图4所对应实施例中的步骤S202,这里不再进行赘述。
请一并参见图9,上述执行模块12可以包括:查询单元121、读取单元122、执行单元123;
在一种实施方式中,业务节点的节点内存中存储有本地合约信息;本地合约信息包括关系映射表;关系映射表存储有第一合约标识与第二合约标识之间的第一映射关系;
查询单元121,用于在关系映射表中查询与第一合约标识具有第一映射关系的合约标识,将查询到的合约标识确定为与目标链上合约相关联的第二合约标识,将第二合约标识所对应的本地合约确定为目标本地合约;
在一种实施方式中,本地合约信息还包括目标本地合约对应的本地合约函数;
读取单元122,用于调用目标本地合约在本地合约信息中读取本地合约函数;
执行单元123,用于通过本地合约函数从业务节点的节点内存中访问与本地业务相关联的本地业务数据,通过本地业务数据执行交易业务所指示的本地业务,得到本地交易执行结果。
其中,查询单元121、读取单元122、执行单元123的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
请一并参见图9,上述执行单元123可以包括:预检查子单元1231、信息补全子单元1232;
在一种实施方式中,本地合约函数包括与本地业务相关联的预检查函数;
预检查子单元1231,用于通过预检查函数从业务节点的节点内存中访问与本地业务相关联的第一本地业务数据,基于第一本地业务数据对初始合约调用请求中的请求参数进行预检查处理;若请求参数满足本地业务所指示的上链条件,则将满足本地业务所指示的上链条件的请求参数确定为合法请求参数,将合法请求参数作为本地业务对应的本地交易执行结果;
在一种实施方式中,本地合约函数包括与本地业务相关联的信息补全函数;
信息补全子单元1232,用于通过信息补全函数从业务节点的节点内存中访问与本地业务相关联的第二本地业务数据,基于第二本地业务数据对初始合约调用请求中的请求参数进行信息补全处理;将信息补全后的请求参数作为本地业务对应的本地交易执行结果。
其中,预检查子单元1231、信息补全子单元1232的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
进一步地,请参见图10,图10是本申请实施例提供的一种基于智能合约的数据处理装置的结构示意图。该数据处理装置2可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如,该数据处理装置2为一个应用软件;该数据处理装置2可以用于执行本申请实施例提供的方法中的相应步骤。如图10所示,该数据处理装置2可以运行于核心共识网络中的共识节点。该数据处理装置2可以包括:获取模块21、执行模块22、上链模块23;
获取模块21,用于获取用于执行交易业务的目标合约调用请求;目标合约调用请求是指独立于核心共识网络的业务网络的业务节点基于本地交易执行结果和初始合约调用请求所确定的请求;本地交易执行结果是由业务节点调用目标本地合约执行交易业务所指示的本地业务得到的;目标本地合约是业务节点基于第二合约标识获取到的;第二合约标识是指业务节点基于第一合约标识和第一映射关系,在业务节点的节点内存中查询到的与目标链上合约相关联的合约标识;第一合约标识是指初始合约调用请求中用于调用目标链上合约的合约标识;初始合约调用请求用于执行交易业务;目标链上合约部署在共识节点上;共识节点和业务节点的节点内存中均存储有第一合约标识与第二合约标识之间的第一映射关系;第二合约标识为部署在业务节点上的目标本地合约的合约标识;
执行模块22,用于基于目标合约调用请求中的第一合约标识,获取目标链上合约,调用目标链上合约执行交易业务所指示的共识业务,得到链上交易执行结果;
上链模块23,用于根据链上交易执行结果生成待添加至区块链的区块,对区块进行上链处理;区块链为目标链上合约所属的区块链。
其中,获取模块21的具体功能实现方式可以参见上述图6所对应实施例中的步骤S301,执行模块22的具体功能实现方式可以参见上述图6所对应实施例中的步骤S302,上链模块23的具体功能实现方式可以参见上述图6所对应实施例中的步骤S303,这里不再进行赘述。
请一并参见图10,上述数据处理装置2还可以包括:合约部署模块24、合约同步模块25;
合约部署模块24,用于获取业务节点转发的由第二用户终端所发送的用于部署一个或多个预置本地合约的合约部署请求,对合约部署请求进行共识,当合约部署请求共识通过时,根据合约部署请求生成一个或多个预置本地合约对应的本地合约汇总信息,将本地合约汇总信息存储至共识节点的节点内存中;一个或多个预置本地合约包括目标本地合约;
合约同步模块25,用于获取业务节点发送的合约同步请求;合约同步请求包括业务节点对应的业务节点标识;对合约同步请求进行共识,当合约同步请求共识通过时,基于业务节点标识,在本地合约汇总信息中获取本地合约信息,将本地合约信息发送至业务节点,以使业务节点将本地合约信息存储至业务节点的节点内存,且基于本地合约信息部署目标本地合约;本地合约信息包括与目标本地合约相关联的信息。
其中,合约部署模块24的具体功能实现方式可以参见上述图7所对应实施例中的步骤S401,合约同步模块25的具体功能实现方式可以参见上述图3所对应实施例中的步骤S402,这里不再进行赘述。
在一种实施方式中,合约部署请求包括每个预置本地合约分别对应的合约关键字段,合约关键字段包括本地合约标识、本地合约版本号、本地合约类型、本地合约代码、本地合约描述信息、关联合约标识以及可执行节点标识列表;关联合约标识是指部署在共识节点上的与每个预置本地合约相关联的链上合约的合约标识;可执行节点标识列表包括一个或多个可执行节点标识;可执行节点标识是指具有针对每个预置本地合约的执行权限的节点所对应的节点标识;目标本地合约对应的可执行节点标识列表包括业务节点标识。
在一种实施方式中,合约部署请求还包括第二用户终端对应的终端签名信息以及终端标识;
请一并参见图10,上述合约部署模块24可以包括:第一共识单元241、映射表生成单元242、信息表生成单元243、确定存储单元244;
第一共识单元241,用于对终端签名信息以及终端标识进行共识;
映射表生成单元242,用于当终端签名信息以及终端标识均共识通过时,根据合约部署请求中的本地合约标识、关联合约标识以及可执行节点标识列表,生成汇总关系映射表;汇总关系映射表包括一个或多个预置本地合约分别对应的映射关系栏;映射关系栏用于存储本地合约标识与关联合约标识之间的映射关系,以及本地合约标识与可执行节点标识之间的映射关系;
信息表生成单元243,用于根据本地合约标识、本地合约代码、关联合约标识以及可执行节点标识列表,生成汇总合约信息表;汇总合约信息表包括一个或多个预置本地合约分别对应的合约信息栏;
确定存储单元244,用于将汇总关系映射表以及汇总合约信息表确定为一个或多个预置本地合约对应的本地合约汇总信息,将本地合约汇总信息存储至共识节点的节点内存中。
其中,第一共识单元241、映射表生成单元242、信息表生成单元243、确定存储单元244的具体功能实现方式可以参见上述图7所对应实施例中的步骤S401,这里不再进行赘述。
在一种实施方式中,合约同步请求还可以包括节点签名信息;
请一并参见图10,上述合约同步模块25可以包括:第二共识单元251、第一查询单元252、第二查询单元253、确定发送单元254;
第二共识单元251,用于对节点签名信息以及业务节点标识进行共识;
第一查询单元252,用于当节点签名信息以及业务节点标识均共识通过时,基于业务节点标识在汇总关系映射表中进行查询,将查询到的具有与业务节点标识相同的节点标识的映射关系栏确定为关系映射表;关系映射表存储有第一映射关系以及第二合约标识与业务节点标识之间的第二映射关系;
第二查询单元253,用于将关系映射表中的本地合约标识确定为关键合约标识,基于关键合约标识在汇总合约信息表中进行查询,将查询到的具有与关键合约标识相同的合约标识的合约信息栏确定为本地合约信息表;本地合约信息表包括目标本地合约对应的合约信息栏;
确定发送单元254,用于将关系映射表以及本地合约信息表确定为本地合约信息,将本地合约信息发送至业务节点。
其中,第二共识单元251、第一查询单元252、第二查询单元253、确定发送单元254的具体功能实现方式可以参见上述图7所对应实施例中的步骤S402,这里不再进行赘述。
请参见图11,是本申请实施例提供的一种计算机设备的结构示意图。如图11所示,该计算机设备1000可以为业务网络中的业务节点或者核心共识网络中的共识节点,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图11所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在如图11所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以执行前文图3、图4、图6、图7任一个所对应实施例中对该基于智能合约的数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的基于智能合约的数据处理装置1或者基于智能合约的数据处理装置2所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图3、图4、图6、图7任一个所对应实施例中对上述基于智能合约的数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
上述计算机可读存储介质可以是前述任一实施例提供的基于智能合约的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
此外,这里需要指出的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文图3、图4、图6、图7任一个所对应实施例提供的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (16)

1.一种基于智能合约的数据处理方法,其特征在于,包括:
业务节点获取用于执行交易业务的初始合约调用请求;所述初始合约调用请求包括用于调用目标链上合约的第一合约标识;所述业务节点为区块链网络内的业务网络中的区块链节点,所述目标链上合约部署在所述区块链网络中的核心共识网络的共识节点上,且所述核心共识网络通过所述区块链网络中的路由网络与所述业务网络进行网络隔离;所述共识节点和所述业务节点的节点内存中均存储有所述第一合约标识与第二合约标识之间的第一映射关系;所述第二合约标识为部署在所述业务节点上的目标本地合约的合约标识;
所述业务节点基于所述第一合约标识和所述第一映射关系,在所述业务节点的节点内存中查询与所述目标链上合约相关联的所述第二合约标识,基于所述第二合约标识获取所述目标本地合约,调用所述目标本地合约执行所述交易业务所指示的本地业务,得到本地交易执行结果;
所述业务节点基于所述本地交易执行结果和所述初始合约调用请求,确定用于发送给所述共识节点的目标合约调用请求,将所述目标合约调用请求通过所述路由网络转发至所述共识节点;
所述共识节点基于所述目标合约调用请求中的所述第一合约标识,获取所述目标链上合约,且调用所述目标链上合约执行所述交易业务所指示的共识业务,得到链上交易执行结果;
所述共识节点根据所述链上交易执行结果生成待添加至区块链的区块,对所述区块进行上链处理;所述区块链为所述目标链上合约所属的区块链。
2.根据权利要求1所述的方法,其特征在于,所述业务节点为在所述区块链网络中用于存储区块链数据库中的部分数据的轻量节点;所述轻量节点所存储的部分数据包括区块头数据和部分授权可见的区块数据,所述区块头数据和部分授权可见的区块数据是通过所述路由网络中的路由节点,从所述核心共识网络中所获取到的;所述部分授权可见的区块数据为与所述轻量节点自身相关联的交易;所述共识节点为包含完整的区块链数据库的全量节点,且所述全量节点用于参与校验、广播交易数据以及区块链信息。
3.根据权利要求1所述的方法,其特征在于,在所述区块链网络中,所述共识节点所在的核心共识网络的网络环境不同于所述业务节点所在的业务网络的网络环境;部署且运行在所述业务节点上的智能合约为具备执行权限的本地合约,且所述本地合约包含所述目标本地合约;部署且运行在所述共识节点上的智能合约为链上合约,且所述链上合约包含所述目标链上合约。
4.根据权利要求1所述的方法,其特征在于,所述交易业务包括资产转移业务和文件转移业务;所述资产转移业务用于指示转移游戏金币或者转移电子票据;所述文件转移业务用于指示转移电子合同或者电子公文。
5.根据权利要求1所述的方法,其特征在于,所述业务节点获取用于执行交易业务的初始合约调用请求,包括:
所述业务节点接收与业务对象具有绑定关系的第一用户终端发送的初始合约调用请求;所述第一用户终端为发送所述初始合约调用请求的用户终端;所述业务对象为发起所述交易业务的对象;所述业务对象通过所述第一用户终端在所述初始合约调用请求中指定用于调用所述目标链上合约的合约标识,用于调用所述目标链上合约的合约标识为所述第一合约标识。
6.根据权利要求1所述的方法,其特征在于,所述业务节点的节点内存中存储有本地合约信息;所述本地合约信息包括关系映射表;所述关系映射表存储有与所述目标本地合约具有关联关系的一个或者多个链上合约,且所述一个或者多个链上合约中包含所述目标链上合约;所述目标链上合约的所述第一合约标识与所述目标本地合约的所述第二合约标识之间的关联关系为所述第一映射关系;
所述业务节点基于所述第一合约标识和所述第一映射关系,在所述业务节点的节点内存中查询与所述目标链上合约相关联的所述第二合约标识,基于所述第二合约标识获取所述目标本地合约,调用所述目标本地合约执行所述交易业务所指示的本地业务,得到本地交易执行结果,包括:
所述业务节点在所述关系映射表所包含的一个或者多个映射关系中,查询与所述第一合约标识具有所述第一映射关系的合约标识;
所述业务节点将查询到的合约标识确定为与所述目标链上合约相关联的所述第二合约标识,且将所述第二合约标识所对应的本地合约确定为所述目标本地合约;
所述业务节点在所述交易业务为资产转移业务时,调用所述目标本地合约执行所述资产转移业务所指示的本地业务,对所述初始合约调用请求中的请求参数进行预检查处理,得到本地交易执行结果。
7.根据权利要求6所述的方法,其特征在于,所述业务节点的节点内存中存储有本地合约信息;所述本地合约信息包括所述目标本地合约对应的本地合约函数;所述本地合约函数包括与所述本地业务相关联的预检查函数;
所述业务节点在所述交易业务为资产转移业务时,调用所述目标本地合约执行所述资产转移业务所指示的本地业务,对所述初始合约调用请求中的请求参数进行预检查处理,得到本地交易执行结果,包括:
所述业务节点在所述交易业务为资产转移业务时,获取所述目标本地合约对应的所述本地合约函数,调用所述本地合约函数中的所述预检查函数从所述业务节点的节点内存中访问与所述本地业务相关联的第一本地业务数据;
所述业务节点基于所述第一本地业务数据对所述初始合约调用请求中的请求参数进行预检查处理,得到本地交易执行结果;所述预检查处理用于预先检查发起所述资产转移业务的业务对象的剩余资产量是否满足所述本地业务所指示的上链条件中的所述请求参数;所述业务对象的剩余资产量为所述第一本地业务数据;所述请求参数为所述业务对象所请求转移的待转移资产量。
8.根据权利要求7所述的方法,其特征在于,所述业务节点基于所述本地交易执行结果和所述初始合约调用请求,确定用于发送给所述共识节点的目标合约调用请求,将所述目标合约调用请求通过所述路由网络转发至所述共识节点,包括:
在所述本地交易执行结果指示所述业务对象的剩余资产量大于或者等于所述待转移资产量时,所述业务节点确定所述请求参数满足所述本地业务所指示的上链条件,且确定所述初始合约调用请求满足所述上链条件;
所述业务节点将满足所述上链条件的所述初始合约调用请求作为用于发送给所述共识节点的目标合约调用请求;
所述业务节点通过所述路由网络中的路由节点将所述目标合约调用请求转发至所述共识节点,以使所述共识节点通过远程过程调用层获取所述目标合约调用请求。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在所述本地交易执行结果指示所述业务对象的剩余资产量小于所述待转移资产量时,所述业务节点确定所述请求参数不满足所述本地业务所指示的上链条件,且将不满足所述本地业务所指示的上链条件的请求参数确定为非法请求参数;
所述业务节点根据所述非法请求参数生成请求失败信息,且在拦截所述初始合约调用请求时,将所述请求失败信息返回至发送所述初始合约调用请求的第一用户终端,以使所述第一用户终端提示所述业务对象的剩余资产量不足。
10.根据权利要求1所述的方法,其特征在于,所述业务节点的节点内存中存储有本地合约信息;所述本地合约信息包括所述目标本地合约对应的本地合约函数;所述本地合约函数包括与所述本地业务相关联的信息补全函数;
所述业务节点基于所述第一合约标识和所述第一映射关系,在所述业务节点的节点内存中查询与所述目标链上合约相关联的所述第二合约标识,基于所述第二合约标识获取所述目标本地合约,调用所述目标本地合约执行所述交易业务所指示的本地业务,得到本地交易执行结果,包括:
所述业务节点在关系映射表中查询与所述第一合约标识具有所述第一映射关系的合约标识,将查询到的合约标识确定为与所述目标链上合约相关联的所述第二合约标识,将所述第二合约标识所对应的本地合约确定为所述目标本地合约;
在所述交易业务为电子文件转移业务时,所述业务节点获取所述本地合约函数中的所述信息补全函数;
所述业务节点通过所述述信息补全函数的合约函数名和所述合约函数名对应的函数语句,从所述业务节点的节点内存中的存储位置上获取与所述本地业务相关联的第二本地业务数据;所述第二本地业务数据包括所述业务节点在发起转移所述电子文件转移业务对应的电子文件时的签名信息;所述合约函数名对应的函数语句用于指出所述第二本地业务数据在所述业务节点的节点内存中的所述存储位置;
所述业务节点基于所述第二本地业务数据中的所述签名信息对所述初始合约调用请求中的请求参数进行信息补全处理,将信息补全后的请求参数作为所述本地业务对应的本地交易执行结果。
11.根据权利要求1所述的方法,其特征在于,所述共识节点为所述核心共识网络中具备出块功能的区块链节点;
所述共识节点根据所述链上交易执行结果生成待添加至区块链的区块,对所述区块进行上链处理;所述区块链为所述目标链上合约所属的区块链,包括:
所述具备出块功能的区块链节点根据所述链上交易执行结果生成待上链区块,并将所述待上链区块发送至所述核心共识网络中的其他共识节点,以使所述其他共识节点对所述待上链区块进行区块共识,得到区块共识结果;所述区块共识包含调用所述目标链上合约执行所述待上链区块中的交易,以及校验执行所述待上链区块中的交易后的执行结果;
所述具备出块功能的区块链节点在接收到所述其他共识节点返回的区块共识结果时,若接收到的区块共识结果指示区块共识成功,则将所述待上链区块作为用于添加至区块链的目标区块,将所述目标区块写入所述区块链。
12.根据权利要求1所述的方法,其特征在于,还包括:
所述业务节点获取第二用户终端发送的用于部署一个或多个预置本地合约的合约部署请求,将所述合约部署请求通过所述路由网络转发至所述共识节点;
所述共识节点对所述合约部署请求进行共识,且当所述合约部署请求共识通过时,根据所述合约部署请求生成所述一个或多个预置本地合约对应的本地合约汇总信息,将所述本地合约汇总信息存储至所述共识节点的节点内存中;所述一个或多个预置本地合约包括所述目标本地合约;
所述共识节点在接收到所述业务节点通过所述路由网络发送的合约同步请求时,对所述合约同步请求进行共识;
所述共识节点在共识通过所述合约同步请求时,基于所述合约同步请求中所包含的所述业务节点对应的业务节点标识,在所述本地合约汇总信息中获取本地合约信息,将所述本地合约信息通过所述路由网络发送至所述业务节点;
所述业务节点将所述本地合约信息存储至所述业务节点的节点内存,且基于所述本地合约信息部署所述目标本地合约;所述本地合约信息包括与所述目标本地合约相关联的信息;与所述目标本地合约相关联的信息包括关系映射表以及本地合约信息表;所述关系映射表存储有所述第一映射关系以及所述第二合约标识与所述业务节点标识之间的第二映射关系;所述本地合约信息表包括所述目标本地合约对应的合约信息栏。
13.根据权利要求12所述的方法,其特征在于,所述合约部署请求包括每个预置本地合约分别对应的合约关键字段,所述合约关键字段包括本地合约标识、本地合约版本号、本地合约类型、本地合约代码、本地合约描述信息、关联合约标识以及可执行节点标识列表;所述关联合约标识是指部署在所述共识节点上的与所述每个预置本地合约相关联的链上合约的合约标识;所述可执行节点标识列表包括一个或多个可执行节点标识;所述可执行节点标识是指具有针对所述每个预置本地合约的执行权限的节点所对应的节点标识;所述目标本地合约对应的可执行节点标识列表包括所述业务节点标识。
14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行权利要求1-13任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行权利要求1-13任一项所述的方法。
16.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,该计算机指令适于由处理器读取并执行,以使具有所述处理器的计算机设备执行权利要求1-13任一项所述的方法。
CN202111229632.1A 2021-08-12 2021-08-12 基于智能合约的数据处理方法、设备以及可读存储介质 Active CN113988845B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111229632.1A CN113988845B (zh) 2021-08-12 2021-08-12 基于智能合约的数据处理方法、设备以及可读存储介质

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110923438.7A CN113379422B (zh) 2021-08-12 2021-08-12 基于智能合约的数据处理方法、设备以及可读存储介质
CN202111229632.1A CN113988845B (zh) 2021-08-12 2021-08-12 基于智能合约的数据处理方法、设备以及可读存储介质

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202110923438.7A Division CN113379422B (zh) 2021-08-12 2021-08-12 基于智能合约的数据处理方法、设备以及可读存储介质

Publications (2)

Publication Number Publication Date
CN113988845A CN113988845A (zh) 2022-01-28
CN113988845B true CN113988845B (zh) 2022-07-12

Family

ID=77576994

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202111229632.1A Active CN113988845B (zh) 2021-08-12 2021-08-12 基于智能合约的数据处理方法、设备以及可读存储介质
CN202110923438.7A Active CN113379422B (zh) 2021-08-12 2021-08-12 基于智能合约的数据处理方法、设备以及可读存储介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202110923438.7A Active CN113379422B (zh) 2021-08-12 2021-08-12 基于智能合约的数据处理方法、设备以及可读存储介质

Country Status (4)

Country Link
US (1) US20230289782A1 (zh)
EP (1) EP4300398A4 (zh)
CN (2) CN113988845B (zh)
WO (1) WO2023016164A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113988845B (zh) * 2021-08-12 2022-07-12 腾讯科技(深圳)有限公司 基于智能合约的数据处理方法、设备以及可读存储介质
CN117675242A (zh) * 2022-08-26 2024-03-08 抖音视界有限公司 业务请求处理方法、装置、电子设备及存储介质
CN115658806A (zh) * 2022-09-30 2023-01-31 蚂蚁区块链科技(上海)有限公司 区块链系统中的交易执行方法和节点
CN117931933A (zh) * 2022-10-14 2024-04-26 腾讯科技(深圳)有限公司 多区块链数据处理方法、装置、设备、系统以及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111429254A (zh) * 2020-03-19 2020-07-17 腾讯科技(深圳)有限公司 一种业务数据处理方法、设备以及可读存储介质
CN113032490A (zh) * 2019-12-05 2021-06-25 腾讯科技(深圳)有限公司 一种合约数据处理方法、相关设备及介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180365201A1 (en) * 2017-06-14 2018-12-20 Clause, Inc. System and method for compound data-driven contracts and documentation
CN107507005B (zh) * 2017-08-01 2020-09-11 众安信息技术服务有限公司 一种基于联盟链的链外数据访问方法和系统
CN109447811B (zh) * 2018-12-07 2024-01-02 深圳市智税链科技有限公司 在区块链网络中查询交易信息的方法、记账节点和介质
CN109840429B (zh) * 2019-01-08 2020-04-14 北京众享比特科技有限公司 智能合约部署、调用方法和装置
CN110730204B (zh) * 2019-09-05 2022-09-02 创新先进技术有限公司 区块链网络中删除节点的方法和区块链系统
CN110602096B (zh) * 2019-09-12 2021-07-13 腾讯科技(深圳)有限公司 区块链网络中的数据处理方法、装置、存储介质和设备
CN113691597B (zh) * 2019-11-27 2022-06-14 腾讯科技(深圳)有限公司 区块链合约部署方法、装置、设备以及存储介质
CN111461878A (zh) * 2020-03-10 2020-07-28 杭州溪塔科技有限公司 一种基于链外智能合约的区块链交易处理方法和系统
CN111401903B (zh) * 2020-06-03 2020-09-11 腾讯科技(深圳)有限公司 区块链消息处理方法、装置、计算机以及可读存储介质
CN111770198B (zh) * 2020-08-31 2020-12-18 支付宝(杭州)信息技术有限公司 一种信息共享方法、装置及设备
CN112835700B (zh) * 2020-12-07 2022-07-12 腾讯科技(深圳)有限公司 基于智能合约的数据处理方法、装置、设备及存储介质
CN112632573A (zh) * 2020-12-15 2021-04-09 东软集团股份有限公司 智能合约执行方法、装置、系统、存储介质及电子设备
CN112700246B (zh) * 2020-12-31 2023-11-28 iCALC控股有限公司 基于区块链的数据处理方法、装置、设备及可读存储介质
CN112685505B (zh) * 2021-01-07 2022-06-24 腾讯科技(深圳)有限公司 一种交易数据处理方法、装置、计算机设备及存储介质
CN113094396B (zh) * 2021-01-18 2022-07-26 腾讯科技(深圳)有限公司 基于节点内存的数据处理方法、装置、设备以及介质
CN112396423B (zh) * 2021-01-20 2021-04-13 腾讯科技(深圳)有限公司 一种交易数据处理方法、装置、设备及存储介质
CN112907244B (zh) * 2021-02-10 2023-11-28 iCALC控股有限公司 基于区块链的数据处理方法、装置、设备及可读存储介质
CN113988845B (zh) * 2021-08-12 2022-07-12 腾讯科技(深圳)有限公司 基于智能合约的数据处理方法、设备以及可读存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113032490A (zh) * 2019-12-05 2021-06-25 腾讯科技(深圳)有限公司 一种合约数据处理方法、相关设备及介质
CN111429254A (zh) * 2020-03-19 2020-07-17 腾讯科技(深圳)有限公司 一种业务数据处理方法、设备以及可读存储介质

Also Published As

Publication number Publication date
CN113379422B (zh) 2021-10-15
CN113988845A (zh) 2022-01-28
WO2023016164A1 (zh) 2023-02-16
EP4300398A4 (en) 2024-05-01
US20230289782A1 (en) 2023-09-14
EP4300398A1 (en) 2024-01-03
CN113379422A (zh) 2021-09-10

Similar Documents

Publication Publication Date Title
CN113988845B (zh) 基于智能合约的数据处理方法、设备以及可读存储介质
US20230153769A1 (en) Method and system of mining blockchain transactions provided by a validator node
CN112685505B (zh) 一种交易数据处理方法、装置、计算机设备及存储介质
CN111309711A (zh) 跨区块链的数据迁移方法、装置、设备及存储介质
CN114445010B (zh) 一种基于区块链的多式联运系统和方法
US11682003B2 (en) Systems and methods for charitable giving using blockchain cryptocurrency
CN109767217A (zh) 数字资产、服务器、终端及数字资产交易方法
CN112669157A (zh) 基于区块链的交易方法、装置、系统与可读存储介质
CN116827957B (zh) 基于多区块链的信息处理方法、装置、设备以及介质
KR102139551B1 (ko) 유언장을 관리하는 서버 및 방법
CN113643032B (zh) 一种基于区块链的信息处理方法、装置及数据管理系统
CN102999570B (zh) 移动设备中应用程序关键数据的离线控制方法和系统
CN115250354A (zh) 基于区块链网络的资源分配方法、装置、设备及存储介质
CN112988852A (zh) 基于区块链的数据管理方法、设备以及介质
CN112967055A (zh) 通过区块链发行应收凭证的方法及装置
US20240137208A1 (en) Asset transferring method and apparatus based on multiple blockchains, device, medium, and product
CN116708463B (zh) 基于多区块链的信息处理方法、装置、设备以及介质
CN117061089B (zh) 一种投票管理方法、装置、设备及存储介质
Li et al. Research and implementation of blockchain warehouse receipt trading platform based on BFT
CN117057806B (zh) 基于区块链的数据处理方法、装置及相关设备
CN117931933A (zh) 多区块链数据处理方法、装置、设备、系统以及介质
CN112163034B (zh) 一种模型共享方法、节点及区块链系统
CN112837043B (zh) 基于区块链的数据处理方法、装置及电子设备
WO2024099023A1 (zh) 多区块链数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品
CN117938867A (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
GR01 Patent grant
GR01 Patent grant