CN116777631A - 基于区块链的交易上链方法及装置、设备、介质 - Google Patents
基于区块链的交易上链方法及装置、设备、介质 Download PDFInfo
- Publication number
- CN116777631A CN116777631A CN202311037037.7A CN202311037037A CN116777631A CN 116777631 A CN116777631 A CN 116777631A CN 202311037037 A CN202311037037 A CN 202311037037A CN 116777631 A CN116777631 A CN 116777631A
- Authority
- CN
- China
- Prior art keywords
- target
- transaction
- execution
- consensus
- execution results
- 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
- 238000000034 method Methods 0.000 title claims abstract description 152
- 238000012545 processing Methods 0.000 claims abstract description 38
- 238000004364 calculation method Methods 0.000 claims description 48
- 238000012795 verification Methods 0.000 claims description 42
- 238000004590 computer program Methods 0.000 claims description 16
- 238000005516 engineering process Methods 0.000 abstract description 12
- 238000013473 artificial intelligence Methods 0.000 abstract 1
- 230000008569 process Effects 0.000 description 50
- 238000004422 calculation algorithm Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 15
- 238000003860 storage Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 239000003999 initiator Substances 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000002360 preparation method Methods 0.000 description 9
- 230000007613 environmental effect Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 238000012935 Averaging Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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
-
- 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Accounting & Taxation (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Finance (AREA)
- Marketing (AREA)
- Development Economics (AREA)
- Data Mining & Analysis (AREA)
- Economics (AREA)
- Computing Systems (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的实施例公开了一种基于区块链的交易上链方法及装置、设备、介质,可以应用于智慧交通、辅助驾驶、云技术、人工智能等各种场景。该方法包括:获取区块链系统中的共识节点针对目标交易的执行结果,得到多个执行结果,执行结果是共识节点基于本地环境执行目标交易产生的,若检测到多个执行结果之间存在差异,则基于多个执行结果和执行目标交易所需使用的本地环境信息生成针对目标交易的目标执行结果,之后向区块链系统中的共识节点发送目标执行结果,以使共识节点在检测到相同的目标执行结果的数量达到指定数量后,对目标交易进行上链处理。本申请的技术方案提升了共识效率,保证了目标交易的成功上链,优化了基于区块链的交易上链方案。
Description
技术领域
本申请涉及区块链技术领域,具体而言,涉及一种基于区块链的交易上链方法、基于区块链的交易上链装置、电子设备、计算机可读介质。
背景技术
相关技术中区块链系统是通过调用智能合约完成交易,其中智能合约部署在区块链系统中的每个共识节点上,而不同共识节点的本地环境可能存在着不同,因此,每个共识节点调用智能合约以完成交易所得到的交易执行结果也会有所不同,进而导致了该交易的共识失败,在极大程度上降低了共识效率。
因此,如何提升共识效率,以保证交易的成功上链是亟待解决的问题。
发明内容
本申请的实施例提供了一种基于区块链的交易上链方法及装置、设备、介质,提升了共识效率,保证了交易的成功上链。
第一方面,本申请实施例提供了一种基于区块链的交易上链方法,所述方法包括:获取区块链系统中的共识节点针对目标交易的执行结果,得到多个执行结果,所述执行结果是所述共识节点基于本地环境执行所述目标交易产生的;若检测到所述多个执行结果之间存在差异,则获取执行所述目标交易所需使用的本地环境信息;基于所述本地环境信息和所述多个执行结果,生成针对所述目标交易的目标执行结果;向所述区块链系统中的共识节点发送所述目标执行结果,以使所述共识节点在检测到相同的目标执行结果的数量达到指定数量后,对所述目标交易进行上链处理。
第二方面,本申请实施例提供了一种基于区块链的交易上链装置,所述装置包括:第一获取模块,配置为获取区块链系统中的共识节点针对目标交易的执行结果,得到多个执行结果,所述执行结果是所述共识节点基于本地环境执行所述目标交易产生的;第二获取模块,配置为若检测到所述多个执行结果之间存在差异,则获取执行所述目标交易所需使用的本地环境信息;生成模块,配置为基于所述本地环境信息和所述多个执行结果,生成针对所述目标交易的目标执行结果;发送模块,配置为向所述区块链系统中的共识节点发送所述目标执行结果,以使所述共识节点在检测到相同的目标执行结果的数量达到指定数量后,对所述目标交易进行上链处理。
在本申请的一个实施例中,基于前述方案,所述第二获取模块,具体配置为:基于所述目标交易的交易类型确定执行所述目标交易所需使用的本地环境信息;所述生成模块,具体配置为:基于所述本地环境信息确定所述目标交易所属的差异类型;基于所述差异类型和所述多个执行结果,生成针对所述目标交易的目标执行结果。
在本申请的一个实施例中,基于前述方案,所述生成模块,具体配置为:若所述差异类型为变化型类型,则对所述多个执行结果进行计算得到计算结果,并将所述计算结果作为针对所述目标交易的目标执行结果;若所述差异类型为随机型类型,则从所述多个执行结果中选择一个执行结果,并将所选择的执行结果作为针对所述目标交易的目标执行结果。
在本申请的一个实施例中,基于前述方案,所述生成模块,具体配置为:获取所述目标交易对应的执行结果误差范围区间;若所述多个执行结果均位于所述执行结果误差范围区间内,则对所述多个执行结果进行求取平均计算,得到平均值结果。
在本申请的一个实施例中,基于前述方案,所述生成模块,具体配置为:获取所述目标交易的哈希数据和所述区块链系统中共识节点的数量;基于所获取到的哈希数据和数量进行计算,得到计算结果;基于所得到的计算结果从所述多个执行结果中选择一个执行结果。
在本申请的一个实施例中,基于前述方案,所述生成模块,具体配置为:获取已上链的最新区块的哈希数据和所述区块链系统中共识节点的数量; 基于所获取到的哈希数据和数量进行计算,得到计算结果;基于所得到的计算结果从所述多个执行结果中选择一个执行结果。
在本申请的一个实施例中,基于前述方案,所述生成模块,具体配置为:对所获取到的哈希数据和所述数量进行求商取余运算,得到余数;从所述区块链系统含有的共识节点中确定与所述余数相匹配的共识节点;从所述多个执行结果中选择与所确定的共识节点对应的执行结果。
在本申请的一个实施例中,基于前述方案,所述区块链系统中的共识节点为多个;所述装置还包括:验证模块,配置为对各个共识节点进行验证;检测模块,配置为若对所述各个共识节点均验证通过,则检测所述多个执行结果之间的差异情况。
在本申请的一个实施例中,基于前述方案,所述验证模块,具体配置为:针对每个共识节点,生成所述共识节点的签名数据;若所生成的签名数据与所述共识节点所发送的签名数据相匹配,则得到用于表征所述共识节点验证通过的验证结果;若所生成的签名数据与所述共识节点所发送的签名数据不匹配,则得到用于表征所述共识节点验证未通过的验证结果。
在本申请的一个实施例中,基于前述方案,所述区块链系统中的共识节点为多个;所述装置还包括:接收模块,配置为接收各个共识节点发送的目标执行结果;上链模块,配置为若检测到相同的目标执行结果的数量达到指定数量,则对所述目标交易进行上链处理。
在本申请的一个实施例中,基于前述方案,所述上链模块,具体配置为:将所述目标执行结果和所述多个执行结果进行关联,生成待上链数据;将所述待上链数据存储到本地区块链上。
在本申请的一个实施例中,基于前述方案,所述第二获取模块或所述生成模块,具体配置为:获取所述目标交易对应的控制脚本文件;调用所述控制脚本文件,以通过所述控制脚本文件获取执行所述目标交易所需使用的本地环境信息,并基于所述本地环境信息和所述多个执行结果,生成针对所述目标交易的目标执行结果。
第三方面,本申请实施例提供了一种电子设备,包括一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如上所述的基于区块链的交易上链方法。
第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的基于区块链的交易上链方法。
第五方面,本申请实施例提供了一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现如上所述的基于区块链的交易上链方法。
在本申请的实施例提供的技术方案中:
通过获取区块链系统中各个共识节点基于本地环境执行目标交易所生成的执行结果,并在检测到所获取到的多个执行结果之间存在差异时,基于多个执行结果和执行目标交易所需使用的本地环境信息生成针对目标交易的目标执行结果,进而基于该目标执行结果进行共识,以实现对目标交易的上链处理。
也即,本申请技术方案在本地环境影响的情况下,通过基于多个执行结果重新生成目标交易对应的目标执行结果,进而继续针对目标执行结果的共识过程,以完成目标交易的上链处理,避免了相关技术中因本地环境影响而直接判定为共识失败的现象,由此提升了共识效率,保证了目标交易的成功上链,并且在极大程度上提升了区块链系统的性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
图1是区块链网络的结构示意图。
图2是区块链中各区块的连接关系示意图。
图3是可以应用本申请实施例的技术方案的示例性实施环境的示意图。
图4是本申请的一示例性实施例示出的基于区块链的交易上链方法的流程图。
图5是本申请的另一示例性实施例示出的基于区块链的交易上链方法的流程图。
图6是本申请的另一示例性实施例示出的基于区块链的交易上链方法的流程图。
图7是本申请的另一示例性实施例示出的基于区块链的交易上链方法的流程图。
图8是本申请的另一示例性实施例示出的基于区块链的交易上链方法的流程图。
图9是可以应用本申请实施例的技术方案的示例性实施环境的示意图。
图10是本申请的另一示例性实施例示出的基于区块链的交易上链方法的流程图。
图11是本申请的另一示例性实施例示出的基于区块链的交易上链方法的流程图。
图12是本申请的另一示例性实施例示出的基于区块链的交易上链方法的流程图。
图13是本申请的另一示例性实施例示出的基于区块链的交易上链方法的流程图。
图14是本申请的一示例性实施例示出的基于区块链的交易上链装置的框图。
图15是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相同的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相同的装置和方法的例子。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
需要说明的是,在本申请中提及的“多个”是指两个或者两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在介绍本申请实施例的技术方案之前,首先对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
区块链:信息技术领域的一种分布式账本技术,一般由共识、交易区块和状态数据存储、密码学身份安全等内容构成,由于账本是分布式存储的,而且区块是经过共识的,所以具有不可篡改、可追溯、共同维护等特征。
智能合约:一种旨在以信息化方式传播、验证或执行合同的计算机协议,其允许在没有第三方的情况下进行可信交易。智能合约的具体形式为部署在区块链上完成特定功能的代码。
交易池:区块链暂存区块交易的池子,每一笔待出块的交易都会先到达交易池进行暂存,并通过一定的优先级顺序进行排序。在生成新区块时从交易池中按照顺序获取交易,之后区块链对交易进行执行并验证,最终确定所有节点验证通过之后将区块中的交易从交易池中删除。
数字证书:简称证书,在英特网上唯一地标识人员和资源的电子文件。证书使两个实体之间能够进行安全、保密的通信。证书有很多种类型,例如个人证书(个人使用)和服务器证书(用于通过安全套接字层技术在服务器和客户机之间建立安全会话),其中服务器证书包括区块链节点证书。
签名数据:又称数字签名或公钥数字签名,是信息的发送者产生的他人无法伪造的一段数字串,是对信息的发送者发送信息真实性的一个有效证明。
签名验签:接收方需要确认自己接收到的密文文件是否真的是发送方发送过来的,需要确认是否被篡改(不同于解密),验签最终是根据报文摘要来进行对比。其中验签可以使用鉴权算法,鉴权算法是指验证用户签名正确性的相关密码学算法。
读写集:在执行该交易的过程中所操作的变量。读写集包括读集(Rset)和写集(Wset),读集包括执行该交易的过程中需要读取的变量,写集包括执行交易的过程中需要写入的变量。实践中,如果两个交易所访问的变量没有读写冲突,则其中一个交易的执行导致的世界状态的改变不会影响另一个交易的执行,即这两个交易可以并行执行;如果两个交易所访问的变量有读写冲突,则这两个交易只能串行执行。
不确定性写集:因执行时间、地点等存在精确性相关的写集称为误差不确定性写集。因使用随机算法等存在随机性相关的写集称为随机不确定性写集。其中误差不确定性写集和随机不确定性写集统称为不确定性写集。
其次,详细介绍本申请实施例中用到的区块链技术。
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块(即区块),每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
如上,区块链本质上是一个去中心化的数据库,而区块链是由区块链网络中的节点共同维护的。例如请参阅图1,在图1所示的区块链网络中,可以包括多个节点101,多个节点101可以是形成区块链网络的各个客户端。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该区块链网络内的共享数据。为了保证区块链网络内的信息互通,区块链网络中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如当区块链网络中的任意节点接收到输入信息时,区块链网络中的其它节点便根据共识算法获取该输入信息,将该输入信息作为共享数据进行存储,使得区块链网络中全部节点上存储的数据均一致。
对于区块链网络中的每个节点,均具有与其对应的节点标识,而且区块链网络中的每个节点均可以存储有其它节点的节点标识,以便后续根据其它节点的节点标识,将生成的区块广播至区块链网络中的其它节点。每个节点中可维护一个节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(InternetProtocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息。
区块链网络中的每个节点均存储一条相同的区块链。区块链由多个区块组成,请参阅图2,区块链由多个区块组成,创始块中包括区块头和区块体,区块头中存储有输入信息特征值、版本号、时间戳和难度值等,区块体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值等,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
区块链网络中的每个节点可以是服务器,也可以是终端设备。其中服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算(Cloud Computing)、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和智能平台等基础云计算服务的云服务器。其中终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。各个节点之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
前述的云计算是指IT基础设施的交付和使用模式,具体指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(ParallelComputing)、效用计算(Utility Computing)、网络存储(Network StorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
前述的区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(Private Blockchain)和联盟链(Consortium Blockchain)。此外,还可以有上述多种类型的结合,例如私有链+联盟链、联盟链+公有链等。
其中,去中心化程度最高的是公有链。其中,加入公有链的参与者(也可称为区块链网络中的节点)可以读取链上的数据记录、参与交易、以及竞争新区块的记账权等。而且,各节点可自由加入或者退出区块链网络,并进行相关操作。
私有链则相反,区块链网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,其对节点具有严格限制且节点数量较少。这种类型的区块链更适合于特定机构内部使用。
联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链网络运行。
前述的区块链部署有智能合约。可以理解的是,交易是用户对部署在区块链上智能合约的一次操作请求。交易由用户发起,从用户的客户端发往区块链网络中的节点(称为主节点),主节点接收到交易后,根据交易指定的合约地址和接口去调用相应的智能合约,之后将交易通知给其他节点(称为从节点),从节点接收到交易后,根据交易指定的合约地址和接口去调用相应的智能合约。
其中,主节点将交易通知给从节点涉及到区块链技术中的共识机制,共识机制是保证区块链网络正常运行的基础。所谓共识即是达成一致的意思,区块链网络中的每个节点各自存储有一份分布式账本(即区块链),区块链网络的共识过程就是让各个节点之间的分布式账本保持一致的过程。其中,区块链网络中的全部或部分节点可参与到区块链网络的共识过程中,区块链网络的共识过程通常是基于共识算法来实现,参与共识的各个节点通过运行共识算法来执行共识过程的相应流程。可选的共识算法比如可以有PoW(Proof ofWork,工作量证明机制)、PoS(Proof of Stake,权益证明)、DPoS(Delegated Proof ofStake,委托权益证明)、PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错系统)等。
通常,在区块链的某个区块高度需要进行一轮或多轮共识过程,才能在参与共识的各个节点之间达成一致。区块高度用于表示连接在区块链上的区块数量,区块高度是区块的标志符,可用来指示区块在区块链中的位置,比如区块链中创始区块的区块高度默认为0,创始区块之后的第一个区块的区块高度为1(该第一个区块可以简称为区块1),创始区块之后的第二个区块的区块高度为2(该第二个区块可以简称为区块2),以此类推。
举例说明,例如某条区块链的当前区块的区块高度为300(简称为区块300),这表示已经有300个区块被堆叠在创始区块之上了,即从创始区块到区块300之间形成的区块链上的区块数量为301个。在区块链的某个区块高度进行的共识过程是指在区块链处于该某个区块高度时,对区块链网络中待上链的区块进行共识的过程,如果该待上链的区块共识成功,则该区块被添加至区块链上,区块链的区块高度则+1。例如:在区块链的区块高度10的共识过程就是指在区块链处于区块高度10时,对区块链网络中待上链的区块进行共识的过程,如果该区块共识成功,则该区块被添加至区块链上而使得区块链的区块高度由10变为11。
通常而言,一轮共识过程按照执行顺序可依次分为三个共识阶段,即提案阶段(Pre-prepare)、预投票阶段(Prepare)和预提交阶段(Commit)。参与同一轮共识过程的多个节点中包括提案节点和非提案节点两种类型。所谓提案节点是指由参与共识的多个节点通过选举产生的一个节点,作为提案节点的节点既负责在本轮共识过程的提案阶段产生待共识区块,并将该待共识区块广播给参与共识的其他节点进行共识处理;同时也负责对该待共识区块进行共识处理。而非提案节点则只对待共识区块进行共识处理。通常提案节点为主节点,非提案节点为从节点,同时提案节点和非提案节点统称为共识节点。
共识处理包括预投票处理和预提交处理,预投票处理发生在预投票阶段,而预提交处理发生在预提交阶段。预投票处理是指是否同意对待共识区块进行预投票的过程,如果同意对待共识区块进行预投票,表示同意将该区块添加至区块链上。预提交处理是指是否同意对待共识区块进行预提交的过程,如果同意对待共识区块进行预提交,表示确认同意将该区块添加至区块链。在同一区块高度进行的多轮共识过程中,对于不同轮次的共识过程,参与共识的节点可能会发生变化,即每轮参与共识过程的节点可能会发生变化,并且提案节点可能会发生变化,待共识区块也可能会发生变化。
可以理解的是,通常不同共识节点为不同的硬件设备,例如每个共识节点分别对应一个服务器,因而存在着不同共识节点的本地环境有所区别的情况,其中本地环境会涉及到时钟、算法等。
相关技术中当因不同共识节点的本地环境不同,导致调用智能合约以完成交易所得到的交易执行结果不同时,针对该交易的共识会判定为失败,之后会进入针对该交易的下一轮共识,由此,在极大程度上降低了共识效率。
因此,为了提升共识效率,以保证交易的成功上链,本申请提供了一种基于区块链的交易上链方案。请参阅图3,图3是本申请涉及的一种实施环境的示意图。该实施环境主要包括共识节点301、共识节点302、共识节点303和共识节点304。可以理解的是,共识节点301、共识节点302、共识节点303和共识节点304之间通过网络通信连接,网络可以包括各种连接类型,例如无线通信链路、有线以及光纤电缆等,其中:
示例性地,共识节点301可以是提供各种服务的服务器;其中提供各种服务的服务器包括但不限于独立的物理服务器,多个物理服务器构成的服务器集群或者分布式系统,提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络以及大数据和人工智能平台等基础云计算服务的云服务器。共识节点301还可以是终端设备;其中终端设备包括但不限于智能手机、平板、笔记本电脑、计算机、智能语音交互设备、智能家电、智能穿戴设备、飞行器等。
示例性地,共识节点302、共识节点303和共识节点304可以是终端设备;其中终端设备包括但不限于智能手机、平板、笔记本电脑、计算机、智能语音交互设备、智能家电、智能穿戴设备、飞行器等。共识节点302、共识节点303和共识节点304还可以是提供各种服务的服务器;其中提供各种服务的服务器包括但不限于独立的物理服务器,多个物理服务器构成的服务器集群或者分布式系统,提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络以及大数据和人工智能平台等基础云计算服务的云服务器。
需要说明的是,图3中的共识节点的数目仅仅是示意性的,根据实际需要,可以具有任意数量的共识节点。
在本申请的一个实施例中,交易处理方法由每个共识节点(即共识节点301、共识节点302、共识节点303和共识节点304)执行。
示例性地,任一共识节点获取区块链系统中所有共识节点针对目标交易的执行结果,得到多个执行结果,执行结果是共识节点基于本地环境执行目标交易产生的;若检测到多个执行结果之间存在差异,则获取执行目标交易所需使用的本地环境信息;之后基于本地环境信息和多个执行结果,生成针对目标交易的目标执行结果;之后向区块链系统中其他共识节点发送目标执行结果,以使其他共识节点在检测到相同的目标执行结果的数量达到指定数量后,对目标交易进行上链处理。
需要说明的是,在本申请的具体实施方式中,涉及到用户相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
以下对本申请实施例的技术方案的各种实现细节进行详细阐述:
请参阅图4,图4是本申请的一个实施例示出的基于区块链的交易上链方法的流程图,该基于区块链的交易上链方法可以由任一共识节点来执行。如图4所示,该基于区块链的交易上链方法至少包括S401至S404,详细介绍如下:
S401,获取区块链系统中的共识节点针对目标交易的执行结果,得到多个执行结果,执行结果是共识节点基于本地环境执行目标交易产生的。
本申请实施例中目标交易是指任一个交易,例如在时刻t1区块链系统接收到针对交易tx1的执行请求,则交易tx1可以称为目标交易,在时刻t2区块链系统接收到针对交易tx2的执行请求,则交易tx2可以称为目标交易。
在本申请的一个实施例中,目标交易也可以是指某个/些特定类型的交易,例如与虚拟资源相关的交易等。在实际应用中,目标交易可以根据具体应用场景进行灵活调整。
可以理解的是,如前述实施例介绍,区块链系统中的共识节点在本地环境中部署有智能合约,进而可以通过调用智能合约执行目标交易以生成目标交易的执行结果。
举例说明,例如针对共识节点301而言,其在本地环境部署有智能合约A,则其调用智能合约A执行目标交易tx1,从而得到目标交易tx1的执行结果r11;针对共识节点302而言,其在本地环境部署有智能合约A,则其调用智能合约A执行目标交易tx1,从而得到目标交易tx1的执行结果r12;针对共识节点303而言,其在本地环境部署有智能合约A,则其调用智能合约A执行目标交易tx1,从而得到目标交易tx1的执行结果r13;针对共识节点304而言,其在本地环境部署有智能合约A,则其调用智能合约A执行目标交易tx1,从而得到目标交易tx1的执行结果r14。
那么当本申请方法的执行主体为共识节点301时,其获取到的是共识节点301侧针对目标交易tx1的执行结果r11、共识节点302侧针对目标交易tx1的执行结果r12、共识节点303侧针对目标交易tx1的执行结果r13,以及共识节点304侧针对目标交易tx1的执行结果r14。
示例性地,共识节点301获取到共识节点302侧针对目标交易tx1的执行结果r12,可以是共识节点301向共识节点302发送获取请求,相应地,共识节点302接收到共识节点301发送的获取请求,将目标交易tx1的执行结果r12发送给共识节点301;或者可以是共识节点302在得到目标交易tx1的执行结果r12后,向其他共识节点(即共识节点301、共识节点303和共识节点304)广播的。
示例性地,共识节点301获取到共识节点303侧针对目标交易tx1的执行结果r13,可以是共识节点301向共识节点303发送获取请求,相应地,共识节点303接收到共识节点301发送的获取请求,将目标交易tx1的执行结果r13发送给共识节点301;或者可以是共识节点303在得到目标交易tx1的执行结果r13后,向其他共识节点(即共识节点301、共识节点302和共识节点304)广播的。
示例性地,共识节点301获取到共识节点304侧针对目标交易tx1的执行结果r14,可以是共识节点301向共识节点304发送获取请求,相应地,共识节点304接收到共识节点301发送的获取请求,将目标交易tx1的执行结果r13发送给共识节点301;或者可以是共识节点304在得到目标交易tx1的执行结果r14后,向其他共识节点(即共识节点301、共识节点302和共识节点303)广播的。
其中,当本申请方法的执行主体为共识节点302、共识节点303和共识节点304时,以此类推即可,这里不再赘述。
S402,若检测到多个执行结果之间存在差异,则获取执行目标交易所需使用的本地环境信息。
本申请实施例中共识节点检测到多个执行结果之间存在差异,之后可以获取执行目标交易所需使用的本地环境信息。
本申请实施例中执行目标交易所需使用的本地环境信息包括但不限于涉及精确性相关信息如时钟、定位等、涉及随机性相关信息如随机算法等。
S403,基于本地环境信息和多个执行结果,生成针对目标交易的目标执行结果。
本申请实施例中共识节点获取到执行目标交易所需使用的本地环境信息,之后可以基于本地环境信息和多个执行结果,生成针对目标交易的目标执行结果。
也即,本申请实施例中获取到区块链系统中的共识节点针对目标交易的执行结果,得到多个执行结果,之后可以检测多个执行结果之间的差异情况,进而基于检测情况做相应处理。
可以理解的是,由于多个执行结果是各个共识节点基于本地环境执行目标交易所产生的,又因各个共识节点的本地环境不同,因此,多个执行结果之间可能会出现存在差异的情况。
本申请实施例中基于检测情况做相应处理包括以下两种情况:
情况1,如果检测到多个执行结果之间存在差异,则可以获取执行目标交易所需使用的本地环境信息,并基于本地环境信息和多个执行结果生成针对目标交易的目标执行结果,以避免相关技术中直接判定该目标交易共识失败的现象。
其中情况1中目标执行结果是指基于多个执行结果所得到的执行结果,其作为新的共识对象。
举例说明,例如承接前述示例,请参阅表1,当本申请方法的执行主体为共识节点301时,共识节点301基于执行结果r11、执行结果r12、执行结果r13和执行结果r14可以得到目标执行结果R1。同理,当本申请方法的执行主体为共识节点302时,共识节点302基于执行结果r11、执行结果r12、执行结果r13和执行结果r14可以得到目标执行结果R2。同理,当本申请方法的执行主体为共识节点303时,共识节点303基于执行结果r11、执行结果r12、执行结果r13和执行结果r14可以得到目标执行结果R3。同理,当本申请方法的执行主体为共识节点304时,共识节点304基于执行结果r11、执行结果r12、执行结果r13和执行结果r14可以得到目标执行结果R4。
情况2,如果检测到多个执行结果之间不存在差异,则可以对目标交易进行上链处理。
S404,向区块链系统中的共识节点发送目标执行结果,以使共识节点在检测到相同的目标执行结果的数量达到指定数量后,对目标交易进行上链处理。
本申请实施例中在基于多个执行结果生成针对目标交易的目标执行结果(即情况1)下,可以向区块链系统中的共识节点发送目标执行结果;相应地,区块链系统中的共识节点接收到目标执行结果,并在检测到相同的目标执行结果的数量达到指定数量后对目标交易进行上链处理。
举例说明,例如承接前述示例,当本申请方法的执行主体为共识节点301时,共识节点301分别向共识节点302、共识节点303和共识节点304发送目标执行结果R1。同理,当本申请方法的执行主体为共识节点302时,共识节点302分别向共识节点301、共识节点303和共识节点304发送目标执行结果R2。同理,当本申请方法的执行主体为共识节点303时,共识节点303分别向共识节点301、共识节点302和共识节点304发送目标执行结果R3。同理,当本申请方法的执行主体为共识节点304时,共识节点304分别向共识节点301、共识节点302和共识节点303发送目标执行结果R4。
本申请实施例中在本地环境影响的情况下,通过基于多个执行结果重新生成目标交易对应的目标执行结果,进而继续针对目标执行结果的共识过程,以完成目标交易的上链处理,避免了相关技术中因本地环境影响而直接判定为共识失败的现象,由此提升了共识效率,保证了目标交易的成功上链,并且在极大程度上提升了区块链系统的性能。
在本申请的一个实施例中,提供了另一种基于区块链的交易上链方法,该基于区块链的交易上链方法可以由任一共识节点来执行。如图5所示,该基于区块链的交易上链方法可以包括S501至S503、S401、S404。
S501至S503详细介绍如下:
S501,基于目标交易的交易类型确定执行目标交易所需使用的本地环境信息。
本申请实施例中共识节点检测到多个执行结果之间存在差异,之后可以基于目标交易的交易类型确定执行目标交易所需使用的本地环境信息。
本申请实施例中目标交易的交易类型是指由目标交易本身属性特征所确定出的交易类型,通过目标交易的交易类型可以确定出执行目标交易所需使用的本地环境信息。
示例性地,通过目标交易的交易类型确定出执行目标交易涉及到使用本地环境的时钟、定位等存在一定精确性的信息。
示例性地,通过目标交易的交易类型确定出执行目标交易涉及到使用本地环境的随机数算法等存在一定随机性的信息。
S502,基于本地环境信息确定目标交易所属的差异类型。
本申请实施例中共识节点确定出执行目标交易所需使用的本地环境信息,之后可以基于所确定出的本地环境信息确定目标交易所属的差异类型。
示例性地,如果所确定出的相关信息涉及到精确性相关信息如时钟、定位等,可以确定出目标交易属于易发生变化的差异类型(简称变化型类型)。
示例性地,如果所确定出的相关信息涉及到随机性相关信息如随机算法等,可以确定出目标交易属于随机性的差异类型(简称随机型类型)。
S503,基于差异类型和多个执行结果,生成针对目标交易的目标执行结果。
本申请实施例中共识节点确定出目标交易所属的差异类型,之后可以基于目标交易所属的差异类型和多个执行结果,生成针对目标交易的目标执行结果。
在本申请的一个实施例中,S503中基于差异类型和多个执行结果,生成针对目标交易的目标执行结果的过程,可以包括:
若差异类型为变化型类型,则对多个执行结果进行计算得到计算结果,并将计算结果作为针对目标交易的目标执行结果;
若差异类型为随机型类型,则从多个执行结果中选择一个执行结果,并将所选择的执行结果作为针对目标交易的目标执行结果。
也即,可选实施例中基于差异类型和多个执行结果,生成针对目标交易的目标执行结果包括以下两种情况:
情况1,如果差异类型为变化型类型,则采用指定计算算法对多个执行结果进行相应计算,所计算得到的计算结果作为针对目标交易的目标执行结果。
在本申请的一个实施例中,对多个执行结果进行计算得到计算结果的过程,可以包括:
获取目标交易对应的执行结果误差范围区间;
若多个执行结果均位于执行结果误差范围区间内,则对多个执行结果进行求取平均计算,得到平均值结果。
也即,可选实施例中在采用指定计算算法对多个执行结果进行计算之前,先要获取目标交易对应的执行结果误差范围区间,并检测各个执行结果是否均位于执行结果误差范围区间内,进而基于检测结果做相应处理。
其中,如果检测到各个执行结果均位于执行结果误差范围区间内,则表征各个执行结果是可信赖的;因此,此时可以采用指定计算算法对多个执行结果进行计算。
其中,如果检测到各个执行结果中存在一个或多个未位于执行结果误差范围区间内,则表征该未位于执行结果误差范围区间内的一个或多个执行结果不可信赖;因此,此时可以结束流程,即无需采用指定计算算法对多个执行结果进行计算。
通过实施可选实施例,在明确各个执行结果的准确性较高的情况下,再进行相应计算,节省计算资源,避免了直接计算所造成的计算资源浪费的现象。
其中,可选实施例中指定计算算法可以是求取平均算法,即对多个执行结果进行求取平均计算,从而将得到的平均值结果作为针对目标交易的目标执行结果。
举例说明,例如承接前述示例,以共识节点301为例,目标执行结果R1=(r11+r12+r13+r14)/4。
示例性地,还可以为各个执行结果分配权重,例如目标执行结果R1=( k11×r11+k12×r12+ k13×r13+ k14×r14)/4,其中k11=0.1,k12=k13=k14=0.3,即在共识节点301侧自身计算得到的目标执行结果r11的权重较小,而接收得到的目标执行结果r12、目标执行结果r13和目标执行结果r14的权重较大。其中,执行结果对应的权重可以通过共识节点301、共识节点302、共识节点303和共识节点304共同协商确定。
可以理解的是,在实际应用中,指定计算算法可以根据具体应用场景做灵活调整。
通过实施可选实施例,采用求取平均算法可以简便快捷地得到目标交易的目标执行结果,流程简单且更贴合场景,适用场景广泛。
情况2,如果差异类型为随机型类型,则采用指定选择算法从多个执行结果中选择一个执行结果,所选择得到的执行结果作为针对目标交易的目标执行结果。
在本申请的一个实施例中,从多个执行结果中选择一个执行结果的过程,可以包括:
获取目标交易的哈希数据和区块链系统中共识节点的数量;
基于所获取到的哈希数据和数量进行计算,得到计算结果;
基于所得到的计算结果从多个执行结果中选择一个执行结果。
也即,可选实施例中共识节点可以获取该目标交易的哈希数据和区块链系统中共识节点的数量,之后基于所获取到的目标交易的哈希数据和区块链系统中共识节点的数量进行计算,并基于所得到的计算结果从多个执行结果中选择一个执行结果。简言之,共识节点是基于目标交易的哈希数据和区块链系统中共识节点的数量从多个执行结果中选择一个执行结果。
通过实施可选实施例,由于目标交易的哈希数据通常可信赖,因此,借助于目标交易的哈希数据和区块链系统中共识节点的数量可以简便准确地得到目标交易执行结果。
在本申请的一个实施例中,从多个执行结果中选择一个执行结果的过程,可以包括:
获取已上链的最新区块的哈希数据和区块链系统中共识节点的数量;
基于所获取到的哈希数据和数量进行计算,得到计算结果;
基于所得到的计算结果从多个执行结果中选择一个执行结果。
也即,可选实施例中共识节点可以获取已上链的最新区块的哈希数据和区块链系统中共识节点的数量,之后基于所获取到的已上链的最新区块的哈希数据和区块链系统中共识节点的数量进行计算,并基于所得到的计算结果从多个执行结果中选择一个执行结果。简言之,共识节点是基于已上链的最新区块的哈希数据和区块链系统中共识节点的数量从多个执行结果中选择一个执行结果。
通过实施可选实施例,由于已上链的最新区块的哈希数据通常可信赖,因此,借助于已上链的最新区块的哈希数据和区块链系统中共识节点的数量可以简便准确地得到目标交易执行结果。
在本申请的一个实施例中,基于所获取到的哈希数据和数量进行计算,得到计算结果的过程,可以包括:
对所获取到的哈希数据和数量进行求商取余运算,得到余数;
基于所得到的计算结果从多个执行结果中选择一个执行结果,包括:
从区块链系统含有的共识节点中确定与余数相匹配的共识节点;
从多个执行结果中选择与所确定的共识节点对应的执行结果。
也即,可选实施例中共识节点可以将所获取到的哈希数据(可以是目标交易的哈希数据或者已上链的最新区块的哈希数据)和区块链系统中共识节点的数量进行求商取余运算得到余数,之后从区块链系统含有的共识节点中确定与余数相匹配的共识节点,并从多个执行结果中选择与所确定的共识节点对应的执行结果。
其中,可选实施例中区块链系统含有的共识节点对应有编号。
举例说明,例如承接前述示例,共识节点301对应编号0,共识节点302对应编号1,共识节点303对应编号2,共识节点304对应编号3,那么当得到余数时,可以从区块链系统含有的共识节点中确定与余数相匹配的编号对应的共识节点。其中,共识节点对应的编号可以通过共识节点301、共识节点302、共识节点303和共识节点304共同协商确定。
其中,可选实施例中指定选择算法可以是求商取余算法,即对所获取到的哈希数据和数量进行求商取余运算,从而将与得到的余数相匹配的共识节点的执行结果作为针对目标交易的目标执行结果。
举例说明,例如承接前述示例,用H表征所获取到的哈希数据,用N表征区块链系统中共识节点的数量,用Q表征余数,则Q=H mod N。设Q=0,明显地,此时相匹配的共识节点为共识节点301,则将共识节点301对应的执行结果k11作为针对目标交易的目标执行结果。
可以理解的是,在实际应用中,指定选择算法可以根据具体应用场景做灵活调整。
通过实施可选实施例,采用求商取余算法可以简便快捷地得到目标交易的目标执行结果,流程简单且更贴合场景,适用场景广泛。
需要说明的是,图5所示中S401、S404的详细介绍请参见图4所示的S401、S404,在此不再赘述。
本申请实施例中考虑到本地环境影响对应的差异类型,进而基于该差异类型所生成的针对目标交易的目标执行结果的准确性更高、针对性更强,适用于广泛的应用场景中。
在本申请的一个实施例中,提供了另一种基于区块链的交易上链方法,该基于区块链的交易上链方法可以由任一共识节点来执行。如图6所示,该基于区块链的交易上链方法在S401之后还可以包括S601至S602。
本申请实施例中区块链系统含有的共识节点为多个,如前述实施例示例,共识节点共有4个。
S601至S602详细介绍如下:
S601,对各个共识节点进行验证。
本申请实施例中得到区块链系统中各个共识节点针对目标交易的执行结果,之后可以对各个共识节点进行验证,并基于验证情况做相应处理。
本申请实施例中共识节点对各个共识节点进行验证是指对除自己之外的其他共识节点进行验证。
举例说明,例如承接前述示例,当本申请方法的执行主体为共识节点301时,其是对共识节点302、共识节点303和共识节点304进行验证。同理,当本申请方法的执行主体为共识节点302时,其是对共识节点301、共识节点303和共识节点304进行验证。同理,当本申请方法的执行主体为共识节点303时,其是对共识节点301、共识节点302和共识节点304进行验证。同理,当本申请方法的执行主体为共识节点304时,其是对共识节点301、共识节点302和共识节点303进行验证。
在本申请的一个实施例中,S601中对各个共识节点进行验证的过程,可以包括:
针对每个共识节点,生成共识节点的签名数据;
若所生成的签名数据与共识节点所发送的签名数据相匹配,则得到用于表征共识节点验证通过的验证结果;
若所生成的签名数据与共识节点所发送的签名数据不匹配,则得到用于表征共识节点验证未通过的验证结果。
也即,可选实施例中共识节点在进行对除自己之外的其他共识节点进行验证时,是借助于签名数据进行验证,具体地,是将自身所生成的签名数据与接收到的共识节点发送的签名数据进行匹配,如果自身所生成的签名数据与接收到的共识节点发送的签名数据相匹配,则对该共识节点的验证通过,如果自身所生成的签名数据与接收到的共识节点发送的签名数据不匹配,则对该共识节点的验证未通过。
举例说明,例如承接前述示例,以本申请方法的执行主体为共识节点301为例,共识节点301对共识节点302进行验证时,是生成共识节点302的签名数据,并将所生成的共识节点302的签名数据与共识节点302所发送的签名数据进行匹配,如果所生成的共识节点302的签名数据与共识节点302所发送的签名数据相匹配,则对共识节点302的验证通过,如果所生成的共识节点302的签名数据与共识节点302所发送的签名数据不匹配,则对共识节点302的验证未通过。同理,对共识节点303和共识节点304的验证过程类似,以此类推即可。
S602,若对各个共识节点均验证通过,则检测多个执行结果之间的差异情况。
本申请实施例中基于验证情况做相应处理包括以下两种情况:
情况1,对各个共识节点均验证通过,则表征各个共识节点的身份是可信赖的,即各个共识节点分别对应的执行结果是可信赖的,因而可以检测多个执行结果之间的差异情况。
情况2,多个共识节点中存在部分共识节点(包括一个或多个)未验证通过,则表征该部分共识节点的身份是不可信赖的,即该部分共识节点对应的执行结果是不可信赖的,因而可以返回身份验证失败结果给该部分共识节点,或者结束流程。
需要说明的是,图6所示中S401至S404的详细介绍请参见图4所示的S401至S404,在此不再赘述。
本申请实施例中在对各个共识节点验证通过后,才检测多个执行结果之间的差异情况,这样在多个执行结果处于可信赖的情况下才实施差异检测操作,保证了后续生成目标交易的目标执行结果的准确性,避免了因执行结果不可信赖的情况所导致的共识失败的现象,进一步提升了共识效率。
在本申请的一个实施例中,提供了另一种基于区块链的交易上链方法,该基于区块链的交易上链方法可以由任一共识节点来执行。如图7所示,该基于区块链的交易上链方法在S404之后还可以包括S701至S702。
本申请实施例中区块链系统含有的共识节点为多个,如前述实施例示例,共识节点共有4个。
S701至S702详细介绍如下:
S701,接收各个共识节点发送的目标执行结果。
本申请实施例中向区块链系统中各个共识节点发送目标执行结果,之后可以接收各个共识节点发送的目标执行结果,并基于多个目标执行结果做相应处理。
本申请实施例中共识节点接收各个共识节点发送的目标执行结果是指接收除自己之外的其他共识节点发送的目标执行结果。
S702,若检测到相同的目标执行结果的数量达到指定数量,则对目标交易进行上链处理。
本申请实施例中基于多个目标执行结果做相应处理包括以下两种情况:
情况1,如果检测到相同的目标执行结果的数量达到指定数量,则表征对该目标交易的共识通过,因而可以对该目标交易进行上链处理。
情况2,如果检测到相同的目标执行结果的数量未达到指定数量,则表征对该目标交易的共识未通过,因而可以返回共识失败信息,或者结束流程。
举例说明,例如承接前述示例,当本申请方法的执行主体为共识节点301时,那么针对共识节点301而言,请参阅表2,其自身计算得到目标执行结果R1,并接收得到目标执行结果R2、目标执行结果R3和目标执行结果R4,因此,当共识节点301检测到目标执行结果R1、目标执行结果R2、目标执行结果R3和目标执行结果R4相同的数量大于指定数量,则可以对目标交易进行上链处理。
当本申请方法的执行主体为共识节点302时,那么针对共识节点302而言,请参阅表3,其自身计算得到目标执行结果R2,并接收得到目标执行结果R1、目标执行结果R3和目标执行结果R4,因此,当共识节点302检测到目标执行结果R1、目标执行结果R2、目标执行结果R3和目标执行结果R4相同的数量大于指定数量,则可以对目标交易进行上链处理。
当本申请方法的执行主体为共识节点303时,那么针对共识节点303而言,请参阅表4,其自身计算得到目标执行结果R3,并接收得到目标执行结果R1、目标执行结果R2和目标执行结果R4,因此,当共识节点303检测到目标执行结果R1、目标执行结果R2、目标执行结果R3和目标执行结果R4相同的数量大于指定数量,则可以对目标交易进行上链处理。
当本申请方法的执行主体为共识节点304时,那么针对共识节点304而言,请参阅表5,其自身计算得到目标执行结果R4,并接收得到目标执行结果R1、目标执行结果R2和目标执行结果R3,因此,当共识节点304检测到目标执行结果R1、目标执行结果R2、目标执行结果R3和目标执行结果R4相同的数量大于指定数量,则可以对目标交易进行上链处理。
在本申请的一个实施例中,S702中对目标交易进行上链处理的过程,可以包括:
将目标执行结果和多个执行结果进行关联,生成待上链数据;
将待上链数据存储到本地区块链上。
也即,可选实施例中共识节点是将目标执行结果和多个执行结果关联存储到本地区块链上。
举例说明,例如承接前述示例,当本申请方法的执行主体为共识节点301时,其将目标执行结果R1、执行结果r11、执行结果r12、执行结果r13和执行结果r14关联存储到本地区块链上。同理,当本申请方法的执行主体为共识节点302时,其将目标执行结果R2、执行结果r11、执行结果r12、执行结果r13和执行结果r14关联存储到本地区块链上。同理,当本申请方法的执行主体为共识节点303时,其将目标执行结果R3、执行结果r11、执行结果r12、执行结果r13和执行结果r14关联存储到本地区块链上。同理,当本申请方法的执行主体为共识节点304时,其将目标执行结果R4、执行结果r11、执行结果r12、执行结果r13和执行结果r14关联存储到本地区块链上。
通过实施可选实施例,将目标执行结果和多个执行结果关联存储到区块链上,便于后期的追溯管理等。
需要说明的是,图7所示中S401至S404的详细介绍请参见图4所示的S401至S404,在此不再赘述。
本申请实施例中当检测到相同的目标执行结果的数量达到指定数量,判定针对目标交易的共识通过,由此实现对目标交易的上链处理,也即,即使在本地环境影响的情况下,目标交易也能成功上链。
在本申请的一个实施例中,提供了另一种基于区块链的交易上链方法,该基于区块链的交易上链方法可以由任一共识节点来执行。如图8所示,该基于区块链的交易上链方法可以包括S801至S802、S401、S404。
S801至S802详细介绍如下:
S801,获取目标交易对应的控制脚本文件。
本申请实施例中得到多个执行结果后,当有生成交易的目标执行结果的需求时,可以获取目标交易对应的控制脚本文件。
本申请实施例中控制脚本文件是指软件开发工程师所开发的一个用于生成目标交易对应的目标执行结果的控制服务,并在开发完成之后将其安装于共识节点中。
在本申请的一个实施例中,不同交易类型的目标交易可以对应不同控制脚本文件,由此提升目标交易对应的目标执行结果的生成灵活性,使得控制脚本文件和目标交易更加匹配,能够适用于更加广泛的应用场景中。
S802,调用控制脚本文件,以通过控制脚本文件获取执行目标交易所需使用的本地环境信息,并基于本地环境信息和多个执行结果,生成针对目标交易的目标执行结果。
本申请实施例中通过调用控制脚本文件,即可实现生成针对目标交易的目标执行结果。其中在调用控制脚本文件时,是将本地环境信息和多个执行结果作为传参,以便控制脚本文件根据本地环境信息和多个执行结果触发执行。
需要说明的是,图8所示中S401、S404的详细介绍请参见图4所示的S401、S404,在此不再赘述。
本申请实施例中通过控制脚本文件的执行实现目标交易的目标执行结果的生成,生成效率和准确性更高,且也更加智能化,适用于广泛的应用场景中。
以下对本申请实施例的一个具体场景进行详细说明:
请参阅图9,本申请实施例中区块链节点(即前述实施例中任一的共识节点)主要包括:
网络模块,主要负责与区块链节点和用户进行通信,接收用户交易并提案区块,接收其他节点的区块并进行验证。
鉴权模块,主要负责存储区块链节点证书、对用户和区块链节点身份进行合法性校验。
示例性地,鉴权模块包括:区块链节点证书和鉴权算法。
共识模块,主要负责对各个区块链节点的区块进行共识。
示例性地,共识模块负责的共识是PBFT共识,其中PBFT包括:Pre-prepare模块,主要负责PBFT共识的Pre-prepare阶段;Prepare模块,主要负责PBFT共识的Prepare阶段;Commit模块,主要负责PBFT共识的Commit阶段。
虚拟机模块,主要负责初始化智能合约源码与执行智能合约。
示例性地,虚拟机模块包括:
交易调度模块,主要负责调度区块的交易到不同的合约进程中进行执行。
合约仓库,主要负责保存所有已安装的智能合约。
合约进程,执行智能合约所产生的合约进程。
交易读写集,交易所产生的对区块链状态数据的读和写的集合。
确定性控制模块,主要负责对不确定读写集进行确定性化。
存储模块,主要负责存储区块链系统中的所有数据。
示例性地,存储模块包括:
区块账本,主要负责存储所有区块源数据。
状态数据,主要存储所有状态数据。
本申请实施例中区块链节点通过模块之间的配合实现高效稳定地运行,交易处理效率高,合理性高。
首先,介绍整个框架对应的流程图。
基于图9所示的实施环境,请参阅图10,图10是本申请的一个实施例示出的基于区块链的交易上链方法的流程图。如图10所示,该基于区块链的交易上链方法至少包括S1001至S1028,详细介绍如下:
S1001,交易发起方在本地发起新的区块链交易。
示例性地,交易发起方可以是用户,也可以是智能设备等。
S1002,交易发起方将区块链交易中的智能合约名称、方法和相应参数进行打包。
S1003,交易发起方对前述打包内容进行签名,生成签名数据。
S1004,交易发起方基于前述打包内容和签名数据生成交易请求,并将交易请求发送到区块链系统上。
S1005,区块链节点的网络模块接收交易发起方发送的交易请求。
S1006,区块链节点的鉴权模块基于交易请求中的签名数据进行证书验证。
S1007,检测证书验证是否通过?如果通过,则转到S1008,如果未通过,则转到S1010。
S1008,区块链节点的鉴权模块基于交易请求中的签名数据进行权限验证。
S1009,检测权限验证是否通过?如果通过,则转到S1011,如果未通过,则转到S1010。
S1010,返回验证不通过的结果,并结束流程。
S1011,主节点的虚拟机模块从交易池获取本次出块的所有交易。
S1012,主节点的交易调度模块调度上述交易开始执行。
S1013,每笔交易找到在合约仓库中对应的智能合约并启动为合约进程。
S1014,交易执行完成后生成交易读写集。
可以理解的是,主节点侧的交易读写集包括其执行多笔交易所产生的多笔交易的执行结果,其将交易读写集写入到待共识区块中。
S1015,主节点在Pre-preapre阶段发送区块(即待共识区块)到从节点。
S1016,从节点接收主节点发送的区块,并重新执行区块中的所有交易生成交易读写集。
可以理解的是,从节点侧的交易读写集包括其执行多笔交易所产生的多笔交易的执行结果。
S1017,共识模块进入Prepare阶段。
S1018,每个从节点将执行后的交易结果发送给所有其他节点。
S1019,检测交易发起方是否为交易添加了确定性控制?如果添加,则转到S1020,如果未添加,则转到S1023。
可以理解的是,确定性控制可以看作一个功能,当交易发起方开启/添加了确定性控制功能,则需要执行本申请实施例中的基于区块链的交易上链方法,而当交易发起方未开启/添加确定性控制功能,则无需执行本申请实施例中的基于区块链的交易上链方法。
S1020,确定性控制模块对同一笔交易的执行结果(也称不确定性读写集)进行确定化,即确定性控制模块生成同一笔交易的目标执行结果。
S1021,检测确定性控制模块是否执行出错?如果出错,则转到S1022,如果未出错,则转到S1023。
可以理解的是,确定性控制模块执行出错是指针对同一笔交易,生成该同一笔交易的目标执行结果过程出错,其中该出错可能是因网络、参数等原因导致。
S1022,返回确定性控制失败的错误,并结束流程。
S1023,共识模块进入Commit阶段。
S1024,每个区块链节点广播待写入的区块(即待共识区块)。
S1025,检测每个区块链节点待写入的区块是否一致?如果一致,则转到S1027,如果不一致,则转到S1026。
可以理解的是,检测待写入的区块是否一致是指检测待写入的区块之间针对每一笔交易的目标执行结果是否一致。
S1026,返回区块验证不一致的错误,并结束流程。
S1027,每个区块链节点在本地区块链上写入该待写入的区块(即区块落盘)。
S1028,向交易发起方返回交易执行成功的信息,并结束流程。
可以理解的是,本申请实施例中是以区块为单位介绍的共识过程,其中针对区块中每笔交易的共识过程参见前述实施例介绍,这里不再赘述。当以区块为单位进行共识时,可以是当区块中指定数量的交易共识通过,判定该区块共识通过,指定数量可以根据共识策略进行灵活调整。
其次,介绍针对误差不确定性写集的处理过程(即前述实施例中目标交易属于变化型的差异类型时的处理过程)。
基于图9所示的实施环境,请参阅图11,图11是本申请的一个实施例示出的基于区块链的交易上链方法的流程图。如图11所示,该基于区块链的交易上链方法至少包括S1101至S1107,详细介绍如下:
S1101,共识模块进入Prepare阶段。
S1102,区块链节点接收到所有其他节点针对同一笔交易的交易结果(即执行结果)。
S1103,区块链节点检测所有交易结果是否都在误差允许范围内?如果是,则转到S1105,如果否,则转到S1104。
S1104,区块链节点显示超出误差允许范围的错误(即抛出错误),并结束流程。
S1105,区块链节点对所有交易结果(即所有节点的读写集)进行平均值计算,得到平均值。
S1106,区块链节点将平均值(即计算后的结果,此时的结果为目标执行结果)放入读写集中,并将其他节点原有的交易结果放入备注中。
可以理解的是,读写集和备注最终都会写入到待共识区块中,其他节点原有的交易结果写入到待共识区块中作为存证,方便后期追溯管理等。
S1107,区块链节点进入Commit阶段继续进行后续操作。
需要说明的是,本申请实施例中的交易结果是针对同一笔交易而言,在实际应用中,待共识区块中通常包括多笔交易,采用相同方法进行处理即可。同时,图11所示中S1101至S1107的详细介绍请参见前述实施例,在此不再赘述。
本申请实施例中针对误差不确定性写集通过误差允许范围来规避不合适的交易结果,之后采用平均值得到最终的交易结果,实现了对误差不确定性写集的确定化控制,使得即使在本地环境影响的情况下,待共识区块也能成功共识并实现上链。
再次,介绍针对随机不确定性写集的处理过程(即前述实施例中目标交易属于随机型的差异类型时的处理过程)。
基于图9所示的实施环境,请参阅图12,图12是本申请的一个实施例示出的基于区块链的交易上链方法的流程图。如图12所示,该基于区块链的交易上链方法至少包括S1201至S1208,详细介绍如下:
S1201,共识模块进入Prepare阶段。
S1202,区块链节点接收到所有其他节点针对同一笔交易的交易结果(即执行结果)。
S1203,区块链节点对接收到的所有交易结果(即所有节点的读写集)按照节点的标识进行排序。
示例性地,节点的标识可以是节点的名称或编号。
S1204,区块链节点使用交易的哈希数据或者最新上链区块的哈希数据(或其他确定性较大的值)作为随机选择因子。
S1205,区块链节点使用随机选择因子对节点数量进行取余,得到余数。
S1206,区块链节点从多个节点中选择与余数相匹配的标识对应的节点,并获得与所选择出的节点对应的交易结果。
S1207,区块链节点将获得的交易结果放入读写集中,并将其他节点原有的交易结果放入备注中。
可以理解的是,读写集和备注最终都会写入到待共识区块中,其他节点原有的交易结果写入到待共识区块中作为存证,方便后期追溯管理等。
S1208,区块链节点进入Commit阶段继续进行后续操作。
需要说明的是,本申请实施例中介绍的交易结果是针对同一笔交易而言,在实际应用中,待共识区块中通常包括多笔交易,采用相同方法进行处理即可。同时,图12所示中S1201至S1208的详细介绍请参见前述实施例,在此不再赘述。
本申请实施例中针对随机不确定性写集通过确定性的公认的随机因子取余节点数,并基于余数对应的区块链节点将该区块链节点的交易结果作为最终的交易结果,实现了对随机不确定性写集的确定化控制,使得即使在本地环境影响的情况下,待共识区块也能成功共识并实现上链。
最后,介绍通过确定性代码脚本(即前述实施例中的控制脚本文件)进行确定化控制的处理过程。
基于图9所示的实施环境,请参阅图13,图13是本申请的一个实施例示出的基于区块链的交易上链方法的流程图。如图13所示,该基于区块链的交易上链方法至少包括S1301至S1308,详细介绍如下:
S1301,共识模块进入Prepare阶段。
S1302,区块链节点接收到所有其他节点针对同一笔交易的交易结果。
S1303,区块链节点调用交易发起方(例如用户)编写的确定性代码脚本。
S1304,区块链节点向确定性代码脚本传入所有交易结果。
S1305,检测确定性代码脚本是否报错?如果是,则转到S1306,如果否,则转到S1307。
S1306,区块链节点显示确定性代码脚本执行异常的错误(即抛出错误),并结束流程。
S1307,区块链节点将确定性代码脚本所生成的目标执行结果放入读写集中,并将其他节点原有的交易结果放入备注中。
也即,本申请实施例中由确定性代码脚本实现写入到读写集中的交易结果的生成;例如针对误差不确定性写集的处理过程利用该确定性代码脚本实现,针对随机不确定性写集的处理过程利用该确定性代码脚本实现。
可以理解的是,读写集和备注最终都会写入到待共识区块中,其他节点原有的交易结果写入到待共识区块中作为存证,方便后期追溯管理等。
S1308,区块链节点进入Commit阶段继续进行后续操作。
需要说明的是,图13所示中S1301至S1308的详细介绍请参见前述实施例,在此不再赘述。
本申请实施例中通过确定性代码脚本的执行,能够快速准确地实现确定化控制,灵活性高,适用于广泛场景中。
图14是本申请的一个实施例示出的基于区块链的交易上链装置的框图。如图14所示,该基于区块链的交易上链装置包括:
第一获取模块1401,配置为获取区块链系统中的共识节点针对目标交易的执行结果,得到多个执行结果,所述执行结果是所述共识节点基于本地环境执行所述目标交易产生的;
第二获取模块1402,配置为若检测到所述多个执行结果之间存在差异,则获取执行所述目标交易所需使用的本地环境信息;
生成模块1403,配置为基于所述本地环境信息和所述多个执行结果,生成针对所述目标交易的目标执行结果;
发送模块1404,配置为向所述区块链系统中的共识节点发送所述目标执行结果,以使所述共识节点在检测到相同的目标执行结果的数量达到指定数量后,对所述目标交易进行上链处理。
在本申请的一个实施例中,第二获取模块1402,具体配置为:
基于所述目标交易的交易类型确定执行所述目标交易所需使用的本地环境信息;
在本申请的一个实施例中,生成模块1403,具体配置为:
基于本地环境信息确定所述目标交易所属的差异类型;
基于所述差异类型和所述多个执行结果,生成针对所述目标交易的目标执行结果。
在本申请的一个实施例中,生成模块1403,具体配置为:
若所述差异类型为变化型类型,则对所述多个执行结果进行计算得到计算结果,并将所述计算结果作为针对所述目标交易的目标执行结果;
若所述差异类型为随机型类型,则从所述多个执行结果中选择一个执行结果,并将所选择的执行结果作为针对所述目标交易的目标执行结果。
在本申请的一个实施例中,生成模块1403,具体配置为:
获取所述目标交易对应的执行结果误差范围区间;
若所述多个执行结果均位于所述执行结果误差范围区间内,则对所述多个执行结果进行求取平均计算,得到平均值结果。
在本申请的一个实施例中,生成模块1403,具体配置为:
获取所述目标交易的哈希数据和所述区块链系统中共识节点的数量;
基于所获取到的哈希数据和数量进行计算,得到计算结果;
基于所得到的计算结果从所述多个执行结果中选择一个执行结果。
在本申请的一个实施例中,生成模块1403,具体配置为:
获取已上链的最新区块的哈希数据和所述区块链系统中共识节点的数量;
基于所获取到的哈希数据和数量进行计算,得到计算结果;
基于所得到的计算结果从所述多个执行结果中选择一个执行结果。
在本申请的一个实施例中,生成模块1403,具体配置为:
对所获取到的哈希数据和所述数量进行求商取余运算,得到余数;
从所述区块链系统含有的共识节点中确定与所述余数相匹配的共识节点;
从所述多个执行结果中选择与所确定的共识节点对应的执行结果。
在本申请的一个实施例中,所述区块链系统中的共识节点为多个;该基于区块链的交易上链装置还包括:
验证模块,配置为对各个共识节点进行验证;
检测模块,配置为若对所述各个共识节点均验证通过,则检测所述多个执行结果之间的差异情况。
在本申请的一个实施例中,验证模块,具体配置为:
针对每个共识节点,生成所述共识节点的签名数据;
若所生成的签名数据与所述共识节点所发送的签名数据相匹配,则得到用于表征所述共识节点验证通过的验证结果;
若所生成的签名数据与所述共识节点所发送的签名数据不匹配,则得到用于表征所述共识节点验证未通过的验证结果。
在本申请的一个实施例中,所述区块链系统中的共识节点为多个;该基于区块链的交易上链装置还包括:
接收模块,配置为接收各个共识节点发送的目标执行结果;
上链模块,配置为若检测到相同的目标执行结果的数量达到指定数量,则对所述目标交易进行上链处理。
在本申请的一个实施例中,上链模块,具体配置为:
将所述目标执行结果和所述多个执行结果进行关联,生成待上链数据;
将所述待上链数据存储到本地区块链上。
在本申请的一个实施例中,第二获取模块1402或生成模块1403,具体配置为:
获取所述目标交易对应的控制脚本文件;
调用所述控制脚本文件,以通过所述控制脚本文件获取执行所述目标交易所需使用的本地环境信息,并基于所述本地环境信息和所述多个执行结果,生成针对所述目标交易的目标执行结果。
需要说明的是,前述实施例所提供的装置与前述实施例所提供的方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述。
本申请的实施例还提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得电子设备实现如前的基于区块链的交易上链方法。
图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)、可擦式可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不相同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
本申请的另一方面还提供了一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前的基于区块链的交易上链方法。该计算机可读介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。
本申请的另一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读介质中。计算机设备的处理器从计算机可读介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的基于区块链的交易上链方法。
上述内容,仅为本申请的较佳示例性实施例,并非用于限制本申请的实施方案,本领域普通技术人员根据本申请的主要构思和精神,可以十分方便地进行相应的变通或修改,故本申请的保护范围应以权利要求书所要求的保护范围为准。
Claims (16)
1.一种基于区块链的交易上链方法,其特征在于,包括:
获取区块链系统中的共识节点针对目标交易的执行结果,得到多个执行结果,所述执行结果是所述共识节点基于本地环境执行所述目标交易产生的;
若检测到所述多个执行结果之间存在差异,则获取执行所述目标交易所需使用的本地环境信息;
基于所述本地环境信息和所述多个执行结果,生成针对所述目标交易的目标执行结果;
向所述区块链系统中的共识节点发送所述目标执行结果,以使所述共识节点在检测到相同的目标执行结果的数量达到指定数量后,对所述目标交易进行上链处理。
2.根据权利要求1所述的方法,其特征在于,所述获取执行所述目标交易所需使用的本地环境信息,包括:
基于所述目标交易的交易类型确定执行所述目标交易所需使用的本地环境信息;
所述基于所述本地环境信息和所述多个执行结果,生成针对所述目标交易的目标执行结果,包括:
基于所述本地环境信息确定所述目标交易所属的差异类型;
基于所述差异类型和所述多个执行结果,生成针对所述目标交易的目标执行结果。
3.根据权利要求2所述的方法,其特征在于,所述基于所述差异类型和所述多个执行结果,生成针对所述目标交易的目标执行结果,包括:
若所述差异类型为变化型类型,则对所述多个执行结果进行计算得到计算结果,并将所述计算结果作为针对所述目标交易的目标执行结果;
若所述差异类型为随机型类型,则从所述多个执行结果中选择一个执行结果,并将所选择的执行结果作为针对所述目标交易的目标执行结果。
4.根据权利要求3所述的方法,其特征在于,所述对所述多个执行结果进行计算得到计算结果,包括:
获取所述目标交易对应的执行结果误差范围区间;
若所述多个执行结果均位于所述执行结果误差范围区间内,则对所述多个执行结果进行求取平均计算,得到平均值结果。
5.根据权利要求3所述的方法,其特征在于,所述从所述多个执行结果中选择一个执行结果,包括:
获取所述目标交易的哈希数据和所述区块链系统中共识节点的数量;
基于所获取到的哈希数据和数量进行计算,得到计算结果;
基于所得到的计算结果从所述多个执行结果中选择一个执行结果。
6.根据权利要求3所述的方法,其特征在于,所述从所述多个执行结果中选择一个执行结果,包括:
获取已上链的最新区块的哈希数据和所述区块链系统中共识节点的数量;
基于所获取到的哈希数据和数量进行计算,得到计算结果;
基于所得到的计算结果从所述多个执行结果中选择一个执行结果。
7.根据权利要求5或6所述的方法,其特征在于,所述基于所获取到的哈希数据和数量进行计算,得到计算结果,包括:
对所获取到的哈希数据和所述数量进行求商取余运算,得到余数;
所述基于所得到的计算结果从所述多个执行结果中选择一个执行结果,包括:
从所述区块链系统含有的共识节点中确定与所述余数相匹配的共识节点;
从所述多个执行结果中选择与所确定的共识节点对应的执行结果。
8.根据权利要求1至6中任一项所述的方法,其特征在于,所述区块链系统中的共识节点为多个;在所述获取区块链系统中的共识节点针对目标交易的执行结果,得到多个执行结果之后,所述方法还包括:
对各个共识节点进行验证;
若对所述各个共识节点均验证通过,则检测所述多个执行结果之间的差异情况。
9.根据权利要求8所述的方法,其特征在于,所述对各个共识节点进行验证,包括:
针对每个共识节点,生成所述共识节点的签名数据;
若所生成的签名数据与所述共识节点所发送的签名数据相匹配,则得到用于表征所述共识节点验证通过的验证结果;
若所生成的签名数据与所述共识节点所发送的签名数据不匹配,则得到用于表征所述共识节点验证未通过的验证结果。
10.根据权利要求1至6中任一项所述的方法,其特征在于,所述区块链系统中的共识节点为多个;在所述向所述区块链系统中的共识节点发送所述目标执行结果之后,所述方法还包括:
接收各个共识节点发送的目标执行结果;
若检测到相同的目标执行结果的数量达到指定数量,则对所述目标交易进行上链处理。
11.根据权利要求10所述的方法,其特征在于,所述对所述目标交易进行上链处理,包括:
将所述目标执行结果和所述多个执行结果进行关联,生成待上链数据;
将所述待上链数据存储到本地区块链上。
12.根据权利要求1至6中任一项所述的方法,其特征在于,所述获取执行所述目标交易所需使用的本地环境信息和所述基于所述本地环境信息和所述多个执行结果,生成针对所述目标交易的目标执行结果,包括:
获取所述目标交易对应的控制脚本文件;
调用所述控制脚本文件,以通过所述控制脚本文件获取执行所述目标交易所需使用的本地环境信息,并基于所述本地环境信息和所述多个执行结果,生成针对所述目标交易的目标执行结果。
13.一种基于区块链的交易上链装置,其特征在于,包括:
第一获取模块,配置为获取区块链系统中的共识节点针对目标交易的执行结果,得到多个执行结果,所述执行结果是所述共识节点基于本地环境执行所述目标交易产生的;
第二获取模块,配置为若检测到所述多个执行结果之间存在差异,则获取执行所述目标交易所需使用的本地环境信息;
生成模块,配置为基于所述本地环境信息和所述多个执行结果,生成针对所述目标交易的目标执行结果;
发送模块,配置为向所述区块链系统中的共识节点发送所述目标执行结果,以使所述共识节点在检测到相同的目标执行结果的数量达到指定数量后,对所述目标交易进行上链处理。
14.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,当所述一个或多个程序被所述电子设备执行时,使得所述电子设备实现如权利要求1至12中任一项所述的基于区块链的交易上链方法。
15.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至12中任一项所述的基于区块链的交易上链方法。
16.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现如权利要求1至12中任一项所述的基于区块链的交易上链方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311037037.7A CN116777631B (zh) | 2023-08-17 | 2023-08-17 | 基于区块链的交易上链方法及装置、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311037037.7A CN116777631B (zh) | 2023-08-17 | 2023-08-17 | 基于区块链的交易上链方法及装置、设备、介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116777631A true CN116777631A (zh) | 2023-09-19 |
CN116777631B CN116777631B (zh) | 2023-11-24 |
Family
ID=87993353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311037037.7A Active CN116777631B (zh) | 2023-08-17 | 2023-08-17 | 基于区块链的交易上链方法及装置、设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116777631B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117522248A (zh) * | 2023-11-07 | 2024-02-06 | 深圳境运星网络科技有限公司 | 一种基于区块链的跨境物流管理方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679863A (zh) * | 2017-09-19 | 2018-02-09 | 中国银行股份有限公司 | 一种区块链系统及快速验证区块的方法 |
CN108989410A (zh) * | 2018-07-04 | 2018-12-11 | 清华大学 | 一种提高区块链吞吐效率的方法 |
CN112037062A (zh) * | 2020-08-31 | 2020-12-04 | 成都质数斯达克科技有限公司 | 交易共识方法、装置、电子设备及可读存储介质 |
CN112685505A (zh) * | 2021-01-07 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、计算机设备及存储介质 |
US20210312438A1 (en) * | 2020-07-03 | 2021-10-07 | Alipay (Hangzhou) Information Technology Co., Ltd. | Blockchain consensus method and device and electronic equipment |
CN113489681A (zh) * | 2021-06-08 | 2021-10-08 | 湖南大学 | 区块链节点数据一致性共识方法、装置、设备及存储介质 |
EP3961415A1 (en) * | 2020-08-28 | 2022-03-02 | Alipay (Hangzhou) Information Technology Co., Ltd. | Transaction confirmation methods and apparatuses in blockchain network |
CN115730009A (zh) * | 2022-11-18 | 2023-03-03 | 中国银联股份有限公司 | 一种区块链交易分配方法及装置 |
-
2023
- 2023-08-17 CN CN202311037037.7A patent/CN116777631B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679863A (zh) * | 2017-09-19 | 2018-02-09 | 中国银行股份有限公司 | 一种区块链系统及快速验证区块的方法 |
CN108989410A (zh) * | 2018-07-04 | 2018-12-11 | 清华大学 | 一种提高区块链吞吐效率的方法 |
US20210312438A1 (en) * | 2020-07-03 | 2021-10-07 | Alipay (Hangzhou) Information Technology Co., Ltd. | Blockchain consensus method and device and electronic equipment |
EP3961415A1 (en) * | 2020-08-28 | 2022-03-02 | Alipay (Hangzhou) Information Technology Co., Ltd. | Transaction confirmation methods and apparatuses in blockchain network |
CN112037062A (zh) * | 2020-08-31 | 2020-12-04 | 成都质数斯达克科技有限公司 | 交易共识方法、装置、电子设备及可读存储介质 |
CN112685505A (zh) * | 2021-01-07 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、计算机设备及存储介质 |
CN113489681A (zh) * | 2021-06-08 | 2021-10-08 | 湖南大学 | 区块链节点数据一致性共识方法、装置、设备及存储介质 |
CN115730009A (zh) * | 2022-11-18 | 2023-03-03 | 中国银联股份有限公司 | 一种区块链交易分配方法及装置 |
Non-Patent Citations (1)
Title |
---|
周亮瑾;王富章;: "铁路客运私有链共识机制关键技术研究", 铁道运输与经济, no. 06, pages 63 - 67 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117522248A (zh) * | 2023-11-07 | 2024-02-06 | 深圳境运星网络科技有限公司 | 一种基于区块链的跨境物流管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116777631B (zh) | 2023-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110443704B (zh) | 一种跨链发送资源的方法和装置 | |
US11461773B2 (en) | Blockchain-based node management methods and apparatuses | |
Fernández-Caramés et al. | A Review on the Use of Blockchain for the Internet of Things | |
CN111464518B (zh) | 一种跨链通信数据的发送、验证方法及装置 | |
EP3764308A1 (en) | Blockchain-based system, and electronic apparatus and method in the system | |
US11270303B2 (en) | Cryptocurrency-based event participation verification | |
CN111108521A (zh) | 实现基于区块链的工作流 | |
CN113328997B (zh) | 联盟链跨链系统及方法 | |
CN111066047A (zh) | 实现基于区块链的工作流 | |
CN109493052B (zh) | 一种基于主链加并行多子链的跨链合约系统 | |
CN114567643B (zh) | 跨区块链的数据流转方法、装置及相关设备 | |
CN116777631B (zh) | 基于区块链的交易上链方法及装置、设备、介质 | |
CN113837760B (zh) | 数据处理方法、装置、计算机设备以及存储介质 | |
CN110992035A (zh) | 区块链节点管理方法、装置及系统 | |
CN110910110A (zh) | 一种数据处理方法、装置及计算机存储介质 | |
CN116150260A (zh) | 区块链系统的数据处理方法、装置、介质及电子设备 | |
CN116975901A (zh) | 基于区块链的身份验证方法、装置、设备、介质及产品 | |
CN110276693B (zh) | 保险理赔方法及系统 | |
CN112950180A (zh) | 一种基于联盟链的通证方法、系统、电子设备及存储介质 | |
CN115766038A (zh) | 区块链中的交易发送方法和区块链节点 | |
CN116186786A (zh) | 基于区块链的业务处理方法、装置、电子设备和可读介质 | |
Yu et al. | MeHLDT: A multielement hash lock data transfer mechanism for on-chain and off-chain | |
CN116186749A (zh) | 基于区块链的业务处理方法、装置、电子设备和可读介质 | |
CN117221337A (zh) | 区块链共识方法、装置、介质及电子设备 | |
CN112438035B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40091949 Country of ref document: HK |