[发明专利]一种基于区块链的并发交易处理方法及其应用在审
申请号: | 202210810789.1 | 申请日: | 2022-07-11 |
公开(公告)号: | CN115018648A | 公开(公告)日: | 2022-09-06 |
发明(设计)人: | 李京;陈聪;王盛姣;熊航;王硕 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06Q40/04 | 分类号: | G06Q40/04;G06F16/27;G06F16/23 |
代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 陆丽莉;何梅生 |
地址: | 230026 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 区块 并发 交易 处理 方法 及其 应用 | ||
1.一种基于区块链的并发交易处理方法,其特征是应用于由区块链、状态数据库S所组成的交易环境中,所述区块链的区块中存储有用户进行商品交易所产生的交易信息,所述状态数据库S中记录有所有数据对象的最新值;所述并发交易处理方法是按如下步骤进行:
步骤1:更新维护状态数据库S为最新值;
步骤1.1、定义状态数据库S={s1,s2,...,si,...,sI},其中,si表示第i个数据对象ai的状态信息,I为状态信息的总条数;令第i个数据对象ai的状态信息si是一个三元组其中,表示第i个数据对象ai的键,表示第i个数据对象ai的当前最新的版本号,表示第i个数据对象ai的当前值;
步骤1.2、构建待上链区块的交易信息集合,记为TX={tx1,tx2,...,txp,...,txP},其中,txp表示第p条交易信息,P为交易信息的总条数;所述第p条交易信息txp包含的操作数据,记为其中,dq,p表示第p条交易信息txp中的第q个操作,Qp表示第p条交易信息txp包含的最大操作数;令所述第p条交易信息txp中的第q个操作数据dq,p包含三元组其中,keyq,p表示第q个操作数据dq,p访问数据对象的键,表示第q个操作数据dq,p读取数据对象的版本号,表示第q个操作数据dq,p写入数据对象的值;
步骤1.3、遍历交易信息集合TX,并对第p条交易信息txp构建对应的交易读集其中,是第p条交易txp读取的第j个键版本对信息,keyj,p,分别表示第p条交易txp读取的第j个数据对象的键和版本号,J是第p条交易txp读取操作的总数;
步骤1.4、遍历交易读集RSp中的键版本对信息,对第j个键版本对信息如果状态数据库S中不存在键为keyj,p的数据对象或者存在键为keyj,p的数据对象对应的版本号小于则更新S中对应条目为其中,表示键为keyj,p,版本号为的数据对象的值;
步骤2:区块数据预处理;
步骤2.1、遍历交易信息集合TX,对第p条交易信息txp,构建对应的交易写集其中,是第p条交易txp写入的第k个键值对信息,keyk,p,分别表示第p条交易txp写入的第k个数据对象的键和值,K是第p条交易txp写入操作的总数;
步骤2.2、如果第p条交易信息txp的交易写集WSp为空,则表示第p条交易信息txp为读交易,并将第p条交易信息txp在区块中的位置前移到第一位;否则,表示第p条交易信息txp为写交易,并保持不动;
步骤2.3、遍历交易信息集合TX,如果第p条交易信息txp的交易读集RSp中存在一个键版本对满足小于状态数据库S中键为keyl,p的数据对象对应的版本号,则将相应交易标记出来,且被标记的交易不参与步骤3和步骤4;
步骤3:求解最大可合并交易序列集;
步骤3.1、遍历交易信息集合TX,对第p条交易信息txp,构建对应的值增量集ΔVp={<key1,p,Δval1,p>,<key2,p,Δval2,p>,...,<keye,p,Δvale,p>,...,<keyE,p,ΔvalE,p>},其中,<keye,p,Δvale,p>是第p条交易txp涉及的第e个数据对象的键和增值,E是第p条交易txp涉及的数据对象总数;
步骤3.2、判定交易是否语义合法:
对第p条交易信息txp,遍历ΔVp,并根据式(1)计算键为keye,p的数据对象ae的新值vale,p:
式(1)中,是键为keye,p的数据对象ae在状态数据库S中记录的值,如果第p条交易信息txp涉及的所有数据对象的新值都大于等于0,则判定第p条交易信息txp的语义合法,否则标记第p条交易信息txp的语义不合法;
步骤3.3、定义一个数组arr,对第p条交易信息txp,令arr[p]表示以txp作为最后一条交易信息的最长合法交易序列的长度,初始化arr[p]为0;
步骤3.4、定义最大可合并交易序列集为B;
步骤3.5、记执行第p条交易txp后得到的状态数据库为Sp;记除txp外任意一条交易为txg;记执行第g条交易txg后得到的状态数据库为Sg;如果基于状态数据库Sp执行交易txg是合法的,则记是安全的;
步骤3.6、基于状态数据库S和交易信息集TX,利用式(2)更新数组arr中的元素arr[p],从而更新数组arr中的所有元素:
式(2)中,max(·)表示取最大值,∧表示且;
步骤3.6、找到数组arr中的最大值以及其对应的索引t,即arr[t]为数组arr中的最大值,令arr[t]对应的交易序列为最长合法交易子序列L=(tx′1,tx′2,...tx′i,...,tx′t),i∈[1,t],其中,tx′i表示交易序列L包含的任意一个交易,交易序列L包含的交易数|L|≤t,且在交易信息集合TX中能找到一个交易txk,使得tx′t=txk,k∈[1,t];
步骤3.8、将最长合法交易子序列L添加到最大可合并交易序列集B中,并执行L中交易后得到的状态数据库记为S′,并由除L中的交易以外的所有交易构成余下的交易信息集TX′;
步骤3.9、基于状态数据库S′和余下的交易信息集TX′重复步骤3.6~3.8,直至最大可合并交易序列集B不再更新为止,从而得到更新后的最大可合并交易序列集B′;
步骤4:合并交易;
步骤4.1、根据状态数据库S和更新后的最大可合并交易序列集B′,得到新的状态数据库SB;
步骤4.2、建立一个空的读集RS′和一个空的写集WS′;
步骤4.3、遍历交易信息集TX,将TX中的任意一个交易访问的任意一个数据对象bh的键及其在状态数据库S中的版本号构成的二元组添加到读集RS′中;
步骤4.4、遍历交易信息集TX,将TX中的任意一个交易访问的任意一个数据对象bh的键及其在状态数据库SB中的值构成的二元组添加到写集WS′中;
步骤4.5、由读集RS′,写集WS′与最大可合并交易序列集B′中的交易序列构成处理完成的合并交易。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210810789.1/1.html,转载请声明来源钻瓜专利网。