CN113112270B - 基于区块链的数据组织方法 - Google Patents
基于区块链的数据组织方法 Download PDFInfo
- Publication number
- CN113112270B CN113112270B CN202110522931.8A CN202110522931A CN113112270B CN 113112270 B CN113112270 B CN 113112270B CN 202110522931 A CN202110522931 A CN 202110522931A CN 113112270 B CN113112270 B CN 113112270B
- Authority
- CN
- China
- Prior art keywords
- transaction
- data
- output part
- linked
- last
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请涉及一种基于区块链的数据组织方法、装置、计算机设备和存储介质。所述方法包括:预处理程序通过获取待处理数据;基于预先设置的验证脚本组装待处理数据,获得待上链交易;区块链通过获取待上链交易;基于发布的验证脚本,确定待上链交易中的验证脚本的数量,基于验证脚本的数量确定待上链交易对应的验证流程;根据验证流程对待上链交易进行验证,并在验证通过时,存储待上链交易对应的数据。采用本申请实施例方法,能够基于验证脚本将离散的待处理数据组织起来,形成有序的虚拟数据链表,在数据应用时能够保证数据的唯一性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种基于区块链的数据组织方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,出现了区块链技术。区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点,如今,区块链已经广泛应用在金融、物联网和物流、公共服务和数字版权等领域。
当前的区块链技术可以基于未花费的交易输出(Unspent Transaction Output,UXTO)模型实现。然而,UTXO模型不是账户模型,没有动态的存储空间,只能实现不同的交易存储不同的数据,无法动态保存所有数据的全局信息。由于交易是离散的,数据也是离散的,在数据应用时,无法保证数据的唯一性。
发明内容
基于此,有必要针对上述技术问题,提供一种能够保证数据的唯一性的基于区块链的数据组织方法、装置、计算机设备和存储介质。
一种基于区块链的数据组织方法,所述方法包括:
获取待处理数据;
基于预先设置的验证脚本组装所述待处理数据,获得待上链交易;所述待上链交易包括输入部分和输出部分;
所述输入部分包括:所述待上链交易所在链表中的上一个节点的上一交易数据信息,以及所述上一个节点对应的交易后的剩余资产、所述上一个节点对应的交易的哈希值;所述上一交易数据信息包括:所述上一个节点对应的交易的历史处理数据,签名脚本,以及所述验证脚本;
所述输出部分包括:当前交易数据信息以及当前交易后的剩余资产;所述当前交易数据信息包括:所述待处理数据,所述签名脚本,以及所述验证脚本。
一种基于区块链的数据组织方法,所述方法包括:
获取待上链交易;
基于发布的验证脚本,确定所述待上链交易中的验证脚本的数量,基于所述验证脚本的数量确定所述待上链交易对应的验证流程;
根据所述验证流程对所述待上链交易进行验证,并在验证通过时,存储所述待上链交易对应的数据。
一种基于区块链的数据组织装置,所述装置包括:
待处理数据获取模块,用于获取待处理数据;
待上链交易组装模块,用于基于预先设置的验证脚本组装所述待处理数据,获得待上链交易;所述待上链交易包括输入部分和输出部分;所述输入部分包括:所述待上链交易所在链表中的上一个节点的上一交易数据信息,以及所述上一个节点对应的交易后的剩余资产、所述上一个节点对应的交易的哈希值;所述上一交易数据信息包括:所述上一个节点对应的交易的历史处理数据,签名脚本,以及所述验证脚本;所述输出部分包括:当前交易数据信息以及当前交易后的剩余资产;所述当前交易数据信息包括:所述待处理数据,所述签名脚本,以及所述验证脚本。
一种基于区块链的数据组织装置,所述装置包括:
待上链交易获取模块,用于获取待上链交易;
验证流程确定模块,用于基于发布的验证脚本,确定所述待上链交易中的验证脚本的数量,基于所述验证脚本的数量确定所述待上链交易对应的验证流程;
数据存储模块,用于根据所述验证流程对所述待上链交易进行验证,并在验证通过时,存储所述待上链交易对应的数据。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
上述基于区块链的数据组织方法、装置、计算机设备和存储介质,预处理程序通过获取待处理数据;基于预先设置的验证脚本组装待处理数据,获得待上链交易;区块链通过获取待上链交易;基于发布的验证脚本,确定待上链交易中的验证脚本的数量,基于验证脚本的数量确定待上链交易对应的验证流程;根据验证流程对待上链交易进行验证,并在验证通过时,存储待上链交易对应的数据。采用本申请实施例方法,通过将验证脚本组装在待上链交易中,并在基于验证脚本的数量确定待上链交易的验证流程,在验证通过后存储待上链交易对应的数据,能够基于验证脚本将离散的待处理数据组织起来,形成有序的虚拟链表,在数据应用时能够保证数据的唯一性。
附图说明
图1为一个实施例中基于区块链的数据组织方法的应用环境图;
图2为一个实施例中基于区块链的数据组织方法的流程示意图;
图3为一个实施例中未花费的交易输出模型的示意图;
图4为另一个实施例中未花费的交易输出模型的示意图;
图5为一个实施例中未花费的交易输出模型中的交易数据信息的示意图;
图6为另一个实施例中基于区块链的数据组织方法的流程示意图;
图7为一个具体实施例中待上链交易的示意图;
图8为另一个具体实施例中待上链交易的示意图;
图9为另一个具体实施例中待上链交易的示意图;
图10为一个实施例中基于区块链的数据组织装置的结构框图;
图11为另一个实施例中基于区块链的数据组织装置的结构框图;
图12为一个实施例中计算机设备的内部结构图;
图13为另一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在其中一个实施例中,本申请提供的基于区块链的数据组织方法,可以应用于如图1所示的应用环境中,其中包括预处理系统100和数据共享系统110,预处理系统100可以通过网络或其他通信方式与数据共享系统100进行通信。
其中,预处理系统100可以包括预处理程序,预处理程序是链下处理程序,可以用于将数据组装为对应的交易。预处理程序可以存储在终端101中,终端101之间可以通过网络或其他通信方式通信,终端101也可以通过网络或其他通信方式与数据共享系统100通信。数据共享系统110可以包括区块链网络,区块链网络中可以包括多个区块链节点,加入区块链网络的每个成员可以包括区块链网络中的至少一个区块链节点。数据共享系统110还可以包括区块链客户端。每个区块链客户端可以对应至少一个区块链节点,每个区块链节点可以对应至少一个区块链客户端。具有对应关系的区块链客户端和区块链节点可以隶属于同一成员。数据共享系统110可以基于多个服务器111实现。
具体地,预处理系统100通过获取待处理数据,并基于预先设置的验证脚本组装待处理数据,获得待上链交易。其中,待上链交易包括输入部分和输出部分;输入部分包括:待上链交易所在链表中的上一个节点的上一交易数据信息,以及上一个节点对应的交易后的剩余资产、上一个节点对应的交易的哈希值;上一交易数据信息包括:上一个节点对应的交易的历史处理数据,签名脚本,以及验证脚本;输出部分包括:当前交易数据信息以及当前交易后的剩余资产;当前交易数据信息包括:待处理数据,签名脚本,以及验证脚本。数据共享系统110获取预处理系统100的待上链交易,并基于发布的验证脚本,确定待上链交易中的验证脚本的数量,基于验证脚本的数量确定待上链交易对应的验证流程,根据验证流程对待上链交易进行验证,并在验证通过时,存储待上链交易对应的数据。
其中,预处理系统100中的终端101可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,数据共享系统110中的服务器111可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在其中一个实施例中,如图2所示,提供了一种基于区块链的数据组织方法,以该方法应用于图1中的预处理系统100为例进行说明,包括以下步骤:
步骤S202,获取待处理数据。
在其中一个实施例中,本申请实施例是基于区块链的数据组织方法。其中,区块链起源于比特币,涉及数学、密码学、互联网和计算机编程等多种科学技术问题。区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。
在其中一个实施例中,预处理程序是链下处理程序,可以按照区块链对应的交易格式,将待处理数据进行组装,获得对应的待上链交易。其中,待处理数据是指未处理的离散数据。在预处理程序将待处理数据组装为待上链交易之后,可以向区块链节点发送组装的待上链交易。区块链节点可以接收待上链交易,并进行后续操作。预处理程序还可以收集和存储已上链的数据对应的节点信息,后续在链表中新插入数据时,可以直接从根据已存储的信息组装交易,无需再实时查询链上的节点信息。
步骤S204,基于预先设置的验证脚本组装待处理数据,获得待上链交易。
在其中一个实施例中,区块链可以基于未花费的交易输出(Unspent TransactionOutput,UXTO)模型来实现,也可以基于账户模型来实现。其中,本申请实施例中的区块链主要是基于UXTO模型实现的区块链。其中,UTXO是比特币交易生成及验证的核心概念。多个交易构成了一组链条式结构,所有合法的比特币交易都可以追溯到前向一个或多个交易的输出,链条的源头都是挖矿奖励,末尾则是当前未花费的交易输出。具体地,如图3所示为UTXO模型的示意图。在区块链存在多个区块,在每个区块中可以存在多个交易,多个区块中的多个交易构成了一组链条。在区块1中存在一个交易,表示为第一笔交易,第一笔交易的当前未花费的交易输出为10;在区块2中存在两个交易,分别表示为第二笔交易和第三笔交易,第二笔交易的当前未花费的交易输出为5,第三笔交易的当前未花费的交易输出为5。第二笔交易和第三笔交易的交易输出之间,与第一笔交易的当前未花费的交易输出相同,其类型为转账交易,以此类推。
在其中一个实施例中,如图4所示,区块链可以为Nervos区块链。将区块链的区块表示为Block,将每个区块中存在的多个交易表示为Transaction。其中,每个交易都存在交易输入和交易输出,将交易输入部分表示为Input,将交易输出表示为Output。在Input和Output中均存在至少一个Cell,将Input中的Cell称为输入部分。按照Cell的数量,可以依次将Input的第一个Cell表示为Input0,将Input的第二个Cell表示为Input1,以此类推。将Output中的Cell称为输出部分,按照Cell的数量,可以依次将Output的第一个Cell表示为Output0,第将Output的第二个Cell表示为Output1,以此类推。
具体地,Cell是Nervos区块链中的状态储存单位,表示一块存储空间。如图5所示,在Cell中主要包括Data、Lock脚本和Type脚本。其中,Data中可以写入任意一段字节,可以用于存储待处理数据;Lock脚本表示该存储空间的所有者,可以用于验证签名是否正确。Type脚本可以作为类型验证,可以用于处理业务逻辑。
在其中一个实施例中,预先设置验证脚本。验证脚本可以是Cell中的一种Type脚本,验证脚本的包括预先设置的计算机代码和验证脚本参数。在将待处理数据进行组装为待上链交易时,将验证脚本作为Cell中的Type脚本。在将待处理数据组装为待上链交易之后,可以将验证脚本参数设置为待上链交易所在链表的首节点对应的交易中输入部分的哈希值,即Input0的哈希值。验证脚本参数还可以是当前的待上链交易对应的区块序号、区块时间等信息。
在其中一个实施例中,Cell中的Data可以用于存储待处理数据,待处理数据可以是数字、字符串等。其中,预先设置待处理数据的数据格式,数据格式为引用信息和待处理实际数据的组合。在另外一些实施例中,待处理数据还可以包括用户自定义数据。其中,可以将引用信息表示为Next,将待处理实际数据表示为Value。具体地,待处理数据包括引用信息Next和待处理实际数据Value。多个待上链交易可以通过Next中保存的内容,使交易对应的离散数据组成虚拟数据链表。
在其中一个实施例中,当待处理数据还包括用户自定义数据时,在待处理数据存储到区块链中之后,还可以对用户自定义数据进行更新。其中,基于新上链交易对用户自定义数据进行更新。具体地,可以组装一个新上链交易,新上链交易包括一个输入部分Input和一个输出部分Output,输入部分中包括原始的待处理数据,输出部分中包括更新了用户自定义数据之后的待处理数据。在新上链交易对应的数据存储到区块链中之后,即完成了对用户自定义数据的更新。
在其中一个实施例中,在Next中保存的非普通链表的指针地址,而是待上链交易所在链表中的下一节点的待处理实际数据Value的数据标识。其中,数据标识可以为待处理实际数据Value的哈希值,或者,还可以是待处理实际数据的数据本身。当链表中有新插入数据时,已上链的数据对应的交易中的数据标识,会基于新插入数据对应的交易进行更新。以Next中保存的是待处理实际数据Value的哈希值为例,例如,在初始链表中,仅有数据A,此时数据A对应的交易中的Next为空,即为0;当数据A所在链表有新插入的数据C时,则基于数据C对应的交易,将数据A对应的交易中的Next更新为数据C的实际数据的哈希值。
在其中一个实施例中,要求链表中的待处理数据有序,有序是指链表中的待处理数据能够按照数据大小,统一呈升序或者降序排列,也就是说,链表可以为升序或者降序。其中,当待处理数据为数字时,数据大小的比较方式与数学中数字大小的比较方式相同。当待处理数据为字符串时,数据大小的比较方式与字符串大小的比较方式相同。具体地,在组装待处理数据对应的交易时,根据数据大小确定待处理数据对应的交易的节点在链表中的相对位置。以链表为升序为例,例如,在初始链表有数据A、C、F,数据大小关系为A<C<F,当新插入数据B时,数据大小关系为A<B<C,即可确定新插入数据B必须在A和C之间,此时基于A和C组装新插入数据B对应的交易。
在其中一个实施例中,基于UTXO模型对应的交易格式,组装获得的待上链交易包括输入部分和输出部分。具体地,输入部分包括:待上链交易所在链表中的上一个节点的上一交易数据信息,以及上一个节点对应的交易后的剩余资产、上一个节点对应的交易的哈希值;上一交易数据信息包括:上一个节点对应的交易的历史处理数据,签名脚本,以及验证脚本;输出部分包括:当前交易数据信息以及当前交易后的剩余资产;当前交易数据信息包括:待处理数据,签名脚本,以及验证脚本。
在其中一个实施例中,对于待处理数据,不同的应用类型会创建不同的链表。一种应用类型与一条链表对应。若每个待处理数据对应的交易的节点均为链表的首节点时,在将待上链交易对应的数据存储在区块链之后,数据仍然是离散的,此时则不存在任何意义。因此,在组装待处理数据之前,需要确定待处理数据对应的交易的节点是否为链表的首节点。具体地,确定待处理数据的应用类型,当待处理数据的应用类型与已处理数据的应用类型相同时,确定待处理数据对应的交易的节点不为链表的首节点,否则,确定待处理数据对应的交易的节点为链表的首节点。其中,已处理数据为已组装,并获得对应的交易的数据。
在其中一个实施例中,在待处理数据对应的交易的节点为链表的首节点时,则待上链交易所在链表中不存在上一个节点和下一个节点。此时,待上链交易所在链表中的上一个节点的上一交易数据信息为空,上一个节点对应的交易的哈希值为空,上一个节点对应的交易后的剩余资产为用户资产,待处理数据中的引用信息Next为预设值,待处理实际数据Value为预设数据。其中,预设值可以为0,也可以不为0,预设数据可以为空,也可以不为空,即可以根据不同的待处理数据的应用类型,设置对应的初始值。具体地,在待处理数据对应的交易的节点为链表的首节点时,输入部分包括:用户资产;输出部分包括:当前交易数据信息以及当前交易后的剩余资产;当前交易数据信息包括:待处理数据,签名脚本,以及验证脚本。
在其中一个实施例中,在待处理数据对应的交易的节点不为链表的首节点时,此时相当于在链表中新插入节点,需要确定待处理数据对应的交易的节点在链表的相对位置。其中,相对位置主要包括新插入节点位于链表的链中位置或者链尾位置。相对位置可以根据待处理数据的数据大小确定。新插入节点时,需要将新插入节点的上一个节点以及下一个节点中的Next进行更新,以保证新插入节点对应的数据与原来的链表节点对应的数据能够继续组成链表。
以Next中保存的是待处理实际数据Value的哈希值为例,例如,在初始链表中,仅有数据A,此时数据A对应的交易中的Next为空,即为0;当数据A所在链表有新插入的数据C时,此时数据C对应的交易的节点在链表的链尾位置,则数据C对应的交易需要基于数据A进行组装,同时,基于数据C对应的交易,将数据A对应的交易中的Next更新为数据C的实际数据的哈希值;当数据A和数据C所在链表有新插入的数据B时,此时数据B对应的交易的节点在链表的链中位置,则数据B对应的交易需要基于数据A和数据B进行组装,同时,基于数据B对应的交易,将数据A对应的交易中的Next更新为数据B的实际数据的哈希值,将数据C的实际数据的哈希值作为数据B对应的交易中的Next。
在其中一个实施例中,在待处理数据对应的交易的节点在链表的相对位置为链中位置时,在链表中的该节点存在上一个节点和下一个节点。此时,待上链交易包括至少一个输入部分和至少一个输出部分。具体地,输入部分包括:待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分,上一输出部分中的引用信息为待上链交易所在链表中的下一个节点的下一交易对应的下一输出部分中的数据标识;以及下一输出部分。输出部分包括:上一输出部分,上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;当前交易对应的当前输出部分,当前输出部分中的引用信息为下一输出部分中的数据标识;以及下一输出部分。
其中,上一输出部分包括:待上链交易所在链表中的上一个节点的上一交易数据信息,以及上一个节点对应的交易后的剩余资产、上一个节点对应的交易的哈希值;上一交易数据信息包括:上一个节点对应的交易的历史处理数据,签名脚本,以及验证脚本。下一输出部分包括:待上链交易所在链表中的下一个节点的下一交易的数据信息,以及下一个节点对应的交易后的剩余资产;下一交易数据信息包括:下一个节点对应的交易的历史处理数据,签名脚本,以及验证脚本。当前输出部分包括:当前交易数据信息以及当前交易后的剩余资产;当前交易数据信息包括:待处理数据,签名脚本,以及验证脚本。在待处理数据对应的交易的节点在链表的相对位置为链中位置时,此时组装的待上链交易的输入部分中,验证脚本的数量为2,输出部分中,验证脚本的数量为3。
在其中一个实施例中,在待处理数据对应的交易的节点在链表的相对位置为链尾位置时,在链表中的该节点只存在上一个节点,不存在下一个节点。此时,待上链交易包括输入部分和至少一个输出部分。具体地,输入部分包括:待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分。输出部分包括:上一输出部分,上一输出部分中的引用信息为当前输出部分中的数据标识;以及当前交易对应的当前输出部分。在待处理数据对应的交易的节点在链表的相对位置为链尾位置时,此时组装的待上链交易的输入部分中,验证脚本的数量为1,输出部分中,验证脚本的数量为2。
在其中一个实施例中,用户可以根据需求将区块链上已上链的数据删除。例如,在数据A和数据C所在链表中,当需要删除数据A时,需要基于数据A对应的交易组装一个新交易。新交易的节点在链表中的位置,为数据A对应的交易的节点与数据C对应的交易的节点之间。具体地,在待处理数据为待删除数据时,则待上链交易包括至少一个输入部分和输出部分。其中,输入部分包括:待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分,上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;以及当前交易对应的当前输出部分。输出部分包括:上一输出部分,上一输出部分中的引用信息为当前输出部分中的数据标识。以此将待删除数据通过交易进行删除或销毁。在待处理数据为待删除数据时,此时组装的待上链交易的输入部分中,验证脚本的数量为2,输出部分中,验证脚本的数量为1。
上述基于区块链的数据组织方法中,通过获取待处理数据;基于预先设置的验证脚本组装待处理数据,获得待上链交易;待上链交易包括输入部分和输出部分;输入部分包括:待上链交易所在链表中的上一个节点的上一交易数据信息,以及上一个节点对应的交易后的剩余资产、上一个节点对应的交易的哈希值;上一交易数据信息包括:上一个节点对应的交易的历史处理数据,签名脚本,以及验证脚本;输出部分包括:当前交易数据信息以及当前交易后的剩余资产;当前交易数据信息包括:待处理数据,签名脚本,以及验证脚本。采用上述实施例方法,能够按照区块链格式将待处理数据组装为待上链交易,且通过相同的验证脚本将待上链交易相互联系起来,在待上链交易对应的数据存储到区块链中之后,能够保证离散的数据之间存在联系,使离散的数据形成有序的虚拟数据链表。
在其中一个实施例中,如图6所示,提供了一种基于区块链的数据组织方法,以该方法应用于图1中的数据共享系统110为例进行说明,包括以下步骤:
步骤S302,获取待上链交易。
在其中一个实施例中,待上链交易由预处理程序按照区块链的格式进行组装,是待处理数据对应的交易。在获取待上链交易之后,区块链需要对待上链交易进行验证,在验证通过之后,才能够存储待上链交易对应的数据。
步骤S304,基于发布的验证脚本,确定待上链交易中的验证脚本的数量,基于验证脚本的数量确定待上链交易对应的验证流程。
在其中一个实施例中,在区块链对待上链交易进行验证之前,预处理程序需要将验证脚本预先发布至区块链上。具体地,可以组装一个交易,将验证脚本所包含的内容作为该交易的Data,该交易中的其他内容为空,并将该交易预先发布至区块链上。区块链在获取待上链交易之后,基于发布的验证脚本,将待上链交易中脚本的参数信息与验证脚本的验证脚本参数进行比较,从而确定待上链交易中的验证脚本的数量。
在其中一个实施例中,在预处理程序将待处理数据组装为待上链交易时,确定了待处理数据对应的交易的节点是否为链表的首节点,以及确定了待处理数据对应的交易的节点在链表的链中位置或链尾位置。由于节点的性质和位置不同,因此组装的交易中包含的内容不同,那么区块链的对交易进行验证的验证流程也不同。因此,需要基于验证脚本的数量,确定待上链交易对应的验证流程,根据对应的验证流程进行验证。
在其中一个实施例中,当待上链交易的输入部分中不存在验证脚本,且待上链交易的输出部分中存在一个验证脚本时,确定待上链交易对应的验证流程为链表首节点验证流程。具体地,在验证流程为链表首节点验证流程时,验证在待上链交易的输出部分中的待处理数据中的引用信息是否为预设值,以及待处理实际数据是否为预设数据。其中,预设值可以为0,也可以不为0。预设数据可以为空,也可以不为空。在另外一些实施例中,还可以包括验证待上链交易中的输入部分中的数据标识是否与验证脚本参数相同。
在其中一个实施例中,当上述验证的结果均为是,也就是,当在待上链交易的输出部分中的待处理数据中的引用信息为预设值,以及待处理实际数据为预设数据时,确定待上链交易验证通过。
在其中一个实施例中,当待上链交易的输入部分中存在第一数量的验证脚本,当待上链交易的输出部分中存在第二数量的验证脚本,在第一数量与第二数量之间满足预设数量关系,且第一数量为第一预设值时,确定待上链交易对应的验证流程为插入链中验证流程。具体地,可以将第一数量表示为Input_num,将第二数量表示为Output_num,将第一预设值设置为1,将第二预设值设置为2。预设数量关系为第一数量与第二数量之间,满足第一数量与1之和等于第二数量,即Input_num+1=Output_num。
在其中一个实施例中,在验证流程为插入链中验证流程时,验证待上链交易的输入部分中,是否包括待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;上一输出部分中的引用信息是否为待上链交易所在链表中的下一个节点的下一交易对应的下一输出部分中的数据标识;是否包括下一输出部分;验证待上链交易的输出部分中,是否包括上一输出部分;上一输出部分中的引用信息是否为当前交易对应的当前输出部分中的数据标识;是否包括当前交易对应的当前输出部分;当前输出部分中的引用信息是否为下一输出部分中的数据标识;是否包括下一输出部分;上一输出部分、当前输出部分以及下一输出部分中的数据是否有序。
在其中一个实施例中,当上述验证的结果均为是,也就是,当待上链交易的输入部分中,包括待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;且上一输出部分中的引用信息为待上链交易所在链表中的下一个节点的下一交易对应的下一输出部分中的数据标识;包括下一输出部分;在待上链交易的输出部分中,包括上一输出部分;且上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;且包括当前交易对应的当前输出部分;且当前输出部分中的引用信息为下一输出部分中的数据标识;且包括下一输出部分;且上一输出部分、当前输出部分以及下一输出部分中的数据有序时,确定待上链交易验证通过。
在其中一个实施例中,当待上链交易的输入部分中存在第一数量的验证脚本,当待上链交易的输出部分中存在第二数量的验证脚本,在第一数量与第二数量之间满足预设数量关系,且第一数量为第二预设值时,确定待上链交易对应的验证流程为插入链尾验证流程。具体地,可以将第一数量表示为Input_num,将第二数量表示为Output_num,将第一预设值设置为1,将第二预设值设置为2。预设数量关系为第一数量与第二数量之间,满足第一数量与1之和等于第二数量,即Input_num+1=Output_num。
在其中一个实施例中,在验证流程为插入链尾验证流程时,验证待上链交易的输入部分中,是否包括待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;验证待上链交易的输出部分中,是否包括上一输出部分;上一输出部分中的引用信息是否为当前输出部分中的数据标识;是否包括当前交易对应的当前输出部分;上一输出部分、当前输出部分中的数据是否有序。
在其中一个实施例中,当上述验证的结果均为是,也就是,当待上链交易的输入部分中,包括待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;且待上链交易的输出部分中,包括上一输出部分;且上一输出部分中的引用信息为当前输出部分中的数据标识;且包括当前交易对应的当前输出部分;上一输出部分、当前输出部分中的数据有序时,确定待上链交易验证通过。
在其中一个实施例中,当待上链交易的输入部分中存在第一数量的验证脚本,当待上链交易的输出部分中存在第二数量的验证脚本,且第一数量为第二预设值,且第二数量为第一预设值时,确定待上链交易对应的验证流程为删除验证流程。具体地,可以将第一数量表示为Input_num,将第二数量表示为Output_num,将第一预设值设置为1,将第二预设值设置为2。
在其中一个实施例中,在验证流程为删除验证流程时,验证待上链交易的输入部分中,是否包括待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;上一输出部分中的引用信息是否为当前交易对应的当前输出部分中的数据标识;是否包括当前交易对应的当前输出部分;验证待上链交易的输出部分中,是否包括上一输出部分;上一输出部分中的引用信息是否为当前输出部分中的数据标识。
在其中一个实施例中,当上述验证的结果均为是,也就是,当待上链交易的输入部分中,包括待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;且上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;且包括当前交易对应的当前输出部分;且待上链交易的输出部分中,包括上一输出部分;且上一输出部分中的引用信息为当前输出部分中的数据标识时,确定待上链交易验证通过。
步骤S306,根据验证流程对待上链交易进行验证,并在验证通过时,存储待上链交易对应的数据。
具体地,在根据验证流程对待上链交易进行验证,基于上述验证通过的条件确定待上链交易验证通过时,存储待上链交易对应的数据。虽然存储的数据仍然离散的分布在区块链的各区块中,但是可以基于数据对应的交易中的验证脚本和Next,将同一种应用类型的离散的数据按照数据大小组织起来,从而在数据应用时,保证数据的唯一性。
上述基于区块链的数据组织方法中,区块链通过获取待上链交易;基于发布的验证脚本,确定待上链交易中的验证脚本的数量,基于验证脚本的数量确定待上链交易对应的验证流程;根据验证流程对待上链交易进行验证,并在验证通过时,存储待上链交易对应的数据。采用上述实施例方法,在待上链交易验证通过时存储对应的数据,能够确保存储的数据为合法数据,并通过验证脚本将交易相互联系起来,使离散的数据之间存在联系,形成有序的虚拟数据链表,从而在数据应用时保证数据的唯一性。
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在其中一个具体实施例中,以链表为升序为例,基于区块链的数据组织方法包括:待上链交易的组装和待上链交易的验证,具体步骤如下:
一、待上链交易的组装
获取待处理数据;
基于预先设置的验证脚本组装待处理数据,获得待上链交易。
(1)在待处理数据对应的交易的节点为链表的首节点时:
待上链交易的输入部分包括:
Input0;Input0中包括用户资产,用于支付手续费;
待上链交易的输出部分包括:
a)Output0;Output0中包括签名脚本,以及上述验证脚本,验证脚本的参数为Input0的哈希值,Next为0,Data为空;
b)Output1;Output1中包括用户资产的找零,可有可无,不限制。
(2)在待处理数据对应的交易的节点不为链表的首节点,且待处理数据对应的交易的节点在链表的相对位置为链中位置时:确定链表中的上一个节点的上一交易,以及下一个节点的下一交易;如图7所示为待上链交易的示意图;其中,Type01为预先设置的验证脚本;
待上链交易的输入部分包括:
a)Input0;Input0中包括上一交易对应的上一输出部分;
b)Input1;Input1中包括下一交易对应的下一输出部分;
c)Input2;Input2中包括用户资产,用于支付手续费;
待上链交易的输出部分包括:
a)Output0;Output0中包括上一交易对应的上一输出部分,且验证脚本不变,并将Next更新为Output1中的数据的哈希值;
b)Output1;Output1中包括当前交易对应的当前输出部分,且验证脚本与Output0的验证脚本相同,Next为Output1中的数据的哈希值;
c)Output2;Output2中包括下一交易对应的下一输出部分,所有信息不变;
d)Output3;Output3中包括用户资产的找零,可有可无,不限制。
(3)在待处理数据对应的交易的节点不为链表的首节点,且待处理数据对应的交易的节点在链表的相对位置为链尾位置时:确定链表中的上一个节点的上一交易;如图8所示为待上链交易的示意图;
待上链交易的输入部分包括:
a)Input0;Input0中包括上一交易对应的上一输出部分;
b)Input1;Input1中包括用户资产,用于支付手续费;
待上链交易的输出部分包括:
a)Output0;Output0中包括上一交易对应的上一输出部分,且验证脚本不变,并将Next更新为Output1中的数据的哈希值;
b)Output1;Output1中包括当前交易对应的当前输出部分,且验证脚本与Output0的验证脚本相同,Next为0;
c)Output2;Output2中包括用户资产的找零,可有可无,不限制。
(4)在待处理数据为待删除数据时,确定待删除数据对应的当前交易的节点,以及链表中的上一个节点的上一交易;如图9所示为待上链交易的示意图:
待上链交易的输入部分包括:
a)Input0;Input0中包括上一交易对应的上一输出部分;
b)Input1;Input1中包括当前交易对应的当前输出部分;
c)Input2;Input2中包括用户资产,用于支付手续费;
待上链交易的输出部分包括:
a)Output0;Output0中包括上一交易对应的上一输出部分,且验证脚本不变,并将Next更新为Input1中的数据的哈希值;
b)Output1;Output1中包括用户资产的找零,可有可无,不限制。
二、待上链交易的验证
获取待上链交易;
基于发布的验证脚本,确定待上链交易中的验证脚本的数量,基于验证脚本的数量确定待上链交易对应的验证流程。
(1)当待上链交易的Input中不存在验证脚本,待上链交易的Output中存在一个验证脚本时,确定待上链交易对应的验证流程为链表首节点验证流程;
a)验证Input0的哈希值是否与验证脚本参数相同;
b)验证Next是否为0,Data是否为空。
(2)当待上链交易的Input中存在验证脚本,数量为Input_num,待上链交易的Output中存在验证脚本,数量为Output_num;
在Input_num+1=Output_num,且Input_num=2时,确定待上链交易对应的验证流程为插入链中验证流程;
a)验证Output0的数据是否与Input0的数据相同;
b)验证Output2的数据是否与Input1的数据相同
c)验证Input0的Next是否为Input1的数据的哈希值;
d)验证Output0的Next是否为Output1的数据的哈希值;
e)验证Output1的Next是否为Output2的数据的哈希值;
f)验证Output0的数据是否小于Output1的数据;
g)验证Output1的数据是否小于Output2的数据。
(3)当待上链交易的Input中存在验证脚本,数量为Input_num,待上链交易的Output中存在验证脚本,数量为Output_num;
在Input_num+1=Output_num,且Input_num=1时,确定待上链交易对应的验证流程为插入链尾验证流程;
a)验证Output0的数据是否与Input0的数据相同;
b)验证Input0的Next是否为0;
c)验证Output0的Next是否等于Output1的数据的哈希值;
d)验证Output1的Next是否为0;
e)验证Output0的数据是否小于Output1的数据。
(4)当待上链交易的Input中存在验证脚本,数量为Input_num,待上链交易的Output中存在验证脚本,数量为Output_num;
在Input_num=2,且Output_num=1时,确定待上链交易对应的验证流程为删除验证流程;
a)验证Output0的数据是否与Input0的数据相同;
b)验证Input0的Next是否为Input1的数据的哈希值;
c)验证Output0的Next是否为Input1的Next。
根据验证流程对待上链交易进行验证,当上述验证的结果均为是,确定验证通过,并在验证通过时,存储待上链交易对应的数据。
应该理解的是,虽然图2和图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2和图6中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并非必须是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也并非必须是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在其中一个实施例中,如图10所示,提供了一种基于区块链的数据组织装置,包括:待处理数据获取模块1010和待上链交易组装模块1020,其中:
待处理数据获取模块1010,用于获取待处理数据。
待上链交易组装模块1020,用于基于预先设置的验证脚本组装所述待处理数据,获得待上链交易;所述待上链交易包括输入部分和输出部分;所述输入部分包括:所述待上链交易所在链表中的上一个节点的上一交易数据信息,以及所述上一个节点对应的交易后的剩余资产、所述上一个节点对应的交易的哈希值;所述上一交易数据信息包括:所述上一个节点对应的交易的历史处理数据,签名脚本,以及所述验证脚本;所述输出部分包括:当前交易数据信息以及当前交易后的剩余资产;所述当前交易数据信息包括:所述待处理数据,所述签名脚本,以及所述验证脚本。
在其中一个实施例中,待上链交易组装模块1020包括以下单元:
待处理数据确定单元,用于确定所述待处理数据包括引用信息和待处理实际数据,所述引用信息为所述待上链交易所在链表中的下一个节点的实际数据的数据标识。
首节点交易确定单元,用于在所述待处理数据对应的交易的节点为所述链表的首节点时,确定所述输入部分包括:用户资产;所述输出部分中的所述待处理数据的引用信息为预设值,以及待处理实际数据为预设数据。
相对位置确定单元,用于在所述基于预先设置的验证脚本组装所述待处理数据,获得待上链交易之前,在所述待处理数据对应的交易的节点不为所述链表的首节点时,确定所述待处理数据对应的交易的节点处于所述链表的相对位置。
插入链中位置交易确定单元,用于在所述待处理数据对应的交易的节点在所述链表的相对位置为链中位置时,确定所述待上链交易包括至少一个输入部分和至少一个输出部分;所述输入部分包括:所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分,所述上一输出部分中的引用信息为所述待上链交易所在链表中的下一个节点的下一交易对应的下一输出部分中的数据标识;以及所述下一输出部分;所述输出部分包括:所述上一输出部分,所述上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;当前交易对应的当前输出部分,所述当前输出部分中的引用信息为所述下一输出部分中的数据标识;以及所述下一输出部分;所述上一输出部分包括:所述待上链交易所在链表中的上一个节点的上一交易数据信息,以及所述上一个节点对应的交易后的剩余资产、所述上一个节点对应的交易的哈希值;所述上一交易数据信息包括:所述上一个节点对应的交易的历史处理数据,签名脚本,以及所述验证脚本;所述下一输出部分包括:所述待上链交易所在链表中的下一个节点的下一交易的数据信息,以及所述下一个节点对应的交易后的剩余资产;所述下一交易数据信息包括:所述下一个节点对应的交易的历史处理数据,所述签名脚本,以及所述验证脚本;所述当前输出部分包括:当前交易数据信息以及当前交易后的剩余资产;所述当前交易数据信息包括:所述待处理数据,所述签名脚本,以及所述验证脚本。
插入链尾位置交易确定单元,用于在所述待处理数据对应的交易的节点在所述链表的相对位置为链尾位置时,确定所述待上链交易包括输入部分和至少一个输出部分;所述输入部分包括:所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;所述输出部分包括:所述上一输出部分,所述上一输出部分中的引用信息为所述当前输出部分中的数据标识;以及当前交易对应的当前输出部分。
待删除数据交易确定单元,用于在所述待处理数据为待删除数据时,确定所述待上链交易包括至少一个输入部分和输出部分;所述输入部分包括:所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分,所述上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;以及所述当前交易对应的所述当前输出部分;所述输出部分包括:所述上一输出部分,所述上一输出部分中的引用信息为所述当前输出部分中的数据标识。
在其中一个实施例中,如图11所示,提供了一种基于区块链的数据组织装置,包括:待上链交易获取模块1110、验证流程确定模块1120和数据存储模块1130,其中:
待上链交易获取模块1110,用于获取待上链交易。
验证流程确定模块1120,用于基于发布的验证脚本,确定所述待上链交易中的验证脚本的数量,基于所述验证脚本的数量确定所述待上链交易对应的验证流程;
数据存储模块1130,用于根据所述验证流程对所述待上链交易进行验证,并在验证通过时,存储所述待上链交易对应的数据。
在其中一个实施例中,验证流程确定模块1120包括以下单元:
链表首节点验证流程确定单元,用于当所述待上链交易的输入部分中不存在所述验证脚本,且所述待上链交易的输出部分中存在一个所述验证脚本时,确定所述待上链交易对应的验证流程为链表首节点验证流程。
插入链中验证流程确定单元,用于当所述待上链交易的输入部分中存在第一数量的所述验证脚本,当所述待上链交易的输出部分中存在第二数量的所述验证脚本,在所述第一数量与所述第二数量之间满足预设数量关系,且所述第一数量为第一预设值时,确定所述待上链交易对应的验证流程为插入链中验证流程。
插入链尾验证流程确定单元,用于当所述待上链交易的输入部分中存在第一数量的所述验证脚本,当所述待上链交易的输出部分中存在第二数量的所述验证脚本,在所述第一数量与所述第二数量之间满足所述预设数量关系,且所述第一数量为第二预设值时,确定所述待上链交易对应的验证流程为插入链尾验证流程。
删除验证流程确定单元,用于当所述待上链交易的输入部分中存在第一数量的所述验证脚本,当所述待上链交易的输出部分中存在第二数量的所述验证脚本,且所述第一数量为所述第二预设值,且所述第二数量为所述第一预设值时,确定所述待上链交易对应的验证流程为删除验证流程。
在其中一个实施例中,链表首节点验证流程确定单元包括以下单元:
链表首节点验证单元,用于在所述验证流程为链表首节点验证流程时,验证在所述待上链交易的输出部分中的待处理数据中的引用信息是否为预设值,以及待处理实际数据是否为预设数据;当在所述待上链交易的输出部分中的待处理数据中的引用信息为所述预设值,且待处理实际数据为所述预设数据时,确定所述待上链交易验证通过。
在其中一个实施例中,插入链中验证流程确定单元包括以下单元:
插入链中验证单元,用于在所述验证流程为插入链中验证流程时,验证所述待上链交易的输入部分中,是否包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;所述上一输出部分中的引用信息是否为所述待上链交易所在链表中的下一个节点的下一交易对应的下一输出部分中的数据标识;是否包括所述下一输出部分;验证所述待上链交易的输出部分中,是否包括所述上一输出部分;所述上一输出部分中的引用信息是否为当前交易对应的当前输出部分中的数据标识;是否包括当前交易对应的当前输出部分;所述当前输出部分中的引用信息是否为所述下一输出部分中的数据标识;是否包括所述下一输出部分;所述上一输出部分、所述当前输出部分以及所述下一输出部分中的数据是否有序;当所述待上链交易的输入部分中,包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;且所述上一输出部分中的引用信息为所述待上链交易所在链表中的下一个节点的下一交易对应的下一输出部分中的数据标识;包括所述下一输出部分;在所述待上链交易的输出部分中,包括所述上一输出部分;且所述上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;且包括当前交易对应的当前输出部分;且所述当前输出部分中的引用信息为所述下一输出部分中的数据标识;且包括所述下一输出部分;且所述上一输出部分、所述当前输出部分以及所述下一输出部分中的数据有序时,确定所述待上链交易验证通过。
在其中一个实施例中,插入链尾验证流程确定单元包括以下单元:
插入链尾验证单元,用于在所述验证流程为插入链尾验证流程时,验证所述待上链交易的输入部分中,是否包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;验证所述待上链交易的输出部分中,是否包括所述上一输出部分;所述上一输出部分中的引用信息是否为所述当前输出部分中的数据标识;是否包括当前交易对应的当前输出部分;所述上一输出部分、所述当前输出部分中的数据是否有序;当所述待上链交易的输入部分中,包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;且所述待上链交易的输出部分中,包括所述上一输出部分;且所述上一输出部分中的引用信息为所述当前输出部分中的数据标识;且包括当前交易对应的当前输出部分;且所述上一输出部分、所述当前输出部分中的数据有序时,确定所述待上链交易验证通过。
在其中一个实施例中,删除验证流程确定单元包括以下单元:
删除验证单元,用于在所述验证流程为删除验证流程时,验证所述待上链交易的输入部分中,是否包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;所述上一输出部分中的引用信息是否为当前交易对应的当前输出部分中的数据标识;是否包括所述当前交易对应的所述当前输出部分;验证所述待上链交易的输出部分中,是否包括所述上一输出部分;所述上一输出部分中的引用信息是否为所述当前输出部分中的数据标识;当所述待上链交易的输入部分中,包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;且所述上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;且包括所述当前交易对应的所述当前输出部分;且所述待上链交易的输出部分中,包括所述上一输出部分;且所述上一输出部分中的引用信息为所述当前输出部分中的数据标识时,确定所述待上链交易验证通过。
关于基于区块链的数据组织装置的具体限定可以参见上文中对于基于区块链的数据组织方法的限定,在此不再赘述。上述基于区块链的数据组织装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在其中一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图12所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储基于区块链的数据组织数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于区块链的数据组织方法。
在其中一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种基于区块链的数据组织方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图12-图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在其中一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现如上所述的基于区块链的数据组织方法的步骤。
在其中一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上所述的基于区块链的数据组织方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于区块链的数据组织方法,其特征在于,所述方法包括:
获取待处理数据;
基于预先设置的验证脚本组装所述待处理数据,获得待上链交易;所述待上链交易包括输入部分和输出部分;
所述输入部分包括:所述待上链交易所在链表中的上一个节点的上一交易数据信息,以及所述上一个节点对应的交易后的剩余资产、所述上一个节点对应的交易的哈希值;所述上一交易数据信息包括:所述上一个节点对应的交易的历史处理数据,签名脚本,以及所述验证脚本;
所述输出部分包括:当前交易数据信息以及当前交易后的剩余资产;所述当前交易数据信息包括:所述待处理数据,所述签名脚本,以及所述验证脚本;
在所述待处理数据对应的交易的节点为所述链表的首节点时,所述输入部分包括:用户资产;所述输出部分中的所述待处理数据的引用信息为预设值,以及待处理实际数据为预设数据;
在所述待处理数据对应的交易的节点在所述链表的相对位置为链中位置时,所述待上链交易包括至少一个输入部分和至少一个输出部分;
所述输入部分包括:所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分,所述上一输出部分中的引用信息为所述待上链交易所在链表中的下一个节点的下一交易对应的下一输出部分中的数据标识;以及所述下一输出部分;
所述输出部分包括:所述上一输出部分,所述上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;当前交易对应的当前输出部分,所述当前输出部分中的引用信息为所述下一输出部分中的数据标识;以及所述下一输出部分;
所述上一输出部分包括:所述待上链交易所在链表中的上一个节点的上一交易数据信息,以及所述上一个节点对应的交易后的剩余资产、所述上一个节点对应的交易的哈希值;所述上一交易数据信息包括:所述上一个节点对应的交易的历史处理数据,签名脚本,以及所述验证脚本;
所述下一输出部分包括:所述待上链交易所在链表中的下一个节点的下一交易的数据信息,以及所述下一个节点对应的交易后的剩余资产;所述下一交易数据信息包括:所述下一个节点对应的交易的历史处理数据,所述签名脚本,以及所述验证脚本;
所述当前输出部分包括:当前交易数据信息以及当前交易后的剩余资产;所述当前交易数据信息包括:所述待处理数据,所述签名脚本,以及所述验证脚本;
在所述待处理数据对应的交易的节点在所述链表的相对位置为链尾位置时,所述待上链交易包括输入部分和至少一个输出部分;
所述输入部分包括:所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;
所述输出部分包括:所述上一输出部分,所述上一输出部分中的引用信息为所述当前输出部分中的数据标识;以及当前交易对应的当前输出部分。
2.根据权利要求1所述的方法,其特征在于,所述待处理数据包括引用信息和待处理实际数据,所述引用信息为所述待上链交易所在链表中的下一个节点的实际数据的数据标识。
3.根据权利要求1所述的方法,其特征在于,在所述基于预先设置的验证脚本组装所述待处理数据,获得待上链交易之前,还包括:
在所述待处理数据对应的交易的节点不为所述链表的首节点时,确定所述待处理数据对应的交易的节点处于所述链表的相对位置。
4.根据权利要求1所述的方法,其特征在于,在所述待处理数据为待删除数据时,所述待上链交易包括至少一个输入部分和输出部分;
所述输入部分包括:所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分,所述上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;以及所述当前交易对应的所述当前输出部分;
所述输出部分包括:所述上一输出部分,所述上一输出部分中的引用信息为所述当前输出部分中的数据标识。
5.一种基于区块链的数据组织方法,其特征在于,所述方法包括:
获取待上链交易,所述待上链交易包括输入部分和输出部分;所述输入部分包括:所述待上链交易所在链表中的上一个节点的上一交易数据信息,以及所述上一个节点对应的交易后的剩余资产、所述上一个节点对应的交易的哈希值;所述上一交易数据信息包括:所述上一个节点对应的交易的历史处理数据,签名脚本,以及验证脚本;所述输出部分包括:当前交易数据信息以及当前交易后的剩余资产;所述当前交易数据信息包括:待处理数据,所述签名脚本,以及所述验证脚本;
基于发布的所述验证脚本,确定所述待上链交易中的所述验证脚本的数量,基于所述验证脚本的数量确定所述待上链交易对应的验证流程;
根据所述验证流程对所述待上链交易进行验证,并在验证通过时,存储所述待上链交易对应的数据;
所述基于所述验证脚本的数量确定所述待上链交易对应的验证流程,包括:
当所述待上链交易的输入部分中不存在所述验证脚本,且所述待上链交易的输出部分中存在一个所述验证脚本时,确定所述待上链交易对应的验证流程为链表首节点验证流程;
当所述待上链交易的输入部分中存在第一数量的所述验证脚本,当所述待上链交易的输出部分中存在第二数量的所述验证脚本,在所述第一数量与所述第二数量之间满足预设数量关系,且所述第一数量为第一预设值时,确定所述待上链交易对应的验证流程为插入链中验证流程;
当所述待上链交易的输入部分中存在第一数量的所述验证脚本,当所述待上链交易的输出部分中存在第二数量的所述验证脚本,在所述第一数量与所述第二数量之间满足所述预设数量关系,且所述第一数量为第二预设值时,确定所述待上链交易对应的验证流程为插入链尾验证流程。
6.根据权利要求5所述的方法,其特征在于,所述基于所述验证脚本的数量确定所述待上链交易对应的验证流程,还包括:
当所述待上链交易的输入部分中存在第一数量的所述验证脚本,当所述待上链交易的输出部分中存在第二数量的所述验证脚本,且所述第一数量为所述第二预设值,且所述第二数量为所述第一预设值时,确定所述待上链交易对应的验证流程为删除验证流程。
7.根据权利要求5所述的方法,其特征在于,所述根据所述验证流程对所述待上链交易进行验证,包括:
在所述验证流程为链表首节点验证流程时,验证在所述待上链交易的输出部分中的待处理数据中的引用信息是否为预设值,以及待处理实际数据是否为预设数据;
当在所述待上链交易的输出部分中的待处理数据中的引用信息为所述预设值,且待处理实际数据为所述预设数据时,确定所述待上链交易验证通过。
8.根据权利要求5所述的方法,其特征在于,所述根据所述验证流程对所述待上链交易进行验证,包括:
在所述验证流程为插入链中验证流程时,验证所述待上链交易的输入部分中,是否包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;所述上一输出部分中的引用信息是否为所述待上链交易所在链表中的下一个节点的下一交易对应的下一输出部分中的数据标识;是否包括所述下一输出部分;验证所述待上链交易的输出部分中,是否包括所述上一输出部分;所述上一输出部分中的引用信息是否为当前交易对应的当前输出部分中的数据标识;是否包括当前交易对应的当前输出部分;所述当前输出部分中的引用信息是否为所述下一输出部分中的数据标识;是否包括所述下一输出部分;所述上一输出部分、所述当前输出部分以及所述下一输出部分中的数据是否有序;
当所述待上链交易的输入部分中,包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;且所述上一输出部分中的引用信息为所述待上链交易所在链表中的下一个节点的下一交易对应的下一输出部分中的数据标识;包括所述下一输出部分;在所述待上链交易的输出部分中,包括所述上一输出部分;且所述上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;且包括当前交易对应的当前输出部分;且所述当前输出部分中的引用信息为所述下一输出部分中的数据标识;且包括所述下一输出部分;且所述上一输出部分、所述当前输出部分以及所述下一输出部分中的数据有序时,确定所述待上链交易验证通过。
9.根据权利要求5所述的方法,其特征在于,所述根据所述验证流程对所述待上链交易进行验证,包括:
在所述验证流程为插入链尾验证流程时,验证所述待上链交易的输入部分中,是否包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;验证所述待上链交易的输出部分中,是否包括所述上一输出部分;所述上一输出部分中的引用信息是否为所述当前输出部分中的数据标识;是否包括当前交易对应的当前输出部分;所述上一输出部分、所述当前输出部分中的数据是否有序;
当所述待上链交易的输入部分中,包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;且所述待上链交易的输出部分中,包括所述上一输出部分;且所述上一输出部分中的引用信息为所述当前输出部分中的数据标识;且包括当前交易对应的当前输出部分;且所述上一输出部分、所述当前输出部分中的数据有序时,确定所述待上链交易验证通过。
10.根据权利要求6所述的方法,其特征在于,所述根据所述验证流程对所述待上链交易进行验证,还包括:
在所述验证流程为删除验证流程时,验证所述待上链交易的输入部分中,是否包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;所述上一输出部分中的引用信息是否为当前交易对应的当前输出部分中的数据标识;是否包括所述当前交易对应的所述当前输出部分;验证所述待上链交易的输出部分中,是否包括所述上一输出部分;所述上一输出部分中的引用信息是否为所述当前输出部分中的数据标识;
当所述待上链交易的输入部分中,包括所述待上链交易所在链表中的上一个节点的上一交易对应的上一输出部分;且所述上一输出部分中的引用信息为当前交易对应的当前输出部分中的数据标识;且包括所述当前交易对应的所述当前输出部分;且所述待上链交易的输出部分中,包括所述上一输出部分;且所述上一输出部分中的引用信息为所述当前输出部分中的数据标识时,确定所述待上链交易验证通过。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110522931.8A CN113112270B (zh) | 2021-05-13 | 2021-05-13 | 基于区块链的数据组织方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110522931.8A CN113112270B (zh) | 2021-05-13 | 2021-05-13 | 基于区块链的数据组织方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113112270A CN113112270A (zh) | 2021-07-13 |
CN113112270B true CN113112270B (zh) | 2021-12-14 |
Family
ID=76722462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110522931.8A Active CN113112270B (zh) | 2021-05-13 | 2021-05-13 | 基于区块链的数据组织方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113112270B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114862589B (zh) * | 2022-07-07 | 2022-09-09 | 中国长江三峡集团有限公司 | 一种基于区块链的交易数据处理方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107392608A (zh) * | 2017-07-11 | 2017-11-24 | 北京博晨技术有限公司 | 基于区块链系统的数字资产交易方法及区块链系统 |
CN108615156A (zh) * | 2018-05-09 | 2018-10-02 | 上海魅联信息技术有限公司 | 一种基于区块链的数据结构 |
CN108964924A (zh) * | 2018-07-24 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 数字证书校验方法、装置、计算机设备和存储介质 |
CN109472696A (zh) * | 2018-09-29 | 2019-03-15 | 腾讯科技(深圳)有限公司 | 资产交易方法、装置、存储介质及计算机设备 |
CN110335149A (zh) * | 2019-06-19 | 2019-10-15 | 华中科技大学 | 一种基于区块链的资产确权交易实现方法及系统 |
-
2021
- 2021-05-13 CN CN202110522931.8A patent/CN113112270B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107392608A (zh) * | 2017-07-11 | 2017-11-24 | 北京博晨技术有限公司 | 基于区块链系统的数字资产交易方法及区块链系统 |
CN108615156A (zh) * | 2018-05-09 | 2018-10-02 | 上海魅联信息技术有限公司 | 一种基于区块链的数据结构 |
CN108964924A (zh) * | 2018-07-24 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 数字证书校验方法、装置、计算机设备和存储介质 |
CN109472696A (zh) * | 2018-09-29 | 2019-03-15 | 腾讯科技(深圳)有限公司 | 资产交易方法、装置、存储介质及计算机设备 |
CN110335149A (zh) * | 2019-06-19 | 2019-10-15 | 华中科技大学 | 一种基于区块链的资产确权交易实现方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113112270A (zh) | 2021-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096857B (zh) | 区块链系统的权限管理方法、装置、设备和介质 | |
CN109308285A (zh) | 数据库脚本管理方法、装置、计算机设备及存储介质 | |
CN111095338A (zh) | 用于执行不同类型区块链合约的系统和方法 | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
CN110944046B (zh) | 一种共识机制的控制方法及相关设备 | |
CN112631924A (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
CN113112270B (zh) | 基于区块链的数据组织方法 | |
CN112052141B (zh) | 数据分片校验方法、装置、计算机设备及可读存储介质 | |
CN115409507A (zh) | 区块处理方法、区块处理装置、计算机设备及存储介质 | |
CN112561690A (zh) | 信用卡分期业务接口的测试方法、系统、设备及存储介质 | |
CN114710297B (zh) | 基于聚合签名的区块链存证方法、装置、设备及存储介质 | |
CN111177099A (zh) | 业务系统的数据处理方法及装置、电子设备及存储介质 | |
CN113779132A (zh) | 一种数据导入的方法、装置、计算机设备和存储介质 | |
CN111460436A (zh) | 一种基于区块链的非结构化数据操作方法和系统 | |
CN111949738A (zh) | 基于区块链的数据存储去重方法、终端设备和存储介质 | |
CN114363363B (zh) | 基于多链的数据存储方法、装置、设备及介质 | |
CN113806372B (zh) | 新数据信息构建方法、装置、计算机设备及存储介质 | |
Hares et al. | Object orientation: technology, techniques, management and migration | |
CN112541756B (zh) | 区块链合约升级方法、装置、计算机设备及可读存储介质 | |
CN113886245A (zh) | 基于人工智能的系统验收方法、装置、计算机设备和介质 | |
CN113568682A (zh) | 规则数据校验方法、装置、计算机设备和存储介质 | |
CN114172657A (zh) | 资源转移方法、装置、设备、存储介质和计算机程序产品 | |
CN114579464A (zh) | 基于切面编程的动态信息校验方法、装置和计算机设备 | |
CN113987518A (zh) | 可信计算的方法和装置 | |
CN115687074A (zh) | 业务系统测试方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |