在区块链中执行交易的方法及装置制造方法及图纸

技术编号:23893399 阅读:27 留言:0更新日期:2020-04-22 07:25
本说明书实施例提供一种在区块链中执行交易的方法和装置。该方法包括在交易被共识之前的投机执行,和基于共识的正式执行。投机执行的过程包括,首先读取本地记录的第一交易;接着执行第一交易中的交易逻辑,在内存中记录执行结果所对应的变量操作请求;然后将该交易标记为已投机执行的交易。正式执行的过程包括,获取已共识且有待执行的第二交易;判断第二交易是否为已投机执行的交易,如果是,则获取对应的尚未提交的变量操作请求;然后根据变量操作请求,判断该第二交易的投机执行与基于共识的交易执行是否存在冲突;如果不存在冲突,直接提交变量操作请求所对应的变量操作。如此,提高交易的执行效率。

【技术实现步骤摘要】
在区块链中执行交易的方法及装置
本说明书一个或多个实施例涉及区块链
,尤其涉及在区块链中执行交易的方法及装置。
技术介绍
区块链技术是利用点对点传输、共识机制、加密算法等计算机技术实现数据分布式存储的一种应用模式。在区块链网络中,数据的存储和记录通过交易的方式实现。早期的区块链网络中,仅支持转账形式的交易。而目前,越来越多的区块链平台支持智能合约,来执行更为丰富的交易。智能合约是一种可以自动执行的交易合约,它以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使得智能合约能够高效地运行。例如,以太坊提供了一种开源的区块链底层系统,通过提供诸多接口,允许开发人员在此基础上开发各种区块链应用,编写智能合约。如此,区块链平台允许用户进行内容更加丰富的交易,从而提供更加丰富的功能。相应的,越来越多的数据存储、程序应用(例如分布式应用Dapp),通过区块链实现。相应地,在区块链的各个节点中提供有虚拟机,用于执行区块链中的智能合约,并通过共识机制,保本文档来自技高网...

【技术保护点】
1.一种在区块链节点中投机执行交易的方法,所述方法包括:/n读取本地记录的第一交易;/n执行所述第一交易中的交易逻辑,在内存中记录执行结果所对应的变量操作请求;/n将所述第一交易标记为已投机执行的交易。/n

【技术特征摘要】
1.一种在区块链节点中投机执行交易的方法,所述方法包括:
读取本地记录的第一交易;
执行所述第一交易中的交易逻辑,在内存中记录执行结果所对应的变量操作请求;
将所述第一交易标记为已投机执行的交易。


2.根据权利要求1所述的方法,其中,读取本地记录的第一交易,包括:
从本地交易列表的第一位置读取所述第一交易,所述本地交易列表中记录有各个本地交易的内存地址;
根据所述第一交易的交易标识,确定所述第一交易在本地交易散列列表中的第一索引,在该第一索引对应的表项中,添加指向所述第一位置的指针。


3.根据权利要求2所述的方法,其中,
所述本地交易列表为已校验交易列表,其中记录有各个已校验的本地交易的内存地址;所述本地交易散列列表为已校验交易散列列表。


4.根据权利要求3所述的方法,其中,所述方法通过第一线程执行,所述已校验交易列表由第二线程生成,所述第二线程用于对本地交易进行校验。


5.根据权利要求4所述的方法,其中,所述对本地交易进行校验包括,校验本地交易的以下至少一项:交易签名,交易账号是否合法。


6.根据权利要求2所述的方法,其中,根据所述第一交易的交易标识,确定所述第一交易在本地交易散列列表中的第一索引,包括:
通过对所述第一交易的交易内容进行哈希运算,得到所述第一交易的交易标识;
通过对所述交易标识进行哈希运算,得到第一哈希值,作为所述第一索引的索引值。


7.根据权利要求1所述的方法,其中,在内存中记录执行结果所对应的变量操作请求,包括:
在内存中创建第一交易操作记录,其中包括读操作集合和写操作集合;
在所述第一交易操作记录中记录所述变量操作请求,其中包括,将所述变量操作请求中包括的变量读操作请求,记录在所述读操作集合中,将所述变量操作请求中包括的变量写操作请求,记录在所述写操作集合中。


8.根据权利要求7所述的方法,其中,所述第一交易操作记录还包括投机执行状态;
将所述第一交易标记为已投机执行的交易,包括:在所述第一交易操作记录中将所述投机执行状态标记为完成投机执行。


9.根据权利要求7所述的方法,其中,在所述第一交易操作记录中记录所述变量操作请求还包括:将所述变量读操作请求所基于的区块编号,记录在所述第一交易操作记录中。


10.一种在区块链中执行交易的方法,该方法通过区块链网络中任意节点执行,包括:
从已共识交易列表中获取当前有待执行的第二交易;
判断所述第二交易是否为已投机执行的交易,其中,已投机执行的交易在内存中记录有对应于执行结果的尚未提交的变量操作请求;
如果所述第二交易为已投机执行的交易,获取该第二交易对应的尚未提交的变量操作请求;
根据所述变量操作请求,判断该第二交易的投机执行与基于共识的交易执行是否存在冲突;
在不存在冲突的情况下,提交所述变量操作请求所对应的变量操作。


11.根据权利要求10所述的方法,其中,判断所述第二交易是否为已投机执行的交易,包括:
基于所述第二交易的交易内容对应的第二交易哈希,判断所述第二交易是否为本地交易;
如果第二交易是本地交易,判断第二交易的状态是否为完成投机执行;
如果第二交易的状态为完成投机执行,则确定所述第二交易为已投机执行的交易;
如果第二交易的状态不是完成投机执行,则确定所述第二交易不是已投机执行的交易,并将第二交易标注为执行中。


12.根据权利要求11所述的方法,其中,判断所述第二交易是否为本地交易,包括:
对所述第二交易的交易内容进行哈希运算,得到所述第二交易哈希;
对所述第二交易哈希进行哈希运算得到第二哈希值,以所述第二哈希值为第二索引,检索本地交易散列列表;
如果所述本地交易散列列表中所述第二索引对应的表项中不存在有效指针,则确定所述第二交易不是本地交易,进而确定所述第二交易不是已投机执行的交易。


13.根据权利要求12所述的方法,其中,判断所述第二交易是否为本地交易,还包括:
如果所述本地交易散列列表中所述第二索引对应的表项中存在第二指针,该第二指针指向本地交易列表中的第二位置,则从所述本地交易列表的所述第二位置读取第二内存地址;
根据所述第二内存地址,获取其中存储的交易内容,并计算该交易内容对应的第三交易哈希;
如果所述第二交易哈希不等于所述第三交易哈希,则确定所述第二交易不是本地交易,进而不是已投机执行的交易;
如果所述第二交易哈希等于所述第三交易哈希,则确定所述第二交易是本地交易。


14.根据权利要求13所述的方法,其中,所述本地交易列表为已校验交易列表,其中记录有各个已校验的本地交易的内存地址;所述本地交易散列列表为已校验交易散列列表。


15.根据权利要求11所述的方法,其中,判断第二交易的状态是否为完成投机执行,包括:在第二交易对应的第二交易操作记录中查询所述第二交易是否被标记为完成投机执行。


16.根据权利要求15所述的方法,其中,获取该第二交易对应的尚未提交的变量操作请求,包括:
从所述第二交易操作记录中获取该第二交易对应的变量操作请求。


17.根据权利要求10所述的方法,其中,所述变量操作请求包括,针对第一变量的第一读操作请求;判断该第二交易的投机执行与基于共识的交易执行是否存在冲突,包括:
基于所述第一读操作请求,判断该第二交易的投机执行是否与已提交的交易存在第一冲突;
如果不存在所述第一冲突,则判断该第二交易的投机执行是否与正在执行中的、共识排序中排在第二交易前面的其他交易存在第二冲突。


18.根据权利要求17所述的方法,其中,基于所述第一读操作请求,判断该第二交易的投机执行是否与已提交的交易存在第一冲突,包括:
查询已修改变量表,所述已修改变量表中记录有已提交交易针对各个变量的修改记录;
如果所述已修改变量表中包含对所述第一变量的修改记录,则确定存在所述第一冲突。


19.根据权利要求17所述的方法,其中,所述第一读操作请求基于第一编号的区块而发出;
基于所述第一读操作请求,所述判断该第二交易的投机执行是否与已提交的交易存在第一冲突,包括:
查询已修改变量表,所述已修改变量表中记录有已提交交易针对各个变量的修改记录,以及修改记录对应的区块编号;
如果从所述已修改变量表中查询到针对所述第一变量的第一修改记录,且该第一修改记录所对应的第二编号大于所述第一编号,则确定存在所述第一冲突。


20.根据权利要求17所述的方法,其中,判断该第二交易的投机执行是否与正在执行中的其他交易存在第二冲突,包括:
获取执行环境记录表中的写操作集合,并遍历所述写操作集合中的各个写操作请求,其中执行环境记录表用于记录正在执行中交易的变量操作请求;
如果所述第一读操作请求与所述写操作集合中第一写操作请求冲突,并且该第一写操作请求对应的交易在所述已共识交易列表中排在所述第二交易之前,则确...

【专利技术属性】
技术研发人员:刘晓建
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1