一种基于对象链的事务处理方法、系统、装置及存储介质与流程

allin2023-03-07  132



1.本技术涉及区块链技术领域,尤其涉及一种基于对象链的事务处理方法、系统、装置以及存储介质。


背景技术:

2.区块链的存储是一个全网的分布式账本,全网的所有全节点(full node, 即同步所有区块链数据的节点)都需要存储这个分布式账本,并保持数据一致性;为了确保区块链的安全性,包括应对交易垃圾邮件堵塞网络的威胁和潜在的分布式拒绝服务(distributed denial of service,ddos)攻击,目前的区块链都有区块大小的限制,比如比特币(bitcoin)及其分叉链的区块最大大小固定在2m-32mb;以太坊(ethereum)通过区块燃料限制(gas limit)(约300万 gas),使其区块的平均大小约为20kb。
3.目前,共识高的区块链多使用工作量证明(proof of work,pow)共识算法,为了保证算力公平性,除了限制区块大小外,还会通过动态调整区块难度来均匀化出块时间间隔,从而在公平的条件进行算力竞争,并选择最先解出 hash算法难题的为出块节点,这导致了pow区块链的低tps和超高出块时延,例如比特币的tps(transaction per second,每秒事务处理数)≈1,时延≈10分钟,以太坊的tps≈15,时延≈15秒;而且,由于pow带来的算力付出、以及系统所能提供的tps远远不能满足所需要的tps,导致用户交易的高燃料费(gas fee)。
4.由于上述的区块大小限制、低tps、高燃料费无法负担等问题,将大数据块/文件(例如》100mb的块或文件)写入区块链通常是不可行的。
5.互联网已发展到web3.0时代,nft(non-fungible tokens,非同质化代币,也称为“通证”)作为一种用户数据资产的高共识形态,已经开始逐步进入大众的生活,nft具有独一无二、稀缺、不可分割的属性。游戏、艺术品、域名、收藏品、虚拟资产、现实资产、身份等数据都可以铸造成nft,成为与用户身份绑定的资产,并且在用户之间交易,产生流通价值。而nft的数据在当前的区块链技术下,是无法写入区块的,一般采用用户自己离线保存、在中心化服务器上保存等方式,存在数据易丢失、易被篡改、不安全等问题。


技术实现要素:

6.为了解决上述技术问题,本技术提供了一种基于对象链的事务处理方法、系统、装置以及存储介质。
7.本技术第一方面提供了一种基于对象链的事务处理方法,包括:
8.接收用户发送的创建数据请求,并根据所述创建数据请求将对应的目标数据写入数据对象;
9.读取所述数据对象中所有字段串接的第一哈希值;
10.根据交易数据以及所述第一哈希值生成第一交易对象,以使得所述第一交易对象通过所述第一哈希值映射至所述数据对象。
11.可选的,所述第一交易对象中包含有所述第一交易对象中所有字段的串接的第二哈希值,在所述根据交易数据以及所述第一哈希值生成第一交易对象之后,所述方法还包括:
12.当接收到用户转移所述数据对象的转移请求后,根据交易数据以及所述第二哈希值生成第二交易对象,以使得所述第二交易对象通过所述第二哈希值映射至所述第一交易对象,所述第二交易对象通过所述第一哈希值映射至所述数据对象。
13.可选的,所述根据所述创建数据请求将对应的目标数据写入数据对象包括:
14.根据所述创建数据请求生成对象类型;
15.以key,value对的形式生成元数据;
16.以string格式生成所述目标数据的数据字段;
17.生成所述数据字段的哈希值;
18.根据所述目标数据的存储位置生成存储位置的哈希值;
19.生成所有字段的串接的第一哈希值;
20.根据上述生成的信息,以json的格式生成数据对象。
21.可选的,所述根据交易数据以及所述第一哈希值生成第一交易对象包括:
22.获取上一个交易对象的哈希值;
23.获取交易数据对象类型;
24.获取交易类型;
25.获取交易发起方的用户名;
26.获取交易接收方的用户名;
27.从所述数据对象中获取所述目标数据的数据字段的哈希值;
28.从所述数据对象中获取所述目标数据的存储位置的哈希值;
29.生成交易创建时间;
30.生成本交易对象的哈希值即第二哈希值;
31.根据上述获取或生成的信息,以json的格式生成第一交易对象。
32.可选的,所述据所述创建数据请求将对应的目标数据写入数据对象包括:
33.根据所述创建数据请求确定没有与对应的目标数据重复的数据,并将所述目标数据写入数据对象。
34.可选的,根据所述创建数据请求确定没有与所述目标数据重复的数据包括:
35.根据所述创建数据请求生成对应的目标数据的数据字段的哈希值;
36.将所述数据字段的哈希值与已有的数据字段的哈希值进行比对;
37.若没有重复的哈希值,则确定没有与所述目标数据重复的数据。
38.可选的,所述接收用户发送的创建数据请求包括:
39.接收用户通过web3可视接口或api接口发起的创建数据请求。
40.可选的,所述根据交易数据以及所述第二哈希值生成第二交易对象包括:
41.获取上一个交易对象的哈希值;
42.获取交易数据对象类型;
43.获取交易类型;
44.获取交易发起方的用户名;
45.获取交易接收方的用户名;
46.从所述第一交易对象中获取所述目标数据的数据字段的哈希值;
47.从所述第一交易对象中获取所述目标数据的存储位置的哈希值;
48.生成交易创建时间;
49.生成本交易对象的哈希值;
50.根据上述获取或生成的信息,以json的格式生成第二交易对象。
51.可选的,所述方法应用于对象链,所述对象链的结构采用pos算法,所述对象链的节点由领导节点、候选领导节点、同步节点以及验证节点构成。
52.可选的,所述领导节点由所述验证节点投票确立,所述领导节点用于对数据进行打包;所述候选领导节点由所述验证节点投票确立,所述候选领导节点用于对领导节点进行接替;所述同步节点用于对所述对象链上的数据进行同步;所述验证节点属于所述同步节点的子集。
53.本技术第二方面提供了一种基于对象链的事务处理系统,包括:
54.接收单元,用于接收用户发送的创建数据请求;
55.写入单元,用于根据所述创建数据请求将对应的目标数据写入数据对象;
56.读取单元,用于读取所述数据对象中所有字段串接的第一哈希值;
57.第一生成单元,用于根据交易数据以及所述第一哈希值生成第一交易对象,以使得所述第一交易对象通过所述第一哈希值映射至所述数据对象。
58.本技术第三方面提供了一种基于对象链的事务处理装置,所述装置包括:
59.处理器、存储器、输入输出单元以及总线;
60.所述处理器与所述存储器、所述输入输出单元以及所述总线相连;
61.所述存储器保存有程序,所述处理器调用所述程序以执行第一方面以及第一方面中任一项可选的所述方法。
62.本技术第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时执行第一方面以及第一方面中任一项可选的所述方法。
63.从以上技术方案可以看出,本技术具有以下优点:
64.本技术提供的基于对象链的事务处理方法中,用户发起创建数据请求之后,将对应的目标数据写入数据对象,数据对象中包含有数据对象中所有字段串接的第一哈希值,根据交易数据以及第一哈希值生成第一交易对象,从而通过第一哈希值实现第一交易对象至数据对象的映射,通过该方法,能够将用户的数据资产和用户的交易数据进行区分抽象为数据对象以及交易对象,并实现相互链接,解决了大对象数据的上链存储问题,而当目标数据发生转移时,通过其中哈希值的串接先后顺序,解决了多节点交易对象的时序问题,应用该方法具有链上可以同时存储海量对象数据和交易数据,高tps以及低燃料费的原生优势,为web3应用和数据资产价值化提供底层基础设施支撑。
附图说明
65.为了更清楚地说明本技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域
普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
66.图1为本技术中提供的基于对象链的事务处理方法的一个实施例流程示意图;
67.图2为本技术中提供的对象链结构的系统组成示意图;
68.图3为本技术中创建数据对象的通信示意图;
69.图4为本技术中提供的基于对象链的事务处理的另一个实施例流程示意图;
70.图5为本技术中转移数据对象的通信示意图;
71.图6为本技术基于对象链的事务处理中异常处理的一个实施例流程示意图;
72.图7为本技术中对象链的系统部署结构示意图;
73.图8为本技术中提供的基于对象链的事务处理系统的一个实施例结构示意图;
74.图9为本技术中提供的基于对象链的事务处理装置的一个实施例结构示意图。
具体实施方式
75.基于“一切事物皆对象”思想,本发明提出融合星际文件系统 (interplanetary file system,ipfs)、poh、pos等技术机制的对象链,将现有区块链的区块升级为不固定大小、不固定出块时间间隔的对象,将数据分为对象数据和交易数据2大类,用户的数据资产抽象为对象数据,并基于ipfs 存储,并将对象数据通过对象hash链接到交易对象链,解决大对象数据的链上存储问题;将用户活动抽象为交易数据,并基于交易数据对象的哈希(首选 keccak-256算法),基于历史证明(proof of history,poh)解决多节点对象的时序问题,基于权益证明(proof of stake,pos)解决共识问题,形成交易对象链;具有链上可以同时存储海量对象数据和高速交易数据、十万级超高tps、超低燃料费、亚秒级出块时延(例如通过按需出块机制,0.5秒内有交易即出块,无交易不出块)等原生公链优势,为web3.0应用和数据资产价值化提供底层基础设施支撑。
76.本技术提供的方法应用于对象链,请参阅图2,对象链的结构中可以将对象分为两类,数据对象和交易对象,数据对象用于存储不固定大小的数据,交易对象用于存储多类交易,交易类型包括:创建数据资产(createdata)、摧毁数据资产(burndata)、转移数据资产(transferdata)、铸造nft(castnft)、摧毁nft(burnnft)、转移nft(transfernft)等。本技术中,将默克尔树(merkle tree)的树形结构改变为区块链的链接关系,形成类似于:
77.hashn(datan||hash
(n-1)
(data
(n-1)
||

hash1(data1)))(||表示串接)的计算方式,其中hash表示哈希函数,通过哈希计算的先后关系确定交易发生的时间先后关系,从而解决区块的时序问题。
78.本技术提供的方法可以应用于对象链,请参阅图7,图7是一种对象链结构的系统部署的一个实施例示意图,系统由n台对象链服务器组成,对象链服务器通过互联网相连,部署在对象链服务器上的1个领导节点、3个候选领导节点、m个验证节点、n个同步节点(n≥m)都是对象链服务器的逻辑节点,即都承载在对象链服务器上。其中各个节点所负责的内容如下:
79.领导节点:
80.由验证节点投票选举产生,需要获得2/3以上的验证节点同意才能选出领导节点,在被候选领导节点接替之前,可以打包任意数量的数据对象和交易对象,以确保系统中唯一的全局顺序。
81.候选领导节点:
82.由验证节点投票选举产生,需要获得2/3以上的验证节点同意才能选出候选领导节点,可以保持前三个候选领导节点集合,并定期投票刷新;在领导节点接替时,从第一个开始进行接替;在此设置3个的目的是为了确保候选领导节点的可用性。
83.同步节点:
84.负责对象链的交易对象的数据同步,并确保数据对象一定数量的副本(比如确保副本数量≥3),确保数据对象的高可用性;需要质押积分才能获得资格,并通过积分流动性激励来保持对象链交易对象的高可用性。
85.验证节点:
86.是同步节点的子集,验证节点的数量可以设定为:
87.nv=max(同步节点数量/10,min(同步节点数量,10))
ꢀꢀ
公式1
88.公式1中,若同步节点数量为1,则nv=1;若同步节点数量为20,则nv= 2;若同步节点数量为100,则nv=10;若同步节点数量为1000,则nv=100;实现同步节点越多,nv会伴随线性增长的效果,从而让给网络贡献了资源的同步节点都有机会获得竞选验证节点的机会。
89.可以根据所有同步节点同步的数据量、在线时长、验证的积极度等因素进行评分,从同步节点集合中选出,并每隔1个纪元(纪元可以设定为1个固定时长,比如24小时)刷新一次验证节点集合。
90.验证节点负责验证领导节点生成的交易对象哈希值,并对签名进行验证,投票选举领导节点/候选领导节点等事项,相应事项都有超时限制,要求验证节点在有效时间限制内完成相应事项;验证节点可以采用gpu进行并行加速,从而加快对象链的运行速度;验证节点必须是同步节点或领导节点,消极怠工的验证节点可能遭受积分惩罚,直接从质押积分中扣除;积极的验证节点可以获得更高的流动性积分激励。
91.pos共识算法基于积分质押机制,快速确认由领导节点生成的交易对象,用于投票和选择候选领导节点集,以及惩罚任何行为不端的验证节点,消除pow 共识算法竞选出块节点带来的算力浪费,实现对象链的出块的高tps和低时延。
92.下面将对本技术提供的基于对象链的事务处理方法、系统、装置以及存储介质的实施例进行阐述。
93.请参阅图1、图2以及图3,本技术提供的基于对象链的事务处理方法的一个实施例包括:
94.101、接收用户发送的创建数据请求,并根据创建数据请求将对应的目标数据写入数据对象;
95.在实际创建数据时,接收用户通过可视化web3入口或api接口等方式,发起对对象链智能合约的创建数据请求,请求参数可以包括数据字段(data)和元数据字段(metadata),智能合约是固化在对象链的服务器上的智能合约虚拟机的一个程序。进而对象链将目标数据写入数据对象,写入的数据可以包括data、 metadata等字段。数据对象中包含有所有字段串接的第一哈希值,以用于后续的数据转移时与交易对象建立映射。
96.数据对象可以以json(英文全称:javascript object notation,中文全称:对象简谱,英文缩写:json)存储数据,而不是使用传统区块链的二进制串接格式,实现数据字段
的含义自明,使数据对象可以存储丰富的数据类型和数据格式,并获得格式的扩展性。
97.例如一个数据对象的例子为:
[0098][0099]
其中,objecttype表示对象类型,data表示对象类型是数据对象,元数据(metadata)可以key,value对的形式自定义格式;
[0100]
例如一个图片格式,可以将metadata字段定义为: {“datatype”:“jpg”,“description”:“这是一个关于风景的图片
…”
,
ꢀ“
createtime”:“2011-11-23 10:09:11”,“author”:“bob and lucy”,
ꢀ“
location”:“广东省深圳市”};
[0101]
再例如一个视频格式,可以将metadata字段定义为:{“datatype”:“video”,“description”:“这是一个关于在去年圣诞节拍摄的一个短视频
…”
,“length”:“1:25”,“createtime”:
ꢀ“
2020-12-25 14:20:08”,“author”:“jack”,“location”:“海南省三亚”},其中“length”:“1:25”表示视频长度为1分25秒,是区别于非视频文件的一个特殊属性。
[0102]
元数据字段(metadata)的引入,使用户可以自定义数据对象的元数据的各个字段,从而可以支撑多种对象数据,并获得数据类型的扩展性。
[0103]
data,是数据字段,可以用string格式表达。
[0104]
datahash=hash(data),即对数据data计算的哈希结果,哈希函数可以取sha-128或keccak-256等,例如:
[0105]
e207af9fa2e84493a46cd6572d26153a4d7c2fcde24352818c586eb154583095 ,表示256位的keccak-256的数据哈希值,表达为64个16进制字符。
[0106]
objecttime是数据对象的创建时间;
[0107]
dataobjecthash表示数据对象的所有字段的串接的哈希值,表示为第一哈希值,其值为:
[0108]
hash(objecttype值||metadata值||data值||datahash值

|| objecttime值),||表示字符串串接,hash函数也可以取sha-128或keccak-256 等算法。
[0109]
102、读取数据对象中所有字段串接的第一哈希值;
[0110]
103、根据交易数据以及第一哈希值生成第一交易对象,以使得第一交易对象通过第一哈希值映射至数据对象。
[0111]
根据交易数据以及第一哈希值形成第一交易对象,第一交易对象中包含有第一哈希值,第一哈希值是数据对象中所有字段的串接的哈希值,进而使得第一交易对象通过第一哈希值映射至数据对象,例如,一个第一交易对象的例子为:
[0112][0113][0114]
其中:
[0115]
prevtxobjecthash表示前1笔交易的对象的哈希值,如果是创世对象(即第一个交易对象),则取全0(256位),用16进制表达,是64个十六进制0。
[0116]
objecttype表示对象类型,tx表示对象类型是是交易数据。
[0117]
txtype表示交易类型,包括创建数据资产(createdata)、摧毁数据资产 (burndata)、转移数据资产(transferdata)、铸造nft(castnft)、摧毁 nft(burnnft)、转移nft(transfernft)等交易类型,随着对象链支持的交易类型的增多,可以不断扩展交易类型。
[0118]
from表示交易发起者的用户名,例如0x00..0(共40个16进制0字符),是区块链上用户账号的160位0的16进制字符表达,即40个16进制0。
[0119]
to表示交易接收方的用户名,例如0xbf6...表示 0xbf60360552fcb6bacaf58a9f6add50c83337ad0d,共有40个16进制字符。
[0120]
datahash表示本交易对应的数据的datahash。
[0121]
ipfshash表示将对应datahash的数据(data)写入ipfs对象存储形成的位置hash,表示数据存储的位置,例如:
[0122]
qmxmuwuj67krxd8xopwphqkbgvtx3b4gnpm1zngadjdlyq表示:
[0123]
在ipfs存储上的位置,可以通过:
[0124]
http://ipfs.io/ipfs/qmxmuwuj67krxd8xopwphqkbgvtx3b4gnpm1zngadjdl yq访问。
[0125]
referdataobjecthash表示引用的数据对象的哈希值,取自第一哈希值,即dataobjecthash。
[0126]
txobjecthash表示交易对象哈希,其值=hash(prevtxobjecthash值|| txtype值||from值||to值||datahash值||ipfshash值|| referdataobjecthash值||

||objecttime值)。
[0127]
该实施例中,以json格式存储数据对象和交易对象,实现数据的自明,方便数据的序列化和反序列化;同时,在数据对象中,引入元数据字段(metadata),使用户可以自定义
数据对象的元数据的各个字段,从而可以支撑多种对象数据,并获得数据类型的扩展性。
[0128]
本技术中将数据分为对象数据和交易数据2大类,用户的数据资产抽象为对象数据,并基于ipfs链上存储,并将对象数据通过第一哈希值链接到交易对象,解决大对象数据的链上存储问题。本技术提供的基于对象链的事务处理方法中,用户发起创建数据请求之后,将对应的目标数据写入数据对象,数据对象中包含有数据对象中所有字段串接的第一哈希值,根据交易数据以及第一哈希值生成第一交易对象,从而通过第一哈希值实现第一交易对象至数据对象的映射,通过该方法,能够将用户的数据资产和用户的交易数据进行区分抽象为数据对象以及交易对象,并实现相互链接,解决了大对象数据的上链存储问题,而当目标数据发生转移时,通过其中哈希值的层次(指哈希的先后顺序),解决了多节点交易对象的时序问题,应用该方法具有链上可以同时存储海量对象数据和交易数据,高tps以及低燃料费的原生优势,为web3应用和数据资产价值化提供底层基础设施支撑。
[0129]
本技术提供的方法,可以应用对象链,对象链可以承载多种类型的交易,例如通过该方法能够实现数据资产的转移,下面将以转移数据资产为例进行阐述。
[0130]
请参阅图4以及图5,本实施例提供的方法包括:
[0131]
401、接收用户发送的创建数据请求,并根据创建数据请求将对应的目标数据写入数据对象;
[0132]
402、读取数据对象中所有字段串接的第一哈希值;
[0133]
403、根据交易数据以及第一哈希值生成第一交易对象,以使得第一交易对象通过第一哈希值映射至数据对象;
[0134]
本实施例中步骤401至步骤403与前述实施例中步骤101至步骤102类似,此处不再赘述。
[0135]
404、当接收到用户转移数据对象的转移请求后,根据交易数据以及第二哈希值生成第二交易对象,第一交易对象中包含有第一交易对象中所有字段的串接的第二哈希值,以使得第二交易对象通过第二哈希值映射至第一交易对象,第二交易对象通过第一哈希值映射至数据对象。
[0136]
在实际中,当接收到用户对数据对象的转移请求后,生成第二交易对象,生成第二交易对象的过程与生成第一交易对象相类似,第一交易对象中包含有第一交易对象中所有字段的串接的第二哈希值,第二交易对象为根据第二哈希值以及本次交易的数据生成,例如,一个第二交易对象的例子为:
[0137][0138]
其中prevtxobjecthash表示前一笔交易对象的哈希值,这里取自第一交易对象中的txobjecthash,即第二哈希值,那么通过该第二哈希值实现了第二交易对象到第一交易对象的映射,第二交易对象中还包含有:“referdataobjecthash”:“1aaa...”即表示该第二交易对象引用的数据对象中所有字段串接的哈希值,这里指第一哈希值,通过第一哈希值实现第二交易对象与数据对象之间的映射,并且通过哈希值之间的层级关系,解决了对象链上交易的时序问题,即将默克尔树(merkle tree)的树形结构改变为区块链的链接关系。
[0139]
在实际进行创建数据以及转移数据时,需要考虑目标数据重复的异常处理,因此需要对是否有重复数据进行判断,下面将进行举例说明。
[0140]
请参阅图6,本实施例提供的方法包括:
[0141]
601、接收用户发送的创建数据请求;
[0142]
602、根据创建数据请求生成对应的目标数据的数据字段的哈希值;
[0143]
603、将数据字段的哈希值与已有的数据字段的哈希值进行比对,若没有重复的哈希值,则执行步骤604,若重复,则执行步骤610;
[0144]
604、确定没有与目标数据重复的数据;
[0145]
例如:通过对data等字段的哈希计算,形成datahash,并在现有datahash 集合进行比对,判断是否是重复的datahash,如果有重复的datahash,则认为有与目标数据重复的数据,如果没有重复的datahash,则确定没有与目标数据重复的数据,进而可以写入数据对象。如果有重复的数据,则返回用户错误信息,并结束流程。
[0146]
605、根据创建数据请求将对应的目标数据写入数据对象;
[0147]
606、读取数据对象中所有字段串接的第一哈希值;
[0148]
607、根据交易数据以及第一哈希值生成第一交易对象,以使得第一交易对象通过第一哈希值映射至数据对象。
[0149]
608、当接收到用户转移数据对象的转移请求后,判断第一哈希值是否存在,若存在,则执行步骤609,若不存在,则执行步骤610;
[0150]
例如:判断referdataobjecthash是否存在,根据datahash,ipfshash 判断
referdataobjecthash是否存在,如果存在,说明所需要转移的数据对象存在,进而可以继续进行交易;如果不存在,则返回用户错误信息,并结束流程。
[0151]
609、根据本次交易数据以及第二哈希值生成第二交易对象;
[0152]
610、返回错误信息,并结束流程。
[0153]
返回用户错误信息,并结束流程。
[0154]
本技术提供的方法还可以应用于其它各种类型的数据资产交易,例如:摧毁数据、创建nft、转移nft、摧毁nft都将创建相应类型的交易对象;创建 nft时需要判断nft是否重复,并进行相应异常处理流程;摧毁数据、转移nft、摧毁nft也需要判断所处理的数据/nft是否存在,并进行相应异常处理流程。
[0155]
上述实施例对本技术提供的基于对象链的事务处理方法进行了阐述,下面将对申请提供的系统、装置以及计算机可读存储介质进行阐述。
[0156]
请参阅图8,图8为本技术中提供的基于对象链的事务处理系统的一个实施例结构示意图,该实施例包括:
[0157]
接收单元801,用于接收用户发送的创建数据请求;
[0158]
写入单元802,用于根据创建数据请求将对应的目标数据写入数据对象;
[0159]
读取单元803,用于读取数据对象中所有字段串接的第一哈希值;
[0160]
第一生成单元804,用于根据本次交易数据以及第一哈希值生成第一交易对象,以使得第一交易对象通过第一哈希值映射至数据对象;同时生成第二哈希值。
[0161]
可选的,系统还包括第二生成单元805,用于:
[0162]
当接收到用户转移数据对象的转移请求后,根据本次交易数据以及第二哈希值生成第二交易对象,以使得第二交易对象通过第二哈希值映射至第一交易对象,第二交易对象通过第一哈希值映射至数据对象。
[0163]
可选的,写入单元802具体用于:
[0164]
根据创建数据请求生成对象类型;
[0165]
以key,value对的形式生成元数据;
[0166]
以字符串(string)格式生成目标数据的数据字段;
[0167]
生成数据字段的哈希值;
[0168]
根据目标数据的存储位置生成存储位置的哈希值;
[0169]
生成所有字段的串接的第一哈希值;
[0170]
根据上述生成的信息,以对象简谱json的格式生成数据对象。
[0171]
可选的,第一生成单元804具体用于:
[0172]
获取上一个交易对象的哈希值;
[0173]
获取交易数据对象类型;
[0174]
获取交易类型;
[0175]
获取交易发起方的用户名;
[0176]
获取交易接收方的用户名;
[0177]
从数据对象中获取目标数据的数据字段的哈希值;
[0178]
从数据对象中获取目标数据的存储位置的哈希值;
[0179]
生成交易创建时间;
[0180]
生成本交易对象的哈希值即第二哈希值;
[0181]
根据上述获取或生成的信息,以json的格式生成第一交易对象。
[0182]
可选的,写入单元802具体用于:
[0183]
根据创建数据请求确定没有与对应的目标数据重复的数据,并将目标数据写入数据对象。
[0184]
可选的,写入单元802具体用于:
[0185]
根据创建数据请求生成对应的目标数据的数据字段的哈希值;
[0186]
将数据字段的哈希值与已有的数据字段的哈希值进行比对;
[0187]
若没有重复的哈希值,则确定没有与目标数据重复的数据。
[0188]
可选的,接收单元801具体用于:
[0189]
接收用户通过web3可视接口或api接口发起的创建数据请求。
[0190]
可选的第二生成单元805具体用于:
[0191]
获取上一个交易对象的哈希值;
[0192]
获取交易数据对象类型;
[0193]
获取交易类型;
[0194]
获取交易发起方的用户名;
[0195]
获取交易接收方的用户名;
[0196]
从第一交易对象中获取目标数据的数据字段的哈希值;
[0197]
从第一交易对象中获取目标数据的存储位置的哈希值;
[0198]
生成交易创建时间;
[0199]
生成本交易对象的哈希值;
[0200]
根据上述获取或生成的信息,以json的格式生成第二交易对象。
[0201]
请参阅图9,本技术还提供了一种基于对象链的事务处理装置,包括:
[0202]
处理器901、存储器902、输入输出单元903、总线904;
[0203]
处理器901与存储器902、输入输出单元903以及总线904相连;
[0204]
存储器902保存有程序,处理器901调用程序以执行如上任一基于对象链的事务处理方法。
[0205]
本技术还涉及一种计算机可读存储介质,计算机可读存储介质上保存有程序,其特征在于,当程序在计算机上运行时,使得计算机执行如上任一基于对象链的事务处理方法。
[0206]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0207]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0208]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显
示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0209]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0210]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。

技术特征:
1.一种基于对象链的事务处理方法,其特征在于,所述方法包括:接收用户发送的创建数据请求,并根据所述创建数据请求将对应的目标数据写入数据对象;读取所述数据对象中所有字段串接的第一哈希值;根据交易数据以及所述第一哈希值生成第一交易对象,以使得所述第一交易对象通过所述第一哈希值映射至所述数据对象。2.根据权利要求1中所述的基于对象链的事务处理方法,其特征在于,所述第一交易对象中包含有所述第一交易对象中所有字段的串接的第二哈希值,在所述根据交易数据以及所述第一哈希值生成第一交易对象之后,所述方法还包括:当接收到用户转移所述数据对象的转移请求后,根据交易数据以及所述第二哈希值生成第二交易对象,以使得所述第二交易对象通过所述第二哈希值映射至所述第一交易对象,所述第二交易对象通过所述第一哈希值映射至所述数据对象。3.根据权利要求1中所述的基于对象链的事务处理方法,其特征在于,所述根据所述创建数据请求将对应的目标数据写入数据对象包括:根据所述创建数据请求生成对象类型;以key,value对的形式生成元数据;以字符串string格式生成所述目标数据的数据字段;生成所述数据字段的哈希值;根据所述目标数据的存储位置生成存储位置的哈希值;生成所有字段的串接的第一哈希值;根据上述生成的信息,以对象简谱json的格式生成数据对象。4.根据权利要求1中所述的基于对象链的事务处理方法,其特征在于,所述根据交易数据以及所述第一哈希值生成第一交易对象包括:获取上一个交易对象的哈希值;获取交易数据对象类型;获取交易类型;获取交易发起方的用户名;获取交易接收方的用户名;从所述数据对象中获取所述目标数据的数据字段的哈希值;从所述数据对象中获取所述目标数据的存储位置的哈希值;生成交易创建时间;根据上述获取或生成的信息,以json的格式生成第一交易对象。5.根据权利要求1中所述的基于对象链的事务处理方法,其特征在于,所述据所述创建数据请求将对应的目标数据写入数据对象包括:根据所述创建数据请求确定没有与对应的目标数据重复的数据,并将所述目标数据写入数据对象。6.根据权利要求5中所述的基于对象链的事务处理方法,其特征在于,根据所述创建数据请求确定没有与所述目标数据重复的数据包括:根据所述创建数据请求生成对应的目标数据的数据字段的哈希值;
将所述数据字段的哈希值与已有的数据字段的哈希值进行比对;若没有重复的哈希值,则确定没有与所述目标数据重复的数据。7.根据权利要求1中所述的基于对象链的事务处理方法,其特征在于,所述接收用户发送的创建数据请求包括:接收用户通过web3可视接口或api接口发起的创建数据请求。8.根据权利要求2中所述的基于对象链的事务处理方法,其特征在于,所述根据交易数据以及所述第二哈希值生成第二交易对象包括:获取上一个交易对象的哈希值;获取交易数据对象类型;获取交易类型;获取交易发起方的用户名;获取交易接收方的用户名;从所述第一交易对象中获取所述目标数据的数据字段的哈希值;从所述第一交易对象中获取所述目标数据的存储位置的哈希值;生成交易创建时间;根据上述获取或生成的信息,以json的格式生成第二交易对象。9.根据权利要求1至8中任一项所述的基于对象链的事务处理方法,其特征在于,所述方法应用于对象链,所述对象链的结构采用pos算法,所述对象链的节点由领导节点、候选领导节点、同步节点以及验证节点构成。10.根据权利要求9中所述的基于对象链的事务处理方法,其特征在于,所述领导节点由所述验证节点投票确立,所述领导节点用于对数据进行打包;所述候选领导节点由所述验证节点投票确立,所述候选领导节点用于对领导节点进行接替;所述同步节点用于对所述对象链上的数据进行同步;所述验证节点属于所述同步节点的子集。11.一种基于对象链的事务处理系统,其特征在于,包括:接收单元,用于接收用户发送的创建数据请求;写入单元,用于根据所述创建数据请求将对应的目标数据写入数据对象;读取单元,用于读取所述数据对象中所有字段串接的第一哈希值;第一生成单元,用于根据交易数据以及所述第一哈希值生成第一交易对象,以使得所述第一交易对象通过所述第一哈希值映射至所述数据对象。12.一种基于对象链的事务处理装置,其特征在于,所述装置包括:处理器、存储器、输入输出单元以及总线;所述处理器与所述存储器、所述输入输出单元以及所述总线相连;所述存储器保存有程序,所述处理器调用所述程序以执行如权利要求1至10任一项所述方法。13.一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时执行如权利要求1至10中任一项所述方法。

技术总结
本申请公开了一种基于对象链的事务处理方法、系统、装置以及存储介质,用于解决大对象数据的链上存储问题,提升数据类型的可扩展性,实现数据对象的快速打包,减少算力竞争带来的资源浪费。本申请方法包括:接收用户发送的创建数据请求,并根据所述创建数据请求将对应的目标数据写入数据对象;读取所述数据对象中所有字段串接的第一哈希值;根据交易数据以及所述第一哈希值生成第一交易对象,以使得所述第一交易对象通过所述第一哈希值映射至所述数据对象。述数据对象。述数据对象。


技术研发人员:刘祥涛
受保护的技术使用者:深圳番多拉信息科技有限公司
技术研发日:2022.02.16
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-5455.html

最新回复(0)