CN113034137A - 基于区块链的数据处理方法、装置及相关设备 - Google Patents
基于区块链的数据处理方法、装置及相关设备 Download PDFInfo
- Publication number
- CN113034137A CN113034137A CN202110268849.7A CN202110268849A CN113034137A CN 113034137 A CN113034137 A CN 113034137A CN 202110268849 A CN202110268849 A CN 202110268849A CN 113034137 A CN113034137 A CN 113034137A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- transaction data
- block
- internal transaction
- internal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 31
- 238000004806 packaging method and process Methods 0.000 claims abstract description 53
- 238000000034 method Methods 0.000 claims abstract description 51
- 230000009471 action Effects 0.000 claims description 77
- 230000008569 process Effects 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012856 packing Methods 0.000 abstract description 28
- 230000006870 function Effects 0.000 description 135
- 230000001960 triggered effect Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本公开的实施例提供了一种基于区块链的数据处理方法、装置、电子设备及计算机可读介质。区块链网络包括记账节点,区块链网络中部署第一智能合约,该方法由记账节点执行,区块链网络中包括交易池,交易池中包括待打包交易数据。该方法包括:获取内部交易数据,其中内部交易数据是触发第一智能合约获得的,内部交易数据的打包优先级高于至少部分待打包交易数据;打包内部交易数据,生成第一区块;向区块链网络广播第一区块。本公开实施例提供的方案能够实现高打包优先级的内部交易数据优先打包进第一区块,该内部交易数据是通过触发区块链网络中部署的第一智能合约获得,由此能够保证第一智能合约的触发满足时效性。
Description
技术领域
本公开涉及区块链技术领域,具体而言,涉及一种基于区块链的数据处理方法、装置、电子设备及计算机可读介质。
背景技术
目前的区块链技术中,待打包交易数据先放到区块链网络的交易池中,矿工(miner,记账节点)在打包区块时,可以根据各个待打包交易数据给出的奖励的多少等因素从交易池中挑选目标待打包交易数据,将被挑选的目标待打包交易数据打包进当前的区块中,这种打包方式会存在如下问题:区块链网络中部署的部分智能合约的触发是具有时效性的,相关技术中的打包方式无法保证触发具有时效性的这部分智能合约对应的待打包交易数据被及时地从交易池中挑选出来,以进行打包,这会导致实际触发这部分具有时效性的智能合约时,已经不满足这部分智能合约的触发条件了。
因此,需要一种新的基于区块链的数据处理方法、装置、电子设备及计算机可读介质。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开实施例提供一种基于区块链的数据处理方法、装置、电子设备及计算机可读介质,进而至少在一定程度上解决相关技术中存在的时效性无法满足的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
本公开实施例提出一种基于区块链的数据处理方法,区块链网络包括记账节点,所述区块链网络中部署第一智能合约,所述方法由所述记账节点执行,所述区块链网络中包括交易池,所述交易池中包括待打包交易数据。其中,所述方法包括:获取内部交易数据,其中所述内部交易数据是触发所述第一智能合约获得的,所述内部交易数据的打包优先级高于至少部分所述待打包交易数据;打包所述内部交易数据,生成第一区块;向所述区块链网络广播所述第一区块。
本公开实施例提出一种基于区块链的数据处理装置,区块链网络包括记账节点,所述区块链网络中部署第一智能合约,所述方法由所述记账节点执行,所述区块链网络中包括交易池,所述交易池中包括待打包交易数据。其中,所述装置包括:内部交易数据获取单元,用于获取内部交易数据,其中所述内部交易数据是触发所述第一智能合约获得的,所述内部交易数据的打包优先级高于至少部分所述待打包交易数据;第一区块生成单元,用于打包所述内部交易数据,生成第一区块;第一区块广播单元,用于向所述区块链网络广播所述第一区块。
在本公开的一些示例性实施例中,所述区块链网络中还部署第二智能合约。其中,内部交易数据获取单元包括:第二智能合约调用单元,用于调用所述第二智能合约;满足触发条件确定单元,用于利用所述第二智能合约确定满足所述第一智能合约的触发条件;第一智能合约触发单元,用于通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据。
在本公开的一些示例性实施例中,所述区块链网络中还部署第二智能合约,所述区块链网络还包括非记账节点。其中,内部交易数据获取单元包括:内部交易数据接收单元,用于从所述非记账节点接收所述内部交易数据。其中所述非记账节点用于调用所述第二智能合约,通过所述第二智能合约确定满足所述第一智能合约的触发条件,利用所述第二智能合约触发所述第一智能合约的执行,生成并广播所述内部交易数据。
在本公开的一些示例性实施例中,所述第二智能合约中包括动作函数。其中,第一智能合约触发单元包括:动作函数触发单元,用于调用所述动作函数触发所述第一智能合约,生成所述内部交易数据。其中,所述装置还包括:第一目标待打包交易数据选择单元,用于在调用所述动作函数触发所述第一智能合约,生成所述内部交易数据之后,从所述交易池中的所述待打包交易数据选择目标待打包交易数据;第一目标待打包交易数据打包单元,用于将所述目标待打包交易数据打包至所述第一区块。
在本公开的一些示例性实施例中,所述第二智能合约中包括动作函数。其中,第一智能合约触发单元包括:第一内部交易生成单元,用于根据所述动作函数和所述第一智能合约生成内部交易;内部交易打包单元,用于将所述内部交易打包至所述第一区块;第二目标待打包交易数据选择单元,用于从所述交易池中的所述待打包交易数据选择目标待打包交易数据;第二目标待打包交易数据打包单元,用于将所述目标待打包交易数据打包至所述第一区块;第一内部交易执行单元,用于执行所述第一区块中的所述内部交易,以触发所述第一智能合约生成所述内部交易数据。
在本公开的一些示例性实施例中,所述第二智能合约中包括动作函数。其中,第一智能合约触发单元包括:第二内部交易生成单元,用于根据所述动作函数和所述第一智能合约生成内部交易;打包合约触发单元,用于在将所述内部交易打包至所述第一区块的过程中,触发所述第一智能合约,生成所述内部交易数据。
在本公开的一些示例性实施例中,所述第二智能合约中包括动作函数。其中,第一智能合约触发单元包括:第三内部交易生成单元,用于根据所述动作函数和所述第一智能合约生成内部交易;内部交易放入单元,用于将所述内部交易放入所述交易池中;待打包数据选择单元,用于从所述交易池中选择所述内部交易和所述待打包交易数据中的目标待打包交易数据;待打包数据打包单元,用于将所述内部交易和所述目标待打包交易数据打包至所述第一区块;第二内部交易执行单元,用于执行所述第一区块中的所述内部交易,触发所述第一智能合约,生成所述内部交易数据。
在本公开的一些示例性实施例中,所述第二智能合约中包括动作函数。其中,第一智能合约触发单元包括:第四内部交易生成单元,用于根据所述动作函数和所述第一智能合约生成至少一个内部交易;多个内部交易打包单元,用于将各个内部交易打包至所述第一区块;第一区块执行单元,用于执行所述第一区块中的各个内部交易,触发对应的第一智能合约,生成所述内部交易数据。
在本公开的一些示例性实施例中,所述装置还包括:第三目标待打包交易数据打包单元,用于从所述交易池中的所述待打包交易数据选择目标待打包交易数据;第二区块打包单元,用于将所述目标待打包交易数据打包至第二区块;第二区块广播单元,用于向所述区块链网络广播所述第二区块。
本公开实施例提出一种电子设备,包括:至少一个处理器;存储装置,用于存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如上述实施例中所述的基于区块链的数据处理方法。
本公开实施例提出一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的基于区块链的数据处理方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的基于区块链的数据处理方法。
在本公开的一些实施例所提供的技术方案中,在区块链网络中的记账节点打包当前的第一区块时,相比该区块链网络的交易池中的打包优先级较低的待打包交易数据,优先获取触发该区块链网络中部署的第一智能合约生成的内部交易数据,将该内部交易数据打包进该第一区块中,由此能够实现高打包优先级的内部交易数据优先打包进第一区块,且该内部交易数据是通过触发区块链网络中部署的第一智能合约获得,由此能够保证第一智能合约的触发满足时效性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图。
图2是本公开实施例提供的区块结构一个可选的示意图。
图3示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。
图4示意性示出了根据本公开的另一个实施例的基于区块链的数据处理方法的流程图。
图5示意性示出了根据本公开的又一个实施例的基于区块链的数据处理方法的流程图。
图6示意性示出了根据本公开的一个实施例的第一区块头的结构示意图。
图7示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。
图8示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。
图9示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。
图10示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。
图11示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的示意图。
图12示意性示出了根据本公开的一实施例的基于区块链的数据处理装置的框图。
图13示出了适于用来实现本公开实施例的电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在至少一个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本公开实施例应用于区块链技术中。例如,本公开实施例涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。
以分布式系统为区块链系统为例,参见图1,图1是本公开实施例提供的分布式系统应用于区块链系统的一个可选的结构示意图,分布式系统100由多个节点110(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端120形成,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,TransmissionControl Protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图1示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,例如在虚拟线上交易系统、账务系统等的交易数据。在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子资源的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应并放入交易池中,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子资源地址中剩余的电子资源。
2.2)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子资源转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的关于线上交易的记录数据。
参见图2,图2是本公开实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
图3示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。本公开实施例所提供的方法可以由任意具备计算处理能力的电子设备处理,例如上述图1实施例中的任意节点110,上述节点110可包括区块链网络中的记账节点,在下面的举例说明中,以区块链网络中的记账节点来执行所提供的方法为例,但本公开并不限定于此。
本公开实施例中,记账节点是指区块链网络中,可以用于打包产生新的区块且具备共识功能的节点。区块链网络中除了记账节点以外的任意其它节点称之为非记账节点。
图3实施例中,区块链网络中部署第一智能合约。
在实际应用中,不论是公有链、私有链还是联盟链,都可以提供智能合约(smartcontract)的功能。区块链上的智能合约是在区块链上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
以以太坊为例,支持用户在以太网网络中创建并调用一些复杂的逻辑。以太坊作为一个可编程区块链,其核心是以太坊虚拟机(Ethereum Virtual Machine,EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,通过它可以实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实际上,EVM直接运行的是虚拟机代码(虚拟机字节码,简称“字节码”),所以部署在区块链上的智能合约可以是字节码。
本公开实施例中,区块链网络上可以部署至少一个智能合约,每个智能合约包括与业务逻辑对应的合约代码。其中,该至少一个智能合约中包括第一智能合约,第一智能合约可以是指其被触发时生成的内部交易数据需要被记账节点优先打包的智能合约,可以包括其被触发执行时具有时效性的智能合约。例如,触发条件为每天晚上五点触发的实现发票流转的智能合约。再例如,区块高度为1000的整数倍时触发实现开奖的智能合约。其中,区块在区块链中的编号就是区块高度。
本公开实施例中的任意一个智能合约可以通过以下方式部署到区块链网络上,但本公开并不限定于此。用户将一笔包含创建智能合约的交易(transaction)发送到区块链网络后,各节点均可以在EVM中执行这笔交易。其中,交易中的From字段用于记录发起创建智能合约的账户的地址,交易的Data字段的字段值保存的合约代码可以是字节码,交易的To字段的字段值为一个null(空)的账户。当节点间通过共识机制达成一致后,这个智能合约成功创建,后续用户可以调用这个智能合约。
每个智能合约创建后,区块链上出现一个与各个智能合约对应的合约账户,并拥有一个特定的地址。合约代码(Code)将保存在该合约账户的账户存储(Storage)中。智能合约的行为由合约代码控制,而智能合约的账户存储则保存了合约的状态。即智能合约使得区块链上产生包含合约代码和账户存储的虚拟账户。在一个智能合约中可以声明多种成员,包括状态变量、函数、函数修改器、事件等。状态变量是永久存储在智能合约的账户存储(Storage)字段中的值,用于保存智能合约的状态。
图3实施例中,区块链网络中可包括交易池,交易池中可包括待打包交易数据。
其中,交易池可用于存储待打包交易数据,待打包交易数据等待被记账节点选择,然后打包进区块中。本公开实施例中的待打包交易数据可以包括记账节点打包进区块后由记账节点执行的交易,也可以包括记账节点打包进区块后由其他任意电子设备执行的交易(例如由非记账节点执行,或者区块链网络以外的其他终端或者服务器执行),还可以包括执行完交易后生成的交易数据(该执行主体可以是区块链网络中的任意节点,也可以是区块链网络以外的其他终端或者服务器),本公开对此不做限定。此外,本公开实施例对交易池中的待打包交易数据的来源不做限定。
如图3所示,本公开实施例提供的基于区块链的数据处理方法可以包括以下步骤。
在步骤S310中,获取内部交易数据,其中所述内部交易数据是触发所述第一智能合约获得的,所述内部交易数据的打包优先级高于至少部分所述待打包交易数据。
其中,内部交易数据是指触发执行具有时效性的第一智能合约生成的交易数据,为了满足第一智能合约触发时的时效性,内部交易数据的打包优先级可以设置为高于交易池中的至少部分待打包交易数据。这里的内部交易数据的打包优先级高于交易池中的至少部分待打包交易数据是指,记账节点在准备打包当前最新的区块时,若当前存在内部交易数据,则优先打包该内部交易数据,若内部交易数据的大小小于预设的该最新的区块的大小,则可以再从该交易池中挑选一部分待打包交易数据作为目标待打包交易数据,和该内部交易数据一起打包至当前最新的区块中;若该内部交易数据的大小已经等于预设的该最新的区块的大小,则当前也可以仅将内部交易数据打包至该最新的区块中。通过让内部交易数据的打包优先级高于交易池中的至少部分待打包交易数据,可以保证内部交易数据优先被打包进当前最新的区块中,这样就可以满足第一智能合约被触发的时效性。
在步骤S320中,打包所述内部交易数据,生成第一区块。
本公开实施例中,第一区块可为记账节点在当前时间将要产生的最新区块。可由记账节点优先将内部交易数据打包至第一区块。
在步骤S330中,向所述区块链网络广播所述第一区块。
本公开实施例中,记账节点向区块链网络中的其它节点广播第一区块,以便区块链网络中的其它节点对该第一区块进行共识。本公开实施例中,第一区块可以包括第一区块头和第一区块体。这里的向区块链网络广播第一区块可以包括同时广播第一区块头和第一区块体,也可以包括仅广播第一区块头,本公开对此不做限定。
其中,区块链中支持的共识算法可以包括:
第一类共识算法,即节点争夺每一轮记账周期的记账权的共识算法,例如,工作量证明(Proof of Word,POW)、股权证明(Proof of Stake,POS)、委任权益证明(DelegatedProof of Stake,DPOS)等共识算法。在采用第一类共识算法的区块链网络中,争夺记账权的节点,都可以在接收到交易后执行该笔交易。争夺记账权的节点中可能有一个节点在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将内部交易(或内部交易数据)与其它交易池中挑选出来的目标待打包交易数据一起打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点进行共识。
第二类共识算法,即预先为每一轮记账周期选举记账节点(不需要争夺记账权)的共识算法,例如,实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等共识算法。在采用第二类共识算法的区块链网络中,具有记账权的节点在本轮记账前已经商定好。因此,节点在获取到交易(或交易数据,可以包括上述的内部交易、内部交易数据、待打包交易数据等)后,如果自身不是本轮的记账节点,则可以将该交易(或交易数据)发送至记账节点。对于本轮的记账节点,在将内部交易(或内部交易数据)与其它交易池中挑选出来的目标待打包交易数据一起打包以生成最新区块的过程中或者之前,可以执行该内部交易和目标待打包交易数据中的交易。记账节点在生成最新区块后,可以将该最新区块或者该最新区块的区块头发送至其它节点进行共识。
本公开实施例中,不对区块链采用何种共识算法进行限定,本轮的记账节点都可以将接收到的交易(或交易数据)打包以生成最新区块,并将生成的最新区块或该最新区块的区块头发送至其它节点进行共识验证。如果其它节点接收到最新区块或者该最新区块的区块头后,经验证没有问题,可以将该最新区块追加到原有的区块链末尾,从而完成区块链的记账过程。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行该新的区块中包含的交易。
本公开实施方式提供的基于区块链的数据处理方法,在区块链网络中的记账节点打包当前的第一区块时,相比该区块链网络的交易池中的打包优先级较低的待打包交易数据,优先获取触发该区块链网络中部署的第一智能合约生成的内部交易数据,将该内部交易数据打包进该第一区块中,由此能够实现高打包优先级的内部交易数据优先打包进第一区块,且该内部交易数据是通过触发区块链网络中部署的第一智能合约获得,由此能够保证第一智能合约的触发满足时效性。
图4示意性示出了根据本公开的另一个实施例的基于区块链的数据处理方法的流程图。本公开实施例中,区块链网络中还部署第二智能合约。其中,第二智能合约为部署在区块链网络中的系统级智能合约,其包括的合约代码可以用于判断是否满足第一智能合约的触发条件,并且在判定满足第一智能合约的触发条件时,还可以调用或者触发上述第一智能合约。
图4实施例与上述图3实施例的不同之处在于,上述步骤S310可以进一步包括以下步骤。
在步骤S311中,调用第二智能合约。
本公开实施例中,可以设置为在记账节点每次打包最新的区块之前,先调用区块链网络中部署的第二智能合约。
在步骤S312中,利用第二智能合约确定满足第一智能合约的触发条件。
本公开实施例中,第二智能合约中可以包括预先设置的触发条件函数(can_invoke函数)。在can_invoke函数中可以预先设置第一智能合约的触发条件,则记账节点通过调用can_invoke函数即可以判断当前是否满足第一智能合约的触发条件。
需要说明的是,本公开实施例中不限定通过触发条件函数来判断是否满足第一智能合约的触发条件,只要该第二智能合约中的合约代码能够实现第一智能合约的触发条件的判断即可,具体形式不做限定。
具体地,根据什么信息来判断当前是否满足第一智能合约的触发条件,可以根据具体的第一智能合约进行相应的设置,本公开对此不做限定。第二智能合约可以同步区块链状态获取所需的信息,例如若第一智能合约的触发条件是区块链中最新的区块高度为1000的整数倍,则第二智能合约获取当前区块高度,判断该当前区块高度是否为1000的整数倍,即可判断是否满足第一智能合约的触发条件。
本公开实施例中,若第二智能合约需要从区块链网络外获取信息来判断是否满足第一智能合约的触发条件,则区块链网络上部署的第二智能合约可以通过预言机,来获取区块链网络外的数据实体上的外部数据。例如,若第一智能合约的触发条件是每天晚上五点定时触发,则第二智能合约获取的外部数据可以为当前时间,通过判断当前时间是不是晚上五点,来判断是否满足第一智能合约的触发条件。其中,区块链网络外的数据实体可以包括部署在区块链网络外的服务器、数据中心或者终端等等。预言机可以用于连接区块链网络与链外的数据实体,实现区块链网络与真实世界的数据交互。
在实际应用中,在为区块链网络上的第二智能合约部署预言机时,可以先在区块链网络上部署一个与预言机对应的预言机智能合约。其中,该预言机智能合约用于维护预言机发给区块链网络上的第二智能合约的外部数据。例如,预言机发给区块链网络上的第二智能合约的外部数据,可以存储在预言机智能合约的账户存储空间中。
当记账节点调用第二智能合约的can_invoke函数时,可以从该预言机智能合约的账户存储空间中,读取该第二智能合约所需的外部数据,完成第一智能合约的触发条件的判断。
需要说明的是,预言机在向区块链网络上的第二智能合约发送外部数据时,可以采用主动发送的方式,也可以采用被动发送的方式。
在一些实施例中,链外的数据实体可以将需要提供给第二智能合约的外部数据,利用预言机的私钥进行签名后,发送给上述预言机智能合约。例如,当外部数据是当前时间时,可以采用周期性发送的方式,将签名后的上述外部数据发送给上述预言机智能合约。而在上述预言机智能合约中可以维护预言机的CA证书,在收到链外的数据实体发送的外部数据后,可以使用该CA证书中维护的该预言机的公钥,对该外部数据的签名进行验证,并在验证通过后,将链外的数据实体发送的外部数据在该预言机智能合约的账户存储空间中进行存储。
在另一些实施例中,当区块链网络上的第二智能合约的can_invoke函数被调用时,如果从该预言机智能合约的账户存储空间中,并未读取到该第二智能合约所需的外部数据,此时该预言机智能合约,可以利用智能合约的事件机制,与上述预言机进行交互,并由上述预言机将该第二智能合约所需的外部数据,发送至该预言机智能合约的账户存储空间中。
在步骤S313中,通过第二智能合约触发第一智能合约的执行,生成内部交易数据。
本公开实施例中,第二智能合约中还可以包括用于触发第一智能合约执行的合约代码,例如下文中提及的动作函数(invoke函数)。例如,若记账节点调用第二智能合约中的can_invoke函数,判定满足第一智能合约的触发条件,则可以进一步调用第二智能合约中的invoke函数,以用于触发第一智能合约的执行,生成内部交易数据。
在区块链领域,有一个概念是账户(account),以以太坊为例,将账户划分为外部账户和合约账户两类。外部账户是由用户直接控制的账户,也称之为用户账户。合约账户则是由用户通过外部账户创建的,包含合约代码的账户(即智能合约)。当然,还可以包括其他账户类型,本公开不进行限定。
在下面的实施例中,将由外部拥有的用户账户生成、并提及给区块链网络的序列化加密签名指令称之为交易或者交易数据,将这些交易或交易数据放入交易池中,作为待打包交易数据。待打包交易数据可以包含以下组件:Nonce:发送方发送的交易或者交易数据数量的计数;gasPrice:发送方愿意支付每单位Gas所需执行交易的Wei(电子资源单位)数量;gasLimit:交易发送方愿意支付的执行这一交易的Gas最大数量;to:接收方的地址,在创建合约的交易中,合约账户地址还不存在,因此使用了空值;Value:从交易发送方转移到收件方的金额,在创建合约的交易中,这个Value作为新创建合约账户内的起始余额;v,r,s:用于生成识别交易发送方的签名;Init(只存在于创建合同的交易中):用于初始化新合约账户的EVM代码片段;data(只存在于消息调用中的可选字段):消息调用的输入数据(即参数)。例如,如果一个第一智能合约充当域名注册服务,那么对该第一智能合约的调用可能会有诸如域名以及IP(Internet Protocol,网际互联协议)地址等输入字段。
本公开实施例中的内部交易数据与待打包交易数据的一个区别是,内部交易数据不是由外部账户所产生的,是由第二智能合约触发第一智能合约产生的。内部交易数据可以不包括gasLimit。
在示例性实施例中,所述区块链网络中还可部署第二智能合约,所述区块链网络还可包括非记账节点。其中,获取内部交易数据,可包括:从所述非记账节点接收所述内部交易数据;其中所述非记账节点用于调用所述第二智能合约,通过所述第二智能合约确定满足所述第一智能合约的触发条件,利用所述第二智能合约触发所述第一智能合约的执行,生成并广播所述内部交易数据。
在图4实施例中,是设置记账节点在打包最新区块时,必须先调用第二智能合约,并通过第二智能合约判断是否满足第一智能合约的触发条件,则满足第一智能合约的触发条件时,第二智能合约再触发第一智能合约执行,由此记账节点可以在本地直接获取到内部交易数据,保证了优先获取到内部交易数据的可靠性,不会受到区块链网络不稳定因素的影响。但本公开并不限定于此,在其他实施例中,也可以由区块链网络中的任意节点例如非记账节点调用第二智能合约,并通过第二智能合约判断是否满足第一智能合约的触发条件,则满足第一智能合约的触发条件时,第二智能合约再触发第一智能合约执行,当非记账节点生成内部交易数据后,向区块链网络广播该内部交易数据,记账节点即可获取到该内部交易数据,记账节点获取到该内部交易数据后,相比交易池中的待打包交易数据,优先将接收到的内部交易数据打包进最新区块中,这样可以减轻记账节点的计算量,有利于提高记账节点的打包效率。在下面的实施例中,均以记账节点调用第二智能合约为例进行举例说明。
在示例性实施例中,所述第二智能合约中可包括动作函数。其中,通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据,可包括:调用所述动作函数触发所述第一智能合约,生成所述内部交易数据。其中,调用所述动作函数触发所述第一智能合约,生成所述内部交易数据之后,所述方法还可包括:从所述交易池中的所述待打包交易数据选择目标待打包交易数据;将所述目标待打包交易数据打包至所述第一区块。具体可以参考图5实施例。
图5示意性示出了根据本公开的又一个实施例的基于区块链的数据处理方法的流程图。图5实施例提供的方法可以包括以下步骤。
在步骤S501中,调用第二智能合约。
在步骤S502中,利用第二智能合约确定满足第一智能合约的触发条件。
步骤S501和S502可以参考上述图4实施例中的步骤S311和S312。
在步骤S503中,调用第二智能合约中的动作函数触发第一智能合约,生成内部交易数据。
图5实施例中,当记账节点通过第二智能合约中的can_invoke函数判定满足第一智能合约的触发条件后,直接调用第二智能合约中的invoke函数触发第一智能合约,生成内部交易数据。
例如,假设第一智能合约为当前区块高度为1000的整数倍时触发开奖,则当第二智能合约发现当前区块高度为2000时,触发第一智能合约,假设用户A中奖15单位的电子资源,则向用户A的账户中转入15单位的电子资源。
本公开实施例中,无论是外部账户还是合约账户,账户状态均可包括Balance、Nonce、Code和Storage等字段。其中,Nonce字段用于维护该账户的交易次数,它是用于保障每笔交易能且只能被处理一次的计数器,如果账户是一个外部账户,这个数字代表从账户地址发送的交易数量,如果账户是一个合约账户,Nonce是账户创建的合约数量。Balance字段用于维护账户目前的账户余额,可以是这个地址拥有的Wei数量。Storage字段用于维护该账户的存储内容(默认字段值为空)。对于合约账户而言,通常会分配一个独立的存储空间,用以存储该合约账户的存储内容。该独立的存储空间称之为该合约账户的账户存储。合约账户的存储内容可以构建成MPT(Merkle Patricia Trie)树的数据结构存储在上述独立的存储空间之中。其中,基于合约账户的存储内容构建成的MPT树,可以称之为Storage树。而Storage字段可以仅维护该Storage树的根节点,因此,Storage字段也可以称之为StorageRoot字段。StorageRoot是一个Merkle Patricia树根节点的哈希,它对账户的存储内容的哈希值进行编码,并默认为空。对于外部账户而言,Storage字段的字段值为空值。Code字段用于维护该账户的合约代码,在实际应用中,Code字段中可以仅维护合约代码的hash(哈希)值,因此,Code字段也可以称之为Codehash字段。Codehash字段是EVM的哈希值代码,对于合约账户,这是一个被哈希后并存储为codeHash的代码;对于外部账户,codeHash字段是空字符串的哈希。
还是以上面的以太坊为例,以太坊的全局状态包括账户地址和账户状态之间的映射,这个映射存储在一个数据结构中,这种结构被称为状态树(可以是一个MPT树)。状态树是一种由一组树状节点构成的二进制结构,它包括:底层有大量的叶子节点,其中包含了潜在的数据;一组中间节点,其中每个节点是其两个子节点的哈希;一个单个的根节点,也是由它的两个子节点的哈希形成的,代表树的顶部,称之为状态根。在以太坊中,状态树的键值对是账户地址和相关账户之间的映射,包括每个账户的Balance、Nonce、Codehash和StorageRoot等字段。
以上述开奖为例,向用户A的账户中转入15单位的电子资源之后,用户A的用户账户的余额增加了15单位的电子资源,由此会导致状态树发生变化,假设称之为第一状态树,第一状态树的根节点称之为第一状态根。
在步骤S504中,从交易池中的待打包交易数据中选择目标待打包交易数据。
本公开实施例中,记账节点可根据预定的挑选规则对交易池中的待打包交易数据进行挑选,选中的待打包交易数据称为目标待打包交易数据。预定的挑选规则但不限于为基于奖励的电子资源数值大小等。
在步骤S505中,打包内部交易数据和目标待打包交易数据,生成第一区块。
图5实施例中,目标待打包交易数据可以包括第一状态根。若第一区块中的目标待打包交易数据中不包括需要记账节点执行的交易,则可以将第一状态根打包进该第一区块的第一区块头中。若第一区块中的目标待打包交易数据中包括需要记账节点执行的交易,则记账节点在执行这些交易时,可以更新区块链网络状态例如账户状态,即更新上述第一状态树生成第二状态树,第二状态树的根节点称之为第二状态根,此时第一区块的第一区块头中存储的是基于第一状态树更新后的第二状态根。第一区块头的结构可以参见下图6实施例的描述。
例如,假设目标待打包交易数据中包括用户B向用户A转入100单位的电子资源,则记账节点触发相应的智能合约执行完成后,用户A中的账户余额增加了115单位的电子资源,即此时需要更新第一状态树以生成第二状态树。
在步骤S506中,向区块链网络广播第一区块。
步骤S506可以参考上述图3实施例中的步骤S330。
图5实施例中,设置记账节点在每次打包最新区块时,优先调用第二智能合约中的can_invoke函数判断是否满足第一智能合约的触发条件,且在判定满足第一智能合约的触发条件时,直接调用第二智能合约中的invoke函数触发执行第一智能合约以生成内部交易数据,例如更新账户状态,生成第一状态树及其第一状态根,由此可以保证第一智能合约触发的时效性,使得第一智能合约触发时仍然满足其触发条件。在这之后,基于第一状态树及其第一状态根,记账节点可以再从交易池中挑选目标待打包交易数据进最新区块中,对最新区块进行共识上链。
图6示意性示出了根据本公开的一个实施例的第一区块头的结构示意图。
如图6所示,第一区块头可以包括父区块哈希值(parentHash)、时间戳(timestamp)和状态根(stateRoot,可以包括上述的第一状态根或第二状态根)。状态根对应状态树。进一步地,同样的树结构还可以用于存储交易(或交易数据)和收据,因此,第一区块可以存储三个不同Merkle树结构根节点的哈希,包括状态树、交易树和收据树,对应的第一区块头中还可以包括图6中未示出的transactionsRoot(交易根)和receiptsRoot(收据根)。
其中,状态树是由区块链中所有账户的账户状态(state)数据组织成的MPT树;交易树,是由区块链中的交易(transaction)数据组织成的MPT树;收据树,是区块中的交易在执行完毕后生成的与每笔交易对应的交易收据(receipt)组织成的MPT树。状态树、交易树和收据树的根节点的hash值分别为状态根、交易根和收据根,最终都会被添加至第一区块的第一区块头中。
其中,交易树和收据树均与区块相对应,即每一个区块都有自己的交易树和收据树。而状态树是一个全局的MPT树,并不与某一个特定的区块相对应,而是涵盖了区块链中所有账户的账户状态数据。
对于区块链中的账户而言,可以通过图6所示的结构体,来维护账户的账户状态。当第一区块中的交易被执行后,区块链中与该交易相关的账户(可以是外部账户也可以是合约账户)的状态通常也会随之发生变化。
例如,当第一区块中的一笔“转账交易”执行完毕后,与该“转账交易”相关的转出方账户和转入方账户的余额(即这些账户的Balance字段的字段值),也会随之发生变化。而在区块链产生的第一区块中的交易执行完毕后,由于当前区块链中的账户状态发生了变化,因此节点需要根据区块链中所有账户当前的账户状态数据,来构建第一状态树或第二状态树,用于维护区块链中所有账户的最新状态。也即,每当区块链中产生一个最新区块,并且该最新区块中的交易执行完毕后,导致区块链中的账户状态发生变化,节点都基于区块链中所有账户最新的账户状态数据,重新构建一颗MPT状态树。换句话说,区块链中每一个区块,都有一个与之对应的MPT状态树;该MPT状态树,维护了在该区块中的交易执行完毕后,区块链中所有账户最新的账户状态。
当记账节点将第一区块广播给区块链网络中的其他节点后,该其他节点也被设置为优先调用第二智能合约,触发第一智能合约的执行,生成内部交易数据,然后再执行第一区块中的目标待打包交易数据中存在的交易(如果存在),这样,如果哪个节点没有优先调用第二智能合约来触发第一智能合约的执行,则该节点执行完第一区块中的交易后生成的状态根(第一状态根或第二状态根)就与记账节点发送过来的第一区块的第一区块头中的状态根不一致,由此可以获知该节点未优先调用第二智能合约触发第一智能合约的执行。而如果接收第一区块的节点优先调用了第二智能合约来触发第一智能合约,然后再执行第一区块中的交易,则生成的状态根与接收到的第一区块头中的状态根保持一致,由此可以验证通过,进行共识后实现第一区块的上链。
例如,若某个节点未触发开奖的第一智能合约,则没有记录用户A中转入15单位的电子资源,而只是记录了目标待打包交易数据中用户B向用户A转入100单位的电子资源,最终导致该节点生成的状态根与第一区块的第一区块头中的状态根不一致。
在示例性实施例中,所述第二智能合约中可包括动作函数。其中,通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据,可包括:根据所述动作函数和所述第一智能合约生成内部交易;将所述内部交易打包至所述第一区块;从所述交易池中的所述待打包交易数据选择目标待打包交易数据;将所述目标待打包交易数据打包至所述第一区块;执行所述第一区块中的所述内部交易,以触发所述第一智能合约生成所述内部交易数据。具体可参见下图7实施例的描述。
图7示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。图7实施例提供的方法可以包括以下步骤。
在步骤S701中,调用第二智能合约。
在步骤S702中,利用第二智能合约确定满足第一智能合约的触发条件。
步骤S701和S702可以参考上述图4实施例中的步骤S311和S312。
在步骤S703中,根据第二智能合约中的动作函数和第一智能合约生成内部交易。
本公开实施例中,内部交易可以是一个合约账户(例如下文的第二智能合约对应的账户)向另一个合约账户(例如上文的第一智能合约对应的账户)发起的指令或者消息,以触发该另一个合约账户对应的智能合约(例如第一智能合约)的执行;也可以是一个合约账户(例如下文的第二智能合约对应的账户)根据另一个合约账户(例如上文的第一智能合约对应的账户)生成的指令或者消息,该指令或者消息被打包进区块后被执行时,可以触发该另一个合约账户对应的智能合约(例如第一智能合约)。
例如,假设第一智能合约为触发条件为当前区块高度为1000的整数倍的开奖合约,标记为“A”,则根据第二智能合约中的动作函数invoke可以生成一条指令为invoke(A),将该指令作为一个内部交易。
在步骤S704中,将内部交易打包至第一区块。
本公开实施例中,内部交易的打包优先级高于交易池中的至少部分待打包交易数据。因此,记账节点在打包当前最新的第一区块时,若发现存在内部交易,会优先将该内部交易打包至第一区块中。
在步骤S705中,从交易池中的待打包交易数据中选择目标待打包交易数据。
图7实施例中,假设内部交易的大小尚未占满第一区块的大小,则记账节点可以继续再从交易池中挑选部分待打包交易数据作为目标待打包交易数据。
在步骤S706中,将目标待打包交易数据打包至第一区块。
记账节点再将目标待打包交易数据也打包至该第一区块中。
在步骤S707中,执行第一区块中的内部交易,以触发第一智能合约生成内部交易数据。
当记账节点生成第一区块后,记账节点再执行第一区块中的内部交易。例如,执行上述invoke(A)的指令,以生成对应的内部交易数据,该内部交易数据被记录至该第一区块中。
在步骤S708中,向区块链网络广播第一区块。
步骤S708可以参考上述图3实施例中的步骤S330。
图7实施例中,记账节点在打包最新区块时,设置为优先调用第二智能合约中的can_invoke函数,在判定满足第一智能合约的触发条件时,不是立即触发该第一智能合约,而是先根据第二智能合约中的invoke函数和该第一智能合约生成内部交易,并优先将该内部交易打包至该最新区块中,并可以继续从交易池中挑选目标待打包交易数据,一并打包至该最新区块中,等该最新区块打包完成后,记账节点再执行该内部交易,触发第一智能合约生成内部交易数据,由此也可以保证内部交易被优先挑选,即保证了第一智能合约触发的时效性。
在示例性实施例中,所述第二智能合约中可包括动作函数。其中,通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据,可包括:根据所述动作函数和所述第一智能合约生成内部交易;在将所述内部交易打包至所述第一区块的过程中,触发所述第一智能合约,生成所述内部交易数据。具体可以参见下图8实施例的描述。
图8示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。图8实施例提供的方法可以包括以下步骤。
在步骤S801中,调用第二智能合约。
在步骤S802中,利用第二智能合约确定满足第一智能合约的触发条件。
步骤S801和S802可以参考上述图4实施例中的步骤S311和S312。
在步骤S803中,根据第二智能合约中的动作函数和第一智能合约生成内部交易。
步骤S803可以参考上述图7实施例中的步骤S703。
在步骤S804中,在将内部交易打包至第一区块的过程中,触发第一智能合约,生成内部交易数据。
可选地,在步骤S805中,从交易池中的待打包交易数据中选择目标待打包交易数据。
可选地,在步骤S806中,将目标待打包交易数据打包至第一区块。
步骤S805和S806可以参考上述图7实施例中的步骤S705和S706。
在步骤S807中,向区块链网络广播第一区块。
步骤S807可以参考上述图3实施例中的步骤S330。
图8实施例中,记账节点在打包最新区块时,设置为优先调用第二智能合约中的can_invoke函数,在判定满足第一智能合约的触发条件时,不是立即触发该第一智能合约,也是先根据第二智能合约中的invoke函数和该第一智能合约生成内部交易,并优先将该内部交易打包至该最新区块中,同时在打包该内部交易至该最新区块的过程中,记账节点即可执行该内部交易,触发第一智能合约生成内部交易数据,由此保证了第一智能合约触发的时效性,即可以不需要等到第一区块打包完成之后再执行内部交易。
在示例性实施例中,所述第二智能合约中可包括动作函数。其中,通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据,可包括:根据所述动作函数和所述第一智能合约生成内部交易;将所述内部交易放入所述交易池中;从所述交易池中选择所述内部交易和所述待打包交易数据中的目标待打包交易数据;将所述内部交易和所述目标待打包交易数据打包至所述第一区块;执行所述第一区块中的所述内部交易,触发所述第一智能合约,生成所述内部交易数据。具体可以参见下图9实施例的描述。
图9示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。图9实施例提供的方法可以包括以下步骤。
在步骤S901中,调用第二智能合约。
在步骤S902中,利用第二智能合约确定满足第一智能合约的触发条件。
步骤S901和S902可以参考上述图4实施例中的步骤S311和S312。
在步骤S903中,根据第二智能合约中的动作函数和第一智能合约生成内部交易。
步骤S903可以参考上述图7实施例中的步骤S703。
在步骤S904中,将内部交易放入交易池中。
本公开实施例中,记账节点再将内部交易放入交易池时,可以在该内部交易中添加一个标识(本公开并不对该标识的具体形式做限定),该标识可以用于表示该内部交易的打包优先级高于交易池中的其它待打包交易数据,以用于保证该内部交易可以被优先地从交易池中挑选出来。
在步骤S905中,从交易池中选择内部交易和待打包交易数据中的目标待打包交易数据。
记账节点在打包最新区块时,先判断交易池中是否存在带打包优先级高的标识的内部交易,若存在,则将其从交易池中优先选择出来。然后再选择其它的部分待打包交易数据作为目标待打包交易数据。
在步骤S906中,打包内部交易数据和目标待打包交易数据,生成第一区块。
在步骤S907中,执行第一区块中的内部交易,触发第一智能合约,生成内部交易数据。
可以理解的是,虽然图9实施例以生成第一区块之后再执行第一区块中的内部交易为例,但本公开并不限定于此,记账节点也可以在将该内部交易从交易池中优先选择出来,并在打包过程中同时执行该内部交易。
在步骤S908中,向区块链网络广播第一区块。
步骤S908可以参考上述图3实施例中的步骤S330。
图9实施例中,记账节点在打包最新区块时,设置为优先调用第二智能合约中的can_invoke函数,在判定满足第一智能合约的触发条件时,不是立即触发该第一智能合约,也是先根据第二智能合约中的invoke函数和该第一智能合约生成内部交易,再将该内部交易放入交易池中,当记账节点要打包当前最新区块时,可以根据交易池中该内部交易的标识,将该内部交易优先打包至该最新区块中,同时在打包该内部交易至该最新区块的过程中或者在该内部交易打包至该最新区块后,记账节点执行该内部交易,触发第一智能合约生成内部交易数据,由此保证了第一智能合约触发的时效性。
在示例性实施例中,所述第二智能合约中可包括动作函数。其中,通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据,可包括:根据所述动作函数和所述第一智能合约生成至少一个内部交易;将各个内部交易打包至所述第一区块;执行所述第一区块中的各个内部交易,触发对应的第一智能合约,生成所述内部交易数据。
在示例性实施例中,所述方法还可包括:从所述交易池中的所述待打包交易数据选择目标待打包交易数据;将所述目标待打包交易数据打包至第二区块。具体可参见下图10实施例的描述。
图10示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。图10实施例提供的方法可以包括以下步骤。
在步骤S1001中,调用第二智能合约。
在步骤S1002中,利用第二智能合约确定满足第一智能合约的触发条件。
步骤S1001和S1002可以参考上述图7实施例中的步骤S705和S706。
在步骤S1003中,根据第二智能合约中的动作函数和第一智能合约生成至少一个内部交易。
图10实施例中,可以包括多个第一智能合约,例如上述的第一智能合约“A”,还可以包括用于在每天晚上五点定时执行发票流转的第一智能合约“B”等。记账节点可以根据第二智能合约中的invoke函数和上述多个第一智能合约,生成多个内部交易,例如invoke(A)和invoke(B)。
在步骤S1004中,将各个内部交易打包至所述第一区块。
记账节点可以优先将该多个内部交易打包至第一区块中。
在步骤S1005中,执行第一区块中的各个内部交易,触发对应的第一智能合约,生成内部交易数据。
图10实施例中,假设这多个内部交易以足够生成一个第一区块,则记账节点不需要再从交易池中去挑选,在打包第一区块后,记账节点即可执行第一区块中的各个内部交易,触发对应的第一智能合约,例如触发上述的第一智能合约A和B,生成内部交易数据,将该内部交易数据记录至该第一区块。
在步骤S1006中,向区块链网络广播第一区块。
步骤S1006可以参考上述图3实施例中的步骤S330。
在步骤S1007中,从交易池中的待打包交易数据中选择目标待打包交易数据。
在步骤S1008中,打包目标待打包交易数据,生成第二区块。
在步骤S1009中,向区块链网络广播第二区块。
记账节点将第二区块向区块链网络中的其他节点广播,其他节点接收到第二区块后,对第二区块进行共识。
图10实施例中,若存在多个第一智能合约,则记账节点在打包最新区块时,设置为优先调用第二智能合约中的can_invoke函数,在判定满足第一智能合约的触发条件时,不是立即触发该多个第一智能合约,而是先根据第二智能合约中的invoke函数和该多个第一智能合约生成多个内部交易,并优先将该多个内部交易打包至该最新的第一区块中,若该多个内部交易已经足够打包成一个第一区块,则记账节点可以此次打包可以不从交易池中挑选目标待打包交易数据,而是在下次打包第二区块时,再从交易池中挑选目标待打包交易数据。
可以理解的是,图10实施例中也可以将多个内部交易先放入交易池,然后记账节点再根据每个内部交易的标识将其优先打包至第一区块,还可以在打包第一区块的过程中同时执行各个内部交易,触发对应的第一智能合约。
下面结合图11对本公开实施例提供的基于区块链的数据处理方法进行举例说明。
图11实施例中,区块链内可包括用于保存合约主动触发逻辑的系统级智能合约(第二智能合约)。在示例性实施例中,系统级智能合约可保存在区块链的每个节点中。例如,该系统级智能合约可由区块链中的任意节点设置并广播至区块链中的其他节点。系统级智能合约设置为记账节点在产生新的区块前所需主动执行的代码语言或其他可执行形式。该系统级智能合约可包括一个或多个合约主动触发逻辑,该一个或多个合约主动触发逻辑中的每一个可由区块链中任意节点(下称用户节点)上传。例如,区块链中的每个节点可根据设置生成需要主动执行的合约主动触发逻辑,并上传至系统级智能合约。
图11中假设用户1向系统级智能合约发起交易,注册合约主动触发逻辑,所述合约主动触发逻辑包括至少一个第一智能合约的主动触发逻辑,第一智能合约的主动触发逻辑包括can_invoke函数(触发条件函数)和invoke函数(动作函数)。经此步骤后,用户1可以无须再进行其它操作。
触发条件函数可包括触发条件的条件判断语句,以及与该触发条件对应的触发条件判断结果。该系统级智能合约还可包括不同的条件判断结果的执行流程。例如,在触发条件判断结果为满足时,则可触发动作函数;在触发条件判断结果为不满足时,则该合约主动触发逻辑结束流程。动作函数中可包括对第一智能合约的调用语句。例如,用户1在生成希望上传至区块链的合约主动触发逻辑时,可根据其自身需求确定希望触发条件函数所能够触发的内部交易,并将该内部交易所涉及的第一智能合约的调用语句写入动作函数中,以便在触发条件函数的触发条件判断结果为满足时,通过触发动作函数以调用该动作函数中的第一智能合约。其中,通过调用动作函数,能够实现对该第一智能合约对应的内部交易的执行。
记账节点每次在构造最新区块(例如上述第一区块)之前,可以基于区块链的当前状态调用触发条件函数can_invoke。若不满足触发条件,can_invoke函数返回false。若满足触发条件,can_invoke函数返回true与后续调用invoke函数所需参数。
例如,触发条件函数中可包括对区块链的当前状态的数值大小判断、或针对区块链的当前状态的相关计算结果的数值大小判断语句。在其数值大小判断结果为是时,可认为区块链的当前状态满足触发条件函数的触发条件。例如,当区块链的当前状态为区块链的区块高度时,触发条件函数中可包括对区块链的区块高度的数值大小判断语句,假设对区块链的区块高度的数值大小判断语句为:区块高度是否等于1000,则在区块链的区块高度等于1000时,则确认该数值大小判断语句的数值大小判断结果为是,并且该区块链的当前状态满足触发条件。
其中,在满足触发条件之后,动作函数触发与之匹配的第一智能合约,该第一智能合约可以是预先写入该动作函数中的智能合约。通过触发第一智能合约能够获得第一智能合约的状态,并可根据第一智能合约的状态更新区块链的当前状态。
第一智能合约存储在区块链上,包括:(1)一段可执行代码;(2)合约自身状态。第一智能合约经内部交易触发执行的流程可以抽象为这样一个公式:S’=F(S,TX),其中TX为传入的内部交易,S为第一智能合约执行前的状态,F为第一智能合约执行的逻辑(由第一智能合约的可执行代码所决定),S’为第一智能合约执行后的新状态。第一智能合约和第二智能合约的部署与执行都经过了区块链节点的共识,恶意节点无法影响网络整体的共识结果。因此,智能合约具有去中心化,可信任的特征。
本公开实施例中,动作函数入参可根据用户1在生成合约主动触发逻辑时根据实际情况进行设置。其中,用户1可根据内部交易的交易方式设置动作函数入参。例如,该动作函数入参可包括一个或多个,并且该每一个动作函数可为固定数值,还可例如为包括区块链的当前状态代入计算的计算式,本公开对此并不做特殊限定。
本公开实施例中,可将动作函数入参作为动作函数的输入参数,以执行该动作函数,进而触发并执行与动作函数匹配的第一智能合约。
图11实施例中,记账节点可以从交易池中的待打包交易数据中挑选目标待打包交易数据,并打包进新区块。记账节点可以执行新区块中的交易,更新区块链的状态。记账记账还可以向其它节点广播新区块,在共识通过后上链。
图11实施例中,假设用户2自行维护一个合约触发服务。合约触发服务一直同步相关信息,如同步区块链状态。若区块链的当前状态满足合约触发条件(这里的合约触发条件假设是不具有严格的时效性的,即不需要对应的智能合约被优先执行,因此,对应的待打包交易数据也就不需要优先被挑选),合约触发服务会构造待打包交易数据,并广播待打包交易数据,进入交易池。
在一些实施例中,区块链的当前状态可包括区块高度,触发条件函数中的触发条件可包括:区块高度为预设高度数值的倍数,第一智能合约可包括开奖交易执行函数。
例如,该用户1可具有如下需求:每1000个区块进行一次开奖。在上述情形下,触发条件函数中的触发条件可为:区块高度为1000的倍数。其中,将触发条件函数可表示如下:
其中,当区块高度为预设高度数值的倍数时,该触发条件函数可返回true,并认为区块链的当前状态满足触发条件函数中的触发条件。
开奖交易执行函数可用于执行开奖的交易,例如,从参与用户中开奖确定中奖用户后,将用户1的账户中一定数量的电子资源转账至该中奖用户的账户中,以实现开奖交易的执行,进而完成内部交易(即游戏开奖交易)的执行,并根据该内部交易对应的第一智能合约(假设此时为lottery智能合约)的执行后的状态更新区块链的状态。
其中,动作函数可表示为如下。
在另一些实施例中,触发条件函数中的触发条件可包括:当前时间与预设条件触发时间相同,第一智能合约可包括电子票据流转交易执行函数。
本公开实施例中,预设条件触发时间可例如为每一预设时间周期内的固定时间点。预设时间周期可例如但不限于为一小时、一天、一周、一月、一年等。例如,预设条件触发时间可例如为每天17:00,但此处仅为示例,本公开并不以此为限。当用户1为企业时,该用户1可具有如下需求:每天17:00执行电子票据流转交易。在上述情形下,触发条件函数中的触发条件可为:当前时间为17:00。
本公开实施例中电子票据流转交易执行函数可用于执行电子票据的流转交易,例如,动作函数可用于将当前的预设时间周期内的该用户节点的电子票据流转至税务局节点,以执行电子票据流转交易(即内部交易),以定时完成报税流程。并根据该内部交易对应的第一智能合约的执行后的状态更新区块链的状态。
在又一些实施例中,区块链的当前状态可包括电子票据开具记录,触发条件函数中的触发条件包括:在预设时间范围内的电子票据开具记录的数量大于预设开具数量阈值,第一智能合约可包括电子票据标记执行函数。若预设时间范围内的电子票据开具记录的数量大于预设开具数量阈值,确认区块链的当前状态满足触发条件函数中的触发条件。
本公开实施例中,预设时间范围可例如为每日的凌晨0点至凌晨5点,预设开具数量阈值可例如为5,但此处的预设时间范围和预设开具数量阈值仅为示例,本公开并不以此为限。例如,当用户1在预设时间范围内(例如凌晨0点至5点)接收到超过预设开具数量阈值(例如5)的电子票据开具操作,则可认为生成的电子票据较为可疑,确认区块链的当前状态满足触发条件函数中的触发条件。
本公开实施例中,电子票据标记执行函数可用于执行对指定的电子票据的标记操作。例如,可将需要标记的电子票据的开具交易过程中对电子票据进行标记,以完成内部交易的执行,并根据该内部交易对应的第一智能合约的执行后的状态更新区块链的状态。
本申请实施例的基于区块链的数据处理方法,一方面,通过在区块链内引入一个用于保存合约主动触发逻辑(包括触发条件函数与动作函数)的系统级智能合约。记账节点在每次构造区块时,首先都会基于区块链的最新状态调用触发条件函数,来判断是否满足触发条件。若满足,则会继续调用动作函数来进行第一智能合约的触发,即提供了一种智能合约的主动触发模式,支持第一智能合约的自动化触发,能够在第一智能合约满足触发条件后,通过第二智能合约主动地自行触发第一智能合约,无须由外部账户发起的外部交易触发,该主动触发模式具有最佳的时效性,可以在满足触发条件后立即触发第一智能合约,保证了第一智能合约触发的时效性。另一方面,用户1只需在系统级智能合约中注册合约主动触发逻辑即可,无须像用户2一样自行维护一个合约触发服务。同时,区块链自身具有分布式,去中心化的特点,不会发生宕机的问题。对于黑客来说,攻击整个区块链系统难度极大。因此,主动触发模式十分可靠。
以下介绍本公开的装置实施例,可以用于执行本公开上述的基于区块链的数据处理方法。对于本公开装置实施例中未披露的细节,请参照本公开上述的基于区块链的数据处理方法的实施例。
图12示意性示出了根据本公开的一实施例的基于区块链的数据处理装置的框图。区块链网络可包括记账节点,所述区块链网络中可部署第一智能合约,所述方法可由所述记账节点执行,所述区块链网络中可包括交易池,所述交易池中可包括待打包交易数据。
参照图12所示,根据本公开的一个实施例的基于区块链的数据处理装置1200可以包括:内部交易数据获取单元1210、第一区块生成单元1220以及第二区块广播单元1230。
本公开实施例中,内部交易数据获取单元1210可以用于获取内部交易数据,其中所述内部交易数据是触发所述第一智能合约获得的,所述内部交易数据的打包优先级高于至少部分所述待打包交易数据。第一区块生成单元1220可以用于打包所述内部交易数据,生成第一区块。第二区块广播单元1230可以用于向所述区块链网络广播所述第一区块。
本公开实施方式提供的基于区块链的数据处理装置,在区块链网络中的记账节点打包当前的第一区块时,相比该区块链网络的交易池中的打包优先级较低的待打包交易数据,优先获取触发该区块链网络中部署的第一智能合约生成的内部交易数据,将该内部交易数据打包进该第一区块中,由此能够实现高打包优先级的内部交易数据优先打包进第一区块,且该内部交易数据是通过触发区块链网络中部署的第一智能合约获得,由此能够保证第一智能合约的触发满足时效性。
在示例性实施例中,所述区块链网络中还可部署第二智能合约。其中,内部交易数据获取单元1210可包括:第二智能合约调用单元,可用于调用所述第二智能合约;满足触发条件确定单元,可用于利用所述第二智能合约确定满足所述第一智能合约的触发条件;第一智能合约触发单元,可用于通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据。
在示例性实施例中,所述区块链网络中还可部署第二智能合约,所述区块链网络还可包括非记账节点。其中,内部交易数据获取单元1210可包括:内部交易数据接收单元,可用于从所述非记账节点接收所述内部交易数据。其中所述非记账节点可用于调用所述第二智能合约,通过所述第二智能合约确定满足所述第一智能合约的触发条件,利用所述第二智能合约触发所述第一智能合约的执行,生成并广播所述内部交易数据。
在示例性实施例中,所述第二智能合约中可包括动作函数。其中,第一智能合约触发单元可包括:动作函数触发单元,可用于调用所述动作函数触发所述第一智能合约,生成所述内部交易数据。其中,基于区块链的数据处理装置1200还可包括:第一目标待打包交易数据选择单元,可用于在调用所述动作函数触发所述第一智能合约,生成所述内部交易数据之后,从所述交易池中的所述待打包交易数据选择目标待打包交易数据;第一目标待打包交易数据打包单元,可用于将所述目标待打包交易数据打包至所述第一区块。
在示例性实施例中,所述第二智能合约中可包括动作函数。其中,第一智能合约触发单元可包括:第一内部交易生成单元,可用于根据所述动作函数和所述第一智能合约生成内部交易;内部交易打包单元,可用于将所述内部交易打包至所述第一区块;第二目标待打包交易数据选择单元,可用于从所述交易池中的所述待打包交易数据选择目标待打包交易数据;第二目标待打包交易数据打包单元,可用于将所述目标待打包交易数据打包至所述第一区块;第一内部交易执行单元,可用于执行所述第一区块中的所述内部交易,以触发所述第一智能合约生成所述内部交易数据。
在示例性实施例中,所述第二智能合约中可包括动作函数。其中,第一智能合约触发单元可包括:第二内部交易生成单元,可用于根据所述动作函数和所述第一智能合约生成内部交易;打包合约触发单元,可用于在将所述内部交易打包至所述第一区块的过程中,触发所述第一智能合约,生成所述内部交易数据。
在示例性实施例中,所述第二智能合约中可包括动作函数。其中,第一智能合约触发单元可包括:第三内部交易生成单元,可用于根据所述动作函数和所述第一智能合约生成内部交易;内部交易放入单元,可用于将所述内部交易放入所述交易池中;待打包数据选择单元,可用于从所述交易池中选择所述内部交易和所述待打包交易数据中的目标待打包交易数据;待打包数据打包单元,可用于将所述内部交易和所述目标待打包交易数据打包至所述第一区块;第二内部交易执行单元,可用于执行所述第一区块中的所述内部交易,触发所述第一智能合约,生成所述内部交易数据。
在示例性实施例中,所述第二智能合约中可包括动作函数。其中,第一智能合约触发单元可包括:第四内部交易生成单元,可用于根据所述动作函数和所述第一智能合约生成至少一个内部交易;多个内部交易打包单元,用于将各个内部交易打包至所述第一区块;第一区块执行单元,用于执行所述第一区块中的各个内部交易,触发对应的第一智能合约,生成所述内部交易数据。
在示例性实施例中,基于区块链的数据处理装置1200还可包括:第三目标待打包交易数据打包单元,用于从所述交易池中的所述待打包交易数据选择目标待打包交易数据;第二区块打包单元,用于将所述目标待打包交易数据打包至第二区块;第二区块广播单元,用于向所述区块链网络广播所述第二区块。
图13示出了适于用来实现本公开实施例的电子设备的结构示意图。需要说明的是,图13示出的电子设备1300仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图13所示,电子设备1300包括中央处理单元(CPU)1301,其可以根据存储在只读存储器(ROM)1302中的程序或者从储存部分1308加载到随机访问存储器(RAM)1303中的程序而执行各种适当的动作和处理。在RAM 1303中,还存储有系统操作所需的各种程序和数据。CPU 1301、ROM 1302以及RAM 1303通过总线1304彼此相连。输入/输出(I/O)接口1305也连接至总线1304。
以下部件连接至I/O接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1307;包括硬盘等的储存部分1308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入储存部分1308。
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理单元(CPU)1301执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有至少一个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含至少一个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块和/或单元和/或子单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的模块和/或单元和/或子单元也可以设置在处理器中。其中,这些模块和/或单元和/或子单元的名称在某种情况下并不构成对该模块和/或单元和/或子单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图3或图4或图5或图7或图8或图9或图10或图11所示的各个步骤。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元或者子单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元或者子单元的特征和功能可以在一个模块或者单元或者子单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元或者子单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
Claims (12)
1.一种基于区块链的数据处理方法,区块链网络包括记账节点,其特征在于,所述区块链网络中部署第一智能合约,所述方法由所述记账节点执行,所述区块链网络中包括交易池,所述交易池中包括待打包交易数据;其中,所述方法包括:
获取内部交易数据,其中所述内部交易数据是触发所述第一智能合约获得的,所述内部交易数据的打包优先级高于至少部分所述待打包交易数据;
打包所述内部交易数据,生成第一区块;
向所述区块链网络广播所述第一区块。
2.如权利要求1所述的方法,其特征在于,所述区块链网络中还部署第二智能合约;其中,获取内部交易数据,包括:
调用所述第二智能合约;
利用所述第二智能合约确定满足所述第一智能合约的触发条件;
通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据。
3.如权利要求1所述的方法,其特征在于,所述区块链网络中还部署第二智能合约,所述区块链网络还包括非记账节点;其中,获取内部交易数据,包括:
从所述非记账节点接收所述内部交易数据;
其中所述非记账节点用于调用所述第二智能合约,通过所述第二智能合约确定满足所述第一智能合约的触发条件,利用所述第二智能合约触发所述第一智能合约的执行,生成并广播所述内部交易数据。
4.如权利要求2所述的方法,其特征在于,所述第二智能合约中包括动作函数;其中,通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据,包括:
调用所述动作函数触发所述第一智能合约,生成所述内部交易数据;
其中,调用所述动作函数触发所述第一智能合约,生成所述内部交易数据之后,所述方法还包括:
从所述交易池中的所述待打包交易数据选择目标待打包交易数据;
将所述目标待打包交易数据打包至所述第一区块。
5.如权利要求2所述的方法,其特征在于,所述第二智能合约中包括动作函数;其中,通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据,包括:
根据所述动作函数和所述第一智能合约生成内部交易;
将所述内部交易打包至所述第一区块;
从所述交易池中的所述待打包交易数据选择目标待打包交易数据;
将所述目标待打包交易数据打包至所述第一区块;
执行所述第一区块中的所述内部交易,以触发所述第一智能合约生成所述内部交易数据。
6.如权利要求2所述的方法,其特征在于,所述第二智能合约中包括动作函数;其中,通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据,包括:
根据所述动作函数和所述第一智能合约生成内部交易;
在将所述内部交易打包至所述第一区块的过程中,触发所述第一智能合约,生成所述内部交易数据。
7.如权利要求2所述的方法,其特征在于,所述第二智能合约中包括动作函数;其中,通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据,包括:
根据所述动作函数和所述第一智能合约生成内部交易;
将所述内部交易放入所述交易池中;
从所述交易池中选择所述内部交易和所述待打包交易数据中的目标待打包交易数据;
将所述内部交易和所述目标待打包交易数据打包至所述第一区块;
执行所述第一区块中的所述内部交易,触发所述第一智能合约,生成所述内部交易数据。
8.如权利要求2所述的方法,其特征在于,所述第二智能合约中包括动作函数;其中,通过所述第二智能合约触发所述第一智能合约的执行,生成所述内部交易数据,包括:
根据所述动作函数和所述第一智能合约生成至少一个内部交易;
将各个内部交易打包至所述第一区块;
执行所述第一区块中的各个内部交易,触发对应的第一智能合约,生成所述内部交易数据。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
从所述交易池中的所述待打包交易数据选择目标待打包交易数据;
将所述目标待打包交易数据打包至第二区块;
向所述区块链网络广播所述第二区块。
10.一种基于区块链的数据处理装置,区块链网络包括记账节点,其特征在于,所述区块链网络中部署第一智能合约,所述方法由所述记账节点执行,所述区块链网络中包括交易池,所述交易池中包括待打包交易数据;其中,所述装置包括:
内部交易数据获取单元,用于获取内部交易数据,其中所述内部交易数据是触发所述第一智能合约获得的,所述内部交易数据的打包优先级高于至少部分所述待打包交易数据;
第一区块生成单元,用于打包所述内部交易数据,生成第一区块;
第一区块广播单元,用于向所述区块链网络广播所述第一区块。
11.一种电子设备,其特征在于,包括:
至少一个处理器;
存储装置,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-9中任一项所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110268849.7A CN113034137A (zh) | 2021-03-12 | 2021-03-12 | 基于区块链的数据处理方法、装置及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110268849.7A CN113034137A (zh) | 2021-03-12 | 2021-03-12 | 基于区块链的数据处理方法、装置及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113034137A true CN113034137A (zh) | 2021-06-25 |
Family
ID=76470150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110268849.7A Pending CN113034137A (zh) | 2021-03-12 | 2021-03-12 | 基于区块链的数据处理方法、装置及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113034137A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626531A (zh) * | 2021-09-03 | 2021-11-09 | 杭州复杂美科技有限公司 | 交易打包方法、计算机设备和存储介质 |
CN114726534A (zh) * | 2022-03-28 | 2022-07-08 | 海南格子山网络科技有限公司 | 一种基于Solana区块链技术实现智能合约抽签的方法 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107886329A (zh) * | 2017-11-28 | 2018-04-06 | 无锡井通网络科技有限公司 | 基于区块链技术的系统合约的定时触发调用方法 |
CN109033814A (zh) * | 2018-07-18 | 2018-12-18 | 百度在线网络技术(北京)有限公司 | 智能合约触发方法、装置、设备及存储介质 |
CN109493203A (zh) * | 2018-09-30 | 2019-03-19 | 咪咕文化科技有限公司 | 一种数据核算方法、装置及存储介质 |
CN109544332A (zh) * | 2018-10-17 | 2019-03-29 | 贵阳信息技术研究院(中科院软件所贵阳分部) | 一种基于用户等级的区块链交易出块的方法 |
CN110264190A (zh) * | 2019-05-07 | 2019-09-20 | 深圳壹账通智能科技有限公司 | 智能合约的触发方法、装置、设备及存储介质 |
CN110544096A (zh) * | 2019-09-05 | 2019-12-06 | 腾讯科技(深圳)有限公司 | 基于区块链的数据获取方法、装置、设备及存储介质 |
CN110717762A (zh) * | 2019-12-16 | 2020-01-21 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、节点设备及存储介质 |
CN110796545A (zh) * | 2019-10-25 | 2020-02-14 | 杭州趣链科技有限公司 | 一种区块链交易的批处理方法、设备和存储介质 |
CN111445333A (zh) * | 2020-03-26 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 区块生成方法、装置、计算机设备以及存储介质 |
CN111461880A (zh) * | 2020-03-26 | 2020-07-28 | 广东洪心电子商务科技股份有限公司 | 一种基于用户等级的区块链交易出块的方法及系统 |
KR20200091647A (ko) * | 2019-01-23 | 2020-07-31 | 넷마블 주식회사 | 아이템 거래 기법 |
CN111679902A (zh) * | 2020-08-14 | 2020-09-18 | 支付宝(杭州)信息技术有限公司 | 基于区块链的智能合约调用方法及装置、电子设备 |
CN111767097A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 调用智能合约的方法及装置、电子设备、存储介质 |
CN111953648A (zh) * | 2020-06-22 | 2020-11-17 | 北京欧链科技有限公司 | 基于区块链预言机的数据处理方法、装置及电子设备 |
CN112232823A (zh) * | 2020-12-10 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 区块链系统的交易处理方法、装置、介质及电子设备 |
-
2021
- 2021-03-12 CN CN202110268849.7A patent/CN113034137A/zh active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107886329A (zh) * | 2017-11-28 | 2018-04-06 | 无锡井通网络科技有限公司 | 基于区块链技术的系统合约的定时触发调用方法 |
CN109033814A (zh) * | 2018-07-18 | 2018-12-18 | 百度在线网络技术(北京)有限公司 | 智能合约触发方法、装置、设备及存储介质 |
CN109493203A (zh) * | 2018-09-30 | 2019-03-19 | 咪咕文化科技有限公司 | 一种数据核算方法、装置及存储介质 |
CN109544332A (zh) * | 2018-10-17 | 2019-03-29 | 贵阳信息技术研究院(中科院软件所贵阳分部) | 一种基于用户等级的区块链交易出块的方法 |
KR20200091647A (ko) * | 2019-01-23 | 2020-07-31 | 넷마블 주식회사 | 아이템 거래 기법 |
CN110264190A (zh) * | 2019-05-07 | 2019-09-20 | 深圳壹账通智能科技有限公司 | 智能合约的触发方法、装置、设备及存储介质 |
CN110544096A (zh) * | 2019-09-05 | 2019-12-06 | 腾讯科技(深圳)有限公司 | 基于区块链的数据获取方法、装置、设备及存储介质 |
CN110796545A (zh) * | 2019-10-25 | 2020-02-14 | 杭州趣链科技有限公司 | 一种区块链交易的批处理方法、设备和存储介质 |
CN110717762A (zh) * | 2019-12-16 | 2020-01-21 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、节点设备及存储介质 |
CN111461880A (zh) * | 2020-03-26 | 2020-07-28 | 广东洪心电子商务科技股份有限公司 | 一种基于用户等级的区块链交易出块的方法及系统 |
CN111445333A (zh) * | 2020-03-26 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 区块生成方法、装置、计算机设备以及存储介质 |
CN111953648A (zh) * | 2020-06-22 | 2020-11-17 | 北京欧链科技有限公司 | 基于区块链预言机的数据处理方法、装置及电子设备 |
CN111679902A (zh) * | 2020-08-14 | 2020-09-18 | 支付宝(杭州)信息技术有限公司 | 基于区块链的智能合约调用方法及装置、电子设备 |
CN111767097A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 调用智能合约的方法及装置、电子设备、存储介质 |
CN112232823A (zh) * | 2020-12-10 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 区块链系统的交易处理方法、装置、介质及电子设备 |
Non-Patent Citations (1)
Title |
---|
黄洁华;高灵超;许玉壮;白晓敏;胡凯;: "众筹区块链上的智能合约设计", 信息安全研究, no. 03, 5 March 2017 (2017-03-05) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626531A (zh) * | 2021-09-03 | 2021-11-09 | 杭州复杂美科技有限公司 | 交易打包方法、计算机设备和存储介质 |
CN114726534A (zh) * | 2022-03-28 | 2022-07-08 | 海南格子山网络科技有限公司 | 一种基于Solana区块链技术实现智能合约抽签的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110443704B (zh) | 一种跨链发送资源的方法和装置 | |
US11468077B2 (en) | Computer-implemented system and method for managing transactions over a blockchain network | |
CN110147990B (zh) | 基于区块链的缴费代扣签约方法及装置、电子设备 | |
Ferrer-Gomila et al. | A fair contract signing protocol with blockchain support | |
CN112200571B (zh) | 基于区块链的资源发放方法、装置及电子设备 | |
CN111818185B (zh) | 启动智能合约的方法及装置、电子设备、存储介质 | |
CN112801658B (zh) | 跨境资源转移真实性审核方法、装置及电子设备 | |
US20230245080A1 (en) | Convergent Consensus Method for Distributed Ledger Transaction Processing | |
CN112200567A (zh) | 基于区块链的资源管理方法、装置及电子设备 | |
Hu et al. | Analyzing smart contract interactions and contract level state consensus | |
CN110597916A (zh) | 基于区块链的数据处理方法、装置、存储介质及终端 | |
CN111967994B (zh) | 一种智能合约的创建方法和装置 | |
CN113034137A (zh) | 基于区块链的数据处理方法、装置及相关设备 | |
CN112015576A (zh) | 一种智能合约的调用方法和装置 | |
CN112200568A (zh) | 基于区块链的账户创建方法、装置及电子设备 | |
CN110599144A (zh) | 一种区块链节点的入网方法以及装置 | |
CN113469811A (zh) | 区块链交易处理方法及装置 | |
CN110458541B (zh) | 基于区块链的对象置换方法及装置 | |
Bagchi | Using blockchain technology and smart contracts for access management in IoT devices | |
Tian et al. | Design a proof of stake based directed acyclic graph chain | |
Coutinho et al. | Enabling Blockchain Scalability and Interoperability with Mobile Computing through LayerOne. X | |
CN112200570A (zh) | 基于区块链的资源发放方法、装置及电子设备 | |
Martini | A distributed CMS for small enterprises aggregation | |
Zhang et al. | Cross-Chain Interoperability and Collaboration for Keyword-Based Embedded Smart Contracts in the Internet of Things | |
Geng et al. | Blockchain-inspired Framework for Runtime Verification of IoT Ecosystem Task Fulfillment |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40046821 Country of ref document: HK |