CN117574320A - 数据处理方法、装置、计算机可读介质及电子设备 - Google Patents
数据处理方法、装置、计算机可读介质及电子设备 Download PDFInfo
- Publication number
- CN117574320A CN117574320A CN202410053548.6A CN202410053548A CN117574320A CN 117574320 A CN117574320 A CN 117574320A CN 202410053548 A CN202410053548 A CN 202410053548A CN 117574320 A CN117574320 A CN 117574320A
- Authority
- CN
- China
- Prior art keywords
- contract
- transaction
- target
- nodes
- tree
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 182
- 230000006698 induction Effects 0.000 claims abstract description 82
- 238000004364 calculation method Methods 0.000 claims description 34
- 238000012795 verification Methods 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 12
- 238000010801 machine learning Methods 0.000 claims description 11
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 230000004927 fusion Effects 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 3
- 238000012549 training Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 28
- 230000008569 process Effects 0.000 description 20
- 230000006870 function Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 9
- 230000015654 memory Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 5
- 230000006978 adaptation Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000011423 initialization method Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000012550 audit Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- NQLVQOSNDJXLKG-UHFFFAOYSA-N prosulfocarb Chemical compound CCCN(CCC)C(=O)SCC1=CC=CC=C1 NQLVQOSNDJXLKG-UHFFFAOYSA-N 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013068 supply chain management Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Business, Economics & Management (AREA)
- Medical Informatics (AREA)
- Evolutionary Computation (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Computer Networks & Wireless Communication (AREA)
- Artificial Intelligence (AREA)
- Signal Processing (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Bioethics (AREA)
- Strategic Management (AREA)
- Computer Hardware Design (AREA)
- Marketing (AREA)
- Economics (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Mathematical Physics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请的实施例提供了一种数据处理方法、装置、计算机可读介质及电子设备,该方法包括:构建与智能合约源代码中各方法分别对应的合约语法树,合约语法树中每个节点包括与合约语法树对应的方法中相应语句的执行所需费用;将合约语法树中未构成分叉的至少一组节点中的每组节点分别融合为一个节点,得到合约语法归纳树;其中,融合得到的节点中的执行所需费用为相应一组节点中的执行所需费用之和;当接收到针对目标交易的费用估算请求,获取对应的目标合约语法归纳树;根据目标合约语法归纳树中节点包括的执行所需费用确定执行目标交易的预估费用。本申请实施例的方案可以准确预测交易执行费用,可以减轻区块链节点的负担。
Description
技术领域
本申请涉及区块链技术领域,具体而言,涉及一种数据处理方法、装置、计算机可读介质及电子设备。
背景技术
智能合约是一种可以在区块链上执行的代码,它可以实现自动化的交易执行。
目前,在很多情况下,在利用智能合约执行交易时,会需要用户支付费用。
然而,现有技术在预测费用时消耗大量的资源,会增加区块链节点的负担。
发明内容
本申请的实施例提供了一种数据处理方法、装置、计算机可读介质及电子设备,进而至少在一定程度上可以利用智能合约执行交易之前准确预测费用,并减轻对区块链节点的负担。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种数据处理方法,所述方法包括:构建与智能合约源代码中各方法分别对应的合约语法树,所述合约语法树包括多个节点,每个节点包括与所述合约语法树对应的方法中相应语句的执行所需费用;将所述合约语法树中未构成分叉的至少一组节点中的每组节点分别融合为一个节点,得到合约语法归纳树;其中,未构成分叉的一组节点为至多具有一个子节点且存在连接关系的若干节点,融合得到的节点中的执行所需费用为相应一组节点中的执行所需费用之和;当接收到针对目标交易的费用估算请求,获取与所述费用估算请求中目标智能合约的目标方法名称对应的目标合约语法归纳树;根据所述目标合约语法归纳树中节点包括的执行所需费用确定执行所述目标交易的预估费用。
根据本申请实施例的一个方面,提供了一种数据处理装置,所述装置包括:构建单元,用于构建与智能合约源代码中各方法分别对应的合约语法树,所述合约语法树包括多个节点,每个节点包括与所述合约语法树对应的方法中相应语句的执行所需费用;融合单元,用于将所述合约语法树中未构成分叉的至少一组节点中的每组节点分别融合为一个节点,得到合约语法归纳树;其中,未构成分叉的一组节点为至多具有一个子节点且存在连接关系的若干节点,融合得到的节点中的执行所需费用为相应一组节点中的执行所需费用之和;获取单元,用于当接收到针对目标交易的费用估算请求,获取与所述费用估算请求中目标智能合约的目标方法名称对应的目标合约语法归纳树;确定单元,用于根据所述目标合约语法归纳树中节点包括的执行所需费用确定执行所述目标交易的预估费用。
在本申请的一些实施例中,基于前述方案,所述确定单元配置为:获取所述目标合约语法归纳树包括的节点数量;若根据所述节点数量确定所述目标合约语法归纳树仅包括一个节点,则根据所述节点确定执行所述目标交易的预估费用;若根据所述节点数量确定所述目标合约语法归纳树包括多个节点,则通过递归算法确定执行所述目标交易的最小所需费用和最大所需费用,并将所述最小所需费用和所述最大所需费用之间的区间作为执行所述目标交易的预估费用。
在本申请的一些实施例中,基于前述方案,所述装置还包括复杂方法确定单元;在获取所述目标合约语法归纳树包括的节点数量之前,所述复杂方法确定单元用于:确定所述费用估算请求中目标智能合约的目标方法名称对应的方法的逻辑复杂度;根据所述逻辑复杂度确定所述目标智能合约的目标方法名称对应的方法是否为复杂方法,其中,获取所述目标合约语法归纳树包括的节点数量是在确定所述目标智能合约的目标方法名称对应的方法不为复杂方法的情况下进行的。
在本申请的一些实施例中,基于前述方案,所述费用估算请求还包括用于执行所述目标交易的参数,在根据所述逻辑复杂度确定所述目标智能合约的目标方法名称对应的方法是否为复杂方法之后,所述确定单元还配置为:若确定所述目标智能合约的目标方法名称对应的方法为复杂方法,则通过预先训练得到的机器学习模型根据所述参数对所述目标合约语法归纳树中的语法树路径进行预测;根据预测得到的语法树路径上的节点包括的执行所需费用确定执行所述目标交易的预估费用。
在本申请的一些实施例中,基于前述方案,所述装置还包括智能合约获取单元和智能合约存储单元;在构建与智能合约源代码中各方法分别对应的合约语法树之前,所述智能合约获取单元用于:获取包含所述智能合约源代码的合约部署交易,并从所述合约部署交易获取所述智能合约源代码;在得到合约语法归纳树之后,所述智能合约存储单元用于:将所述智能合约源代码编译为可执行的二进制文件,得到二进制文件形式的智能合约,并将所述二进制文件形式的智能合约存至本地;启动所述二进制文件形式的智能合约,以执行所述合约部署交易;将所述合约部署交易存储至区块链中。
在本申请的一些实施例中,基于前述方案,所述装置还包括交易执行单元;在将所述二进制文件形式的智能合约存至本地之后,所述交易执行单元用于:当接收到交易执行请求,从所述交易执行请求中获取待执行交易,所述待执行交易包括智能合约标识;获取与所述智能合约标识匹配的二进制文件形式的智能合约;启动所述二进制文件形式的智能合约,并通过依次执行所述二进制文件形式的智能合约中的各个合约语句执行所述待执行交易。
在本申请的一些实施例中,基于前述方案,所述装置还包括语句添加单元;在将所述智能合约源代码编译为可执行的二进制文件之前,所述语句添加单元用于:根据所述合约语法归纳树中节点的位置,对所述智能合约源代码中的相应合约语句之前添加费用计算语句作为新增合约语句;所述交易执行单元配置为:每当执行至所述费用计算语句,通过执行所述费用计算语句进行费用扣除。
在本申请的一些实施例中,基于前述方案,所述装置应用于区块链网络中的当前区块链节点,所述装置还包括上链单元;通过依次执行所述二进制文件形式的智能合约中的各个合约语句执行所述待执行交易之后,所述上链单元用于:将所述待执行交易存储至区块中,并将所述区块发送至区块链网络中的其他区块链节点进行共识;当共识通过,将所述区块添加至区块账本中。
在本申请的一些实施例中,基于前述方案,所述交易执行单元还配置为:若执行至返回合约语句,则获取所述待执行交易的执行结果;根据所述执行结果生成用于指示所述待执行交易是否执行成功的通知信息,并将所述通知信息返回给所述交易执行请求的请求方。
在本申请的一些实施例中,基于前述方案,所述智能合约获取单元配置为:当接收到携带有合约部署交易、数字签名和请求方标识信息的交易请求,根据所述数字签名对所述交易请求进行签名验证,并根据所述请求方标识信息对所述交易请求进行权限验证,所述合约部署交易包含所述智能合约源代码;若所述交易请求通过了所述签名验证和所述权限验证,则将所述交易请求中的合约部署交易添加至交易池中;根据预定规则从所述交易池中获取交易,得到包含所述智能合约源代码的合约部署交易。
根据本申请实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的数据处理方法。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的数据处理方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行如上述实施例中所述的数据处理方法。
在本申请的一些实施例所提供的技术方案中,在得到智能合约源代码后,通过先构建与智能合约源代码中各方法分别对应的合约语法树,而且合约语法树中的每个节点包括与所合约语法树对应的方法中相应语句的执行所需费用,然后,通过将合约语法树中未构成分叉的至少一组节点中的每组节点分别融合为一个节点来建立合约语法归纳树,而且融合得到的节点中的执行所需费用为相应一组节点中的执行所需费用之和,这样,当接收到针对目标交易的费用估算请求时,通过按照费用估算请求中目标智能合约的目标方法名称获取对应的目标合约语法归纳树,并根据目标合约语法归纳树中节点包括的执行所需费用确定执行该目标交易的预估费用。由于目标合约语法归纳树中很多节点是预先融合得到的,因此,在对目标交易的执行进行费用预估时不需要大量计算资源,可以减轻对区块链节点的负担,同时,可以在执行智能合约之前为用户准确预估出其执行目标交易时预计消耗的费用,帮助用户更好地规划和管理资金。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图。
图2示出了根据本申请的一个实施例的数据处理方法的流程图。
图3示出了根据本申请的一个实施例的图2实施例中步骤220之前步骤以及步骤230之后步骤的流程图。
图4A-图4B示出了根据本申请的一个实施例的部署智能合约的流程示意图。
图5示出了根据本申请的一个实施例的区块链节点的架构示意图。
图6示出了根据本申请的一个实施例的对合约语法树进行压缩的示意图。
图7示出了根据本申请的一个实施例的智能合约的各方法对应的合约语法归纳树的示意图。
图8示出了根据本申请的一个实施例的添加了费用计算语句的智能合约源代码的示意图。
图9示出了根据本申请的一个实施例的图2实施例中步骤2100的细节的流程图。
图10示出了根据本申请的一个实施例的图2实施例中步骤2100之前步骤以及步骤2100的细节的流程图。
图11A-图11B示出了根据本申请的一个实施例的通过智能合约执行交易的流程示意图。
图12示出了根据本申请的一个实施例的面向固定合约方法扣费的交易Gas计算的流程示意图。
图13示出了根据本申请的一个实施例的基于机器学习的合约交易Gas计算的流程示意图。
图14示出了根据本申请的一个实施例的数据处理装置的框图。
图15示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
本申请实施例中,术语“模块”或“单元”是指有预定功能的计算机程序或计算机程序的一部分,并与其他相关部分一起工作以实现预定目标,并且可以通过使用软件、硬件(如处理电路或存储器)或其组合来全部或部分实现。同样的,一个处理器(或多个处理器或存储器)可以用来实现一个或多个模块或单元。此外,每个模块或单元都可以是包含该模块或单元功能的整体模块或单元的一部分。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
区块链是信息技术领域的一种分布式账本技术,一般由共识、交易区块和状态数据存储、密码学身份安全等内容构成,由于账本是分布式存储的,而且区块是经过共识的,所以具有不可篡改、可追溯、共同维护等特征。
Gas是以太坊等区块链平台中用于度量智能合约操作所需的计算资源的单位。Gas的概念是为了防止恶意用户滥用区块链网络资源而设计的。每个智能合约操作都有一个与之关联的Gas消耗,这取决于操作的复杂性和计算需求。用户在执行智能合约时需要为这些操作支付Gas费用,通常用加密货币支付。
Gas的引入有助于确保区块链网络资源的合理分配和使用。用户在执行智能合约时需要权衡Gas消耗和执行效果,从而在使用区块链网络资源时做出明智的决策。此外,Gas费用还可以作为激励,鼓励区块验证方验证和执行智能合约操作。
关于Gas费用,传统方案主要存在以下缺点:
1、执行效率较低:传统方案通常会对每个合约语句单独进行gas收费,这可能导致大量的计算和验证开销,从而降低合约执行效率。在区块链网络中,这种低效的执行可能会影响整个网络的性能和响应速度。
2、费用预测不准确:传统方案往往无法在执行合约前准确预测费用,尤其是在复杂逻辑的情况下。这可能导致用户在执行合约时遇到意外的费用,从而影响他们的资金管理和规划。
3、网络负担较大:传统方案通常需要节点模拟执行合约来预测费用,这会增加区块链网络中节点的负担,占用更多的网络资源。在大量模拟执行的情况下,这可能对网络的稳定性和可靠性造成影响。
为此,本申请首先提供了一种数据处理方法。基于本申请实施例提供的数据处理方法可以克服上述缺陷,不仅可以减轻对区块链节点的负担,而且可以提高智能合约的执行效率,提高整个区块链网络的性能和响应速度,此外,还可以在执行智能合约之前为用户准确预估出其执行目标交易时预计消耗的费用,帮助用户更好地规划和管理资金。
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图。如图1所示,该系统架构100可以包括用户终端110和区块链网络130,区块链网络130包括多个区块链节点,具体可以包括第一区块链节点131、第二区块链节点132、第三区块链节点133、第四区块链节点134和第五区块链节点135,用户终端110和区块链网络130通过通信链路120相连,任意两个区块链节点之间均建立了通信连接,这使得用户终端110可以与区块链网络130中的任意一个区块链节点进行通信,区块链网络130中的任意两个区块链节点之间也可以相互进行通信。各区块链节点均存储有区块链,用户终端110上部署有能够用于访问位于区块链网络130中区块链节点上的区块链的客户端。当本申请提供的一种数据处理方法应用于图1所示的系统架构中时,一个过程可以是这样的:首先,用户使用用户终端110编写智能合约源代码,将目标智能合约的智能合约源代码打包为交易,并通过用户终端110上的客户端将包含该交易的交易请求发送至区块链网络130中的第一区块链节点131;然后,第一区块链节点131接收到交易请求,从该交易请求的交易中获取到智能合约源代码;接着,第一区块链节点131对目标智能合约的智能合约源代码进行分析,构建与智能合约源代码中各方法对应的合约语法树;然后,第一区块链节点131通过对合约语法树中没有分叉的节点进行归纳求和,实现对合约语法树的压缩,从而得到合约语法归纳树,并将合约语法归纳树存储在本地;接着,第一区块链节点131将该目标智能合约的智能合约源代码编译为可执行的二进制文件,并存储该二进制文件;接下来,第一区块链节点131将包括该交易的区块添加至区块链网络130所维护的区块链中,实现对该交易的上链;然后,用户终端110向第一区块链节点131发送针对目标交易的费用估算请求,且该费用估算请求指示目标交易需要调用的智能合约为目标智能合约;最后,第一区块链节点131找到目标智能合约对应的合约语法归纳树,并根据目标合约语法归纳树对目标交易的执行费用进行预估。
在本申请的一些实施例中,在第一区块链节点131得到预估的执行费用之后,第一区块链节点131会将该预估的执行费用返回给用户终端110。
在本申请的一些实施例中,第一区块链节点131在得到合约语法归纳树之后,还会根据合约语法归纳树中节点的位置,在智能合约源代码中的相应合约语句之前添加费用计算语句。
在本申请的一些实施例中,用户终端110还会向第一区块链节点131发送针对目标交易的交易执行请求,该目标交易携带有指示执行目标交易所使用的目标智能合约的标识;第一区块链节点131会根据目标智能合约的标识启动目标智能合约的二进制文件,并通过启动和运行二进制文件执行目标交易。
应该理解,图1中的用户终端以及区块链网络中的区块链节点的数目仅仅是示意性的。根据实现需要,可以具有任意数目的用户终端,区块链网络中的区块链节点的数目也可以是任意的,即用户终端可以为多个,区块链网络中的区块链节点的数目可以超过5个,也可以低于5个。
需要说明的是,图1示出的仅为本申请的一个实施例。虽然在图1实施例的方案中,区块链网络中的区块链节点为服务器,而用户终端为台式计算机,但在本申请的其他实施例中,区块链节点和用户终端还可以为笔记本电脑、台式计算机、平板电脑、车载终端、便携式可穿戴设备、工作站等各种类型的终端设备;虽然在图1实施例的方案中,智能合约的二进制文件和对应的合约语法归纳树仅存储在一个区块链节点上,即存储在接收到包含该智能合约的源代码的交易请求的区块链节点上,但在本申请的其他实施例中,一个区块链节点在编译得到智能合约的二进制文件和/或合约语法归纳树之后,可以将智能合约的二进制文件和/或合约语法归纳树广播至其他区块链节点中或者各区块链节点均可以访问的智能合约仓库中,即其他区块链节点也可以使用该智能合约的二进制文件执行交易和/或使用合约语法归纳树进行费用预估。本申请实施例对此不作任何限定,本申请的保护范围也不应因此而受到任何限制。
易于理解,本申请实施例所提供的数据处理方法一般由服务器执行,相应地,数据处理装置一般设置于服务器中。但是,在本申请的其它实施例中,终端设备也可以与服务器具有相似的功能,从而执行本申请实施例所提供的数据处理方案。
因此,本申请实施例可以应用于终端或服务器中。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本申请实施例的方案可以应用于区块链领域。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监测等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监测模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监测网络情况、监测节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图2示出了根据本申请的一个实施例的数据处理方法的流程图,该数据处理方法可以由区块链网络中的任一区块链节点执行,该区块链节点可以是各种能够计算和处理的设备来执行,比如可以是用户终端或云服务器,用户终端包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器、智能手表等。请参照图2所示,该数据处理方法可以由当前区块链节点执行,其至少包括以下步骤:
步骤220,构建与智能合约源代码中各方法分别对应的合约语法树,合约语法树包括多个节点,每个节点包括与合约语法树对应的方法中相应语句的执行所需费用。
步骤230,将合约语法树中未构成分叉的至少一组节点中的每组节点分别融合为一个节点,得到合约语法归纳树;其中,未构成分叉的一组节点为至多具有一个子节点且存在连接关系的若干节点,融合得到的节点中的执行所需费用为相应一组节点中的执行所需费用之和。
步骤270,当接收到针对目标交易的费用估算请求,获取与费用估算请求中目标智能合约的目标方法名称对应的目标合约语法归纳树。
步骤2100,根据目标合约语法归纳树中节点包括的执行所需费用确定执行目标交易的预估费用。
在详细介绍上述步骤之前,先介绍在步骤220之前需要执行的步骤。
图3示出了根据本申请的一个实施例的图2实施例中步骤220之前步骤以及步骤230之后步骤的流程图。
请参见图3所示,在构建与智能合约源代码中各方法分别对应的合约语法树之前,该数据处理方法可以包括:
在步骤210中,获取包含智能合约源代码的合约部署交易,并从合约部署交易获取智能合约源代码。
智能合约源代码是由用户基于Solidity等智能合约编程语言编写的。合约部署交易是用于部署智能合约的交易。用户可以通过发送携带有该合约部署交易的交易上链请求的方式向区块链节点发送该合约部署交易。合约部署交易中除了包括智能合约源代码之外,还可以包括用于对该智能合约进行初始化的方法的名称、该方法的参数等其他信息,比如,对于一个查询用户余额的智能合约,其方法的参数可以是用户的ID等。
在本申请的一个实施例中,获取包含智能合约源代码的合约部署交易,包括:当接收到携带有合约部署交易、数字签名和请求方标识信息的交易请求,根据数字签名对所述交易请求进行签名验证,并根据请求方标识信息对交易请求进行权限验证,合约部署交易包含智能合约源代码;若交易请求通过了签名验证和权限验证,则将交易请求中的合约部署交易添加至交易池中;根据预定规则从交易池中获取交易,得到包含智能合约源代码的合约部署交易。
预定规则比如可以是:先为交易池中交易分别设置对应的优先级,再根据优先级从高到低依次从交易池中获取交易。
下面结合图4A-图4B来介绍本申请实施例的方案。图4A-图4B示出了根据本申请的一个实施例的部署智能合约的流程示意图。图4A-图4B中的相同圆形节点指示了位于流程中的同一位置。请参见图4A-图4B所示,可以包括以下流程:
步骤410,开始。
步骤420,用户在本地编写智能合约源码。
步骤430,用户将上述源码和合约初始化方法的参数进行打包。
通过打包得到的打包内容即为一个用于部署智能合约的合约部署交易。
步骤440,用户对上述打包内容进行签名。
生成打包内容的数字签名。
步骤450,用户将上述打包内容和签名一同发送到区块链节点上。
用户将携带有打包内容、对打包内容的数字签名和数字证书的网络请求发送至区块链节点。
步骤460,区块链节点网络模块接收到上述请求。
区块链节点的网络模块接收到该请求。
图5示出了根据本申请的一个实施例的区块链节点的架构示意图。
请参见图5所示,区块链节点包括网络模块,其负责区块链节点之间的通信,即传输交易、区块和其他信息。网络模块用于确保节点之间的数据同步和网络的稳定性。
步骤470,区块链节点鉴权模块对上述请求进行证书和签名验证,验证通过?
如果是,则转到步骤490,否则转到步骤480。
请继续参见图5所示,区块链节点还包括鉴权模块,鉴权模块用于对接收到携带有交易、区块等信息的网络请求进行验证,以确保它们符合网络的规则和安全要求。
区块链节点的鉴权模块包括证书验证子模块和权限验证子模块。证书验证子模块用于对发起交易或其他操作的实体的证书和签名进行验证,确保其身份的合法性和可信度;权限验证子模块用于检查实体是否具有执行特定操作的权限,例如创建新的智能合约、修改数据等。
区块链节点的鉴权模块可以根据请求方的公钥进行数字签名的验证;区块链节点的鉴权模块可以通过检查数字证书的有效期、检查数字证书是否被吊销、使用证书颁发机构的公钥对数字证书进行签名验证等方式对数字证书进行验证。
步骤480,返回签名验证不通过的结果。
区块链节点向用户返回签名验证不通过的通知信息。在执行完本步骤后转至步骤4260。
步骤490,鉴权模块对上述请求进行权限验证,验证通过?
上述请求中还可以携带有请求方的标识信息。区块链节点的鉴权模块根据请求方的标识信息判断请求方是否具有创建新的智能合约的权限,以此来进行权限验证。
如果是,则转到步骤4110,否则转到步骤4100。
步骤4100,返回权限验证不通过的结果。
区块链节点向用户返回权限验证不通过的通知信息。在执行完本步骤后转至步骤4260。
步骤4110,调度执行模块调度这笔新的部署合约的交易。
请继续参见图5所示,区块链节点还包括交易池模块和调度执行模块,交易池模块负责存储和管理尚未被打包进区块的交易,调度执行模块负责处理交易的执行,其中包括智能合约的执行。
调度执行模块包括以下子模块:
1、区块生成器:负责根据一定的规则和算法从交易池中选择交易,并生成新的区块。
2、归纳合约语法树存储库:存储和管理合约语法归纳树,以便于分析和优化。
3、合约语法树分析器:根据合约源码生成合约语法树的组件。
4、合约Gas扣费语句注入器:在合约执行过程中,根据Gas消耗情况向智能合约中注入Gas扣费语句。
5、虚拟机引擎:执行智能合约的虚拟机,负责处理智能合约中的各种操作和逻辑。
下面详细介绍图2实施例的步骤。
请继续参见图2所示,在步骤220中,构建与智能合约源代码中各方法分别对应的合约语法树,合约语法树包括多个节点,每个节点包括与合约语法树对应的方法中相应语句的执行所需费用。
可以从交易池中获取包含智能合约源代码的交易,然后从该交易中获取智能合约源代码。
合约语法树(Contract Syntax Tree,CST)是一种用于表示智能合约代码结构的树形数据结构。每个节点代表一个代码元素,例如变量、操作符、函数等。树的根节点表示整个合约,而子节点表示合约中的各个部分。通过对合约语法树进行遍历和分析,可以更容易地理解和操作合约代码,例如进行优化、静态分析、代码生成等。
一个智能合约源代码可以包括多个方法,每个方法包括若干指令或者语句,每个指令或者语句都可以执行相应的操作。可以为智能合约源代码中每个方法构建对应的合约语法树,合约语法树中的每个节点可以与相应方法中的一个语句对应。执行所需费用可以为Gas费用。
图6示出了根据本申请的一个实施例的对合约语法树进行压缩的示意图。
图6左侧部分示出了一个与某个方法对应的合约语法树,每个圆圈代表一个与该方法中语句对应的节点,圆圈中的数字代表相应语句的执行所需费用。比如,根节点的两个子节点中数字分别为2000和4000,这代表相应语句的执行所需花费的Gas分别为2000和4000。易于理解,合约语法树中的每个节点除了包括执行所需费用之外,还可以包括相应的语句等其他信息。
请继续参见图4A-4B所示,在步骤4110之后,还可以包括以下步骤:
步骤4120,合约语法树分析器开始对合约源码进行分析,构建合约语法树。
通过图5所示的调度执行模块中的合约语法树分析器对智能合约的源代码进行分析,并构建与源代码中方法对应的合约语法树。
请继续参见图2所示,在步骤230中,将合约语法树中未构成分叉的至少一组节点中的每组节点分别融合为一个节点,得到合约语法归纳树;其中,未构成分叉的一组节点为至多具有一个子节点且存在连接关系的若干节点,融合得到的节点中的执行所需费用为相应一组节点中的执行所需费用之和。
未构成分叉的一组节点即递归地呈现出父节点-子节点关系的多个节点,并且这些节点中不与其他节点存在父节点-子节点关系。在未构成分叉的一组节点中,除叶子节点之外的其他节点均只有一个子节点。
请继续参见图4A-4B所示,在步骤4120之后,还可以包括以下步骤:
步骤4130,合约语法树分析器对合约语法树进行压缩,将没有分叉的树节点进行归纳求和。
请继续参见图6所示,与根节点对应的包含2000的子节点所在分支上的所有节点即为未构成分叉的一组节点,它们包含的执行所需费用分别为2000、3000、1000和1000,通过这组节点进行融合,得到包含的执行所需费用为7000的一个节点;通过对合约语法树中的每组节点分别进行融合实现了对该合约语法树的压缩,从而得到图6右侧所示的合约语法归纳树。
在得到合约语法归纳树之后,可以将其存储在本地,比如存储在图5所示的归纳合约语法树存储库中;当然,区块链节点也可以将合约语法归纳树广播至其他区块链节点进行存储。
图7示出了根据本申请的一个实施例的智能合约的各方法对应的合约语法归纳树的示意图。请参见图7所示,左侧的智能合约包括三个方法,每个方法都能转化为右侧的合约语法归纳树。方法可以分为确定性的方法和非确定的方法,某个方法只有存储,且存储的字段长度一样,那么该方法对应的Gas费用的大小是固定的(如图7中的方法1和方法3);如果某个方法有一个分支(如if语句),那么Gas费用大小就会产生分叉,走不同的分叉消耗的Gas费用不同(如图7中的方法2)。
在执行图3中将智能合约源代码编译为可执行的二进制文件的步骤之前,该数据处理方法还可以包括以下步骤:
根据合约语法归纳树中节点的位置,对智能合约源代码中的相应合约语句之前添加费用计算语句作为新增合约语句。
图8示出了根据本申请的一个实施例的添加了费用计算语句的智能合约源代码的示意图。请参见图8所示,左侧部分为智能合约源代码,其包括多个语句段,每个语句段对应着合约语法归纳树中的一个节点。根据合约语法归纳树中节点的位置,在相应的语句段的头部添加费用计算语句,即Gas扣费语句或Gas计算语句,得到图8右侧所示的智能合约源代码,其包括810-830这三个语句段,每个语句段中添加的费用计算语句即用来为该语句段的执行进行扣费。
通过对合约语法树进行压缩和归纳,将没有分叉的树节点进行求和,并在相应合约语句之前添加费用计算语句,实现了对智能合约源代码的更新,使得更新后的智能合约源代码不需要对每个合约语句单独进行Gas收费,能够提高合约执行效率,减少Gas计算的开销。
请继续参见图4B所示,在步骤4130之后,还可以包括以下步骤:
步骤4140,在合约语法归纳树对应的语句前插入Gas计算语句,作为前段语句的Gas总和。
请继续参见图3所示,在得到合约语法归纳树之后,该数据处理方法还可以包括以下步骤:
在步骤240中,将智能合约源代码编译为可执行的二进制文件,得到二进制文件形式的智能合约,并将二进制文件形式的智能合约存至本地。
除了可以将二进制文件形式的智能合约存至本地,还可以将二进制文件形式的智能合约同步至其他区块链节点。
在步骤250中,启动二进制文件形式的智能合约,以执行合约部署交易。
在步骤260中,将合约部署交易存储至区块链中。
可以先将合约部署交易保存至打包的区块中,再将该区块上链。
请继续参见图4B所示,在步骤4140之后,还可以包括以下步骤:
步骤4150,调度执行模块尝试编译合约源码为可执行的二进制文件,编译是否失败?
如果是,则转到步骤4160,否则转到步骤4170。
步骤4160,调度执行模块返回合约安装交易源码编译失败的错误。
调度执行模块向用户返回错误信息。执行完本步骤后转到步骤4200。
步骤4170,启动该合约二进制文件,根据用户传入的初始化方法和参数执行。
根据用户传入的初始化方法和参数运行合约二进制文件,以执行该合约部署交易,从而对合约部署交易进行初始化。
步骤4180,初始化交易是否执行成功?
如果是,则转到步骤4190,否则转到步骤4200。
步骤4190,返回合约初始化成功的信息。
执行完本步骤后转到步骤4210。
步骤4200,返回合约初始化失败的错误。
步骤4210,记录合约初始化的结果。
步骤4220,将这笔交易存储到区块中,并通过共识模块发送给所有节点进行共识。
将区块转发至其他区块链节点进行共识处理。
请继续参见图5所示,该区块链节点还包括共识模块,其负责在网络中达成共识,以确保所有节点都同意区块链的状态。
步骤4230,共识是否通过?
如果是,则转到步骤4240,否则转到步骤4260。
步骤4240,所有节点将区块追加到区块账本中。
请继续参见图5所示,该区块链节点还包括存储模块,存储模块负责管理区块链节点的数据存储,包括区块账本和状态数据。
存储模块包括区块账本子模块和状态数据子模块,区块账本子模块用于存储已经确认的区块数据,包括交易、区块头等信息;状态数据子模块用于存储区块链网络中的状态数据,例如账户余额、智能合约状态等。
区块账本是区块链系统中的核心数据结构,用于存储和管理所有已确认的区块。区块账本以链式结构组织,每个区块包含一组交易、区块头(包括前一个区块的哈希值、时间戳等元数据)以及其他信息。区块账本为区块链系统提供了一个公共、不可篡改的交易历史记录,确保了系统的透明性和一致性。通过将区块追加到区块账本中,可以实现对区块的上链。
步骤4250,所有节点将区块中的数据更新到状态数据中,如合约执行得到的最新结果。
状态数据是区块链系统中用于表示系统当前状态的数据结构。状态数据包括了所有账户的余额、智能合约的状态以及其他相关信息。状态数据随着交易的执行而不断更新,反映了区块链系统在某个时间点的全局状态。在区块链系统中,状态数据通常以Merkle树或其他加密数据结构的形式存储,以确保其完整性和安全性。
比如,对于一个转账的智能合约,对应的合约执行结果可以是账户余额,可以将所有账户的余额更新至状态数据中。
步骤4260,结束。
请继续参见图2所示,在步骤270中,当接收到针对目标交易的费用估算请求,获取与费用估算请求中目标智能合约的目标方法名称对应的目标合约语法归纳树。
费用估算请求中可以携带有目标交易所使用的目标智能合约的标识、所使用的目标智能合约的目标方法名称以及其他参数信息。
图12示出了根据本申请的一个实施例的面向固定合约方法扣费的交易Gas计算的流程示意图。请参见图12所示,该流程包括以下步骤:
步骤1210,开始。
步骤1220,用户打包封装交易合约、方法、参数等内容。
步骤1230,用户调用区块链节点的网络模块请求进行交易Gas费扣费计算。
用户发送的该请求中携带有用户通过步骤1220打包的内容。
步骤1240,区块链节点调度执行模块检索归纳合约语法树存储库,查看是否含有对应的合约和方法?
本步骤实际上是判断归纳合约语法树存储库是否有与请求中的方法名称对应的归纳合约语法树,如果是,则转到步骤1260,否则转到步骤1250。
步骤1250,返回合约或方法不存在的错误。
向用户返回相应的错误信息,并转到步骤12110。
步骤1260,调度执行模块从归纳合约语法树存储库中获取合约方法对应的语法树。
请继续参见图2所示,在步骤2100中,根据目标合约语法归纳树中节点包括的执行所需费用确定执行目标交易的预估费用。
图9示出了根据本申请的一个实施例的图2实施例中步骤2100的细节的流程图。请参见图9所示,根据目标合约语法归纳树中节点包括的执行所需费用确定执行目标交易的预估费用具体可以包括以下步骤:
在步骤2101中,获取目标合约语法归纳树包括的节点数量。
目标合约语法归纳树包括的节点数量可以是一个或者多个。
在步骤2102中,若根据节点数量确定目标合约语法归纳树仅包括一个节点,则根据节点确定执行目标交易的预估费用。
若目标合约语法归纳树仅包括一个节点,则可以根据该节点中的信息准确确定出预估费用。
在步骤2103中,若根据节点数量确定目标合约语法归纳树包括多个节点,则通过递归算法确定执行目标交易的最小所需费用和最大所需费用,并将最小所需费用和最大所需费用之间的区间作为所述目标交易的预估费用。
如果目标合约语法归纳树包括多个节点,因此该目标合约语法归纳树往往有不同分支,执行不同的分支会消耗不同的费用,可以递归算法确定执行目标交易的最小所需费用和最大所需费用。
请继续参见图12所示,在步骤1260之后还包括以下步骤:
步骤1270,该语法树是否只有一个节点,即没有任何分叉的固定扣费?
如果是,则转到步骤1280,否则转到步骤1290。
步骤1280,返回用户执行交易的准确Gas扣费。
根据该语法树的节点可以准确计算出Gas扣费。执行完本步骤后转到步骤12110。
步骤1290,使用递归算法计算最小gas总消耗量min_gas和最大gas总消耗量max_gas。
具体来说计算min_gas和max_gas的代码可以如下所示:
function min_max_gas(node):
if node is None:
return (0, 0)
min_gas_left, max_gas_left = min_max_gas(node.left)
min_gas_right, max_gas_right = min_max_gas(node.right)
min_gas = node.gas + min(min_gas_left, min_gas_right)
max_gas = node.gas + max(max_gas_left, max_gas_right)
return (min_gas, max_gas)
# 调用函数,传入语法树的根节点
min_gas, max_gas = min_max_gas(root)
print("最小Gas总消耗:", min_gas)
print("最大Gas总消耗:", max_gas)
步骤12100,返回用户Gas扣费的区间为min_gas到max_gas。
步骤12110,结束。
图10示出了根据本申请的一个实施例的图2实施例中步骤2100之前步骤以及步骤2100的细节的流程图。请参见图10所示,在本申请实施例中,费用估算请求还包括用于执行目标交易的参数,在获取目标合约语法归纳树包括的节点数量之前,还可以包括以下步骤:
在步骤280中,确定费用估算请求中目标智能合约的目标方法名称对应的方法的逻辑复杂度。
可以根据目标方法名称对应的方法的合约语法树中分支或者分叉的数量通过一定计算公式来确定该方法的逻辑复杂度,逻辑复杂度可以与分支的数量正相关。
在步骤290中,根据逻辑复杂度确定目标智能合约的目标方法名称对应的方法是否为复杂方法。
如果逻辑复杂度达到预定阈值,则可以确定该方法为复杂方法;否则,可以确定该方法不为复杂方法。
如果不为复杂方法,则执行步骤2101-步骤2103。即获取目标合约语法归纳树包括的节点数量是在确定目标智能合约的目标方法名称对应的方法不为复杂方法的情况下进行的。
请参见图10所示,根据目标合约语法归纳树中节点包括的执行所需费用确定执行目标交易的预估费用,还可以包括以下步骤:
在步骤2104中,通过预先训练得到的机器学习模型根据参数对目标合约语法归纳树中的语法树路径进行预测。
若确定目标智能合约的目标方法名称对应的方法为复杂方法,则执行本步骤。
比如,可以预先根据历史上执行交易所使用的不同的参数以及不同参数下最终选择的路径来训练得到机器学习模型。比如,可以根据调用智能合约进行交易转账的金额参数,以及智能合约执行时使用的转账成功和转账失败的路径来使机器学习模型能够学习到转账额度,从而能够实现转账成功和转账失败的路径的预测。
在步骤2105中,根据预测得到的语法树路径上的节点包括的执行所需费用确定执行目标交易的预估费用。
图13示出了根据本申请的一个实施例的基于机器学习的合约交易Gas计算的流程示意图。请参见图13所示,包括以下流程:
步骤1310,开始。
步骤1320,用户打包封装交易合约、方法、参数等内容。
步骤1330,用户调用区块链节点的网络模块请求进行交易Gas费扣费计算。
步骤1340,区块链节点调度执行模块检索归纳合约语法树存储库,查看是否含有对应的合约和方法?
如果是,则转到步骤1360,否则转到步骤1350。
步骤1350,返回合约或方法不存在的错误。
执行完本步骤后转到步骤13100。
步骤1360,调度执行模块从归纳合约语法树存储库中获取合约方法对应的语法树。
步骤1370,调度执行模块在整个生命周期中都会使用合约参数和语法树选择路径来训练机器学习模型,来预测参数对应的语法树路径。
步骤1380,调度执行模块使用机器学习算法来预测语法树路径。
步骤1390,调度执行模块求出语法树路径中的gas总和。
步骤13100,结束。
在本申请的一个实施例中,在将二进制文件形式的智能合约存至本地之后,该方法还可以包括以下步骤:当接收到交易执行请求,从交易执行请求中获取待执行交易,待执行交易包括智能合约标识;获取与智能合约标识匹配的二进制文件形式的智能合约;启动二进制文件形式的智能合约,并通过依次执行二进制文件形式的智能合约中的各个合约语句执行待执行交易。
图11A-图11B示出了根据本申请的一个实施例的通过智能合约执行交易的流程示意图。请参见图11A-图11B所示,可以包括以下流程:
步骤1110,开始。
步骤1120,用户打包封装交易合约、方法、参数等内容。
步骤1130,用户对上述打包内容进行签名。
步骤1140,用户将上述打包内容和签名一同发送到区块链节点上。
步骤1150,区块链节点网络模块接收到上述请求。
步骤1160,区块链节点鉴权模块对上述请求进行证书和签名验证,验证通过?
如果是,则转到步骤1180,否则转到步骤1170。
步骤1170,返回签名验证不通过的结果。
执行完本步骤后转到步骤11260。
步骤1180,鉴权模块对上述请求进行权限验证,验证通过?
如果是,则转到步骤11100,否则转到步骤1190。
步骤1190,返回权限验证不通过的结果。
执行完本步骤后转到步骤11260。
步骤11100,虚拟机模块交易调度器调度这笔新的合约交易。
步骤11110,启动该合约二进制文件,根据用户传入的交易方法和参数执行。
可以根据智能合约的标识获取对应的合约二进制文件。
步骤11120,合约二进制文件依次执行合约语句。
步骤11130,当前语句为普通执行语句,即不需要调用扣除Gas接口?
如果是,则转到步骤11140,否则转到步骤11150。
步骤11140,执行该普通语句。
执行完本步骤后转到步骤11120。
在本申请的一个实施例中,通过依次执行二进制文件形式的智能合约中的各个合约语句执行待执行交易,包括:每当执行至费用计算语句,通过执行费用计算语句进行费用扣除。
请继续参见图11A-图11B所示,还包括以下步骤:
步骤11150,当前语句为扣除Gas语句?
如果是,则转到步骤11160,否则转到步骤11180。
步骤11160,用户余额是否充足?
如果是,则转到步骤11170,否则转到步骤11200。
步骤11170,扣除用户Gas费用。
通过调用扣除Gas接口对用户Gas费用进行扣除。
执行完本步骤后转到步骤11120。
在本申请的一个实施例中,通过依次执行二进制文件形式的智能合约中的各个合约语句执行待执行交易,还包括:若执行至返回合约语句,则获取待执行交易的执行结果;根据执行结果生成用于指示待执行交易是否执行成功的通知信息,并将通知信息返回给交易执行请求的请求方。
请继续参见图11A-图11B所示,还包括以下步骤:
步骤11180,当前语句为返回合约语句,即合约进程任务执行完成,当前执行结果是否成功?
如果是,则转到步骤11190,否则转到步骤11200。
步骤11190,返回合约交易执行成功的信息。
执行完本步骤后转到步骤11210。
步骤11200,返回合约交易执行失败的错误。
步骤11210,记录合约交易执行的结果。
在本申请的一个实施例中,在通过依次执行二进制文件形式的智能合约中的各个合约语句执行待执行交易之后,该方法还包括:将待执行交易存储至区块中,并将区块发送至区块链网络中的其他区块链节点进行共识;当共识通过,将区块添加至区块账本中。
步骤11220,将这笔交易存储到区块中,并通过共识模块发送给所有节点进行共识。
步骤11230,共识是否通过?
如果是,则转到步骤11240,否则转到步骤11260。
步骤11240,所有节点将区块追加到区块账本中。
步骤11250,所有节点将区块中的数据更新到状态数据中,如合约执行得到的最新结果。
步骤11260,结束。
综上所述,根据本申请实施例提供的数据处理方法,至少能够取得以下效果:
1.提高执行效率:通过对合约内容进行语法树计算并汇总无分叉的gas收费语句,本申请能够减少每个语句单独收费的操作,从而提高合约执行效率,减少Gas计算的开销。相比传统方案,能够在不影响执行效果的前提下,这将有助于提高整个区块链网络的性能和响应速度。
2.费用预测准确性:本申请在固定逻辑的方法中能够提供较为准确的费用预测,让用户在执行合约前就能了解费用情况。对于复杂逻辑的情况,通过机器学习对调用参数进行训练和预测,也能为用户提供参考的费用预测。这将有助于用户更好地规划和管理他们的资金,避免因为费用不明确而导致的损失。
3.降低网络负担:由于本申请可以在没有节点模拟执行的情况下进行费用预测,这将减轻区块链网络中节点的负担,避免过多的模拟执行操作占用网络资源。这将有助于维护区块链网络的稳定性和可靠性。
本申请实施例可以应用于以下场景:
1.区块链开发平台:为开发者提供一个高效且易用的智能合约开发环境,利用本申请实施例的Gas计算方案帮助开发者在编写智能合约时预测Gas消耗,优化合约代码,降低执行成本。
2.去中心化金融(DeFi)应用:在去中心化金融应用中,智能合约的执行效率和费用预测至关重要。本申请实施例的Gas计算方案可以为DeFi应用提供更高效的合约执行和准确的费用预测,降低用户的交易成本,提升用户体验。
3.区块链游戏:区块链游戏中常涉及大量智能合约交互,本申请实施例的Gas计算方案可以提高游戏合约的执行效率,减少Gas消耗,为玩家带来更流畅的游戏体验。
4.供应链管理和物联网应用:在供应链管理和物联网领域,智能合约用于处理各种数据和事务。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的数据处理方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的数据处理方法的实施例。
图14示出了根据本申请的一个实施例的数据处理装置的框图。参照图14所示,根据本申请的一个实施例的数据处理装置1400,包括:构建单元1410、融合单元1420、获取单元1430以及确定单元1440。其中,构建单元1410用于构建与智能合约源代码中各方法分别对应的合约语法树,所述合约语法树包括多个节点,每个节点包括与所述合约语法树对应的方法中相应语句的执行所需费用;融合单元1420用于将所述合约语法树中未构成分叉的至少一组节点中的每组节点分别融合为一个节点,得到合约语法归纳树;其中,未构成分叉的一组节点为至多具有一个子节点且存在连接关系的若干节点,融合得到的节点中的执行所需费用为相应一组节点中的执行所需费用之和;获取单元1430用于当接收到针对目标交易的费用估算请求,获取与所述费用估算请求中目标智能合约的目标方法名称对应的目标合约语法归纳树;确定单元1440用于根据所述目标合约语法归纳树中节点包括的执行所需费用确定执行所述目标交易的预估费用。
在本申请的一些实施例中,基于前述方案,确定单元1440配置为:获取所述目标合约语法归纳树包括的节点数量;若根据所述节点数量确定所述目标合约语法归纳树仅包括一个节点,则根据所述节点确定执行所述目标交易的预估费用;若根据所述节点数量确定所述目标合约语法归纳树包括多个节点,则通过递归算法确定执行所述目标交易的最小所需费用和最大所需费用,并将所述最小所需费用和所述最大所需费用之间的区间作为执行所述目标交易的预估费用。
在本申请的一些实施例中,基于前述方案,所述装置还包括复杂方法确定单元;在获取所述目标合约语法归纳树包括的节点数量之前,所述复杂方法确定单元用于:确定所述费用估算请求中目标智能合约的目标方法名称对应的方法的逻辑复杂度;根据所述逻辑复杂度确定所述目标智能合约的目标方法名称对应的方法是否为复杂方法,其中,获取所述目标合约语法归纳树包括的节点数量是在确定所述目标智能合约的目标方法名称对应的方法不为复杂方法的情况下进行的。
在本申请的一些实施例中,基于前述方案,所述费用估算请求还包括用于执行所述目标交易的参数,在根据所述逻辑复杂度确定所述目标智能合约的目标方法名称对应的方法是否为复杂方法之后,确定单元1440还配置为:若确定所述目标智能合约的目标方法名称对应的方法为复杂方法,则通过预先训练得到的机器学习模型根据所述参数对所述目标合约语法归纳树中的语法树路径进行预测;根据预测得到的语法树路径上的节点包括的执行所需费用确定执行所述目标交易的预估费用。
在本申请的一些实施例中,基于前述方案,所述装置还包括智能合约获取单元和智能合约存储单元;在构建与智能合约源代码中各方法分别对应的合约语法树之前,所述智能合约获取单元用于:获取包含所述智能合约源代码的合约部署交易,并从所述合约部署交易获取所述智能合约源代码;在得到合约语法归纳树之后,所述智能合约存储单元用于:将所述智能合约源代码编译为可执行的二进制文件,得到二进制文件形式的智能合约,并将所述二进制文件形式的智能合约存至本地;启动所述二进制文件形式的智能合约,以执行所述合约部署交易;将所述合约部署交易存储至区块链中。
在本申请的一些实施例中,基于前述方案,所述装置还包括交易执行单元;在将所述二进制文件形式的智能合约存至本地之后,所述交易执行单元用于:当接收到交易执行请求,从所述交易执行请求中获取待执行交易,所述待执行交易包括智能合约标识;获取与所述智能合约标识匹配的二进制文件形式的智能合约;启动所述二进制文件形式的智能合约,并通过依次执行所述二进制文件形式的智能合约中的各个合约语句执行所述待执行交易。
在本申请的一些实施例中,基于前述方案,所述装置还包括语句添加单元;在将所述智能合约源代码编译为可执行的二进制文件之前,所述语句添加单元用于:根据所述合约语法归纳树中节点的位置,对所述智能合约源代码中的相应合约语句之前添加费用计算语句作为新增合约语句;所述交易执行单元配置为:每当执行至所述费用计算语句,通过执行所述费用计算语句进行费用扣除。
在本申请的一些实施例中,基于前述方案,所述装置应用于区块链网络中的当前区块链节点,所述装置还包括上链单元;通过依次执行所述二进制文件形式的智能合约中的各个合约语句执行所述待执行交易之后,所述上链单元用于:将所述待执行交易存储至区块中,并将所述区块发送至区块链网络中的其他区块链节点进行共识;当共识通过,将所述区块添加至区块账本中。
在本申请的一些实施例中,基于前述方案,所述交易执行单元还配置为:若执行至返回合约语句,则获取所述待执行交易的执行结果;根据所述执行结果生成用于指示所述待执行交易是否执行成功的通知信息,并将所述通知信息返回给所述交易执行请求的请求方。
在本申请的一些实施例中,基于前述方案,所述智能合约获取单元配置为:当接收到携带有合约部署交易、数字签名和请求方标识信息的交易请求,根据所述数字签名对所述交易请求进行签名验证,并根据所述请求方标识信息对所述交易请求进行权限验证,所述合约部署交易包含所述智能合约源代码;若所述交易请求通过了所述签名验证和所述权限验证,则将所述交易请求中的合约部署交易添加至交易池中;根据预定规则从所述交易池中获取交易,得到包含所述智能合约源代码的合约部署交易。
图15示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图15示出的电子设备的计算机系统1500仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图15所示,计算机系统1500包括中央处理单元(Central Processing Unit,CPU)1501,其可以根据存储在只读存储器(Read-Only Memory,ROM)1502中的程序或者从存储部分1508加载到随机访问存储器(Random Access Memory,RAM)1503中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1503中,还存储有系统操作所需的各种程序和数据。CPU 1501、ROM 1502以及RAM 1503通过总线1504彼此相连。输入/输出(Input /Output,I/O)接口1505也连接至总线1504。
以下部件连接至I/O接口1505:包括键盘、鼠标等的输入部分1506;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1507;包括硬盘等的存储部分1508;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1509。通信部分1509经由诸如因特网的网络执行通信处理。驱动器1510也根据需要连接至I/O接口1505。可拆卸介质1511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1510上,以便于从其上读出的计算机程序根据需要被安装入存储部分1508。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1509从网络上被下载和安装,和/或从可拆卸介质1511被安装。在该计算机程序被中央处理单元(CPU)1501执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
可以理解的是,在本申请的具体实施方式中,涉及到与区块链相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (13)
1.一种数据处理方法,其特征在于,所述方法包括:
构建与智能合约源代码中各方法分别对应的合约语法树,所述合约语法树包括多个节点,每个节点包括与所述合约语法树对应的方法中相应语句的执行所需费用;
将所述合约语法树中未构成分叉的至少一组节点中的每组节点分别融合为一个节点,得到合约语法归纳树;其中,未构成分叉的一组节点为至多具有一个子节点且存在连接关系的若干节点,融合得到的节点中的执行所需费用为相应一组节点中的执行所需费用之和;
当接收到针对目标交易的费用估算请求,获取与所述费用估算请求中目标智能合约的目标方法名称对应的目标合约语法归纳树;
根据所述目标合约语法归纳树中节点包括的执行所需费用确定执行所述目标交易的预估费用。
2.根据权利要求1所述的数据处理方法,其特征在于,所述根据所述目标合约语法归纳树中节点包括的执行所需费用确定执行所述目标交易的预估费用,包括:
获取所述目标合约语法归纳树包括的节点数量;
若根据所述节点数量确定所述目标合约语法归纳树仅包括一个节点,则根据所述节点确定执行所述目标交易的预估费用;
若根据所述节点数量确定所述目标合约语法归纳树包括多个节点,则通过递归算法确定执行所述目标交易的最小所需费用和最大所需费用,并将所述最小所需费用和所述最大所需费用之间的区间作为执行所述目标交易的预估费用。
3.根据权利要求2所述的数据处理方法,其特征在于,在获取所述目标合约语法归纳树包括的节点数量之前,所述方法还包括:
确定所述费用估算请求中目标智能合约的目标方法名称对应的方法的逻辑复杂度;
根据所述逻辑复杂度确定所述目标智能合约的目标方法名称对应的方法是否为复杂方法,其中,获取所述目标合约语法归纳树包括的节点数量是在确定所述目标智能合约的目标方法名称对应的方法不为复杂方法的情况下进行的。
4.根据权利要求3所述的数据处理方法,其特征在于,所述费用估算请求还包括用于执行所述目标交易的参数,在根据所述逻辑复杂度确定所述目标智能合约的目标方法名称对应的方法是否为复杂方法之后,所述根据所述目标合约语法归纳树中节点包括的执行所需费用确定执行所述目标交易的预估费用,还包括:
若确定所述目标智能合约的目标方法名称对应的方法为复杂方法,则通过预先训练得到的机器学习模型根据所述参数对所述目标合约语法归纳树中的语法树路径进行预测;
根据预测得到的语法树路径上的节点包括的执行所需费用确定执行所述目标交易的预估费用。
5.根据权利要求1所述的数据处理方法,其特征在于,在构建与智能合约源代码中各方法分别对应的合约语法树之前,所述方法还包括:
获取包含所述智能合约源代码的合约部署交易,并从所述合约部署交易获取所述智能合约源代码;
在得到合约语法归纳树之后,所述方法还包括:
将所述智能合约源代码编译为可执行的二进制文件,得到二进制文件形式的智能合约,并将所述二进制文件形式的智能合约存至本地;
启动所述二进制文件形式的智能合约,以执行所述合约部署交易;
将所述合约部署交易存储至区块链中。
6.根据权利要求5所述的数据处理方法,其特征在于,在将所述二进制文件形式的智能合约存至本地之后,所述方法还包括:
当接收到交易执行请求,从所述交易执行请求中获取待执行交易,所述待执行交易包括智能合约标识;
获取与所述智能合约标识匹配的二进制文件形式的智能合约;
启动所述二进制文件形式的智能合约,并通过依次执行所述二进制文件形式的智能合约中的各个合约语句执行所述待执行交易。
7.根据权利要求6所述的数据处理方法,其特征在于,在将所述智能合约源代码编译为可执行的二进制文件之前,所述方法还包括:
根据所述合约语法归纳树中节点的位置,对所述智能合约源代码中的相应合约语句之前添加费用计算语句作为新增合约语句;
所述通过依次执行所述二进制文件形式的智能合约中的各个合约语句执行所述待执行交易,包括:
每当执行至所述费用计算语句,通过执行所述费用计算语句进行费用扣除。
8.根据权利要求6所述的数据处理方法,其特征在于,所述方法由区块链网络中的当前区块链节点执行,在通过依次执行所述二进制文件形式的智能合约中的各个合约语句执行所述待执行交易之后,所述方法还包括:
将所述待执行交易存储至区块中,并将所述区块发送至区块链网络中的其他区块链节点进行共识;
当共识通过,将所述区块添加至区块账本中。
9.根据权利要求7所述的数据处理方法,其特征在于,所述通过依次执行所述二进制文件形式的智能合约中的各个合约语句执行所述待执行交易,还包括:
若执行至返回合约语句,则获取所述待执行交易的执行结果;
根据所述执行结果生成用于指示所述待执行交易是否执行成功的通知信息,并将所述通知信息返回给所述交易执行请求的请求方。
10.根据权利要求5所述的数据处理方法,其特征在于,所述获取包含所述智能合约源代码的合约部署交易,包括:
当接收到携带有合约部署交易、数字签名和请求方标识信息的交易请求,根据所述数字签名对所述交易请求进行签名验证,并根据所述请求方标识信息对所述交易请求进行权限验证,所述合约部署交易包含所述智能合约源代码;
若所述交易请求通过了所述签名验证和所述权限验证,则将所述交易请求中的合约部署交易添加至交易池中;
根据预定规则从所述交易池中获取交易,得到包含所述智能合约源代码的合约部署交易。
11.一种数据处理装置,其特征在于,所述装置包括:
构建单元,用于构建与智能合约源代码中各方法分别对应的合约语法树,所述合约语法树包括多个节点,每个节点包括与所述合约语法树对应的方法中相应语句的执行所需费用;
融合单元,用于将所述合约语法树中未构成分叉的至少一组节点中的每组节点分别融合为一个节点,得到合约语法归纳树;其中,未构成分叉的一组节点为至多具有一个子节点且存在连接关系的若干节点,融合得到的节点中的执行所需费用为相应一组节点中的执行所需费用之和;
获取单元,用于当接收到针对目标交易的费用估算请求,获取与所述费用估算请求中目标智能合约的目标方法名称对应的目标合约语法归纳树;
确定单元,用于根据所述目标合约语法归纳树中节点包括的执行所需费用确定执行所述目标交易的预估费用。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至10中任一项所述的数据处理方法。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至10中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410053548.6A CN117574320B (zh) | 2024-01-15 | 2024-01-15 | 数据处理方法、装置、计算机可读介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410053548.6A CN117574320B (zh) | 2024-01-15 | 2024-01-15 | 数据处理方法、装置、计算机可读介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117574320A true CN117574320A (zh) | 2024-02-20 |
CN117574320B CN117574320B (zh) | 2024-04-26 |
Family
ID=89862734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410053548.6A Active CN117574320B (zh) | 2024-01-15 | 2024-01-15 | 数据处理方法、装置、计算机可读介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117574320B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108876333A (zh) * | 2018-06-28 | 2018-11-23 | 北京金山安全软件有限公司 | 一种交易费预估方法及装置 |
CN110543407A (zh) * | 2019-08-21 | 2019-12-06 | 杭州趣链科技有限公司 | 一种Solidity智能合约性能静态分析方法 |
CN112070608A (zh) * | 2020-08-20 | 2020-12-11 | 财付通支付科技有限公司 | 信息处理方法、装置、介质及电子设备 |
CN112104709A (zh) * | 2020-08-28 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 智能合约的处理方法、装置、介质及电子设备 |
US20220207022A1 (en) * | 2020-12-30 | 2022-06-30 | Luther Systems Us Incorporated | System and method for automatic, rapid, and auditable updates of digital contracts |
CN115293340A (zh) * | 2022-08-09 | 2022-11-04 | 上海壁仞智能科技有限公司 | 数据同步处理方法、装置、计算设备和存储介质 |
CN116957577A (zh) * | 2023-07-26 | 2023-10-27 | 杭州溪塔科技有限公司 | 交易中的Gas值预估方法、装置、存储介质及设备 |
-
2024
- 2024-01-15 CN CN202410053548.6A patent/CN117574320B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108876333A (zh) * | 2018-06-28 | 2018-11-23 | 北京金山安全软件有限公司 | 一种交易费预估方法及装置 |
CN110543407A (zh) * | 2019-08-21 | 2019-12-06 | 杭州趣链科技有限公司 | 一种Solidity智能合约性能静态分析方法 |
CN112070608A (zh) * | 2020-08-20 | 2020-12-11 | 财付通支付科技有限公司 | 信息处理方法、装置、介质及电子设备 |
CN112104709A (zh) * | 2020-08-28 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 智能合约的处理方法、装置、介质及电子设备 |
US20220207022A1 (en) * | 2020-12-30 | 2022-06-30 | Luther Systems Us Incorporated | System and method for automatic, rapid, and auditable updates of digital contracts |
CN115293340A (zh) * | 2022-08-09 | 2022-11-04 | 上海壁仞智能科技有限公司 | 数据同步处理方法、装置、计算设备和存储介质 |
CN116957577A (zh) * | 2023-07-26 | 2023-10-27 | 杭州溪塔科技有限公司 | 交易中的Gas值预估方法、装置、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117574320B (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111527488B (zh) | 基于区块链的数据同步的系统和方法 | |
CN110121727B (zh) | 一种为智能合同提供经证实、可审计和不可变输入的方法和系统 | |
CN109981679B (zh) | 在区块链网络中执行事务的方法和装置 | |
US10628578B2 (en) | Systems and methods for determining trust levels for computing components using blockchain | |
US20190050855A1 (en) | Blockchain-based systems, methods, and apparatus for securing access to information stores | |
US20190081793A1 (en) | Parallel-chain architecture for blockchain systems | |
JP2021502745A (ja) | ブロックチェーン上に検証鍵を記録するためのシステム | |
CN112686671B (zh) | 基于区块链的智能合约部署方法、装置、设备以及介质 | |
CN112632629B (zh) | 基于区块链的投票管理方法、装置、介质及电子设备 | |
CN111931220B (zh) | 区块链网络的共识处理方法、装置、介质及电子设备 | |
EP3502871B1 (en) | System and methods for determining trust levels for computing components using blockchain | |
CN112559635B (zh) | 以太坊联盟链节点的业务处理方法、装置、设备及介质 | |
CN111090581A (zh) | 智能合约测试方法、装置、计算机设备和存储介质 | |
CN116155771A (zh) | 网络异常测试方法、装置、设备、存储介质和程序 | |
CN116488818A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN117574320B (zh) | 数据处理方法、装置、计算机可读介质及电子设备 | |
CN116975901A (zh) | 基于区块链的身份验证方法、装置、设备、介质及产品 | |
CN112926981A (zh) | 用于区块链的交易信息处理方法、装置、介质及电子设备 | |
Han et al. | VM‐Studio: A Universal Crosschain Smart Contract Verification and Execution Scheme | |
CN117593129B (zh) | 交易的执行方法、装置、计算机可读介质及电子设备 | |
CN116545696B (zh) | 一种基于去中心化数字身份的链下服务可信化方法 | |
Petrosino et al. | dRAIN: A distributed Reliable Architecture for IoT Networks | |
Mast | Protocols for Building Secure and Scalable Decentralized Applications | |
Patel | SCIP 2.0: horizontally extending the Smart Contract Invocation Protocol | |
Kolombet | Multi-prover ethereum layer 2 rollups |
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 |