CN111639080B - 一种数据处理方法、装置、节点设备及存储介质 - Google Patents

一种数据处理方法、装置、节点设备及存储介质 Download PDF

Info

Publication number
CN111639080B
CN111639080B CN202010483517.6A CN202010483517A CN111639080B CN 111639080 B CN111639080 B CN 111639080B CN 202010483517 A CN202010483517 A CN 202010483517A CN 111639080 B CN111639080 B CN 111639080B
Authority
CN
China
Prior art keywords
hash value
user
index
transaction
area
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.)
Active
Application number
CN202010483517.6A
Other languages
English (en)
Other versions
CN111639080A (zh
Inventor
郑罗海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010483517.6A priority Critical patent/CN111639080B/zh
Publication of CN111639080A publication Critical patent/CN111639080A/zh
Application granted granted Critical
Publication of CN111639080B publication Critical patent/CN111639080B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本申请实施例公开了一种数据处理方法、装置、节点设备及存储介质,适用于大数据中的数据传输领域,该方法包括:获取携带前置哈希值和第一索引区的第一对象;将第一对象的下一对象作为第二对象,在第二对象中确定第二索引区,将第一对象中的前置哈希值作为第二对象中的对象哈希值,在第二对象与第一对象之间建立父索引关系;将第二索引区中的哈希值配置为标识哈希值,且基于第二对象中的对象哈希值、父索引关系以及第二对象中的业务数据信息,确定第二对象的前置哈希值;将第一索引区中的哈希值由标识哈希值替换为第二对象中的前置哈希值,建立第一对象与第二对象之间的子索引关系。采用本申请实施例,可以丰富索引方式的多样性。

Description

一种数据处理方法、装置、节点设备及存储介质
技术领域
本申请涉及区块链技术领域,尤其涉及一种数据处理方法、装置、节点设备及存储介质。
背景技术
目前,在区块链上进行区块索引的过程中,区块链节点可以基于当前区块中的父区块哈希值,向前追溯到该父区块哈希值所指向的上一区块,以向前遍历整条区块链。比如,以某个区块链中的三个区块(区块1、区块2和区块3,其中,区块1的生成时间戳早于区块2的生成时间戳,且区块2的生成时间戳早于区块3的生成时间戳)为例,当用户需要在区块链上找出与某个用户相关联的区块或者交易时,需要遍历完该区块链上的所有区块,比如,可以基于当前区块(例如,区块3)中的父区块哈希值向前索引到该区块3的上一区块(例如,区块2),并可以基于区块2中的父区块哈希值继续向前索引到该区块2的上一区块(例如,区块1),以通过向前索引的方式遍历完整条区块链,进而可以找到与该用户相关联的区块或者交易。由此可见,现有的区块链在对区块链上的区块或者交易进行追踪时,通过区块中的父区块哈希值可实现单一的向前索引的能力,进而导致现有的索引方式的单一性。
发明内容
本申请实施例提供一种数据处理方法、装置、节点设备及存储介质,可以提供一种向后索引对象的能力,以丰富索引方式的多样性。
本申请实施例一方面提供一种数据处理方法,该方法包括:
获取携带前置哈希值和第一索引区的第一对象;第一索引区中的哈希值为标识哈希值;标识哈希值用于指示建立第一对象与第一对象的下一对象之间的子索引关系;
将第一对象的下一对象作为第二对象,在第二对象中确定第二索引区,将第一对象中的前置哈希值作为第二对象中的对象哈希值,在第二对象与第一对象之间建立父索引关系;
将第二索引区中的哈希值配置为标识哈希值,且基于第二对象中的对象哈希值、父索引关系以及第二对象中的业务数据信息,确定第二对象的前置哈希值;
将第一索引区中的哈希值由标识哈希值替换为第二对象中的前置哈希值,建立第一对象与第二对象之间的子索引关系。
本申请实施例一方面提供一种数据处理装置,该装置包括:
第一获取模块,用于获取携带前置哈希值和第一索引区的第一对象;第一索引区中的哈希值为标识哈希值;标识哈希值用于指示建立第一对象与第一对象的下一对象之间的子索引关系;
第一建立模块,用于将第一对象的下一对象作为第二对象,在第二对象中确定第二索引区,将第一对象中的前置哈希值作为第二对象中的对象哈希值,在第二对象与第一对象之间建立父索引关系;
配置模块,用于将第二索引区中的哈希值配置为标识哈希值,且基于第二对象中的对象哈希值、父索引关系以及第二对象中的业务数据信息,确定第二对象的前置哈希值;
第二建立模块,用于将第一索引区中的哈希值由标识哈希值替换为第二对象中的前置哈希值,建立第一对象与第二对象之间的子索引关系。
其中,该第一获取模块包括:
第一获取单元,用于在与第一用户相关联的交易记录中,获取具有最大生成时间戳的第一交易;第一交易包含第一交易的交易哈希值、与第一用户相关联的输入数据组和与第一用户相关联的输出数据组;
第一确定单元,用于将第一交易所在的区块作为第一区块,确定第一区块的区块哈希值,将第一交易和第一区块分别作为待处理对象,且将第一交易的交易哈希值和第一区块的区块哈希值分别作为待处理对象的前置哈希值;
第一划分单元,用于在待处理对象所在的区域中划分独立于第一隔离见证区的第一索引区,将第一索引区中的字符串进行预处理,根据预处理后的字符串确定第一索引区中的哈希值,以得到用于指示建立第一对象与第一对象的下一对象之间的子索引关系的标识哈希值;第一隔离见证区中包含第一交易的交易哈希值、与第一用户相关联的输入数据组和与第一用户相关联的输出数据组;
第二确定单元,用于将携带第一隔离见证区和携带标识哈希值的第一索引区的待处理对象确定为第一对象。
其中,第一对象属于交易类型的对象;
该第一建立模块包括:
第二获取单元,用于在第二用户接收到第一用户发起的第一转移请求和第二用户向第三用户发起的第二转移请求时,获取与第一转移请求和第二转移请求相关联的关联数据信息;
第三确定单元,用于基于关联数据信息确定用于构建第一对象的下一对象的关键数据信息;关键数据信息中包含第一对象中的前置哈希值、与第二用户相关联的资产转入量以及解锁脚本、与第二用户相关联的资产转出量以及锁定脚本;
第四确定单元,用于将构建的第一对象的下一对象作为第二对象,在第二对象所在的区域中确定独立于待处理隔离见证区的第二索引区,将第一对象中的前置哈希值作为第二对象的对象哈希值,根据第二对象的对象哈希值、与第二用户相关联的资产转入量以及解锁脚本,确定与第二用户相关联的输入数据组,根据与第二用户相关联的资产转出量以及锁定脚本,确定与第二用户相关联的输出数据组;
第一建立单元,用于将与第二用户相关联的输入数据组和与第二用户相关联的输出数据组录入待处理隔离见证区,得到第二对象的第二隔离见证区,基于第一对象的第一隔离见证区中的前置哈希值以及第二对象的第二隔离见证区中的对象哈希值,建立第二对象与第一对象之间的父索引关系。
其中,该配置模块包括:
第一配置单元,用于对第二索引区中的字符串进行预处理,得到第二索引区中的哈希值,将第二索引区中的哈希值配置为标识哈希值;
第五确定单元,用于在第二隔离见证区中,根据第二对象的对象哈希值、与第二用户相关联的输入数据组和与第二用户相关联的输出数据组,确定第二对象中的业务数据信息;
第一置空处理单元,用于对第二索引区中的标识哈希值进行置空处理,且通过第一哈希规则,对第二隔离见证区中的第二对象的对象哈希值、父索引关系以及第二对象中的业务数据信息进行哈希计算,得到第二对象的前置哈希值。
其中,与第一用户相关联的输出数据组中包含第一对象的锁定脚本;第一对象的锁定脚本是基于第二用户的公钥对与第一用户相关联的资产转出量进行哈希计算后所得到的;
该装置还包括:
第一确定模块,用于将第一隔离见证区中的第一对象的对象哈希值、与第一对象的上一对象相关联的父索引关系以及第一对象中的业务数据信息确定为待签名字符串;
签名模块,用于通过第二用户的私钥对待签名字符串进行哈希签名,得到与第二用户相关联的解锁脚本;与第二用户相关联的解锁脚本用于指示区块链中的共识节点根据第二对象中的解锁脚本和第一对象中的锁定脚本进行隔离见证,得到隔离见证结果;
第二确定模块,用于若隔离见证结果指示与共识节点相关联的共识结果的合法性,则确定第二用户的资产转移权限。
其中,该签名模块包括:
第三获取单元,用于获取第二用户的私钥以及第二用户的公钥;
签名单元,用于根据第二哈希规则,通过第二用户的私钥,对待签名字符串进行哈希签名,得到第二用户的用户签名信息;第二哈希规则不同于第一哈希规则;
生成单元,用于基于第二用户的签名信息以及第二用户的公钥,生成与第二用户相关联的解锁脚本。
其中,该装置还包括:
第二获取模块,用于获取与将第一对象中的锁定脚本相关联的账户地址,将与第一对象中的锁定脚本相关联的账户地址作为第一账户地址,且根据第二对象中的解锁脚本的公钥,得到与第二对象中的解锁脚本相关联的第二账户地址;
匹配模块,用于基于第一账户地址以及第二账户地址进行匹配,得到隔离见证结果;
第三确定模块,用于若隔离见证结果指示第一账户地址与第二账户地址一致,则确定第一对象中的锁定脚本与第二对象中的锁定脚本相匹配;
第四确定模块,用于若隔离见证结果指示第一账户地址与第二账户地址不一致,则确定第一对象中的锁定脚本与第二对象中的解锁脚本不匹配。
其中,该装置还包括:
打包处理模块,用于将第二对象进行打包处理,得到待写入区块链的待验证区块;
广播模块,用于将待验证区块广播至区块链上的共识节点,以使共识节点对获取到的待验证区块进行共识,得到共识结果;
写入模块,用于若在共识节点所返回的共识结果中存在超过1/2的共识结果指示共识成功,则确定区块链上的区块链节点达成共识,将待验证区块作为第二区块写入区块链;第二区块为第一区块的下一区块;第一区块包含第一对象。
其中,资产转入量包含与第一用户请求向第二用户转移的电子票据;资产转出量包含第二用户向第三用户转移的电子票据;
该装置还包括:
第三获取模块,用于获取用于追踪电子票据的票据状态的业务索引指令,基于业务索引指令确定与电子票据相关联的第一对象;业务索引指令中携带用于索引第一对象的前置哈希值;
第五确定模块,用于将第一对象的第一索引区的哈希值确定为目标哈希值,将与目标哈希值相关联的子索引关系作为目标子索引关系;
查找模块,用于根据目标哈希值和目标子索引关系,在与第一用户相关联的交易记录中查找与目标哈希值具有相同哈希值的目标前置哈希值所对应的对象;
第六确定模块,用于若查找到的目标前置哈希值所属的对象为第二对象,则确定目标哈希值属于正常类型的哈希索引值,且将第二对象中电子票据的票据状态作为业务索引指令对应的业务索引结果。
其中,该装置还包括:
第七确定模块,用于若查找到的目标前置哈希值所属的对象为不同于第二对象的第三对象,则确定第一索引区中的哈希值属于非正常类型的哈希索引值。
其中,第一对象和第二对象均属于区块类型的对象;第一对象中包含独立于第一索引区的第一隔离见证区;第一隔离见证区包含第一对象的前置哈希值;第二对象中包含独立于第二索引区的第二隔离见证区;第二隔离见证区包含第二对象的对象哈希值、与第二对象相关联的至少一个交易以及至少一个交易中的每个交易对应的哈希值;
该配置模块还包括:
第二配置单元,用于对第二索引区中的字符串进行预处理,得到第二索引区中的哈希值,将第二索引区中的哈希值配置为标识哈希值;
第六确定单元,用于在第二隔离见证区中,根据与第二对象相关联的至少一个交易以及至少一个交易中的每个交易对应的哈希值,确定第二对象中的业务数据信息;
第二置空处理单元,用于对第二索引区中的标识哈希值进行置空处理,且通过第一哈希规则,对第二隔离见证区中的第二对象的对象哈希值、父索引关系以及第二对象中的业务数据信息进行哈希计算,得到第二对象的前置哈希值。
本申请一方面提供了一种节点设备,包括:处理器、存储器、网络接口;
该处理器与存储器、网络接口相连,其中,网络接口用于提供数据通信功能,该存储器用于存储计算机程序,该处理器用于调用该计算机程序,以执行本申请实施例中上述一方面中的方法。
本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时,执行本申请实施例中上述一方面中的方法。
由此可见,本申请实施例在生成第一对象的下一对象(即第二对象)时,可以将第一对象的前置哈希值作为第二对象的对象哈希值,进而可以建立第二对象与第一对象之间的父索引关系。换言之,本申请实施例在获取到第二对象中的对象哈希值时,可以基于该第二对象的对象哈希值以及该父索引关系,向前索引至该第一对象,从而可以提供一种向前索引对象的能力。进一步的,本申请实施例可以在第一对象所在区域中,划分得到用于指示第一对象的下一对象(即第二对象)的第一索引区,进而可以在确定出第二对象的前置哈希值时,用该前置哈希值对该第一索引区中的哈希值进行更新,以将第一索引区中的哈希值由标识哈希值替换为第二对象中的前置哈希值,从而可以基于更新后的第一索引区中的哈希值和第二对象的前置哈希值,建立第一对象以及第二对象的子索引关系,以提供一种向后索引对象的能力。比如,本申请实施例后续在获取到更新后的第一索引区中的哈希值(即第二对象的前置哈希值)时,可以基于该更新后的第一索引区中的哈希值以及子索引关系,向后索引至第二对象,由此可见,本申请实施例既可以通过第一对象与第二对象之间的父索引关系提供一种向前索引对象的能力,还可以通过第一对象与第二对象之间的子索引关系提供一种向后索引对象的能力,以丰富索引方式的多样性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链网络结构的示意图;
图2是本申请实施例提供的一种进行数据交互的场景示意图;
图3是本申请实施例提供的一种数据处理方法的流程示意图;
图4是本申请实施例提供的一种确定第一对象的场景示意图;
图5是本申请实施例提供的一种确定第二对象中的场景示意图;
图6是本申请实施例提供的一种将第二交易进行上链的场景示意图;
图7是本申请实施例提供的一种数据处理方法的流程示意图;
图8是本申请实施例提供的一种建立第一区块与第二区块之间的子索引关系的场景示意图;
图9是本申请实施例提供的一种数据处理装置的结构示意图;
图10是本申请实施例提供的一种节点设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
其中,本申请实施例可以基于云技术,对本申请实施例中所提及的区块链节点中的虚拟资产进行存储和传输,适用于大数据中的数据传输领域。
其中,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术(Cloudtechnology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
其中,云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
可以理解的是,本申请实施例中区块链网络中的区块链节点可以基于云存储,将与资产转移信息相关联的对象(区块或者交易)进行上链,进而可以在区块链网络对应的区块链中可以获取该对象。
其中,云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
请参见图1,是本申请实施例提供的一种区块链网络结构的示意图。如图1所示的区块链网络结构可以应用于区块链系统,该区块链系统可以是由多个节点通过网络通信的形式连接形成的分布式系统。如图1所示,该区块链系统可以包括多个节点,多个节点具体可以包括节点10A、节点10B、节点10C、…、节点10N。如图1所示的用户终端集群可以包括多个用户终端,如图1所示,多个用户终端具体可以包括用户终端100a、用户终端100b、用户终端100c、…、用户终端100n。
其中,本申请实施例可以将该区块链网络中的每个节点(例如,节点10A、节点10B、节点10C、…、节点10N)统称为区块链节点。可以理解的是,该区块链节点可以为接入该区块链网络中的服务器,也可以为接入该区块链网络中的用户终端,这里对区块链节点的具体形式不做限定。
应当理解,这些区块链节点均可以用于维护同一区块链,该区块链网络中的任意两个区块链节点之间可以形成点对点(P2P,Peer To Peer)网络,该点对点网络可以采用P2P协议,其中,该P2P协议是一个运行在传输控制协议(TCP,Transmission ControlProtocol)协议之上的应用层协议。在分布式系统中,任何设备如服务器、终端等都可以加入而成为区块链节点,其中,每个区块链节点均可以包括硬件层、中间层、操作系统层和应用层。
为便于理解,本申请实施例可以在图1所示的区块链系统中选择一个区块链节点作为具有向后索引能力的区块链节点。例如,节点10A。如上述图1所示,该节点10A可以与用户终端集群中的每个用户终端通过有线或无线通信方式进行直接或间接地连接,以进行业务数据交互,本申请实施例在此不做限制。其中,该节点10A可以为服务器,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,该用户终端集群中的每个用户终端均可以包括:智能手机、平板电脑、笔记本电脑、台式计算机、桌上型电脑等具有业务数据处理(例如,资产转移)功能的智能终端。可以理解的是,本申请实施例可以在图1所示的用户终端集群的多个用户终端中选择一个用户终端作为与该节点10A相关联的第一用户终端。例如,本申请实施例可以将用户终端集群中的用户终端100a称之为第一用户终端。此外,本申请实施例还可以在图1所示的用户终端集群的多个用户终端中选择另一个用户终端作为与该节点10A相关联的第二用户终端。例如,本申请实施例可以将用户终端集群中的用户终端100b称之为第二用户终端。
应当理解,本申请实施例中第一对象、第二对象均可以统称为对象。该对象可以为区块类型的对象,也可以为交易类型的对象,在此不做限定。其中,该对象(例如,对象X)的对象哈希值(即pre_hash)可以为该对象X的上一对象的哈希值。本申请实施例中对象的前置哈希值(即fhash)可以为该对象X对索引区进行置空处理后所得到的哈希值,本申请实施例对象的该索引区中的字符串可以为节点10A为索引区所配置的一个特殊值,该字符串可以为0,也可以为1,还可以放置一些pbc(一种数据格式)化后的数据结构,在此不做限定。进一步地,节点10A可以对索引区中的字符串进行预处理,从而可以得到索引区中的哈希值,进而可以将索引区中的哈希值配置为标识哈希值。可以理解的是,在该对象X的下一对象(例如,对象Y)生成后,该对象X中的索引区中的哈希值可以替换为对象Y的前置哈希值。替换后的索引区中的哈希值(即next_hash)可以为用于指示该对象X与对象Y之间的子索引关系。
其中,本申请实施例中的子索引关系可以用于指示当前对象与当前对象的下一对象之间的索引关系,即节点10A可以基于子索引关系,索引到当前对象的下一对象(即向后索引)。本申请实施例中的父索引关系可以用于指示当前对象与当前对象的上一对象之间的索引关系,即节点10A可以基于父索引关系,索引到当前对象的上一对象(即向前索引)。
可以理解的是,节点10A可以具有向后索引对象能力。其中,若对象可以为交易类型的对象(例如,交易1、交易2以及交易3),交易1的生成时间戳早于交易2的生成时间戳,交易2的生成时间戳可以早于交易3的生成时间戳。其中,交易1中的索引区中的哈希值(例如,哈希值1a)可以用于指示交易1与交易2之间的子索引关系,交易2中的索引区中的哈希值(例如,哈希值2a)可以用于指示交易2和交易3之间的子索引关系。此时,节点10A可以在获取到交易1时,可以基于交易1中的哈希值1a,索引到交易2,进而可以基于交易2中的哈希值2a,索引到交易3,从而使得节点10A具有向后索引对象的能力。
此外,节点10A还可以具有向前索引对象能力。其中,交易3中的对象哈希值(例如,哈希值3b)可以用于指示交易3与交易2之间的父索引关系,交易2中的对象哈希值(例如,哈希值2b)可以用于指示交易2与交易1之间的父索引关系。此时,节点10A在获取到交易3时,可以基于交易3中的哈希值3b,索引到交易2,进而可以基于交易2中的哈希值2b,索引到交易1,从而使得节点10A可以具有向前索引交易的能力。
应当理解,由于节点10A在确定对象的哈希值(即前置哈希值)时,是对该对象中索引区中的哈希值进行置空处理后所得到的,所以索引区中的哈希值未被纳入到该对象的哈希计算中,从而导致索引区中的哈希值存在被人篡改的风险。为了确保索引区中的哈希值的准确性,节点10A在基于索引区中的哈希值以及该索引区中的哈希值对应的子索引关系,索引到当前对象的下一对象时,可以利用向前索引对象的能力,来确定索引区中的哈希值的准确性。
例如,节点10A在获取到交易1时,可以基于交易1中的索引区中的哈希值(例如,哈希值1c),向后索引到与哈希值1c相同的目标前置哈希值对应的交易2。为了确保交易1中索引区中的哈希值的准确性,节点10A可以获取交易2中的对象哈希值(即交易2的上一交易的哈希值,例如,哈希值2d),从而可以基于哈希值2d,向前索引到哈希值2d对应的交易。若向前索引到的交易中的前置哈希值与交易2中的对象哈希值一致时,则可以理解为哈希值1c未被篡改。若向前索引的交易中的前置哈希值与交易2中的交易哈希值(即上一交易的哈希值)不一致时,则可以理解为交易1中的索引区中的哈希值已被篡改,进而可以通过一些容灾的处理方案来解决所存在的安全问题。
应当理解,本申请实施例中的第一对象以及第二对象均可以属于区块类型的对象,例如,第一对象可以为第一区块,第二对象可以为第二区块。其中,本申请实施例中的第二对象的业务数据信息(即第二区块的业务数据信息)可以为与该第二区块相关联的至少一个交易以及至少一个交易中的每个交易对应的哈希值。
可选的,本申请实施例中的第一对象以及第二对象均可以属于交易类型的对象,例如,第一对象可以为第一交易,第二对象可以为第二交易。其中,本申请实施例中的第二对象的业务数据信息(即第二交易的业务数据信息)可以为包含资产转入量和资产转出量的资产转移信息。其中,可以理解的是,第一交易可以为节点10A在节点10A对应的区块链中所获取的具有最大生成时间戳的交易。可选的,第一交易可以为节点10A在节点10A的交易池中所获取的最大生成时间戳的交易,此时,该第一交易还未上链至区块链节点对应的区块链中。
其中,该资产转移信息可以为游戏场景下的对虚拟资产(例如,游戏币、游戏钻石、游戏符篆、游戏装备等)进行资产转移的信息。比如,某游戏用户在游戏场景下完成游戏任务时,该游戏对应的服务商可以为该游戏用户奖励游戏装备,进一步地,该游戏用户可以将所奖励的游戏装备转送至与该游戏用户具有好友关系的另一游戏用户。其中,该资产转移信息中的资产转入量可以为游戏对应的服务商(例如,用户1A)请求向游戏用户(例如,用户1B)所转移的游戏装备,该资产转移信息的资产转出量可以为游戏用户(例如,用户1B)向与用户1B具有好友关系的游戏用户(例如,用户1C)所转移的游戏装备。其中,游戏装备可以为防御属性的铠甲、进攻属性的大刀、速度属性的翅膀等。
可选的,该资产转移信息也可以为电子票据场景下对电子票据进行资产转移的信息。比如,某企业员工在某建筑材料公司采购建筑材料时,该建筑材料公司可以为该企业员工开具一张电子票据(例如,电子票据A)。进一步地,该企业员工可以将该电子票据A发送至该企业员工所在企业,以进行后续报销流程。其中,该资产转移信息中的资产转入量可以为该建筑材料公司(例如,用户2A)请求向该企业员工(例如,用户2B)所转移的电子票据A。该资产转移信息中的资产转出量可以为该企业员工(例如,用户2B)请求向企业(例如,用户2C)所转移的电子票据A。
可选的,该资产转移信息还可以数据支付场景下的对虚拟资产(例如,比特币)进行转移的信息。比如,用户3B的虚拟资产来源可以为用户3A所转移的5个比特币以及用户4A所转移的10个比特币。进一步地,用户3B可以向用户3C转移5个比特币,向用户4C转移5个比特币,向用户5C转移5个比特币。其中,该资产转移信息的资产转入量可以为用户3A请求向用户3B所转移的5个比特币,以及用户4A请求向用户3B所转移的10个比特币。该资产转移信息的资产转出量可以为用户3B请求向用户3C所转移的5个比特币,用户3B请求向用户4C所转移的5个比特币,以及用户3B请求向用户5C所转移的5个比特币。
进一步地,请参见图2,是本申请实施例提供的一种进行数据交互的场景示意图。如图2所示,本申请实施例中的区块链节点可以为上述图1所示的区块链网络中的任意一个区块链节点,例如,节点10A。
如图2所示,应当理解,本申请实施例中的第一对象以及第二对象均可以属于区块类型的对象,例如,第一对象可以为第一区块,第二对象可以为第二区块。可选的,本申请实施例中的第一对象以及第二对象均可以属于交易类型的对象,例如,第一对象可以为第一交易,第二对象可以为第二交易。
如图2所示,对象1、对象2、对象3、对象4、对象5以及对象6可以为区块链节点所属区块链中具有关联关系的6个对象。其中,每个对象均可以包含前置哈希值、对象哈希值以及索引区中的哈希值。可以理解的是,每个对象中的前置哈希值可以用于指示该对象的哈希值,每个对象中的对象哈希值可以用于指示该对象与对象的上一对象之间的父索引关系。
其中,在该对象的下一对象未生成时,该对象的索引区中的字符串可以为区块链节点所配置的特殊值,例如,该特殊值可以为0,也可以为1标识哈希值,还可以放置一些pbc(一种数据格式)化后的数据结构,在此不做限定。此时,索引区中的哈希值可以为对索引区中的字符串进行预处理后所得到的标识哈希值。在该对象的下一对象生成后,可以将该对象的索引区中的哈希值由标识哈希值替换为该对象的下一对象的对象哈希值,此时可以将替换后的索引区中的哈希值称之为后置哈希值。该后置哈希值可以起到指针的作用,即可以用于指示该对象与该对象的下一对象之间的子索引关系。
为便于理解,如图2所示,本申请实施例可以基于对象1和对象2生成对象3。其中,对象1和对象2可以统称为第一对象,对象3可以称之为第二对象。应当理解,区块链节点可以获取携带前置哈希值10a(例如,哈希值1)和索引区1的对象1、以及携带前置哈希值20a(例如,哈希值2)和索引区2的对象2。可以理解的是,对象1中的前置哈希值10a和对象2中的前置哈希值20a可以统称为第一对象中的前置哈希值,对象1中的索引区1和对象2中的索引区2可以统称为第一对象中的第一索引区。此时,索引区1中的哈希值10c可以为标识哈希值,索引区2中的哈希值20c也可以为标识哈希值。
进一步地,区块链节点可以将对象1和对象2的下一对象作为第二对象(例如,对象3)。此时,区块链节点在对象3中确定索引区3(即第二索引区),并可以将对象1中的前置哈希值10a作为对象3的对象哈希值30b(如图2所示的对象哈希值m),进而可以在对象3与对象1之间建立父索引关系(例如,父索引关系1)。与此同时,区块链节点可以将对象2中的前置哈希值20a作为对象3的对象哈希值30b(如图2所示的对象哈希值n),进而可以在对象3与对象2之间建立父索引关系(例如,父索引关系2)。
进一步地,根据对象3的下一对象的数量(例如,3个,这3个对象具体可以如图2所示的对象4,对象5以及对象6),区块链节点可以将索引区3中的哈希值30c配置为3个标识哈希值。例如,这3个标识哈希值可以为标识哈希值1、标识哈希值2以及标识哈希值3。其中,标识哈希值1可以由于指示建立对象3与对象4之间的子索引关系;标识哈希值2可以由于指示建立对象3与对象5之间的子索引关系;标识哈希值3可以由于指示建立对象3与对象6之间的子索引关系。
进一步地,区块链节点可以基于对象3中的对象哈希值m以及父索引关系1、对象哈希值n以及父索引关系2、对象3中的业务数据信息,从而可以确定对象3的前置哈希值30a(例如,哈希值3)。此时,区块链节点可以将索引区1中的哈希值10c由标识哈希值替换为对象3的前置哈希值30a,从而可以得到对象1的后置哈希值(即哈希值3),进而建立对象1与对象3之间的子索引关系(例如,子索引关系1)。与此同时,区块链节点可以将索引区2中的哈希值由标识哈希为替换为对象3的前置哈希值30a,从而可以得到对象2的后置哈希值(即哈希值3),进而建立对象2与对象3之间的子索引关系(例如,子索引关系2)。
其中,对象3的下一对象可以为图2所示的对象4。其中,在生成对象4的过程中,本申请实施例可以将对象3称之为新的第一对象,将对象4可以称之为新的第二对象。可以理解的是,区块链节点可以将对象3中的前置哈希值30a作为对象4中的对象哈希值40b(即哈希值3),进而建立对象4与对象3之间的父索引关系,在确定对象4的前置哈希值40a(例如,哈希值4)时,可以将对象3的索引区中的哈希值30c中的标识哈希值1替换为对象4中的前置哈希值40a,从而可以得到对象3中索引区3的后置哈希值x,进而可以建立对象3与对象4之间的子索引关系。
其中,对象3的下一对象可以为图2所示的对象5。其中,在生成对象5的过程中,本申请实施例可以将对象3称之为新的第一对象,将对象5可以称之为新的第二对象。可以理解的是,区块链节点可以将对象3中的前置哈希值30a作为对象5中的对象哈希值50b(即哈希值3),进而建立对象5与对象3之间的父索引关系,在确定对象5的前置哈希值50a(例如,哈希值5)时,可以将对象3的索引区中的哈希值30c中的标识哈希值2替换为对象5中的前置哈希值50a,从而可以得到对象3中索引区3的后置哈希值y,进而可以建立对象3与对象5之间的子索引关系。
其中,对象3的下一对象可以为图2所示的对象6。其中,在生成对象6的过程中,本申请实施例可以将对象3称之为新的第一对象,将对象6可以称之为新的第二对象。可以理解的是,区块链节点可以将对象3中的前置哈希值30a作为对象6中的对象哈希值60b(即哈希值3),进而建立对象6与对象3之间的父索引关系,在确定对象6的前置哈希值60a(例如,哈希值6)时,可以将对象3的索引区中的哈希值30c中的标识哈希值3替换为对象6中的前置哈希值60a,从而可以得到对象3中索引区3的后置哈希值z,进而可以建立对象3与对象6之间的子索引关系。其中,对象4、对象5以及对象6的生成过程具体可以参见对象3的生成过程,在此不再继续进行赘述。
应当理解,区块链节点还可以检测对象中的替换后的索引区的哈希值(即后置哈希值)的准确性,并对错误的后置哈希值进行更正,以确保区块链节点可以根据对象中的后置哈希值能够向后索引对象。例如,区块链节点可以定期获取具有最大生成时间戳的对象(例如,对象m),进而可以基于该具有最大生成时间戳的对象中的对象哈希值,向前索引该对象的上一对象(例如,对象n),进而可以检测该对象m的后置哈希值与该对象n的前置哈希值的一致性。若该对象m的后置哈希值与该对象n的前置哈希值一致,则可以理解为该对象m的后置哈希值属于正常类型的哈希索引值,进而可以继续向前索引对象;若该对象m的后置哈希值与该对象n的前置哈希值不一致,则可以理解为该对象m的后置哈希值属于非正常类型的哈希索引值,进而可以将对象m的后置哈希值进行更正,以使该对象m的后置哈希值为对象n中的前置哈希值。
由此可见,本申请实施例中的区块链节点在新对象(即第二对象)的生成过程中,可以将新对象的上一对象(即第一对象)的前置哈希值作为新对象的对象哈希值,进而可以使得该区块链节点具有向前索引对象的能力。此外,区块链节点在确定新对象(即第二对象)的前置哈希值后,可以将新对象的上一对象(即第一对象)的索引区中的哈希值由标识哈希值更新为新对象的前置哈希值,进而可以使得该区块链节点具有向后索引对象的能力,从而丰富了索引方式的多样性。
其中,本申请实施例可以通过在第一对象所在区域中划分用于指示第二对象的第一索引区,从而可以在确定第二对象的前置哈希值时,将第一对象的索引区的哈希值更新为第二对象的前置哈希值,以建立第一对象与第二对象之间子索引关系的具体实现方式可以参见下述图3-图8所对应的实施例。
进一步地,请参见图3,是本申请实施例提供的一种数据处理方法的流程示意图。如图3所示,该方法可以由区块链网络中的区块链节点执行,该区块链节点可以为接入至区块链网络中的用户终端,也可以为接入至区块链网络中的服务器,在此不做限定。为便于理解,本申请实施例中的区块链节点可以以接入至区块链网络中的服务器(如图1所示的区块链网络中的节点10A)为例进行说明。该方法至少可以包括以下步骤S101-步骤S104:
步骤S101,获取携带前置哈希值和第一索引区的第一对象。
具体地,区块链节点可以在与第一用户相关联的交易记录中,获取具有最大生成时间戳的第一交易。其中,第一交易可以包含第一交易的交易哈希值、与第一用户相关联的输入数据组和与第一用户相关联的输出数据组。进一步地,区块链节点可以将第一交易所在的区块作为第一区块,进而可以确定第一区块的区块哈希值。应当理解,区块链节点可以将第一交易和第一区块分别作为待处理对象,且将第一交易的交易哈希值和第一区块的区块哈希值分别作为待处理对象的前置哈希值。进一步地,区块链节点可以在待处理对象所在的区域中划分独立于第一隔离见证区的第一索引区,进而可以将第一索引区中的字符串进行预处理,并根据预处理后的字符串确定第一索引区中的哈希值,以得到用于指示建立第一对象与第一对象的下一对象之间的子索引关系的标识哈希值。其中,第一隔离见证区中可以包含第一交易的交易哈希值、与第一用户相关联的输入数据组和与第一用户相关联的输出数据组。此时,区块链节点可以将携带第一隔离见证区和携带标识哈希值的第一索引区的待处理对象确定为第一对象。其中,本申请实施例可以将第一对象的隔离见证区称之为第一隔离见证区,本申请实施例可以将第一对象的索引区称之为第一索引区。
为便于理解,进一步地,请参见图4,是本申请实施例提供的一种确定第一对象的场景示意图。如图4所示,本申请实施例的区块链节点可以为上述图1所示的区块链网络中的任意一个区块链节点,例如,节点10A。本申请实施例中的用户1可以为第一用户。其中,与用户1相关联的交易记录可以包含多个交易,该多个交易具体可以包含交易1、交易2、…、交易n。
应当理解,本申请实施例中的区块链节点可以在与用户1相关联的交易记录中,获取具有最大生成时间戳的交易(例如,交易n)。可以理解的是,该交易n可以为区块链中的最大生成时间戳中的交易,也可以为暂未上传至区块链中的交易,在此不做限定。
其中,本申请实施例可以将交易n作为第一交易。如图4所示,该交易n中可以包含交易n的交易哈希值(即前置哈希值,例如,哈希值1)、与用户1相关联的输入数据组和与用户1相关联的输出数据组。其中,与用户1相关联的输入数据组中可以包含交易n的上一交易的交易哈希值(即对象哈希值)、解锁脚本以及其它字段。与用户1相关联的输出数据组中可以包含交易n对应的资产转出量、锁定脚本以及其它字段。
此时,区块链节点可以将交易n作为待处理对象,且将交易n的交易哈希值(哈希值1)作为待处理对象的前置哈希值。进一步地,如图4所示,区块链节点可以在待处理对象所在的区域中,划分独立于第一隔离见证区的第一索引区,进而可以将该第一索引区中的字符串进行预处理,并根据预处理后的字符串确定第一索引区中的哈希值。其中,第一索引区中的字符串可以为0,也可以为1,还可以放置一些pbc(一种数据格式)化后的数据结构,在此不做限定。
其中,本申请实施例可以将根据预处理后的字符串所确定的第一索引区中的哈希值称之为标识哈希值,可以理解的是,该标识哈希值可以用于指示建立第一对象与第一对象的下一对象之间的子索引关系。此时,区块链节点可以将携带第一隔离见证区和携带标识哈希值的第一索引区的待处理对象确定为第一对象。
可选的,如图4所示,在交易n已上传至区块链时,区块链节点可以将交易n所在的区块(例如,区块n)作为第一区块,并可以确定区块n的区块哈希值。可以理解的是,区块n可以为当前区块链节点对应区块链中具有最大生成时间戳的区块。此时,区块链节点可以将区块n作为待处理对象,将区块n的区块哈希值可以作为待处理对象的前置哈希值。应当理解,本申请实施例可以将区块n作为待处理对象,进而可以确定第一对象。其中,将区块n确定为第一对象的具体实施方式可以参见上述将交易n确定为第一对象的具体实施方式,在此不再继续进行赘述。
步骤S102,将第一对象的下一对象作为第二对象,在第二对象中确定第二索引区,将第一对象中的前置哈希值作为第二对象中的对象哈希值,在第二对象与第一对象之间建立父索引关系。
其中,第一对象属于交易类型的对象。具体地,在第二用户接收到第一用户发起的第一转移请求和第二用户向第三用户发起的第二转移请求时,区块链节点可以获取与第一转移请求和第二转移请求相关联的关联数据信息。进一步地,区块链节点可以基于关联数据信息,从而可以确定用于构建第一对象的下一对象的关键数据信息。其中,关键数据信息中可以包含第一对象中的前置哈希值、与第二用户相关联的资产转入量以及解锁脚本、与第二用户相关联的资产转出量以及锁定脚本。应当理解,区块链节点可以将构建的第一对象的下一对象作为第二对象,从而可以在第二对象所在的区域中确定独立于待处理隔离见证区的第二索引区,进而可以将第一对象中的前置哈希值作为第二对象的对象哈希值。此时,区块链节点可以根据第二对象的对象哈希值、与第二用户相关联的资产转入量以及解锁脚本,确定与第二用户相关联的输入数据组,并根据与第二用户相关联的资产转出量以及锁定脚本,确定与第二用户相关联的输出数据组。进一步地,区块链节点可以将与第二用户相关联的输入数据组和与第二用户相关联的输出数据组录入待处理隔离见证区,得到第二对象的第二隔离见证区,并可以基于第一对象的第一隔离见证区中的前置哈希值以及第二对象的第二隔离见证区中的对象哈希值,建立第二对象与第一对象之间的父索引关系。
其中,本申请实施例中的第一哈希规则与第二哈希规则可以为不同的哈希规则。其中,第一哈希规则可以用于计算对象的哈希值,第二哈希规则可以用于签名以及验签过程。可以理解的是,哈希规则也就是单向散列算法,又称hash函数(杂凑函数,或者杂凑算法),就是把任意输入消息字符串变成固定长的输出串的一种函数,这个输出串称为该消息的杂凑值,一般用于产生消息摘要,密钥加密等。具体是指对输入消息进行计算后,输出固定长度数值的算法,输出数值也称为“散列值”或消息摘要,其长度通常在128~256位之间。例如,第一哈希规则可以为SHAS256算法(一种哈希函数),第二哈希规则可以为RIPEMD160算法(另一种哈希函数)。其中,对于任意长度的消息,SHA256算法的哈希输出值是16进制的字符串,由于16进制字符串,每两个字符占一个字节,一个字节等于8bit,所以使用SHA256杂凑函数得到的是一个256bit的值。此外,RIPEMD160算法的哈希输出值一般是16进制的字符串。由于16进制字符串,每两个字符占一个字节,一个字节等于8bit,所以使用RIPEMD160加密函数所得到的是一个160bit的值。
本申请实施例中的第一对象、第二对象均可以属于交易类型的对象,例如,第一对象可以为第一交易。其中,该第一交易可以为与第一用户相关联的交易记录中具有最大生成时间戳的交易。该第二对象可以为第一对象的下一对象,即第一交易的下一交易(即第二交易)。
应当理解,区块链节点在第一用户向第二用户发起第一转移请求时,可以生成第一交易。其中,第一交易中的第一隔离见证区中可以包含第一交易的前置哈希值、与第一用户相关联的输入数据组以及与第一用户相关联的输出数据组。可以理解的是,在第一隔离见证区中,区块链节点可以根据第一交易的对象哈希值、与第一用户相关联的输入数据组和与第一用户相关联的输出数据组,从而确定第一对象的业务数据信息。换言之,该第一交易的业务数据信息可以为除第一交易的对象哈希值之外的其他数据信息(例如,与第一用户相关联的输入数据组和与第一用户相关联的输出数据组)。
可以理解的是,与第一用户相关联的输入数据组可以包含第一交易的对象哈希值(即第一交易的上一交易的交易哈希值)、第一交易的解锁脚本以及其它字段;与第一用户相关联的输出数据组可以包含第一交易的锁定脚本、与第一用户相关联的资产转出量以及其它字段。其中,第一交易中的锁定脚本是基于第二用户的公钥对与第一用户相关联的资产转出量进行哈希计算后所得到的。
进一步地,第二用户在向第三用户发起第二转移请求之前,区块链节点需要确定第二用户的资产转移权限。其中,与第二用户相关联的解锁脚本还可以用于指示区块链中的共识节点根据第二交易中的解锁脚本和第一交易中的锁定脚本进行隔离见证,得到隔离见证结果。若隔离见证结果指示与共识节点相关联的共识结果的合法性,则区块链节点可以确定第二用户具有资产转移权限。
应当理解,在获取第二交易的解锁脚本的过程中,区块链节点可以将第一隔离见证区中的第一交易的对象哈希值、与第一交易的上一交易相关联的父索引关系以及第一交易中的业务数据信息确定为待签名字符串。进一步地,区块链节点可以通过第二用户的私钥,对待签名字符串进行哈希签名,从而得到与第二用户相关联的解锁脚本。应当理解,区块链节点可以获取第二用户的私钥以及第二用户的公钥,进而可以根据第二哈希规则,通过第二用户的私钥,对待签名字符串进行哈希签名,从而可以得到第二用户的用户签名信息。进一步地,区块链节点可以基于第二用户的签名信息以及第二用户的公钥,生成与第二用户相关联的解锁脚本。
可以理解的是,区块链节点可以根据第二交易中的解锁脚本和第一交易中的锁定脚本进行隔离见证,得到隔离见证结果。其中,所谓隔离见证是指将第一对象(例如,第一交易)的用户签名信息放置在第二对象(例如,第二交易)的解锁脚本中,从而使得第一对象可以承载更多的交易信息,进而达到扩容的目的。
应当理解,区块链节点可以获取与将第一对象中的锁定脚本相关联的账户地址,并可以将与第一对象中的锁定脚本相关联的账户地址作为第一账户地址。与此同时,区块链节点可以根据第二对象中的解锁脚本的公钥,得到与第二对象中的解锁脚本相关联的第二账户地址。其中,可以理解的是,区块链节点可以通过对第二对象中的解锁脚本的公钥(例如,公钥X)进行哈希计算,从而可以得到公钥X对应的公钥哈希值;进一步地,区块链节点可以将一个字节的地址版本号作为该公钥哈希值的头部,得到拼接字符串1,进而可以对拼接字符串1进行哈希计算,得到拼接字符串1对应的哈希值。此时,区块链节点可以从拼接字符串1对应的哈希值中,获取该公钥哈希值的校验值,并将校验值作为拼接字符串1的尾部,从而得到拼接字符串2。进一步地,区块链节点可以对拼接字符串2进行编码处理,将编码处理后所得到的编码字符串作为与第二对象中的解锁脚本相关联的第二账户地址。
此时,区块链节点可以基于第一账户地址以及第二账户地址进行匹配,从而可以得到隔离见证结果。若隔离见证结果指示第一账户地址与第二账户地址一致,则区块链节点可以确定第一对象中的锁定脚本与第二对象中的锁定脚本相匹配;若隔离见证结果指示第一账户地址与第二公钥的哈希值不一致,则区块链节点可以确定第一对象中的锁定脚本与第二对象中的解锁脚本不匹配。在区块链节点确认第一对象中的锁定脚本与第二对象中的锁定脚本相匹配时,区块链节点可以确定第二用户具有转移资产的权限。
为便于理解,进一步地,请参见图5,是本申请实施例提供的一种确定第二对象中的场景示意图。本申请实施例中的区块链节点可以为上述图1所示的区块链网络中的任意一个区块链节点,例如,节点10A。
本申请实施例的应用场景可以为数据支付场景,例如,用户A1向用户B发送5个比特币(即第一交易,例如,交易1)、用户A2可以向用户B发送10个比特币(即第一交易,例如,交易2),此时,用户B在接收到这15个比特币后,可以将5个比特币发送至用户C1,将5个比特币发送至用户C2,将5个比特币发送至用户C3(即第二交易,例如,交易3)。其中。用户A1、用户A2均可以统称为第一用户,用户B可以称之为第二用户,用户C1、用户C2以及用户C3均可以统称为第三用户。
应当理解,区块链节点可以在用户A1向用户B发起第一转移请求时,生成交易1。其中,交易1中可以包含交易1中的前置哈希值1(例如,哈希值1)、与用户A1相关联的输入数据组1以及与用户A1相关联的输出数据组1。在交易1的隔离见证区(即第一隔离见证区)中,区块链节点可以将除哈希值1之外的其他数据信息(例如,输入数据组1和输出数据组1)统称为交易1的业务数据信息。
区块链节点可以在用户A2向用户B发起第一转移请求时,生成交易2。其中,交易2中可以包含交易2中的前置哈希值2(例如,哈希值2)、与用户A2相关联的输入数据组2以及与用户A2相关联的输出数据组2。在交易2的隔离见证区(即第一隔离见证区)中,区块链节点可以将除哈希值2之外的其他数据信息(例如,输入数据组2和输出数据组2)统称为交易2的业务数据信息。
可以理解的是,用户B在向用户C1、用户C2以及用户C3发起第二转移请求之前,区块链节点需要确定用户B的资产转移权限。此时,区块链节点需要获取交易1的待签名字符串以及交易2的待签名字符串,进而生成与用户B相关联的解锁脚本3m以及解锁脚本3n。其中,解锁脚本3m可以为区块链节点基于用户B的私钥对交易1的待签名字符串进行哈希签名后所得到的解锁脚本,解锁脚本3n可以为区块链节点基于用户B的私钥对交易2的待签名字符串进行哈希签名后所得到的解锁脚本。
此时,区块链节点可以根据交易3中的解锁脚本3m和交易1中的锁定脚本1进行隔离见证,根据交易3中的解锁脚本3n和交易2中的锁定脚本2进行隔离见证,从而得到隔离见证结果。若隔离见证结果指示交易1中的锁定脚本1与交易3的解锁脚本3m相匹配,且交易2中的锁定脚本2与交易3的解锁脚本3n相匹配时,可以确定用户B具有向其他用户(例如,用户C1、用户C2和用户C3等)转移资产的资产转移权限。
应当理解,在用户B具有资产转移权限时,用户B才可以向上述三个其他用户中的任意一个用户发送第二转移请求,此时,区块链节点可以获取与第一转移请求(第一用户向第二用户发送的资产转移请求)、第二转移请求(即第二用户向第三用户发送的资产转移请求)相关联的关联数据信息,进而可以基于关联数据信息确定用于构建第一交易的下一交易的关键数据信息。其中,关键数据信息可以包含第一交易中的前置哈希值、与第二用户相关联的资产转入量以及与第二用户相关联的资产转出量。
此时,区块链节点所确定的关键数据信息可以为交易1的前置哈希值1(例如,哈希值1)、交易2的前置哈希值2(例如,哈希值2),与用户B相关联的资产转入量1以及解锁脚本1、与用户B相关联的资产转入量2以及解锁脚本2、与用户B相关联的资产转出量3x以及锁定脚本3x、与用户B相关联的资产转出量3y以及锁定脚本3y,与用户B相关联的资产转出量3z以及锁定脚本3z。
其中,锁定脚本3x为区块链节点基于用户C1的公钥对资产转出量3x(即5个比特币)进行哈希计算所得到的;锁定脚本3y为区块链节点基于用户C2的公钥对资产转出量3y(即5个比特币)进行哈希计算所得到的;锁定脚本3z为区块链节点基于用户C3的公钥对资产转出量3z(即5个比特币)进行哈希计算所得到的。
此时,区块链节点将构建的第一交易的下一交易作为第二交易(例如,交易3),进而可以在交易3所在的区域中确定独立于待处理隔离区的第二索引区。将交易1的前置哈希值1(即哈希值1)作为交易3的对象哈希值3m,将交易2的前置哈希值2(即哈希值2)作为交易3的对象哈希值3n。此时,区块链节点可以基于对象哈希值3m、资产转入量1以及解锁脚本3m,生成与用户B相关联的输入数据组的一个输入数据元素(例如,输入数据元素1),基于对象哈希值3n、资产转入量2以及解锁脚本3n,生成与用户B相关联的输入数据组的另一个输入数据元素(例如,输入数据元素2),进而可以基于输入数据元素1、输入数据元素2生成如图5所示的输入数据组3。与此同时,区块链节点可以根据资产转出量3x以及锁定脚本3x,生成输出数据组的一个输出数据元素(例如,输出数据组元素1),根据资产转出量3y以及锁定脚本3y,生成输出数据组的另一个输出数据元素(例如,输出数据组元素2),根据资产转出量3z以及锁定脚本3z,生成输出数据组的另一个输出数据元素(例如,输出数据组元素3),进而可以基于输出数据元素1、输出数据元素2以及输出数据元素3,生成如图5所示的输出数据组3。
进一步地,区块链节点可以将输入数据组3以及输出数据组3录入至待处理隔离见证区,进而可以得到交易3的隔离见证区3(即第二隔离见证区),并可以基于交易1中的前置哈希值1以及交易3中的对象哈希值3m,建立交易3与交易1之间的父索引关系,与此同时,可以基于交易2中的前置哈希值2以及交易3中的对象哈希值3n,建立交易3与交易2之间的父索引关系。
步骤S103,将第二索引区中的哈希值配置为标识哈希值,且基于第二对象中的对象哈希值、父索引关系以及第二对象中的业务数据信息,确定第二对象的前置哈希值。
具体地,区块链节点可以对第二索引区中的字符串进行预处理,从而可以得到第二索引区中的哈希值,并将第二索引区中的哈希值配置为标识哈希值。其中,在第二隔离见证区中,区块链节点可以根据第二对象的对象哈希值、与第二用户相关联的输入数据组和与第二用户相关联的输出数据组,确定第二对象中的业务数据信息。进一步地,区块链节点可以对第二索引区中的标识哈希值进行置空处理,且通过第一哈希规则对第二隔离见证区中的第二对象的对象哈希值、父索引关系以及第二对象中的业务数据信息进行哈希计算,从而可以得到第二对象的前置哈希值。
如图5所示,区块链节点可以对索引区3中的字符串进行预处理,从而可以得到索引区3中的哈希值,并将索引区3中的哈希值配置为标识哈希值。其中,标识哈希值1、标识哈希值2以及标识哈希值3可以统称为第二索引区中的标识哈希值。可以理解的是,标识哈希值1可以用于指示建立交易3与交易3的下一交易(例如,交易4)之间的子索引关系,该交易4可以为与用户C1相关联的交易。标识哈希值2可以用于指示建立交易3与交易3的下一交易(例如,交易5)之间的子索引关系,该交易5可以为与用户C2相关联的交易。标识哈希值3可以用于指示建立交易3与交易3的下一交易(例如,交易6)之间的子索引关系,该交易6可以为与用户C3相关联的交易。
在隔离见证区3中,区块链节点可以将除对象哈希值1和对象哈希值2之外的其他数据信息(例如,输入数据组3和输出数据组3)统称为交易3中的业务数据信息。进一步地,区块链节点可以对索引区3中的标识哈希值进行置空处理,且通过第一哈希规则,对隔离见证区3中的对象哈希值1,对象哈希值2、父索引关系(即交易1和交易3之间的父索引关系以及交易2和交易3之间的父索引关系)以及交易3中的业务数据信息进行哈希计算,从而可以得到交易3的前置哈希值3(例如,哈希值3)。
此外,区块链节点可以将第二交易进行打包处理,得到待写入区块链的待验证区块;进而可以将待验证区块广播至区块链上的共识节点,以使共识节点对获取到的待验证区块进行共识,得到共识结果。若在共识节点所返回的共识结果中存在超过1/2的共识结果指示共识成功,则区块链节点可以确定区块链上的区块链节点达成共识,并将待验证区块作为第二区块写入区块链。其中,第二区块可以为第一区块的下一区块;第一区块可以包含第一交易。
进一步地,请参见图6,是本申请实施例提供的一种将第二交易进行上链的场景示意图。如图6所示,本申请实施例中的节点600可以为上述图1所示的区块链网络中的任意一个区块链节点,例如,节点10A。本申请实施例中的共识节点610可以为与节点600所属区块链网络中的共识节点。
图6所示的区块链6可以为上述图1中区块链网络所对应的区块链,该区块链网络中每个节点均共享的一条相同的区块链,每个节点均可以在该条区块链6中获取该区块链所存储的信息。其中,该区块链6中包括区块60a、区块60b、…、区块60n(即第一区块),该区块60a可以称之为该区块链6的创世区块。该区块链6中的待验证区块中包含着上述第二交易。
其中,该节点600可以将该第二交易写入该节点600所对应的区块链网络中的区块链。换言之,该节点600可以从该区块链6中获取具有最大生成时间戳的区块60n,其中,该第一区块可以包含上述第一交易。进一步地,该节点600可以根据该第二交易,生成待写入该区块链6中的待验证区块。此时,该节点600可以将包含该第二交易的待验证区块广播至该区块链网络中的所有区块链节点(比如,用于进行共识处理的共识节点),在确定所有的区块链节点达成共识时,可以将该待验证区块写入上述区块链6中,也就是将该待验证区块作为第一区块的下一区块,以实现将第二交易写入至区块链中。
步骤S104,将第一索引区中的哈希值由标识哈希值替换为第二对象中的前置哈希值,建立第一对象与第二对象之间的子索引关系。
具体地,区块链节点可以将第一索引区中的哈希值由标识哈希值替换为第二对象中的前置哈希值,进而可以建立第一对象与第二对象之间的子索引关系。其中,该子索引关系用于指示区块链节点基于第一对象中的第一索引区中的哈希值,索引到第二对象(即后向索引)。
如图5所示,区块链节点可以将交易1中索引区1中的哈希值由标识哈希值替换为交易3中的前置哈希值3(即哈希值3),进而可以建立交易1与交易3之间的子索引关系。与此同时,区块链节点可以将交易2中索引区2中的哈希值由标识哈希值替换为交易3中的前置哈希值3(即哈希值3),进而可以建立交易2与交易3之间的子索引关系。
应当理解,在电子票据应用场景中,与第二用户相关联的资产转入量可以包含与第一用户请求向第二用户转移的电子票据,与第二用户相关联的资产转出量可以包含第二用户向第三用户转移的电子票据。
可以理解的是,该电子票据的票据状态可以包括未报销状态、已报销状态、作废状态、红冲状态等票据状态中的任意一个。其中,区块链节点可以接收用于追踪电子票据的票据状态的业务索引指令,进而可以基于该业务索引指令确定与电子票据相关联的第一对象(例如,第一交易)。其中,该业务索引指令中可以携带用于索引第一对象的前置哈希值。此时,区块链节点可以将第一对象的第一索引区的哈希值确定为目标哈希值,并可以将与目标哈希值相关联的子索引关系作为目标子索引关系。应当理解,区块链节点可以根据目标哈希值和目标子索引关系,在与第一用户相关联的交易记录中查找与目标哈希值相同哈希值的目标前置哈希值。若查找到的目标前置哈希值所属对象为第二对象(例如,第二交易),则区块链节点可以确定目标哈希值属于正常类型的哈希索引值,且将第二对象中电子票据的票据状态作为业务索引指令对应的业务索引结果。若查找到的目标前置哈希值所属的对象为不同于第二对象的第三对象(例如,第三交易),则区块链节点可以确定目标哈希值属于非正常类型的哈希索引值。
由此可见,本申请实施例在生成第一对象的下一对象(即第二对象)时,可以将第一对象的前置哈希值作为第二对象的对象哈希值,进而可以建立第二对象与第一对象之间的父索引关系。换言之,本申请实施例在获取到第二对象中的对象哈希值时,可以基于该第二对象的对象哈希值以及该父索引关系,向前索引至该第一对象,从而可以提供一种向前索引对象的能力。进一步的,本申请实施例可以在第一对象所在区域中,划分得到用于指示第一对象的下一对象(即第二对象)的第一索引区,进而可以在确定出第二对象的前置哈希值时,用该前置哈希值对该第一索引区中的哈希值进行更新,以将第一索引区中的哈希值由标识哈希值替换为第二对象中的前置哈希值,从而可以基于更新后的第一索引区中的哈希值和第二对象的前置哈希值,建立第一对象以及第二对象的子索引关系,以提供一种向后索引对象的能力。比如,本申请实施例后续在获取到更新后的第一索引区中的哈希值(即第二对象的前置哈希值)时,可以基于该更新后的第一索引区中的哈希值以及子索引关系,向后索引至第二对象,由此可见,本申请实施例既可以通过第一对象与第二对象之间的父索引关系提供一种向前索引对象的能力,还可以通过第一对象与第二对象之间的子索引关系提供一种向后索引对象的能力,以丰富索引方式的多样性。
进一步地,请参见图7,是本申请实施例提供的一种数据处理方法的流程示意图。如图7所示,该方法可以由区块链网络中的区块链节点执行,该区块链节点可以为接入至区块链网络中的用户终端,也可以为接入至区块链网络中的服务器,在此不做限定。为便于理解,本申请实施例中的区块链节点可以以接入至区块链网络中的服务器(如图1所示的区块链网络中的节点10A)为例进行说明。该方法至少可以包括以下步骤S201-步骤S206:
步骤S201,获取携带前置哈希值和第一索引区的第一对象。
其中,第一对象属于区块类型的对象。具体地,区块链节点可以区块链节点所属区块链网络中获取具有最大生成时间戳的区块,进而可以该具有最大生成时间戳的区块作为第一区块,进而可以确定第一区块的区块哈希值。区块链节点可以将第一区块作为待处理对象,且将第一区块的区块哈希值作为待处理对象的前置哈希值。进一步地,区块链节点可以在待处理对象所在的区域中划分独立于第一隔离见证区的第一索引区,进而可以将第一索引区中的字符串进行预处理,并根据预处理后的字符串确定第一索引区中的哈希值,以得到用于指示建立第一对象与第一对象的下一对象之间的子索引关系的标识哈希值。其中,第一隔离见证区可以包含第一对象的对象哈希值、第一对象的前置哈希值、第一对象的业务数据信息。
步骤S202,将第一对象的下一对象作为第二对象,在第二对象中确定第二索引区,将第一对象中的前置哈希值作为第二对象中的对象哈希值,在第二对象与第一对象之间建立父索引关系。
具体地,区块链节点可以获取用于构建第一对象的下一对象的关键数据信息。其中,关键数据信息中可以包含第一对象中的前置哈希值、与第二对象相关联的交易以及交易对应的哈希值。可以理解的是,与第二用户相关联的交易数量可以为一个,也可以为多个,在此不做限定。应当理解,区块链节点可以将构建的第一对象的下一对象作为第二对象,从而可以在第二对象所在的区域中确定独立于待处理隔离见证区的第二索引区,进而可以将第一对象中的前置哈希值作为第二对象中的对象哈希值,并可以将第二对象中的对象哈希值、与第二对象相关联的交易以及交易对应的哈希值录入待处理隔离见证区,得到第二对象的第二隔离见证区,并可以基于第一对象的第一隔离见证区中的前置哈希值以及第二对象的第二隔离见证区中的对象哈希值,建立第二对象与第一对象之间的父索引关系。
步骤S203,对第二索引区中的字符串进行预处理,得到第二索引区中的哈希值,将第二索引区中的哈希值配置为标识哈希值。
具体地,区块链节点可以对第二对象中的第二索引区中的字符串进行预处理,从而可以得到该第二索引区中的哈希值,进而可以将该第二索引区中的哈希值配置为标识哈希值。
步骤S204,在第二隔离见证区中,根据与第二对象相关联的至少一个交易以及至少一个交易中的每个交易对应的哈希值,确定第二对象中的业务数据信息。
具体地,在第二对象的第二隔离见证区中,区块链节点可以将与第二对象相关联的至少一个交易以及至少一个交易中的每个交易对象对应的哈希值等其他数据信息统称为为第二对象的业务数据信息。
步骤S205,对第二索引区中的标识哈希值进行置空处理,且通过第一哈希规则,对第二隔离见证区中的第二对象的对象哈希值、父索引关系以及第二对象中的业务数据信息进行哈希计算,得到第二对象的前置哈希值。
步骤S206,将第一索引区中的哈希值由标识哈希值替换为第二对象中的前置哈希值,建立第一对象与第二对象之间的子索引关系。
其中,该步骤S201-步骤S206的具体实施方式可参见上述图3所对应实施例中对步骤S101-步骤S104的描述,这里将不再赘述。
例如,第一对象可以为第一区块,第二对象可以为第二区块。为便于理解,进一步地,请参见图8,是本申请实施例提供的一种建立第一区块与第二区块之间的子索引关系的场景示意图。如图8所示,本申请实施例中的区块链8可以为区块链节点所对应网络中的区块链。该区块链8中可以由多个区块组成,具体可以包含区块1、区块2、…、区块6。
其中,每一个区块都包含区块头和区块主体。其中,每一个中可以包括区块头和区块主体。区块头中存储有默克尔根、父区块哈希值、版本号、时间戳和难度值等,区块主体中存储有区块链节点所生成的交易以及交易对应的哈希值。其中,每个区块中可以包含多个交易以及多个交易中的每个交易对应的哈希值。在将这些交易以及交易的哈希值按照默克尔根的构建方式进行构建时,可以将由这些交易以及交易的哈希值所计算出的默克尔根作为区块的区块哈希值,即前置哈希值。
应当理解,区块链节点在生成区块6的过程中,可以在图8所示的区块链8中获取具有最大生成时间戳的区块(例如,区块5),进一步地,区块链节点可以将区块5作为待处理区块,且将区块5的区块哈希值(例如,哈希值1)作为待处理对象的前置哈希值1。进一步地,区块链节点可以在待处理对象所在的区域中划分独立于第一隔离见证区的第一索引区,进而可以将第一索引区中的字符串进行预处理,并根据预处理后的字符串确定第一索引区中的哈希值,以得到用于指示建立区块5与区块5的下一区块之间的子索引关系的标识哈希值。
进一步地,区块链节点可以获取用于构建的区块6的关键数据信息。其中,关键数据信息中可以包含区块5中的前置哈希值1、与区块6相关联的交易以及交易对应的哈希值。其中,与区块6相关联的交易以及交易对应的哈希值可以为图8所示的交易5以及交易哈希值5、交易6以及交易哈希值6。应当理解,区块链节点可以将构建的区块6作为第二对象,从而可以在第二对象所在的区域中确定独立于待处理隔离见证区的第二索引区,进而可以将区块5的前置哈希值1作为区块6中的对象哈希值2(即父区块哈希值),并可以将对象哈希值2、交易5以及交易哈希值5、交易6以及交易哈希值6录入待处理隔离见证区,得到区块6的第二隔离见证区,并可以基于区块5的第一隔离见证区中的前置哈希值1以及区块6的第二隔离见证区中的对象哈希值2,建立区块6与区块5之间的父索引关系。
区块链节点可以对区块6中的第二索引区中的字符串进行预处理,从而可以得到该第二索引区中的哈希值,进而可以将该第二索引区中的哈希值配置为标识哈希值。进一步地,区块链节点可以在区块6的第二隔离见证区中,将交易5以及交易哈希值5、交易6以及交易哈希值6等其他数据信息统称为区块6的业务数据信息。
应当理解,区块链节点可以对第二索引区中的标识哈希值进行置空处理,且通过第一哈希规则,对第二隔离见证区中的对象哈希值2、父索引关系以及区块6中的业务数据信息进行哈希计算,得到区块6的前置哈希值2(例如,哈希值2)。进一步地,区块链节点可以将第一索引区中的哈希值由标识哈希值替换为该哈希值2,进而可以建立区块5与区块6之间的子索引关系。换言之,区块链节点可以根据区块5中替换后的第一索引区中的哈希值(即哈希值2),向后索引到区块6。
应当理解,区块链节点可以检测区块中的替换后的索引区的哈希值(即后置值)的准确性,并对错误的后置哈希值进行更新,以确保区块链节点可以根据区块中的后置哈希值向后索引区块。如图8所示,本申请实施例中的区块链节点可以定期在区块链8中,获取具有最大生成时间戳的区块(例如,区块6),此时,区块链节点可以根据区块6中的对象哈希值(即对象哈希值2),向前索引到区块5。进而可以获取区块5中的索引区的哈希值。此时,区块链节点可以将区块5中索引区的哈希值与区块6中的前置哈希值2(例如,哈希值2)进行匹配,若区块5中索引区的哈希值与区块6中的前置哈希值2(例如,哈希值2)不一致时,则可以理解为区块5中索引区的哈希值为非正常类型的索引哈希值,即被人篡改,进而可以对区块5中的哈希值更正为区块6中的前置哈希值2;若区块5中索引区的哈希值与区块6中的前置哈希值2(例如,哈希值2)一致时,则可以理解为区块5中索引区的哈希值为正常类型的索引哈希值,进而可以根据区块5中的对象哈希值1继续向前索引,从而遍历整条区块链,以维护区块链上区块的索引区中的哈希值的正确性。
由此可见,本申请实施例在生成第一对象的下一对象(即第二对象)时,可以将第一对象的前置哈希值作为第二对象的对象哈希值,进而可以建立第二对象与第一对象之间的父索引关系。换言之,本申请实施例在获取到第二对象中的对象哈希值时,可以基于该第二对象的对象哈希值以及该父索引关系,向前索引至该第一对象,从而可以提供一种向前索引对象的能力。进一步的,本申请实施例可以在第一对象所在区域中,划分得到用于指示第一对象的下一对象(即第二对象)的第一索引区,进而可以在确定出第二对象的前置哈希值时,用该前置哈希值对该第一索引区中的哈希值进行更新,以将第一索引区中的哈希值由标识哈希值替换为第二对象中的前置哈希值,从而可以基于更新后的第一索引区中的哈希值和第二对象的前置哈希值,建立第一对象以及第二对象的子索引关系,以提供一种向后索引对象的能力。比如,本申请实施例后续在获取到更新后的第一索引区中的哈希值(即第二对象的前置哈希值)时,可以基于该更新后的第一索引区中的哈希值以及子索引关系,向后索引至第二对象,由此可见,本申请实施例既可以通过第一对象与第二对象之间的父索引关系提供一种向前索引对象的能力,还可以通过第一对象与第二对象之间的子索引关系提供一种向后索引对象的能力,以丰富索引方式的多样性。
进一步地,请参见图9,是本申请实施例提供的一种数据处理装置的结构示意图。如图9所示,该数据处理装置1可以是运行于节点设备中的一个计算机程序(包括程序代码),例如,该数据处理装置1为一个应用软件;该数据处理装置1可以用于执行本申请实施例提供的方法中的相应步骤。如图9所示,该数据处理装置1可以运行于区块链节点,例如,该区块链节点可以为上述图1所对应实施例中的节点10A。该数据处理装置1可以包括:第一获取模块11,第一建立模块12,配置模块13,第二建立模块14,第一确定模块15,签名模块16,第二确定模块17,第二获取模块18,匹配模块19,第三确定模块20,第四确定模块21,打包处理模块22,广播模块23,写入模块24,第三获取模块25,第五确定模块26,查找模块27,第六确定模块28以及第七确定模块29。
该第一获取模块11,用于获取携带前置哈希值和第一索引区的第一对象;第一索引区中的哈希值为标识哈希值;标识哈希值用于指示建立第一对象与第一对象的下一对象之间的子索引关系。
其中,该第一获取模块11包括:第一获取单元111,第一确定单元112,第一划分单元113以及第二确定单元114。
该第一获取单元111,用于在与第一用户相关联的交易记录中,获取具有最大生成时间戳的第一交易;第一交易包含第一交易的交易哈希值、与第一用户相关联的输入数据组和与第一用户相关联的输出数据组;
该第一确定单元112,用于将第一交易所在的区块作为第一区块,确定第一区块的区块哈希值,将第一交易和第一区块分别作为待处理对象,且将第一交易的交易哈希值和第一区块的区块哈希值分别作为待处理对象的前置哈希值;
该第一划分单元113,用于在待处理对象所在的区域中划分独立于第一隔离见证区的第一索引区,将第一索引区中的字符串进行预处理,根据预处理后的字符串确定第一索引区中的哈希值,以得到用于指示建立第一对象与第一对象的下一对象之间的子索引关系的标识哈希值;第一隔离见证区中包含第一交易的交易哈希值、与第一用户相关联的输入数据组和与第一用户相关联的输出数据组;
该第二确定单元114,用于将携带第一隔离见证区和携带标识哈希值的第一索引区的待处理对象确定为第一对象。
其中,该第一获取单元111,第一确定单元112,第一划分单元113以及第二确定单元114的具体实现方式可以参见上述图3所对应实施例中对步骤S101的描述,这里将不再继续进行赘述。
该第一建立模块12,用于将第一对象的下一对象作为第二对象,在第二对象中确定第二索引区,将第一对象中的前置哈希值作为第二对象中的对象哈希值,在第二对象与第一对象之间建立父索引关系。
其中,第一对象属于交易类型的对象;
该第一建立模块12包括:第二获取单元121,第三确定单元122,第四确定单元123以及第一建立单元124。
该第二获取单元121,用于在第二用户接收到第一用户发起的第一转移请求和第二用户向第三用户发起的第二转移请求时,获取与第一转移请求和第二转移请求相关联的关联数据信息;
该第三确定单元122,用于基于关联数据信息确定用于构建第一对象的下一对象的关键数据信息;关键数据信息中包含第一对象中的前置哈希值、与第二用户相关联的资产转入量以及解锁脚本、与第二用户相关联的资产转出量以及锁定脚本;
该第四确定单元123,用于将构建的第一对象的下一对象作为第二对象,在第二对象所在的区域中确定独立于待处理隔离见证区的第二索引区,将第一对象中的前置哈希值作为第二对象的对象哈希值,根据第二对象的对象哈希值、与第二用户相关联的资产转入量以及解锁脚本,确定与第二用户相关联的输入数据组,根据与第二用户相关联的资产转出量以及锁定脚本,确定与第二用户相关联的输出数据组;
该第一建立单元124,用于将与第二用户相关联的输入数据组和与第二用户相关联的输出数据组录入待处理隔离见证区,得到第二对象的第二隔离见证区,基于第一对象的第一隔离见证区中的前置哈希值以及第二对象的第二隔离见证区中的对象哈希值,建立第二对象与第一对象之间的父索引关系。
其中,该第二获取单元121,第三确定单元122,第四确定单元123以及第一建立单元124。的具体实现方式可以参见上述图3所对应实施例中对步骤S102的描述,这里将不再继续进行赘述。
该配置模块13,用于将第二索引区中的哈希值配置为标识哈希值,且基于第二对象中的对象哈希值、父索引关系以及第二对象中的业务数据信息,确定第二对象的前置哈希值。
其中,该配置模块13包括:第一配置单元131,第五确定单元132,第一置空处理单元133,第二配置单元134,第六确定单元135以及第二置空处理单元136。
该第一配置单元131,用于对第二索引区中的字符串进行预处理,得到第二索引区中的哈希值,将第二索引区中的哈希值配置为标识哈希值;
该第五确定单元132,用于在第二隔离见证区中,根据第二对象的对象哈希值、与第二用户相关联的输入数据组和与第二用户相关联的输出数据组,确定第二对象中的业务数据信息;
该第一置空处理单元133,用于对第二索引区中的标识哈希值进行置空处理,且通过第一哈希规则,对第二隔离见证区中的第二对象的对象哈希值、父索引关系以及第二对象中的业务数据信息进行哈希计算,得到第二对象的前置哈希值。
其中,第一对象和第二对象均属于区块类型的对象;第一对象中包含独立于第一索引区的第一隔离见证区;第一隔离见证区包含第一对象的前置哈希值;第二对象中包含独立于第二索引区的第二隔离见证区;第二隔离见证区包含第二对象的对象哈希值、与第二对象相关联的至少一个交易以及至少一个交易中的每个交易对应的哈希值;
该配置模块13还包括:
该第二配置单元134,用于对第二索引区中的字符串进行预处理,得到第二索引区中的哈希值,将第二索引区中的哈希值配置为标识哈希值;
该第六确定单元135,用于在第二隔离见证区中,根据第二对象的对象哈希值、与第二对象相关联的至少一个交易以及至少一个交易中的每个交易对应的哈希值,确定第二对象中的业务数据信息;
该第二置空处理单元136,用于对第二索引区中的标识哈希值进行置空处理,且通过第一哈希规则,对第二隔离见证区中的第二对象的对象哈希值、父索引关系以及第二对象中的业务数据信息进行哈希计算,得到第二对象的前置哈希值。
其中,该第一配置单元131,第五确定单元132,第一置空处理单元133,第二配置单元134,第六确定单元135以及第二置空处理单元136的具体实现方式可以参见上述图3所对应实施例中对步骤S103的描述,这里将不再继续进行赘述。
该第二建立模块14,用于将第一索引区中的哈希值由标识哈希值替换为第二对象中的前置哈希值,建立第一对象与第二对象之间的子索引关系。
其中,与第一用户相关联的输出数据组中包含第一对象的锁定脚本;第一对象的锁定脚本是基于第二用户的公钥对与第一用户相关联的资产转出量进行哈希计算后所得到的;
该第一确定模块15,用于将第一隔离见证区中的第一对象的对象哈希值、与第一对象的上一对象相关联的父索引关系以及第一对象中的业务数据信息确定为待签名字符串;
该签名模块16,用于通过第二用户的私钥对待签名字符串进行哈希签名,得到与第二用户相关联的解锁脚本;与第二用户相关联的解锁脚本用于指示区块链中的共识节点根据第二对象中的解锁脚本和第一对象中的锁定脚本进行隔离见证,得到隔离见证结果。
其中,该签名模块16包括:第三获取单元161,签名单元162以及生成单元163。
该第三获取单元161,用于获取第二用户的私钥以及第二用户的公钥;
该签名单元162,用于根据第二哈希规则,通过第二用户的私钥,对待签名字符串进行哈希签名,得到第二用户的用户签名信息;第二哈希规则不同于第一哈希规则;
该生成单元163,用于基于第二用户的签名信息以及第二用户的公钥,生成与第二用户相关联的解锁脚本。
其中,该第三获取单元161,签名单元162以及生成单元163的具体实现方式可以参见上述图3所对应实施例中对解锁脚本的描述,这里将不再继续进行赘述。
该第二确定模块17,用于若隔离见证结果指示与共识节点相关联的共识结果的合法性,则确定第二用户的资产转移权限。
该第二获取模块18,用于获取与将第一对象中的锁定脚本相关联的账户地址,将与第一对象中的锁定脚本相关联的账户地址作为第一账户地址,且根据第二对象中的解锁脚本的公钥,得到与第二对象中的解锁脚本相关联的第二账户地址;
匹配模块19,用于基于第一账户地址以及第二账户地址进行匹配,得到隔离见证结果;
该第三确定模块20,用于若隔离见证结果指示第一账户地址与第二账户地址一致,则确定第一对象中的锁定脚本与第二对象中的锁定脚本相匹配;
该第四确定模块21,用于若隔离见证结果指示第一账户地址与第二账户地址不一致,则确定第一对象中的锁定脚本与第二对象中的解锁脚本不匹配。
该打包处理模块22,用于将第二对象进行打包处理,得到待写入区块链的待验证区块;
该广播模块23,用于将待验证区块广播至区块链上的共识节点,以使共识节点对获取到的待验证区块进行共识,得到共识结果;
该写入模块24,用于若在共识节点所返回的共识结果中存在超过1/2的共识结果指示共识成功,则确定区块链上的区块链节点达成共识,将待验证区块作为第二区块写入区块链;第二区块为第一区块的下一区块;第一区块包含第一对象。
其中,资产转入量包含与第一用户请求向第二用户转移的电子票据;资产转出量包含第二用户向第三用户转移的电子票据;
该第三获取模块25,用于获取用于追踪电子票据的票据状态的业务索引指令,基于业务索引指令确定与电子票据相关联的第一对象;业务索引指令中携带用于索引第一对象的前置哈希值;
该第五确定模块26,用于将第一对象的第一索引区的哈希值确定为目标哈希值,将与目标哈希值相关联的子索引关系作为目标子索引关系;;
该查找模块27,用于根据目标哈希值和目标子索引关系,在与第一用户相关联的交易记录中查找与目标哈希值具有相同哈希值的目标前置哈希值所对应的对象;
该第六确定模块28,用于若查找到的目标前置哈希值所属的对象为第二对象,则确定目标哈希值属于正常类型的哈希索引值,且将第二对象中电子票据的票据状态作为业务索引指令对应的业务索引结果。
该第七确定模块29,用于若查找到的目标前置哈希值所属的对象为不同于第二对象的第三对象,则确定第一索引区中的哈希值属于非正常类型的哈希索引值。
其中,该第一获取模块11,第一建立模块12,配置模块13,第二建立模块14,第一确定模块15,签名模块16,第二确定模块17,第二获取模块18,匹配模块19,第三确定模块20,第四确定模块21,打包处理模块22,广播模块23,写入模块24,第三获取模块25,第五确定模块26,查找模块27,第六确定模块28以及第七确定模块29的具体实现方式可以参见上述图3所对应实施例中对步骤S101-步骤S104以及图7所对应实施例中对步骤S201-步骤S206的描述,这里将不再继续进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
进一步地,请参见图10,是本申请实施例提供的一种节点设备的示意图。如图10所示,该节点设备1000可以为上述图1对应实施例中的区块链节点,该节点设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),网络接口1004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选地还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图10所示的节点设备1000中,网络接口1004主要用于与共识节点进行网络通信;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取携带前置哈希值和第一索引区的第一对象;第一索引区中的哈希值为标识哈希值;标识哈希值用于指示建立第一对象与第一对象的下一对象之间的子索引关系;
将第一对象的下一对象作为第二对象,在第二对象中确定第二索引区,将第一对象中的前置哈希值作为第二对象中的对象哈希值,在第二对象与第一对象之间建立父索引关系;
将第二索引区中的哈希值配置为标识哈希值,且基于第二对象中的对象哈希值、父索引关系以及第二对象中的业务数据信息,确定第二对象的前置哈希值;
将第一索引区中的哈希值由标识哈希值替换为第二对象中的前置哈希值,建立第一对象与第二对象之间的子索引关系。
应当理解,本申请实施例中所描述的节点设备1000可执行前文图3和图7所对应实施例中对该数据处理方法的描述,也可执行前文图9所对应实施例中对该数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且该计算机可读存储介质中存储有前文提及的数据处理装置1所执行的计算机程序,且该计算机程序包括程序指令,当该处理器执行该程序指令时,能够执行前文图3或者图7所对应实施例中对该数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (13)

1.一种数据处理方法,其特征在于,包括:
在与第一用户相关联的交易记录中,获取具有最大生成时间戳的第一交易;所述第一交易包含所述第一交易的交易哈希值、与所述第一用户相关联的输入数据组和与所述第一用户相关联的输出数据组;
将所述第一交易所在的区块作为第一区块,确定所述第一区块的区块哈希值,将所述第一交易和所述第一区块分别作为待处理对象,且将所述第一交易的交易哈希值和所述第一区块的区块哈希值分别作为所述待处理对象的前置哈希值;
在所述待处理对象所在的区域中划分独立于第一隔离见证区的第一索引区,将所述第一索引区中的字符串进行预处理,根据预处理后的字符串确定所述第一索引区中的哈希值,以得到用于指示建立第一对象与所述第一对象的下一对象之间的子索引关系的标识哈希值;所述第一隔离见证区中包含所述第一交易的交易哈希值、与所述第一用户相关联的输入数据组和与所述第一用户相关联的输出数据组;
将携带所述第一隔离见证区和携带所述标识哈希值的所述第一索引区的待处理对象确定为所述第一对象;
将所述第一对象的下一对象作为第二对象,在所述第二对象中确定第二索引区,将所述第一对象中的前置哈希值作为所述第二对象中的对象哈希值,在所述第二对象与所述第一对象之间建立父索引关系;
将所述第二索引区中的哈希值配置为所述标识哈希值,且基于所述第二对象中的对象哈希值、所述父索引关系以及所述第二对象中的业务数据信息,确定所述第二对象的前置哈希值;
将所述第一索引区中的哈希值由所述标识哈希值替换为所述第二对象中的前置哈希值,建立所述第一对象与所述第二对象之间的所述子索引关系。
2.根据权利要求1所述的方法,其特征在于,所述第一对象属于交易类型的对象;
所述将所述第一对象的下一对象作为第二对象,在所述第二对象中确定第二索引区,将所述第一对象中的前置哈希值作为所述第二对象中的对象哈希值,在所述第二对象与所述第一对象之间建立父索引关系,包括:
在第二用户接收到所述第一用户发起的第一转移请求和所述第二用户向第三用户发起的第二转移请求时,获取与所述第一转移请求和所述第二转移请求相关联的关联数据信息;
基于所述关联数据信息确定用于构建所述第一对象的下一对象的关键数据信息;所述关键数据信息中包含所述第一对象中的前置哈希值、与所述第二用户相关联的资产转入量以及解锁脚本、与所述第二用户相关联的资产转出量以及锁定脚本;
将构建的所述第一对象的下一对象作为第二对象,在所述第二对象所在的区域中确定独立于待处理隔离见证区的第二索引区,将所述第一对象中的前置哈希值作为所述第二对象的对象哈希值,根据所述第二对象的对象哈希值、与所述第二用户相关联的资产转入量以及解锁脚本,确定与所述第二用户相关联的输入数据组,根据与所述第二用户相关联的资产转出量以及锁定脚本,确定与所述第二用户相关联的输出数据组;
将所述与所述第二用户相关联的输入数据组和所述与所述第二用户相关联的输出数据组录入所述待处理隔离见证区,得到所述第二对象的第二隔离见证区,基于所述第一对象的第一隔离见证区中的前置哈希值以及所述第二对象的第二隔离见证区中的对象哈希值,建立所述第二对象与所述第一对象之间的父索引关系。
3.根据权利要求2所述的方法,其特征在于,所述将所述第二索引区中的哈希值配置为所述标识哈希值,且基于所述第二对象中的对象哈希值、所述父索引关系以及所述第二对象中的业务数据信息,确定所述第二对象的前置哈希值,包括:
对所述第二索引区中的字符串进行预处理,得到所述第二索引区中的哈希值,将所述第二索引区中的哈希值配置为所述标识哈希值;
在所述第二隔离见证区中,根据所述第二对象的对象哈希值、与所述第二用户相关联的输入数据组和与所述第二用户相关联的输出数据组,确定所述第二对象中的业务数据信息;
对所述第二索引区中的所述标识哈希值进行置空处理,且通过第一哈希规则,对所述第二隔离见证区中的所述第二对象的对象哈希值、所述父索引关系以及所述第二对象中的所述业务数据信息进行哈希计算,得到所述第二对象的前置哈希值。
4.根据权利要求3所述的方法,其特征在于,所述与所述第一用户相关联的输出数据组中包含所述第一对象的锁定脚本;所述第一对象的锁定脚本是基于所述第二用户的公钥对与所述第一用户相关联的资产转出量进行哈希计算后所得到的;
所述方法还包括:
将所述第一隔离见证区中的所述第一对象的对象哈希值、与所述第一对象的上一对象相关联的父索引关系以及所述第一对象中的业务数据信息确定为待签名字符串;
通过所述第二用户的私钥对所述待签名字符串进行哈希签名,得到与所述第二用户相关联的解锁脚本;所述与所述第二用户相关联的解锁脚本用于指示区块链中的共识节点根据所述第二对象中的解锁脚本和所述第一对象中的锁定脚本进行隔离见证,得到隔离见证结果;
若所述隔离见证结果指示与所述共识节点相关联的共识结果的合法性,则确定所述第二用户的资产转移权限。
5.根据权利要求4所述的方法,其特征在于,所述通过所述第二用户的私钥对所述待签名字符串进行哈希签名,得到与所述第二用户相关联的解锁脚本,包括:
获取所述第二用户的私钥以及所述第二用户的公钥;
根据第二哈希规则,通过所述第二用户的私钥,对所述待签名字符串进行哈希签名,得到所述第二用户的用户签名信息;所述第二哈希规则不同于所述第一哈希规则;
基于所述第二用户的签名信息以及所述第二用户的公钥,生成与第二用户相关联的解锁脚本。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取与所述第一对象中的锁定脚本相关联的账户地址,将与所述第一对象中的锁定脚本相关联的账户地址作为第一账户地址,且根据所述第二对象中的解锁脚本的公钥,得到与所述第二对象中的解锁脚本相关联的第二账户地址;
基于所述第一账户地址以及所述第二账户地址进行匹配,得到隔离见证结果;
若所述隔离见证结果指示所述第一账户地址与所述第二账户地址一致,则确定所述第一对象中的锁定脚本与所述第二对象中的锁定脚本相匹配;
若所述隔离见证结果指示所述第一账户地址与所述第二账户地址不一致,则确定所述第一对象中的锁定脚本与所述第二对象中的解锁脚本不匹配。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
将所述第二对象进行打包处理,得到待写入所述区块链的待验证区块;
将所述待验证区块广播至所述区块链上的共识节点,以使所述共识节点对获取到的所述待验证区块进行共识,得到共识结果;
若在所述共识节点所返回的共识结果中存在超过1/2的共识结果指示共识成功,则确定所述区块链上的区块链节点达成共识,将所述待验证区块作为第二区块写入所述区块链;所述第二区块为所述第一区块的下一区块;所述第一区块包含所述第一对象。
8.根据权利要求2所述的方法,其特征在于,所述资产转入量包含与所述第一用户请求向所述第二用户转移的电子票据;所述资产转出量包含所述第二用户向所述第三用户转移的所述电子票据;
所述方法还包括:
获取用于追踪所述电子票据的票据状态的业务索引指令,基于所述业务索引指令确定与所述电子票据相关联的第一对象;所述业务索引指令中携带用于索引所述第一对象的前置哈希值;
将所述第一对象的所述第一索引区的哈希值确定为目标哈希值,将与所述目标哈希值相关联的子索引关系作为目标子索引关系;
根据所述目标哈希值和所述目标子索引关系,在与所述第一用户相关联的交易记录中查找与所述目标哈希值具有相同哈希值的目标前置哈希值;
若查找到的所述目标前置哈希值所属的对象为所述第二对象,则确定所述目标哈希值属于正常类型的哈希索引值,且将所述第二对象中电子票据的票据状态作为所述业务索引指令对应的业务索引结果。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若查找到的所述目标前置哈希值所属的对象为不同于所述第二对象的第三对象,则确定所述第一索引区中的哈希值属于非正常类型的哈希索引值。
10.根据权利要求1所述的方法,其特征在于,所述第一对象和所述第二对象均属于区块类型的对象;所述第一对象中包含独立于所述第一索引区的第一隔离见证区;所述第一隔离见证区包含所述第一对象的前置哈希值;所述第二对象中包含独立于所述第二索引区的第二隔离见证区;所述第二隔离见证区包含所述第二对象的对象哈希值、与所述第二对象相关联的至少一个交易以及所述至少一个交易中的每个交易对应的哈希值;
所述将所述第二索引区中的哈希值配置为所述标识哈希值,且基于所述第二对象中的对象哈希值、所述父索引关系以及所述第二对象中的业务数据信息,确定所述第二对象的前置哈希值,包括:
对所述第二索引区中的字符串进行预处理,得到所述第二索引区中的哈希值,将所述第二索引区中的哈希值配置为所述标识哈希值;
在所述第二隔离见证区中,根据所述与所述第二对象相关联的至少一个交易以及所述至少一个交易中的每个交易对应的哈希值,确定所述第二对象中的业务数据信息;
对所述第二索引区中的所述标识哈希值进行置空处理,且通过第一哈希规则,对所述第二隔离见证区中的所述第二对象的对象哈希值、所述父索引关系以及所述第二对象中的所述业务数据信息进行哈希计算,得到所述第二对象的前置哈希值。
11.一种数据处理装置,其特征在于,包括:
第一获取模块,用于在与第一用户相关联的交易记录中,获取具有最大生成时间戳的第一交易;所述第一交易包含所述第一交易的交易哈希值、与所述第一用户相关联的输入数据组和与所述第一用户相关联的输出数据组;
所述第一获取模块,还用于将所述第一交易所在的区块作为第一区块,确定所述第一区块的区块哈希值,将所述第一交易和所述第一区块分别作为待处理对象,且将所述第一交易的交易哈希值和所述第一区块的区块哈希值分别作为所述待处理对象的前置哈希值;
所述第一获取模块,还用于在所述待处理对象所在的区域中划分独立于第一隔离见证区的第一索引区,将所述第一索引区中的字符串进行预处理,根据预处理后的字符串确定所述第一索引区中的哈希值,以得到用于指示建立第一对象与所述第一对象的下一对象之间的子索引关系的标识哈希值;所述第一隔离见证区中包含所述第一交易的交易哈希值、与所述第一用户相关联的输入数据组和与所述第一用户相关联的输出数据组;
所述第一获取模块,还用于将携带所述第一隔离见证区和携带所述标识哈希值的所述第一索引区的待处理对象确定为所述第一对象;
第一建立模块,用于将所述第一对象的下一对象作为第二对象,在所述第二对象中确定第二索引区,将所述第一对象中的前置哈希值作为所述第二对象中的对象哈希值,在所述第二对象与所述第一对象之间建立父索引关系;
配置模块,用于将所述第二索引区中的哈希值配置为所述标识哈希值,且基于所述第二对象中的对象哈希值、所述父索引关系以及所述第二对象中的业务数据信息,确定所述第二对象的前置哈希值;
第二建立模块,用于将所述第一索引区中的哈希值由所述标识哈希值替换为所述第二对象中的前置哈希值,建立所述第一对象与所述第二对象之间的所述子索引关系。
12.一种节点设备,其特征在于,包括:处理器、存储器、网络接口;
所述处理器与存储器、网络接口相连,其中,网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行如权利要求1-10任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-10任一项所述的方法。
CN202010483517.6A 2020-06-01 2020-06-01 一种数据处理方法、装置、节点设备及存储介质 Active CN111639080B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010483517.6A CN111639080B (zh) 2020-06-01 2020-06-01 一种数据处理方法、装置、节点设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010483517.6A CN111639080B (zh) 2020-06-01 2020-06-01 一种数据处理方法、装置、节点设备及存储介质

Publications (2)

Publication Number Publication Date
CN111639080A CN111639080A (zh) 2020-09-08
CN111639080B true CN111639080B (zh) 2021-07-27

Family

ID=72331004

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010483517.6A Active CN111639080B (zh) 2020-06-01 2020-06-01 一种数据处理方法、装置、节点设备及存储介质

Country Status (1)

Country Link
CN (1) CN111639080B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112765271B (zh) * 2020-12-31 2023-02-07 杭州趣链科技有限公司 区块链交易索引的存储方法、装置、计算机设备及介质
CN112712433B (zh) * 2021-01-08 2023-06-20 支付宝实验室(新加坡)有限公司 一种基于区块链的数据状态管理和查询方法及区块链装置
CN113282242B (zh) * 2021-05-31 2022-09-20 杭州海康存储科技有限公司 分布式存储方法、装置、设备及计算机可读存储介质
CN113626533B (zh) * 2021-10-11 2022-01-25 聊城中塑电子科技有限公司 一种紫外线功率检测方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108519985A (zh) * 2018-02-09 2018-09-11 北京欧链科技有限公司 双向区块链结构、数据处理方法和装置
CN109165224A (zh) * 2018-08-24 2019-01-08 东北大学 一种在区块链数据库上针对关键字key的索引方法
CN111131317A (zh) * 2019-12-31 2020-05-08 百度在线网络技术(北京)有限公司 一种基于区块链的数据处理方法、装置、设备和介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017209381A1 (de) * 2017-06-02 2018-12-06 Bundesdruckerei Gmbh Bidirektional verkettete Blockchain-Struktur
CN108462582B (zh) * 2018-02-09 2020-03-27 北京欧链科技有限公司 区块链中的反馈处理方法和装置
CN110597822B (zh) * 2019-09-20 2023-10-27 腾讯科技(深圳)有限公司 区块链中的信息查找方法、装置、存储介质和计算机设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108519985A (zh) * 2018-02-09 2018-09-11 北京欧链科技有限公司 双向区块链结构、数据处理方法和装置
CN109165224A (zh) * 2018-08-24 2019-01-08 东北大学 一种在区块链数据库上针对关键字key的索引方法
CN111131317A (zh) * 2019-12-31 2020-05-08 百度在线网络技术(北京)有限公司 一种基于区块链的数据处理方法、装置、设备和介质

Also Published As

Publication number Publication date
CN111639080A (zh) 2020-09-08

Similar Documents

Publication Publication Date Title
CN111639080B (zh) 一种数据处理方法、装置、节点设备及存储介质
CN110800255B (zh) 更新区块链世界状态默克尔帕特里夏字典树子树
AU2019203850B2 (en) Constructing blockchain world state merkle patricia trie subtree
CN112396423B (zh) 一种交易数据处理方法、装置、设备及存储介质
EP3438903B1 (en) Hierarchical network system, and node and program used in same
EP4102431A1 (en) Implementing logic gate functionality using a blockchain
CN110046894B (zh) 一种基于纠删码的分组可重构区块链建立方法
CN111448781A (zh) 共享的区块链数据存储
CN111630507A (zh) 账户模型下的分布式区块链数据存储
CN111902817A (zh) 基于共享节点和纠错编码的区块链数据存储
CN111630830A (zh) 账户模型下的分布式区块链数据存储
CN111597567B (zh) 数据处理方法、装置、节点设备及存储介质
CN111095210A (zh) 基于纠错编码存储共享的区块链数据
CN111373693A (zh) 索引和恢复编码的区块链数据
CN111095218A (zh) 基于纠错编码存储共享的区块链数据
CN111033491A (zh) 基于纠错编码存储共享的区块链数据
CN113837760A (zh) 数据处理方法、装置、计算机设备以及存储介质
CN113162971B (zh) 区块链节点管理方法、装置、计算机以及可读存储介质
Paavolainen et al. Decentralized beacons: Attesting the ground truth of blockchain state for constrained IoT devices
CN116661674A (zh) 一种数据压缩方法、区块同步方法及相关设备
CN116506294A (zh) 共识网络优化方法、装置、计算机设备和存储介质
CN116414841A (zh) 数据库更新方法、装置、电子设备、介质和产品
CN117155953A (zh) 一种数据处理方法、装置、计算机设备以及可读存储介质
CN111488606A (zh) 基于业务数据区块链的数据共享方法及装置
Rasal et al. Secure Data Sharing with Data Partitioning in Big Data

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40028922

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant