一种交易执行方法、装置及存储介质与流程

文档序号:24241049发布日期:2021-03-12 13:15阅读:100来源:国知局
一种交易执行方法、装置及存储介质与流程
本发明涉及信息
技术领域
,具体涉及一种交易执行方法、装置及存储介质。
背景技术
:在大多数区块链系统中,交易在转发过程中,其他节点都会对交易的合法性进行初步验证,其中包括交易签名的合法性以及交易内容的合法性验证,验证交易内容合法性时主要依赖于本地账本的数据,经过初步验证的交易才会在全网广播,进而经过共识打包生成区块。在高频交易环境下,频繁查询本地账本会使得查询效率降低,进而导致查询结果延迟加大,不利于交易快速广播。技术实现要素:本发明提供了一种交易执行方法、装置及存储介质,以解决相关技术中频繁查询本地账本导致查询效率降低的问题。本发明实施例提供了一种交易执行方法,应用于第一节点中,包括:接收第二节点发送的交易请求,其中,所述交易请求中携带有签名、交易账户和交易内容;在所述签名验证合法且所述交易账户存储在预先设置的名单的情况下,使用临时账本对所述交易内容进行验证;在验证合法的情况下,模拟执行所述交易内容,并在所述临时账本中记录交易结果。可选的,在模拟执行所述交易内容之后,还包括:将所述交易内容发送给共识节点;接收所述共识节点根据所述交易内容生成的区块,其中,所述区块中携带有所述签名和所述交易内容;执行所述区块中的所述交易内容,并在本地账本中记录生成的交易结果。可选的,所述执行所述区块中的所述交易内容,包括:验证所述区块是否合法;在验证合法的情况下,对所述区块进行解析,生成所述签名以及所述交易内容;验证所述签名和所述交易内容是否合法;在验证合法的情况下,执行所述交易内容。可选的,在将所述交易内容发送到共识节点之后,还包括:在预设时间内未接收到所述共识节点根据所述交易内容生成的区块的情况下,判断所述临时账本中所述交易内容是否被模拟执行过;在判断结果为是的情况下,对所述临时账本中记录的所述交易结果进行回滚。可选的,在将所述交易内容发送到共识节点之后,还包括:在对所述交易内容验证不合法的情况下,判断所述临时账本中所述交易内容是否被模拟执行过;在判断结果为是的情况下,对所述临时账本中记录的所述交易结果进行回滚。可选的,在接收第二节点发送的交易请求之后,还包括:在所述签名验证合法且所述交易账户未存储在预先设置的名单的情况下,使用所述本地账本对所述交易内容进行验证。可选的,在使用临时账本对所述交易内容进行验证之前,还包括:获取交易频率超过预设阈值的交易账户的信息;将所述交易频率超过预设阈值的交易账户记录进所述名单中。本发明实施例还提供了一种交易执行方法,应用于第三节点中,包括:接收共识节点发送的区块,其中,所述区块中携带有签名、交易账户和交易内容;在所述签名以及所述交易内容验证合法且所述交易账户存储在预先设置的名单的情况下,判断是否模拟执行过所述交易内容;在判断结果为否的情况下,模拟执行所述交易内容,并在临时账本和本地账本中记录交易结果。本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例中的任意一种方法。本发明实施例还提供了一种电子装置,包括存储器和处理器,所述处理器通过执行所述存储器中的程序实现本发明实施例中的任意一种方法。通过本发明实施例提供的任务方法,可以解决相关技术中频繁查询本地账本导致查询效率降低的问题。附图说明图1为根据本发明实施例的一种交易执行方法的流程图;图2为根据本发明实施例的另一种交易执行方法的流程图;图3是根据本发明实施例的又一种交易执行方法的流程图;图4是根据本发明实施例的一种节点初步验证交易合法性的方法流程图;图5是根据本发明实施例的一种节点对区块进行交易处理的方法流程图;图6是根据本发明实施例的一种超时未处理交易的回滚方法流程图;图7是根据本发明实施例的一种交易执行方法框图;图8是根据本发明实施例的一种交易执行装置的框图;图9是根据本发明实施例的另一种交易执行装置的框图;图10是根据本发明实施例的又一种交易执行装置的框图。具体实施方式为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。另外,在本发明实施例中,“可选的”或者“示例性的”等词用于表示作例子、例证或说明。本发明实施例中被描述为“可选的”或者“示例性的”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“可选的”或者“示例性的”等词旨在以具体方式呈现相关概念。本发明实施例提供了一种交易执行方法,图1为根据本发明实施例的一种交易执行方法的流程图,该方法应用于第一节点中,其中,该方法包括以下流程:s102:接收第二节点发送的交易请求,其中,该交易请求中携带有签名、交易账户和交易内容;s104:在该签名验证合法且该交易账户存储在预先设置的名单的情况下,使用临时账本对该交易内容进行验证;s106:在验证合法的情况下,模拟执行该交易内容,并在该临时账本中记录交易结果。根据本发明实施例的方法,网络中的第一节点中存储有临时账本,第一节点通过该临时账本对第二节点发送的交易请求进行初步合法性检验,在验证合法之后,通过模拟执行的方式,生成模拟交易结果。从而分担了本地账本进行交易内容检验的工作,提高了节点处理效率。可选的,在模拟执行该交易内容之后,还包括:将该交易内容发送给共识节点;接收该共识节点根据该交易内容生成的区块,其中,该区块中携带有该签名和该交易内容;执行该区块中的该交易内容,在本地账本中记录生成的交易结果。在初步判定交易合法后,第一节点会将交易信息进行广播,随后通过共识节点进行打包,生成新的区块;第一节点接收共识节点生成的区块,并分别对区块、区块中的签名、区块中的交易内容进行验证,在验证合法的情况,第一节点会正式执行交易内容,在本地账本中记录交易结果,同时将交易结果反馈给第二节点。可以看出,临时账本只用于进行交易的初步检验,最后真正执行并生成的交易结果依然写入本地账本,进而保障本地账本的有效性。可选的,该执行该区块中的该交易内容,包括:验证该区块是否合法;在验证合法的情况下,对该区块进行解析,生成该签名以及该交易内容;验证该签名和该交易内容是否合法;在验证合法的情况下,执行该交易内容。可选的,在将该交易内容发送到共识节点之后,还包括:在预设时间内未接收到该共识节点根据该交易内容生成的区块的情况下,判断该临时账本中该交易内容是否被模拟执行过;在判断结果为是的情况下,对该临时账本中记录的该交易结果进行回滚。第一节点将交易内容进行广播的过程中或者共识节点将区块反馈给第一节点的过程中可能存在网络延迟,如果在预设时间内没有收到区块,则交易超时,此时需要回滚并清理第一节点模拟交易执行的缓存信息,以及临时账本中存储的交易结果信息。可选的,在将该交易内容发送到共识节点之后,还包括:在对该交易内容验证不合法的情况下,判断该临时账本中该交易内容是否被模拟执行过;在判断结果为是的情况下,对该临时账本中记录的该交易结果进行回滚。可选的,在接收第二节点发送的交易请求之后,还包括:在该签名验证合法且该交易账户未存储在预先设置的名单的情况下,使用该本地账本对该交易内容进行验证。第一节点同时管理本地账本和临时账本,本地账本以文件形式存储于本地进行管理,临时账本存储在第一节点的内存中。在第一节点接收到的交易账户存储在名单中的情况下,通过临时账本进行校验;在第一节点接收到的交易账户未存储在名单中的情况下,通过本地账本进行校验。可选的,在使用临时账本对该交易内容进行验证之前,还包括:获取交易频率超过预设阈值的交易账户的信息;将该交易频率超过预设阈值的交易账户记录进该名单中。将高频交易的账户信息记录在名单中,凡是在名单的账户均采用临时账本进行交易合法性的校验,从而可以提高交易效率。本发明实施例还提供了一种交易执行方法,图2为根据本发明实施例的另一种交易执行方法的流程图,该方法应用于第三节点中,其中,该方法包括以下流程:s202:接收共识节点发送的区块,其中,该区块中携带有签名、交易账户和交易内容;s204:在该签名以及该交易内容验证合法且该交易账户存储在预先设置的名单的情况下,判断是否模拟执行过该交易内容;s206:在判断结果为否的情况下,模拟执行该交易内容,并在临时账本和本地账本中记录交易结果。共识节点在对交易进行打包后会生成区块,并将区块发送给全网节点,其中,既包括了实际将要发生交易的节点,也包括未实际发生交易的节点。对于未实际发生交易的节点,同样需要对区块以及区块携带的签名和交易内容进行合法性验证,模拟执行交易内容,并在临时账本中和本地账本中记录交易结果,以确保全网节点都会对该笔交易进行记录。本发明实施例又提供了一种交易执行方法,图3是根据本发明实施例的又一种交易执行方法的流程图。如图3所示,该方法包括如下步骤:步骤3.1,客户端初始化交易,发送交易请求到节点;步骤3.2,节点收到交易请求后,开始初步验证;步骤3.3,节点初步验证交易通过后,模拟执行交易,并把交易发送到共识节点;步骤3.4,共识节点对接收到的交易进行排序,将交易打包,生成新的区块;步骤3.5,共识节点发送新的区块给全网节点;步骤3.6,节点根据共识后的区块进行处理,同时更新本地账本中的数据;步骤3.7,节点将最终执行结果返回给客户端。图4是根据本发明实施例的一种节点初步验证交易合法性的方法流程图,如图4所示,该方法包括如下步骤:步骤4.1,客户端或者其他节点广播发送交易请求到节点,该请求包括相应的数字签名;节点验证签名是否合法,如果是,继续验证,否则,返回交易无效;步骤4.2,节点判断涉及的账户数据是否在节点维护的名单中,如果是,则访问临时账本获取数据,进入步骤4.3;否则,访问本地账本,进入步骤4.4;需要说明的是,网络中的节点中会同时维护有本地账本和临时账本,本地账本以文件形式存储在本地进行管理,临时账本存储在内存中。节点中还维护有交易账户的名单,该名单服务于临时账本。名单的管理方式可以包括两种:方案一、节点自适应调节1)根据内存设置临时账本参数,其中包括涉及账户的最大数量、缓存交易的最大数量等;2)根据账户交易数据,确定账户的优先级,依据优先级将账户纳入临时账本。其中,优先级可以根据账户某段时间内交易的tps(每秒多少笔交易)值的大小确定。在方案一中,对名单的管理是个性化的,即网络中每个节点的名单都不一样。方案二、全网统一设置1)管理员根据区块数据,在全网节点配置统一的账户名单,确保不同临时账本的账户数据一致;2)节点根据区块数据,通过自动化程序生成全网节点统一临时账本名单。在方案二中,以上两种方法,均可以使全网所有节点临时账本的名单在区块高度一致时都是一致的。步骤4.3,节点根据临时账本验证交易内容是否合法,如果交易合法,则模拟执行交易内容;否则,返回交易无效;步骤4.4,节点根据本地账本验证交易内容是否合法,如果交易合法,则判定交易合法;否则,返回交易无效。图5是根据本发明实施例的一种节点对区块进行交易处理的方法流程图,如图5所示,该方法包括如下步骤:步骤5.1,节点收到经过共识机制打包生成的区块;步骤5.2,节点验证区块是否合法,如果合法,解析交易集;如果不合法,返回交易无效;步骤5.3,节点验证签名是否合法,如果合法,继续验证;如果不合法,返回交易无效;步骤5.4,节点验证交易内容是否合法:如果合法,交易正常执行,并更新本地账本;此外,判断临时账本的交易是否执行过,如果已执行,则清理缓存;如果未执行,则补充模拟执行交易;如果不合法,拒绝交易执行;验证交易是否被模拟执行过,如果已执行,则回滚交易内容更新临时账本信息并清理相应的缓存交易;如果未执行,则流程直接结束。图6是根据本发明实施例的一种超时未处理交易的回滚方法流程图,如图6所示,该方法包括如下步骤:步骤6.1,客户端发送交易请求到节点;步骤6.2,节点模拟执行交易;步骤6.3,节点定期验证缓存交易是否超时未真正被执行,如果是,回滚交易内容更新临时账本信息并清理相应交易的缓存信息;否则,继续缓存。上述情况可能发生在如下情形:由于节点故障丢弃交易或者缓存了一笔过时的交易,系统一直没有把这笔交易打包进区块,从而导致缓存交易超时未真正被执行,因此必须回滚交易内容、更新临时账本信息并清理相应交易的缓存信息。以下结合具体场景对本发明实施例的方案进行说明。实例1,单笔转账交易实例全网节点维护账户的名单如下:序号账户a6xxx1c6xxx3f6xxx6g...不在名单里的账户:b账户6xxx2,d账户6xxx4,e账户6xxx5。a账户初始余额1000.00元,b账户初始余额0.00元,临时账本的余额与本地账本的余额是一致的。1)客户端向节点2发起单笔转账交易1,a账户转给b账户,转账金额100.00元;2)节点2收到客户端发来的请求信息{签名、公钥、a、b、100.00},首先验证签名是否合法,如果不合法,返回交易无效;如果合法,交易继续;(每个交易都会验证签名是否合法,后续实施例不再重复)3)判断账户a是否在全网节点维护的名单中;4)账户a在账户名单中,节点2使用临时账本验证交易内容合法性,a账户余额1000.00大于转账金额100.00,交易内容合法;节点2使用临时账本模拟执行交易,a账户余额1000.00-100.00=900.00(元);节点2模拟执行交易后的账户信息如下:账户本地账本状态临时账本状态a1000.00900.00b0.00nullc0.000.00......注:账户b不在临时账本名单中,所以临时账本不存储账户b的状态,用null表示。5)此交易全网广播,并经过共识打包生成区块;6)各节点收到共识打包的新区块,解析出转账交易1,验证交易内容是否合法。图7是根据本发明实施例的一种交易执行方法框图,如图7所示,对区块进行交易执行之后,相应节点的信息变化如下:节点2,临时账本已经模拟执行过交易,因此清理缓存,不回滚;本地账本记账,a账户余额为900.00(元);节点1和节点3,使用临时账本模拟执行转账交易1,本地账本记账;a账户余额:900.00,b账户余额:100.00节点2对区块进行交易执行后,节点1、节点2和节点3的账户信息如下:账户本地账本状态临时账本状态a900.00900.00b100.00nullc0.000.00......实例2,多笔转账交易实例全网节点维护账户的名单如下:序号账户a6xxx1c6xxx3f6xxx6g...不在名单里的账户:b账户6xxx2,d账户6xxx4,e账户6xxx5。a账户初始余额900.00元,b账户初始余额100.00元,临时账本的余额与本地账本的余额是一致的。客户端依次发起转账交易2、转账交易3、转账交易4,交易信息如下:转账交易2:a账户转给b账户,转账金额200.00元;转账交易3:a账户转给c账户,转账金额500.00元;转账交易4:c账户转给b账户,转账金额200.00元;1)客户端发送转账交易2、转账交易3、转账交易4到节点2;a.转账交易2:账户a在账户名单中,节点2使用临时账本验证交易2内容的合法性,a账户余额900.00大于转账金额200.00,交易内容合法;节点2使用临时账本模拟执行交易,a账户余额900.00-200.00=700.00(元);b.转账交易3:账户a、账户c均在账户名单中,节点2使用临时账本验证交易3内容的合法性,a账户余额700.00大于转账金额500.00,交易内容合法;节点2使用临时账本模拟执行交易,a账户余额700.00-500.00=200.00(元),c账户余额0.00+500.00=500.00(元);c.转账交易4:账户c在账户名单中,节点2使用临时账本验证交易4内容的合法性,c账户余额500.00大于转账金额200.00,交易内容合法;节点2使用临时账本模拟执行交易,c账户余额500.00-200.00=300.00(元);节点2模拟执行后的账户信息如下:账户本地账本状态临时账本状态a900.00200.00b100.00nullc0.00300.00......2)转账交易2、转账交易3、转账交易4全网广播出块;3)各节点收到共识打包的新区块,因为网络等原因共识节点暂时未收到交易3,因此,各节点解析出转账交易2、转账交易4,并验证交易内容的合法性:转账交易2:a.验证交易内容合法,节点2的临时账本已经模拟执行过转账交易2,因此清理缓存转账交易2,不回滚;本地账本记账,a账户余额为900.00-200.00=700.00(元);此时,节点2对区块进行交易执行后的账户信息如下:账户本地账本状态临时账本状态a700.00200.00b300.00nullc0.00300.00......b.节点1和节点3在接收区块之前,没有接收过转账交易2、转账交易3、转账交易4,临时账本需要模拟执行转账交易2,本地账本也根据交易2中内容作出变化;此时,节点1和节点3的账户信息如下:账户本地账本状态临时账本状态a700.00700.00b300.00nullc0.000.00......转账交易4:c.验证交易内容:节点2的c本地账户账户余额0.00小于转账金额200.00,交易内容不合法,拒绝交易。节点2的临时账本回滚模拟执行的转账交易4,c账户余额300.00+200.00=500.00(元);清理缓存中转账交易4的缓存信息。此时,节点2回滚后的账户信息如下:节点1和节点3由于没有模拟执行过交易,所以不需要回滚交易4,进而节点1和节点3的所有账户状态都保持不变。实例3,超时未处理交易回滚实例全网节点维护账户的名单如下:序号账户a6xxx1c6xxx3f6xxx6g...不在名单里的账户:b账户6xxx2,d账户6xxx4,e账户6xxx5。节点2的账户信息如下:账户本地账本状态临时账本状态a700.00200.00b300.00nullc0.00500.00......节点1和节点3的账户信息如下:账户本地账本状态临时账本状态a700.00700.00b300.00nullc0.000.00......假设交易3最终超时,即在系统设定的时间内,没有记录到区块中。此时,由于只有节点2模拟执行过,所以节点2需要回滚交易,然后清理交易。再次重述转账交易3的内容:a账户转给c账户,转账金额500.00元;由于a和c都在名单上,所以回滚交易后,a账户+500元,c账户-500元节点2的账户信息如下:账户本地账本状态临时账本状态a700.00200.00+500.00=700.00b300.00nullc0.00500.00-500.00=0.00......可以看到,此时,节点1、节点2、节点3的状态一致。最终,清理缓存中交易。本发明实施例还提供了一种交易执行装置,应用于第一节点中,图8是根据本发明实施例的一种交易执行装置的框图,该装置包括第一接收模块82、第一验证模块84和第一执行模块86,其中,该第一接收模块82,用于接收第二节点发送的交易请求,其中,该交易请求中携带有签名、交易账户和交易内容;该第一验证模块84,用于在该签名验证合法且该交易账户存储在预先设置的名单的情况下,使用临时账本对该交易内容进行验证;该第一执行模块86,用于在验证合法的情况下,模拟执行该交易内容,并在该临时账本中记录交易结果。可选的,该装置还包括发送模块、第二接收模块和第二执行模块,其中,该发送模块,用于将该交易内容发送给共识节点;该第二接收模块,用于接收该共识节点根据该交易内容生成的区块,其中,该区块中携带有该签名和该交易内容;该第二执行模块,用于执行该区块中的该交易内容,并在本地账本中记录生成的交易结果。可选的,该第二执行模块具体用于,验证该区块是否合法;在验证合法的情况下,对该区块进行解析,生成该签名以及该交易内容;验证该签名和该交易内容是否合法;在验证合法的情况下,执行该交易内容。可选的,该装置还包括第一判断模块,用于在将该交易内容发送到共识节点之后,在预设时间内未接收到该共识节点根据该交易内容生成的区块的情况下,判断该临时账本中该交易内容是否被模拟执行过;在判断结果为是的情况下,对该临时账本中记录的该交易结果进行回滚。可选的,该装置还包括第二判断模块,用于在将该交易内容发送到共识节点之后,在对该交易内容验证不合法的情况下,判断该临时账本中该交易内容是否被模拟执行过;在判断结果为是的情况下,对该临时账本中记录的该交易结果进行回滚。可选的,该装置还包括第二验证模块,用于在接收第二节点发送的交易请求之后,在该签名验证合法且该交易账户未存储在预先设置的名单的情况下,使用该本地账本对该交易内容进行验证。可选的,该装置还包括记录模块,用于在使用临时账本对该交易内容进行验证之前,获取交易频率超过预设阈值的交易账户的信息;将该交易频率超过预设阈值的交易账户记录进该名单中。本发明实施例又提供了一种交易执行装置,应用于第三节点中,图9是根据本发明实施例的另一种交易执行装置的框图,该装置包括接收模块92、判断模块94和执行模块96,其中,该接收模块92,用于接收共识节点发送的区块,其中,该区块中携带有签名、交易账户和交易内容;该判断模块94,用于在该签名以及该交易内容验证合法且该交易账户存储在预先设置的名单的情况下,判断是否模拟执行过该交易内容;该执行模块96,用于在判断结果为否的情况下,模拟执行该交易内容,并在临时账本和本地账本中记录交易结果。本发明实施例又提供了一种交易执行装置,图10是根据本发明实施例的又一种交易执行装置的框图,该装置包括名单模块102、临时账本模块104、本地账本模块106和通信模块108,其中,该名单模块102,用于维护名单数据,为临时账本提供服务;该临时账本模块104,用于读取本地账本文件到内存以形成临时账本文件,并进行交易的初步检验;该本地账本模块106,用于以文件形式存储本地账本文件到本地进行管理;该通信模块108,用于节点之间的交互。本发明实施例还提供了一种电子装置,该电子装置包括处理器和存储器;电子装置中处理器的数量可以是一个或多个,存储器作为一种计算机可读存储介质,可用于存储计算机可执行程序。处理器通过运行存储在存储器中的软件程序、指令,从而执行电子装置的各种功能应用以及数据处理,即实现上述任一实施例中的方法。本申请实施例还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时实现上述任一实施例中的方法。可选的,处理器通过执行指令实现一种交易执行方法,该方法应用于第一节点,并包括:s1,接收第二节点发送的交易请求,其中,该交易请求中携带有签名、交易账户和交易内容;s2,在该签名验证合法且该交易账户存储在预先设置的名单的情况下,使用临时账本对该交易内容进行验证;s3,在验证合法的情况下,模拟执行该交易内容,并在该临时账本中记录交易结果。以上仅为本申请的示例性实施例而已,并非用于限定本申请的保护范围。一般来说,本申请的多种实施例可以在硬件或专用电路、软件、逻辑或其任何组合中实现。例如,一些方面可以被实现在硬件中,而其它方面可以被实现在可以被控制器、微处理器或其它计算装置执行的固件或软件中,尽管本申请不限于此。本申请的实施例可以通过移动装置的数据处理器执行计算机程序指令来实现,例如在处理器实体中,或者通过硬件,或者通过软件和硬件的组合。计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。本申请附图中的任何逻辑流程的框图可以表示程序步骤,或者可以表示相互连接的逻辑电路、模块和功能,或者可以表示程序步骤与逻辑电路、模块和功能的组合。计算机程序可以存储在存储器上。存储器可以具有任何适合于本地技术环境的类型并且可以使用任何适合的数据存储技术实现,例如但不限于只读存储器(rom)、随机访问存储器(ram)、光存储器装置和系统(数码多功能光碟dvd或cd光盘)等。计算机可读介质可以包括非瞬时性存储介质。数据处理器可以是任何适合于本地技术环境的类型,例如但不限于通用计算机、专用计算机、微处理器、数字信号处理器(dsp)、专用集成电路(asic)、可编程逻辑器件(fgpa)以及基于多核处理器架构的处理器。通过示范性和非限制性的示例,上文已提供了对本申请的示范实施例的详细描述。但结合附图和权利要求来考虑,对以上实施例的多种修改和调整对本领域技术人员来说是显而易见的,但不偏离本发明的范围。因此,本发明的恰当范围将根据权利要求确定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1