CN115237997A - 区块链数据管理方法及装置 - Google Patents
区块链数据管理方法及装置 Download PDFInfo
- Publication number
- CN115237997A CN115237997A CN202110442409.9A CN202110442409A CN115237997A CN 115237997 A CN115237997 A CN 115237997A CN 202110442409 A CN202110442409 A CN 202110442409A CN 115237997 A CN115237997 A CN 115237997A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- address
- association
- pointer
- 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.)
- Pending
Links
- 238000013523 data management Methods 0.000 title claims abstract description 130
- 238000000034 method Methods 0.000 title claims abstract description 86
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 238000007726 management method Methods 0.000 abstract description 2
- 230000008859 change Effects 0.000 description 43
- 238000010586 diagram Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 9
- 230000009286 beneficial effect Effects 0.000 description 8
- 238000012795 verification Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 241000122205 Chamaeleonidae Species 0.000 description 4
- 238000011022 operating instruction Methods 0.000 description 4
- 239000012530 fluid Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
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)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种区块链数据管理方法及装置,该方法包括:根据第一数据在区块链中的存储位置,在区块链中获取到第一数据的关联信息,进而得到第二数据在区块链中的存储位置并获取第二数据。这里,第二数据是第一数据发生变化后得到的数据,也可以是发生变化后得到第一数据的数据。由此,可以根据第一数据的关联信息实现对第一数据的追踪和追溯,从而提高区块链管理效率。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链数据管理方法及装置。
背景技术
在区块链技术领域中,数据以区块(block)为单位产生和存储,并按照时间顺序连成链式(chain)数据结构。通常,区块被用来记录发生的交易,区块与区块之间通过哈希算法进行链接。现有技术中,在对区块链中的数据进行查询时,需要基于应用层提供的具体的区块哈希或交易哈希对某一区块或交易进行查询,进而得到对应的交易数据,这种数据查询的方式是点对点的,得到的结果也是相对孤立的。然而,在诸如数字钱包、网站证书等直接面向客户的上层业务中,往往需要追踪到数据的最新状态或者追溯数据的历史状态,而当前区块链的数据查询模式并不能满足这样的数据查询需求。
发明内容
本申请提供了一种区块链数据管理方法及装置,可实现对区块链数据进行追踪和追溯,提高区块链管理效率。
第一方面,本申请提供了一种区块链数据管理方法,该方法包括:区块链节点确定第二区块中携带的第二数据的关联信息,这里,第二数据为第一数据发生变化后得到的数据(如区块数据,单个交易数据,或属于同一区块的多个交易数据等数据)。区块链节点基于第二数据的关联信息确定第一数据所属的第一地址,并通过第一地址确定第一区块。区块链节点基于第二地址在第一区块中更新第一数据的关联信息以建立第一数据和第二数据之间的关联,其中,第二地址为第二数据在区块链中所属的地址。这里,第二数据的关联信息是用于标识第二数据和第一数据存在关联的信息。区块链节点基于第二数据的关联信息确定第一数据所属的第一地址,并通过第一地址查找得到第一区块。区块链节点基于第二地址在第一区块中更新第一数据的关联信息以建立第一数据和第二数据之间的关联。
在本申请提供的实施方式中,第二数据是第一数据发生变化之后得到的数据,第二数据被存储在区块链的第二区块中,区块链节点可以根据第二区块中第二数据的关联信息确定第一数据在区块链中的第一地址,由第一地址查找到第一区块,并修改第一区块中第一数据的关联信息,进而在第一区块中标识第二数据的第二地址(也即,第二数据在区块链中的存储位置)。由此,区块链节点可以在第一区块中存储第一数据发生变化后得到的第二数据的地址,进而实现数据的追踪。
结合第一方面,在第一种可能的实施方式中,关联信息包括后向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的地址。上述基于第二地址在第一区块中更新第一数据的关联信息包括:更新第一区块中第一数据的关联信息中的第一后向关联指针为指向第二地址。这里,区块链节点可以在第一区块中将第一数据的后向关联指针进行修改为指向第二地址,通过改变指针在区块链中标识数据之间的关联,进而更简单地实现数据的追踪。
结合第一方面,在第二种可能的实施方式中,第一数据为第一交易数据,地址包括区块中的交易地址,也就是说,第一地址包括第一区块中的第一交易地址、第二地址包括第二区块中的第二交易地址,关联信息包括后向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的交易地址。上述通过第一地址查找得到第一区块包括:通过第一区块中的第一交易地址查找得到第一区块。上述基于第二地址在第一区块中更新第一数据的关联信息包括:在第一区块中确定第一交易数据的第一后向关联指针,更新第一交易数据的关联信息中的第一后向关联指针为指向第二区块中的第二交易地址。也就是说,当数据是交易数据时,数据所属的地址不仅标识交易数据所属的区块,还会标识交易数据所属的交易地址,区块链节点可以更直接地根据第一交易数据的关联信息,定位到第二交易数据所属的第二地址(也即,第二交易数据在区块链中的存储位置),便于更直接地实现数据追踪。
结合第一方面第一种可能的实施方式或者第一方面第二种可能的实施方式,在第三种可能的实施方式中,第二数据的关联信息中包括第二后向关联指针和第二前向关联指针,第二后向关联指针为空,第二前向关联指针指向第一地址。上述在区块链节点确定第二区块中携带的第二数据的关联信息之后,该方法还包括:当区块链节点根据第三区块携带的第三数据的关联信息确定第三数据的关联信息中的前向关联指针指向第二地址时,更新第二区块中第二数据的关联信息中的第二后向关联指针为指向第三地址,以建立第二数据与第三数据的关联,这里,第三地址为第三数据在区块链中所属的地址。这里,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的交易地址。换言之,在区块链节点更新第二数据的后向关联指针之前,第二数据的后向关联指针为空,表示区块链中不存在由第二数据发生变化得到的数据。当区块链节点通过第三数据的前向关联指针确定第三数据是第二数据发生变化后得到的数据时,则可以更新第二数据的后向关联指针指向第三地址,进而标识第二数据发生变化后的第三数据被存储在区块链的第三地址中,实现数据的追踪。
结合第一方面第二种可能的实施方式,在第四种可能的实施方式中,上述基于第二地址在第一区块中更新第一数据的关联信息之后,该方法还包括:根据第一交易数据和更新后的第一交易数据的关联信息生成第一替换交易,根据第一替换交易更新第一区块,以得到更新后的第一区块。这种实施方式可以在区块链为可编辑区块链时,利用更新后的第一交易数据的关联信息生成第一替换交易,并根据第一替换交易更新第一区块,进而利用更新后的第一区块替换更新前的第一区块,在实现数据追踪的基础上,保证区块链的完整性与安全性。
结合第一方面第四种可能的实施方式,在第五种可能的实施方式中,上述根据第一区块和第一替换交易更新第一区块包括:根据第一替换交易得到第一替换交易的哈希值,根据第一替换交易的哈希值更新第一区块中的哈希树,以得到更新后的第一区块的哈希树。这里,区块的哈希树是用于存储区块中各交易数据的哈希值的一个树状存储结构,第一区块的哈希树用于存储第一区块中各交易数据的哈希值。在第一交易数据被替换为第一替换交易后,区块中的哈希树中与第一交易数据有关的哈希值也会相应地发生改变。区块链节点可以根据更新后的第一区块的哈希树确定更新后的第一区块的哈希树的根节点值,进而根据更新后的第一区块的哈希树的根节点值更新第一区块的随机数和时间戳,以使得更新后的第一区块的哈希值等于第一区块的哈希值并得到更新后的第一区块。其中,任一区块的哈希值由任一区块的根节点值、随机数和时间戳计算得到。这里,为了保证区块链的完整性,区块链节点需要更新第一区块的随机数和时间戳,使得更新后的第一区块的哈希值与第一区块的哈希值相等,也就是说,更新后的第一区块的哈希值与区块链中在第一区块之后存储的区块中记录的哈希值保持一致,保持了区块链的完整性,同时提高了区块链的安全性。
第二方面,本申请提供了一种区块链数据管理方法,该方法包括:当接收到第一数据(如区块数据,单个交易数据,或属于同一区块的多个交易数据等数据)所属的第一地址以及由第一数据变化得到的第二数据时,记账区块链节点根据第一地址生成第二数据的关联信息。这里,第二数据的关联信息用于建立第二数据和第一数据之间的关联。记账区块链节点根据第二数据的关联信息和第二数据生成第二区块并将第二区块存储至区块链。
在本申请提供的实施方式中,记账区块链节点可以在接收到第二数据时,确定第二数据是第一数据发生变化之后得到的数据,从而将第一数据的第一地址(也即,第一数据在区块链中的存储位置)作为第二数据的关联信息,并将第二数据的关联信息和第二数据存储在区块链的第二区块中。由此,记账区块链节点可以在第二区块中标记第二数据是第一数据发生变化后得到的数据,并通过第二数据的关联信息中的第一地址查找到第一数据,进而实现数据的溯源。
结合第二方面,在第一种可能的实施方式中,关联信息包括后向关联指针和前向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的地址,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的地址。上述根据第一地址生成第二数据的关联信息包括:生成第二数据的关联信息中的前向关联指针为指向第一地址,并将第二数据的关联信息中的后向关联指针的指向设置为空。这里,记账区块链节点可以将第二数据的前向关联指针设置为指向第一地址,进而表明第二数据是由第一地址存储的数据(也即,第一数据)发生变化得到的数据,由此通过指针指示数据之间的关联,进而更简单地实现数据的溯源。同时,记账区块链节点可以在第二区块中将第二数据的后向关联指针设置为空,以表示此时区块链中并没有存储第二数据发生变化后得到的数据。
结合第二方面第一种可能的实施方式,在第二种可能的实施方式中,数据为交易数据,第一地址包括第一区块中的第一交易地址、第二地址包括第二区块中的第二交易地址。上述生成第二数据的关联信息中的前向关联指针为指向第一地址包括:生成第二交易数据的关联信息中的前向关联指针为指向第一区块中的第一交易地址。也就是说,当数据是交易数据时,数据所属的地址不仅标识交易数据所属的区块,还会标识到交易数据所属的交易地址,记账区块链节点可以更直接地根据第二交易数据的关联信息,定位到第一交易数据所属的第一地址(也即,第一交易数据在区块链中的存储位置),便于更直接地实现数据的溯源。
第三方面,本申请提供了一种区块链数据管理方法,该方法包括:客户端根据第一地址在区块链中查找得到第一数据的关联信息,这里,第一地址为第一数据在区块链中所属的地址。客户端根据第一数据的关联信息确定第一数据的关联数据的地址,并根据第一数据的关联数据的地址获取第一数据的关联数据。这里,第一数据的关联数据的地址为第一数据的关联数据在区块链中所属的地址,第一数据的关联数据为第一数据发生变化后得到的数据,和/或发生变化后得到第一数据的数据。
在本申请提供的实施方式中,客户端可以根据第一数据的地址(也即,第一数据在区块链中的存储位置)在获取第一数据的同时获取到第一数据的关联信息,进而得到第一数据的关联数据的地址并获取第一数据的关联数据。换句话说,客户端可以通过第一数据的关联信息确定第一数据是由区块链中存储的某个数据(第一数据的关联数据)发生变化得到的,也可以确定第一数据发生变化后得到的数据在区块链中的存储位置。由此,客户端可以根据第一数据的关联信息实现对第一数据向前追溯(也即,获取到发生变化后得到第一数据的数据)或者向后追踪(也即,获取到第一数据的关联数据为第一数据发生变化后得到的数据)。
结合第三方面,在第一种可能的实施方式中,关联信息包括后向关联指针和前向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据在区块链中所属的地址,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据在区块链中所属的地址。上述在根据第一数据的后向关联指针标识的地址获取第一数据的关联数据之后,该方法还包括:根据第一数据的后向关联指针标识的地址查找到第四数据,并确定第四数据的前向关联指针。根据第四数据的前向关联指针标识的地址对第一数据的后向关联指针进行验证。在这种实施方式中,客户端可以通过第一数据的后向关联指针指向的地址得到第一数据的关联数据(也即,第四数据),并根据第四数据的前向关联指针对第一数据的后向关联指针进行验证,进而保证数据的安全性。
结合第三方面第一种可能的实施方式,在第二种可能的实施方式中,上述根据第四数据的前向关联指针标识的地址对第一数据的后向关联指针进行验证包括:若第四数据的前向关联指针标识的地址中包括第一地址,则确定第一数据的后向关联指针通过验证;若第四数据的前向关联指针标识的地址中不包括第一地址,则确定第一数据的后向关联指针未通过验证。在这种实施方式中,客户端可以直接通过判断第四数据前向关联指针标识的地址中是否包括第一地址,进而对第一数据的后向关联指针进行验证,使得验证过程更简便直观。
第四方面,本申请提供了一种区块链数据管理装置,该装置包括:信息接收模块,用于确定第二区块中携带的第二数据(如区块数据,单个交易数据,或属于同一区块的多个交易数据等数据)的关联信息以及第二数据所属的第二地址。其中,第二数据为第一数据发生变化后得到的数据,第二数据的关联信息是用于标识第二数据和第一数据存在关联的信息。关联更新模块,用于基于第二数据的关联信息确定第一数据所属的第一地址,并通过第一地址查找得到第一区块,基于第二地址在第一区块中更新第一数据的关联信息以建立第一数据和第二数据之间的关联。
在本申请提供的实施方式中,第二数据是第一数据发生变化之后得到的数据,第二数据被存储在区块链的第二区块中,信息接收模块可以根据第二区块中第二数据的关联信息确定第一数据在区块链中的第一地址。关联更新模块可以由第一地址查找到第一区块,并修改第一区块中第一数据的关联信息,进而在第一区块中标识第二数据的第二地址(也即,第二数据在区块链中的存储位置)。由此,区块链节点可以在第一区块中存储第一数据发生变化后得到的第二数据的地址,进而实现数据的追踪。
结合第四方面,在第一种可能的实施方式中,关联信息包括后向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的地址。上述关联更新模块还用于:更新第一区块中第一数据的关联信息中的第一后向关联指针为指向第二地址。这里,关联更新模块可以在第一区块中将第一数据的后向关联指针进行修改为指向第二地址,通过改变指针在区块链中标识数据之间的关联,进而更简单地实现数据的追踪。
结合第四方面,在第二种可能的实施方式中,第一数据为第一交易数据,地址包括区块中的交易地址,也就是说,第一地址包括第一区块中的第一交易地址、第二地址包括第二区块中的第二交易地址,关联信息包括后向关联指针。这里,任一交易数据的关联信息中的后向关联指针用于指示任一交易数据发生变化得到的交易数据所属的交易地址。上述关联更新模块还用于:通过第一区块中的第一交易地址查找得到第一区块。上述关联更新模块还用于,在第一区块中确定第一交易数据的第一后向关联指针,更新第一交易数据的关联信息中的第一后向关联指针为指向第二区块中的第二交易地址。也就是说,当数据是交易数据时,数据所属的地址不仅标识交易数据所属的区块,还标识到交易数据所属的交易地址,关联更新模块可以更直接地根据第一交易数据的关联信息,定位到第二交易数据所属的第二地址(也即,第二交易数据在区块链中的存储位置),便于更直接地实现数据追踪。
结合第四方面第一种可能的实施方式或者第四方面第二种可能的实施方式,在第三种可能的实施方式中,第二数据的关联信息中包括第二后向关联指针和第二前向关联指针,第二后向关联指针为空,第二前向关联指针指向第一地址。上述关联更新模块还用于:当区块链节点根据第三区块携带的第三数据的关联信息确定第三数据的关联信息中的前向关联指针指向第二地址时,更新第二区块中第二数据的关联信息中的第二后向关联指针为指向第三地址,以建立第二数据与第三数据的关联。其中,第三地址为第三数据在区块链中所属的地址,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的交易地址。换言之,在区块链节点更新第二数据的后向关联指针之前,第二数据的后向关联指针为空,表示区块链中不存在由第二数据发生变化得到的数据。当区块链节点根据通过第三数据的前向关联指针确定第三数据是第二数据发生变化后得到的数据时,关联更新模块可以更新第二数据的后向关联指针指向第三地址,进而标识第二数据发生变化后的第三数据被存储在区块链的第三地址中,实现数据的追踪。
结合第四方面第二种可能的实施方式,在第四种可能的实施方式中,上述关联更新模块还用于:根据第一交易数据和更新后的第一交易数据的关联信息生成第一替换交易,根据第一替换交易更新第一区块,以得到更新后的第一区块。这种实施方式中,关联更新模块可以在区块链为可编辑区块链时,利用更新后的第一交易数据的关联信息生成第一替换交易,并根据第一替换交易更新第一区块,进而利用更新后的第一区块替换更新前的第一区块,在实现数据追踪的基础上,保证区块链的完整性与安全性。
结合第四方面第四种可能的实施方式,在第五种可能的实施方式中,上述关联更新模块还用于:根据第一替换交易得到第一替换交易的哈希值,根据第一替换交易的哈希值更新第一区块中的哈希树,以得到更新后的第一区块的哈希树,根据更新后的第一区块的哈希树确定更新后的第一区块的哈希树的根节点值。这里,第一区块的哈希树用于存储区块中各交易数据的哈希值。关联更新模块还用于,根据更新后的第一区块的哈希树的根节点值更新第一区块的随机数和时间戳,以使得更新后的第一区块的哈希值等于第一区块的哈希值并得到更新后的第一区块。其中,任一区块的哈希值由任一区块的根节点值、随机数和时间戳计算得到。这里,为了保证区块链的完整性,关联更新模块需要更新第一区块的随机数和时间戳,使得更新后的第一区块的哈希值与第一区块的哈希值相等。也就是说,更新后的第一区块的哈希值与区块链中在第一区块之后存储的区块中记录的哈希值保持一致,保持了区块链的完整性,同时提高了区块链的安全性。
第五方面,本申请提供了一种区块链数据管理装置,该装置包括:关联数据生成模块,用于当接收到第一数据所属的第一地址以及由第一数据变化得到的第二数据时,记账区块链节点根据第一地址生成第二数据的关联信息。这里,第二数据的关联信息用于建立第二数据和第一数据之间的关联。关联数据存储模块,用于根据第二数据的关联信息和第二数据生成第二区块并将第二区块存储至区块链。
在本申请提供的实施方式中,关联数据生成模块可以在接收到第二数据时,确定第二数据是第一数据发生变化之后得到的数据,从而将第一数据的第一地址(也即,第一数据在区块链中的存储位置)作为第二数据的关联信息。关联数据存储模块可以将第二数据的关联信息和第二数据存储在区块链的第二区块中。由此,关联数据生成模块可以在第二区块中标记第二数据是第一数据发生变化后得到的数据,并通过第二数据的关联信息中的第一地址查找到第一数据,进而实现数据的溯源。
结合第五方面,在第一种可能的实施方式中,关联信息包括后向关联指针和前向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的地址,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的地址。上述关联数据生成模块还用于,生成第二数据的关联信息中的前向关联指针为指向第一地址,并将第二数据的关联信息中的后向关联指针的指向设置为空。这里,关联数据生成模块可以将第二数据的前向关联指针设置为指向第一地址,进而表明第二数据是由第一地址存储的数据(也即,第一数据)发生变化得到的数据,由此通过指针指示数据之间的关联,进而更简单地实现数据的溯源。同时,记账区块链节点可以在第二区块中将第二数据的后向关联指针设置为空(或指向一个为空的地址(null)),以表示此时区块链中并没有存储第二数据发生变化后得到的数据。
结合第五方面第一种可能的实施方式,在第二种可能的实施方式中,数据为交易数据,第一地址包括第一区块中的第一交易地址、第二地址包括第二区块中的第二交易地址。上述关联数据生成模块还用于:生成第二交易数据的关联信息中的前向关联指针为指向第一区块中的第一交易地址。也就是说,当数据是交易数据时,数据所属的地址不仅标识交易数据所属的区块,还会标识到交易数据所属的交易地址,关联数据生成模块可以更直接地根据第二交易数据的关联信息,定位到第一交易数据所属的第一地址(也即,第一交易数据在区块链中的存储位置),便于更直接地实现数据的溯源。
第六方面,本申请提供了一种区块链数据管理装置,该装置包括:信息获取模块,用于根据第一地址在区块链中查找得到第一数据的关联信息。这里,第一地址为第一数据在区块链中所属的地址。数据获取模块,用于根据第一数据的关联信息确定第一数据的关联数据的地址,并根据第一数据的关联数据的地址获取第一数据的关联数据。这里,第一数据的关联数据的地址为第一数据的关联数据在区块链中所属的地址,第一数据的关联数据为第一数据发生变化后得到的数据,和/或发生变化后得到第一数据的数据。
在本申请提供的实施方式中,信息获取模块可以根据第一数据的地址(也即,第一数据在区块链中的存储位置)在获取第一数据的同时获取到第一数据的关联信息,数据获取模块进而得到第一数据的关联数据的地址并获取第一数据的关联数据。换句话说,该装置可以通过第一数据的关联信息确定第一数据是由区块链中存储的某个数据(第一数据的关联数据)发生变化得到的,也可以确定第一数据发生变化后得到的数据在区块链中的存储位置。由此,该装置可以根据第一数据的关联信息实现对第一数据向前追溯(也即,获取到发生变化后得到第一数据的数据)或者向后追踪(也即,获取到第一数据的关联数据为第一数据发生变化后得到的数据)。
结合第六方面,在第一种可能的实施方式中,关联信息包括后向关联指针和前向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据在区块链中所属的地址,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据在区块链中所属的地址。上述数据获取模块还用于,根据第一数据的后向关联指针标识的地址查找到第四数据,并确定第四数据的前向关联指针。数据获取模块还用于,根据第四数据的前向关联指针标识的地址对第一数据的后向关联指针进行验证。在这种实施方式中,数据获取模块可以通过第一数据的后向关联指针指向的地址得到第一数据的关联数据(也即,第四数据),并根据第四数据的前向关联指针对第一数据的后向关联指针进行验证,进而保证数据的安全性。
结合第六方面第一种可能的实施方式,在第二种可能的实施方式中,上述数据获取模块还用于,若第四数据的前向关联指针标识的地址中包括第一地址,则确定第一数据的后向关联指针通过验证。上述数据获取模块还用于,若第四数据的前向关联指针标识的地址中不包括第一地址,则确定第一数据的后向关联指针未通过验证。在这种实施方式中,客户端可以直接通过判断第四数据前向关联指针标识的地址中是否包括第一地址进行,进而对第一数据的后向关联指针进行验证,使得验证过程更简便直观。
第七方面,本申请提供了一种区块链数据管理方法,该方法包括:根据第一地址在区块链中查找第一数据的第一关联信息,这里,第一地址为第一数据在区块链中的地址。这里,第一数据可以是区块数据,单个交易数据,或属于同一区块的多个交易数据等数据。根据第一数据的第一关联信息确定第二数据的第二地址。这里,第二数据是第一数据的关联数据。这里,第一数据的第一关联信息用于表示第一数据发生变化后得到的数据是第二数据。这里,第二地址为第二数据在区块链中的地址。根据第二数据的第二地址查询第二数据。
采用本申请提供的实施方式,可以根据第一数据的地址(也即,第一数据在区块链中的存储位置)在区块链中获取到第一数据的第一关联信息,进而得到第二数据的地址并获取第二数据。换句话说,可以确定第一数据发生变化后得到的数据(也即,第二数据)在区块链中的存储位置。由此,可以根据第一数据的第一关联信息实现对第一数据的向后追踪(也即,获取到第二数据,也即,获取到第一数据发生变化后得到的数据)。
结合第七方面,在第一种可能的实施方式中,上述根据第一地址在区块链中查找第一数据的第一关联信息之前,该方法还包括:确定第二数据的第二关联信息。这里,第二数据为第一数据发生变化后得到的数据(如区块数据,单个交易数据,或属于同一区块的多个交易数据等数据)。基于第二数据的第二关联信息确定第一数据的第一地址。这里,第二数据的第二关联信息用于标识第二数据是第一数据发生变化后得到的数据。通过第一地址确定第一区块;以及利用第二地址在第一区块中更新第一数据的第一关联信息以建立第一数据和第二数据之间的关联。采用本申请提供的实施方式,可以根据第二数据的第二关联信息实现对第二数据的前向追踪,确定第一数据在区块链中的第一地址,由第一地址查找到第一区块,并修改第一区块中第一数据的第一关联信息,进而在第一区块中标识第二数据的第二地址(也即,第二数据在区块链中的存储位置)。可以在第一区块中存储第一数据发生变化后得到的第二数据的地址,进而实现在区块链中表示关联数据之间的关联,进而实现数据的溯源和追踪。
结合第七方面第一种可能的实施方式,在第二种可能的实施方式中,第一关联信息包括第一后向关联指针;上述利用第二地址在第一区块中更新第一数据的第一关联信息包括:将第一数据的关联信息中的第一后向关联指针设置为指向第二数据的第二地址。这里,第一数据的关联信息中的后向关联指针用于指示第一数据发生变化得到的数据所属的地址。采用本申请提供的实施方式,可以将第一数据的后向关联指针设置为指向第二地址,表明第一数据发生变化后得到的数据被存储在第二地址,由此通过指针指示数据之间的关联,进而更简单地实现数据的追踪。
结合第七方面第一种可能的实施方式或第七方面第二种可能的实施方式,在第三种可能的实施方式中,第一关联信息还包括第一前向关联指针,该方法还包括:将第一数据的关联信息中的第一前向关联指针设置为指向空地址。这里,第一数据的关联信息中的第一前向关联指针用于指示发生变化后得到第一数据的数据所属的地址。采用本申请提供的实施方式,可以在第一区块中将第一数据的第一前向关联指针设置为空,以表示此时区块链中并没有存储发生变化后得到第一数据的数据。
结合第七方面第一种可能的实施方式至第七方面第三种可能的实施方式中的任一种,在第四种可能的实施方式中,第二数据的第二关联信息包括第二前向关联指针,第二前向关联指针指向第一数据的第一地址。这里,第二数据的关联信息中的第二前向关联指针用于指示发生变化后得到第二数据的数据所属的地址。采用本申请提供的实施方式,可以将第二数据的第二前向关联指针设置为指向第一地址,进而表明第二数据是由第一地址存储的数据(也即,第一数据)发生变化得到的数据,由此通过指针指示数据之间的关联,进而更简单地实现数据的溯源。
结合第七方面第一种可能的实施方式至第七方面第四种可能的实施方式中的任一种,在第五种可能的实施方式中,第二数据的第二关联信息包括第二后向关联指针,该方法还包括:若存在与第二数据关联的第三数据,则将第二数据的第二后向关联指针设置为指向第三数据的第三地址。这里,第二数据的关联信息中的第二后向关联指针用于指示第二数据发生变化后得到数据(也即,第三数据)所属的地址。采用本申请提供的实施方式,当通过第三数据的前向关联指针确定存在与第二数据关联的第三数据(也即,第三数据是第二数据发生变化后得到的数据)时,可以更新第二数据的后向关联指针指向第三地址,进而标识第二数据发生变化后的第三数据被存储在区块链的第三地址中,实现数据的溯源与追踪。
第八方面,本申请提供了一种区块链数据管理装置,该装置包括:
信息查找模块,可以用于根据第一地址在区块链中查找第一数据的第一关联信息,这里,第一地址为第一数据在区块链中的地址。这里,第一数据可以是区块数据,单个交易数据,或属于同一区块的多个交易数据等数据。根据第一数据的第一关联信息确定第二数据的第二地址。这里,第二数据是第一数据的关联数据。
地址确定模块,可以用于根据第一数据的第一关联信息确定第二数据的第二地址。这里,第二数据是第一数据的关联数据。这里,第二地址为第二数据在区块链中的地址。可以理解的是,第一数据的第一关联信息用于表示第一数据发生变化后得到的数据是第二数据。
数据查询模块,可以用于根据第二数据的第二地址查询第二数据。
在本申请提供的实施方式中,区块链数据管理装置可以根据第一数据的地址(也即,第一数据在区块链中的存储位置)在区块链中获取到第一数据的第一关联信息,进而得到第二数据的地址并获取第二数据。换句话说,区块链数据管理装置可以确定第一数据发生变化后得到的数据(也即,第二数据)在区块链中的存储位置。由此,区块链数据管理装置可以根据第一数据的第一关联信息实现对第一数据的向后追踪(也即,获取到第二数据,也即,获取到第一数据发生变化后得到的数据)。
结合第八方面,在第一种可能的实施方式中,该装置还包括关联设置模块,其中:
信息查找模块还可以用于,确定第二数据的第二关联信息。这里,第二数据为第一数据发生变化后得到的数据(如区块数据,单个交易数据,或属于同一区块的多个交易数据等数据)。
地址确定模块还可以用于,基于第二数据的第二关联信息确定第一数据的第一地址。这里,第二数据的第二关联信息用于标识第二数据是第一数据发生变化后得到的数据。
关联设置模块,可以用于通过第一地址确定第一区块;
关联设置模块,还可以用于利用第二地址在第一区块中更新第一数据的第一关联信息以建立第一数据和第二数据之间的关联。
采用本申请提供的实施方式,区块链数据管理装置可以根据第二数据的第二关联信息实现对第二数据的前向追踪,确定第一数据在区块链中的第一地址,由第一地址查找到第一区块,并修改第一区块中第一数据的第一关联信息,进而在第一区块中标识第二数据的第二地址(也即,第二数据在区块链中的存储位置)。区块链数据管理装置可以在第一区块中存储第一数据发生变化后得到的第二数据的地址,进而实现在区块链中表示关联数据之间的关联,进而实现数据的溯源和追踪。
结合第八方面第一种可能的实施方式,在第二种可能的实施方式中,第一关联信息包括第一后向关联指针,关联设置模块还可以用于:将第一数据的关联信息中的第一后向关联指针设置为指向第二数据的第二地址。这里,第一数据的关联信息中的后向关联指针用于指示第一数据发生变化得到的数据所属的地址。采用本申请提供的实施方式,区块链数据管理装置可以将第一数据的后向关联指针设置为指向第二地址,表明第一数据发生变化后得到的数据被存储在第二地址,由此通过指针指示数据之间的关联,进而更简单地实现数据的追踪。
结合第八方面第一种可能的实施方式或第八方面第二种可能的实施方式,在第三种可能的实施方式中,第一关联信息还包括第一前向关联指针,关联设置模块还可以用于:将第一数据的关联信息中的第一前向关联指针设置为指向空地址。这里,第一数据的关联信息中的第一前向关联指针用于指示发生变化后得到第一数据的数据所属的地址。采用本申请提供的实施方式,区块链数据管理装置可以在第一区块中将第一数据的第一前向关联指针设置为空,以表示此时区块链中并没有存储发生变化后得到第一数据的数据。
结合第八方面第一种可能的实施方式至第八方面第三种可能的实施方式中的任一种,在第四种可能的实施方式中,第二数据的第二关联信息可以包括第二前向关联指针,第二前向关联指针指向第一数据的第一地址。这里,第二数据的关联信息中的第二前向关联指针用于指示发生变化后得到第二数据的数据所属的地址。采用本申请提供的实施方式,区块链数据管理装置可以将第二数据的第二前向关联指针设置为指向第一地址,进而表明第二数据是由第一地址存储的数据(也即,第一数据)发生变化得到的数据,由此通过指针指示数据之间的关联,进而更简单地实现数据的溯源。
结合第八方面第一种可能的实施方式至第八方面第四种可能的实施方式中的任一种,在第五种可能的实施方式中,第二数据的第二关联信息包括第二后向关联指针,关联设置模块还可以用于:若存在与第二数据关联的第三数据,则将第二数据的第二后向关联指针设置为指向第三数据的第三地址。这里,第二数据的关联信息中的第二后向关联指针用于指示第二数据发生变化后得到数据(也即,第三数据)所属的地址。采用本申请提供的实施方式,当通过第三数据的前向关联指针确定存在与第二数据关联的第三数据(也即,第三数据是第二数据发生变化后得到的数据)时,区块链数据管理装置可以更新第二数据的后向关联指针指向第三地址,进而标识第二数据发生变化后的第三数据被存储在区块链的第三地址中,实现数据的溯源与追踪。
第九方面,本申请实施例提供了一种数据管理装置,该数据管理装置包括存储器、处理器和收发器;其中,该存储器、收发器和处理器通过通信总线连接,或者处理器和收发器用于与存储器耦合。该存储器用于存储一组程序代码,该收发器和处理器用于调用该存储器中存储的程序代码执行上述第七方面和/或第七方面中任意一种可能的实现方式所提供的模型推理异常处理方法,因此也能实现第七方面提供的方法所具备的有益效果。
第十方面,本申请实施例提供了一种可读存储介质,该可读存储介质中存储有指令,当该指令在一个或多个处理器上运行时,使得一个或多个处理器执行上述第七方面和/或第七方面中任意一种可能的实现方式所提供的区块链数据管理方法,也能实现第七方面提供的方法所具备的有益效果。
第十一方面,本申请实施例提供了一种数据管理装置,该数据管理装置包括存储器、处理器和收发器;其中,该存储器、收发器和处理器通过通信总线连接,或者处理器和收发器用于与存储器耦合。该存储器用于存储一组程序代码,该收发器和处理器用于调用该存储器中存储的程序代码执行上述第一方面和/或第一方面中任意一种可能的实现方式所提供的模型推理异常处理方法,因此也能实现第一方面提供的方法所具备的有益效果。
第十二方面,本申请实施例提供了一种数据管理装置,该数据管理装置包括存储器、处理器和收发器;其中,该存储器、收发器和处理器通过通信总线连接,或者处理器和收发器用于与存储器耦合。该存储器用于存储一组程序代码,该收发器和处理器用于调用该存储器中存储的程序代码执行上述第二方面和/或第二方面中任意一种可能的实现方式所提供的模型推理异常处理方法,因此也能实现第二方面提供的方法所具备的有益效果。
第十三方面,本申请实施例提供了一种数据管理装置,该数据管理装置包括存储器、处理器和收发器;其中,该存储器、收发器和处理器通过通信总线连接,或者处理器和收发器用于与存储器耦合。该存储器用于存储一组程序代码,该收发器和处理器用于调用该存储器中存储的程序代码执行上述第三方面和/或第三方面中任意一种可能的实现方式所提供的模型推理异常处理方法,因此也能实现第三方面提供的方法所具备的有益效果。
第十四方面,本申请实施例提供了一种可读存储介质,该可读存储介质中存储有指令,当该指令在一个或多个处理器上运行时,使得一个或多个处理器执行上述第一方面和/或第一方面中任意一种可能的实现方式所提供的区块链数据管理方法,也能实现第一方面提供的方法所具备的有益效果。
第十五方面,本申请实施例提供了一种可读存储介质,该可读存储介质中存储有指令,当该指令在一个或多个处理器上运行时,使得一个或多个处理器执行上述第二方面和/或第二方面中任意一种可能的实现方式所提供的区块链数据管理方法,也能实现第二方面提供的方法所具备的有益效果。
第十六方面,本申请实施例提供了一种可读存储介质,该可读存储介质中存储有指令,当该指令在一个或多个处理器上运行时,使得一个或多个处理器执行上述第三方面和/或第三方面中任意一种可能的实现方式所提供的区块链数据管理方法,也能实现第三方面提供的方法所具备的有益效果。
附图说明
图1是本申请实施例提供的区块链数据管理方法的网络架构示意图;
图2是本申请实施例提供的区块链数据管理方法的交互流程示意图;
图3是本申请实施例提供的更新区块数据的关联指针的流程示意图;
图4是本申请实施例提供的更新交易数据的关联指针的流程示意图;
图5是本申请实施例提供的更新后的交易数据的关联指针的状态示意图;
图6是本申请实施例提供的更新可编辑区块链的区块的状态示意图;
图7是本申请实施例提供的更新可编辑区块链的区块的流程示意图;
图8是本申请实施例提供的对数据的关联信息进行验证的流程示意图;
图9是本申请实施例提供的区块链数据管理方法的流程示意图;
图10是本申请实施例提供的区块链数据管理装置的一结构示意图;
图11是本申请实施例提供的区块链数据管理装置的另一结构示意图;
图12是本申请实施例提供的区块链数据管理装置的另一结构示意图;
图13是本申请实施例提供的区块链数据管理装置的另一结构示意图;
图14是本申请实施例提供的数据管理装置的一结构示意图;
图15是本申请实施例提供的数据管理装置的另一结构示意图。
具体实施方式
本申请提供的区块链数据管理方法及装置可适用于区块链系统及用户终端的数据管理,这里的用户终端可以作为客户端,包括手机、平板电脑等具有数据管理功能的电子设备。本申请提供的方案可以适用于诸如货币交易(例如,比特币、瑞波币、以太坊等货币的货币交易)、物流、网页证书统计(例如,证书的签发、撤销、更新等)等所有利用区块链对数据进行存储的场景,为表述方便,以下仅以网页证书统计为例对本申请提供的实施方式进行介绍。参见图1,图1是本申请实施例提供的区块链数据管理方法的网络架构示意图。如图1所示,该网络架构包括用于运行区块链网络的区块链节点系统以及用户终端集群。其中,区块链节点系统是指在节点和节点、节点和用户终端、用户终端和用户终端之间用于进行数据管理的系统。该区块链节点系统可以包括多个节点,具体可以包括节点100a、节点100b、节点100c、…、节点100n。该用户终端集群可以包括多个用户终端,具体可以包括用户终端3000a、用户终端3000b、用户终端3000c、…、用户终端3000n。
其中,在该区块链节点系统中,每个节点在进行正常工作时,均可以获取与该节点相关联的用户终端的数据,以对该区块链节点系统内的数据进行管理。为了保证该区块链节点系统内的信息互通,该区块链节点系统中的每个节点之间可以建立网络连接,以通过该网络连接进行数据传输。例如,当该区块链节点系统中的任意节点在获取到一份数据时,区块链节点系统中的其他节点便可以获取到该数据,并由当前具有记账权的节点(也即,记账区块链节点)以区块为单位进行存储进而同步给其他节点,使得该区块链节点系统中所有节点上存储的数据均一致。
应当理解,区块链节点系统中的每个节点均可以与用户终端集群中的每个用户终端进行数据交互。可以理解的是,各个节点可以通过用户终端获取数据,并将该数据同步给其他节点,或者将该数据存储至区块链,或者将该数据存储至区块链并共享给区块链节点,或者将该数据传输给其他用户终端。各个用户终端也可以通过节点获取数据。例如,在本申请实施例中,节点100a可以获取用户终端3000a上传的一份证书数据(此处的证书数据可以包括一个或多个证书、证书的适用网址、证书有效期等数据)作为第一数据,或者获取用户终端3000a上传的一份金融数据(此处的金融数据可以包括一个或多个交易流程、交易金额、交易对象等数据)作为第一数据,或者获取用户终端3000a上传的一份身份数据(此处的身份数据可以包括一个或多个对象名称、对象权限、认证密码等数据)作为第一数据,或者获取用户终端3000a上传的其他可以存储在区块链中的数据,并将第一数据传输给当前具有记账权的记账区块链节点(此处的记账区块链节点也可以是节点100a本身),由记账区块链节点将第一数据以区块的形式(也即,第一区块)存储至区块链并共享给区块链节点。这里,第一数据可以是由多个交易数据组成的一个区块数据,也可以是一个交易数据。当用户终端3000a(或其他用户终端)更新了第一数据中的证书有效期并将更新后的第一数据作为第二数据,或者当用户终端3000a(或其他用户终端)添加了第一数据中的交易对象并将更新后的第一数据作为第二数据,或者当用户终端3000a(或其他用户终端)更新了第一数据中的认证密码并将更新后的第一数据作为第二数据时,节点100a(或其他节点)可以通过用户终端3000a(或其他用户终端)获取到第二数据,并将第二数据传输给当前具有记账权的记账区块链节点(此处的记账区块链节点也可以是节点100a本身),由记账区块链节点将第二区块(也即,携带第二数据和第二数据的关联信息的区块)存储至区块链并共享给区块链节点。这里,数据的关联信息属于区块内部的信息,是经过链上共识的数据,受区块链架构和算法的保护,数据的关联信息可以不参与生成区块时的哈希值计算。进一步地,如果区块链是可编辑区块链,在改变了区块内部的哈希树之后,区块链的哈希值可以保持不变(例如,利用变色龙哈希使更新后的区块与原区块的哈希值相等),那么数据的关联信息可以参与生成区块时的哈希值计算。可以理解的是,第二数据的关联信息是用于标识第二数据与第一数据之间存在关联的信息,换句话说,第二数据的关联信息是用于标识第二数据是由第一数据发生变化后得到的。进一步可以理解的是,第二数据的关联信息也可以用于标识第二数据和第三数据(也即,第二数据发生变化后得到的数据)之间存在关联,换句话说,第二数据的关联信息也可以用于标识第二数据发生变化后得到第三数据。这里,关联信息可以是指向第一地址(也即,第一数据在区块链中的存储地址)的关联指针,也可以是包含第一地址的关联字符串等使得节点可以在区块链中查找和/或获取到第一数据的信息。在记账区块链节点将第二区块(也即,携带第二数据和第二数据的关联信息的区块)存储至区块链并共享给区块链节点之后,区块链节点系统中的其他节点可以根据第二区块中的第二数据的关联信息确定第二数据与第一数据存在关联,通过第二数据的关联信息确定第一区块中的第一数据,并更新第一区块中的第一数据的关联信息,以标识第一数据发生变化后得到的数据为第二数据。
进一步地,当用户终端3000a(或其他用户终端)添加或撤销了第二数据中的一部分证书并将更新后的第二数据作为第三数据,或者当用户终端3000a(或其他用户终端)更改了第二数据中的一部交易金额并将更新后的第二数据作为第三数据,或者当用户终端3000a(或其他用户终端)更改了第二数据中的一部分对象的对象权限并将更新后的第二数据作为第三数据时,节点100a(或其他节点)可以通过用户终端3000a(或其他用户终端)获取到第三数据,并将第三数据传输给当前具有记账权的记账区块链节点(此处的记账区块链节点也可以是节点100a本身),由记账区块链节点将第三区块(也即,携带第三数据和第三数据的关联信息的区块)存储至区块链并共享给区块链节点。可以理解的是,第三数据的关联信息是用于标识第三数据与第二数据之间存在关联的信息,换句话说,第三数据的关联信息是用于标识第三数据是由第二数据发生变化后得到的。在记账区块链节点将第三区块(也即,携带第三数据和第三数据的关联信息的区块)存储至区块链并共享给区块链节点之后,区块链节点系统中的其他节点可以根据第三区块中的第三数据的关联信息确定第三数据与第二数据存在关联,通过第三数据的关联信息确定第二区块中的第二数据,并更新第二区块中的第二数据的关联信息,以标识第二数据发生变化后得到的数据为第三数据。为表述方便,在本申请中以关联指针作为关联信息为例对关联信息的具体形态进行详细说明,这里,关联指针可以包括前向关联指针和后向关联指针。其中,A数据的前向关联指针可以指向B数据的地址,用于表示A数据是由B数据变化得到的数据;A数据的后向关联指针可以指向C数据的地址,用于表示C数据是由A数据经过变化后得到的数据。由此可以理解的是,在记账区块链节点将第三区块(也即,携带第三数据和第三数据的关联信息的区块)存储至区块链并共享给区块链节点时,第三数据的前向关联指针指向第二地址,第三数据的后向关联指针可以为空(或指向一个为空的地址)。这里,第三数据的后向关联指针为空(或指向一个为空的地址)用于表示区块链中并不存在第三数据发生变化后的数据。换句话说,第三数据的后向关联指针为空(或指向一个为空的地址)用于表示第三数据是这一系列数据(第一数据、第二数据等数据)中最新(或最后上传)的数据。
进一步地,用户终端3000a(或其他用户终端)可以在获取第二区块中的第二数据时,根据第二数据的关联信息(也即,指向第一地址的前向关联指针和指向第三地址的后向关联指针)确定第二数据存在关联数据(也即,第一数据和第三数据)。用户终端3000a可以获取到这一系列数据(第一数据、第二数据和第三数据)中最新的数据(也即,第三数据),也可以获取到这一系列数据(第一数据、第二数据和第三数据)中最原始的数据(也即,第一数据)。用户终端3000a还可以获取第一数据的关联信息和/或第三数据的关联信息,通过第一数据的关联信息和/或第三数据的关联信息对第二数据的关联信息进行验证。也就是说,如果第一数据的后向关联指针和/或第三数据的前向关联指针指向了第二地址(也即,第二数据在区块链中的地址),则说明第二数据的关联信息通过验证,否则说明第二数据的关联信息未通过验证,进而保证数据的安全性与一致性。
由此可见,在本申请实施例中,记账区块链节点可以根据第一数据所属的第一地址生成第二数据的关联信息,并根据第二数据和第二数据的关联信息生成第二区块,从而使得客户端(也即,用户终端)获取到第二区块时,可以根据第二数据的关联信息确定第一地址,进而确定第一数据,实现数据的溯源;区块链节点可以通过第二区块中携带的第二数据的关联信息确定第一数据所属的第一地址,进而确定第一区块,并更新第一区块中第一数据的关联信息以标识第二数据是第一数据发生变化后得到的数据,从而使得客户端(也即,用户终端)获取到第一区块时,可以根据第一数据的关联信息确定第二地址,进而确定第二数据,实现数据的追踪。此外,客户端还可以根据第二数据的关联信息对第一数据的关联信息进行验证,以确保数据的安全性和一致性。其中,区块链数据管理方法的具体实现方式可以参见下述图2-图8所对应的实施例。
参见图2,图2是本申请实施例提供的区块链数据管理方法的交互流程示意图。该方法包括如下步骤:
S101:当接收到第一数据所属的第一地址以及由第一数据变化得到的第二数据时,记账区块链节点根据第一地址生成第二数据的关联信息,根据第二数据的关联信息和第二数据生成第二区块。
S102:记账区块链节点将第二区块共享给区块链节点。
在一些可行的实施方式中,当记账区块链节点(或其他区块链节点)接收到第一数据(如前述证书数据,可以包括一个多个证书、证书的适用网址、证书有效期等数据;或者如前述金融数据,可以包括一个或多个交易流程、交易金额、交易对象等数据;或者如前述身份数据,可以包括一个或多个对象的名称、对象的权限、对象的密码等数据,或者其他可以存储在区块链中的数据)所属的第一地址以及由第一数据变化得到的第二数据(如前述更新了第一数据中的证书有效期得到的数据,或者如前述添加了第一数据中的交易对象后得到的数据,或者如前述更新第一数据中的认证密码后得到的数据,等数据)时,记账区块链节点可以根据第一地址生成第二数据的关联信息。可以理解的是,第一数据可以是由多个交易数据组成的一个区块数据,也可以是一个交易数据。这里,记账区块链节点可以通过其他区块链节点或者用户终端获取到第二数据,并确定第二数据是第一数据变化后得到的数据。
进一步地,在一些可行的实施方式中,关联信息可以包括后向关联指针和前向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的地址,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的地址。上述步骤S101中的根据第一地址生成第二数据的关联信息可以包括:生成第二数据的关联信息中的前向关联指针为指向第一地址(例如,第一区块地址0xab或者第一区块中的第一交易地址0xab,0x123),并将第二数据的关联信息中的后向关联指针设置为空(或指向一个为空的地址(null))。这里,记账区块链节点可以将第二数据的前向关联指针设置为指向第一地址,进而表明第二数据是由第一地址存储的数据(也即,第一数据)发生变化得到的数据,由此通过指针指示数据之间的关联,进而更简单地实现数据的溯源。同时,记账区块链节点可以在第二区块中将第二数据的后向关联指针设置为空(或指向一个为空的地址(null)),以表示此时区块链中并没有存储第二数据发生变化后得到的数据。
在一些可行的实施方式中,记账区块链节点可以根据第二数据的关联信息和第二数据生成第二区块,在将第二区块存储至区块链之后,将第二区块共享给区块链节点。这里,数据的关联信息属于区块内部的信息,在该区块被存储至区块链之后,该区块中的数据作为经过链上共识的数据可以共享给区块链节点,受区块链架构和算法的保护。这里,数据的关联信息可以不参与生成区块时的哈希值计算。进一步地,如果区块链是可编辑区块链,在改变了区块内部的哈希树之后,区块链的哈希值可以保持不变(例如,利用变色龙哈希使更新后的区块与原区块的哈希值相等),那么数据的关联信息可以参与生成区块时的哈希值计算。
可以理解的是,在一些可行的实施方式中,数据(第一数据和第二数据等)可以是交易数据。这里第一地址包括第一区块中的第一交易地址(也即,区块地址为0xab的区块i中的交易地址0x123)、第二地址包括第二区块中的第二交易地址(也即,区块地址为0xcd的区块j中的交易地址0x456)。上述根据第一地址生成第二数据的关联信息包括:生成第二交易数据的关联信息中的前向关联指针为指向第一区块中的第一交易地址(也即:0xab,0x123)。也就是说,当数据是交易数据时,数据所属的地址不仅标识交易数据所属的区块,还会标识到交易数据所属的交易地址,记账区块链节点可以更直接地根据第二交易数据的关联信息,定位到第一交易数据所属的第一地址(也即,第一交易数据在区块链中的存储位置),便于更直接地实现数据的溯源。
在本申请提供的实施方式中,记账区块链节点可以在接收到第二数据时,确定第二数据是第一数据发生变化之后得到的数据,从而将第一数据的第一地址(也即,第一数据在区块链中的存储位置)作为第二数据的关联信息,并将第二数据的关联信息和第二数据存储在区块链的第二区块中。由此,记账区块链节点可以在第二区块中标记第二数据是第一数据发生变化后得到的数据,并通过第二数据的关联信息中的第一地址查找到第一数据,进而实现数据的溯源。
S103:区块链节点确定第二区块中携带的第二数据的关联信息,第二数据为第一数据发生变化后得到的数据。
S104:区块链节点基于第二数据的关联信息确定第一数据所属的第一地址,并通过第一地址确定第一区块。
S105:区块链节点基于第二地址在第一区块中更新第一数据的关联信息以建立第一数据和第二数据之间的关联。
在一些可行的实施方式中,数据(第一数据、第二数据等)可以是区块数据。具体请参见图3,图3是本申请实施例提供的更新区块数据的关联指针的流程示意图。如图3所示,在记账区块链节点将第二区块(也即,携带第二数据和第二数据的关联信息的区块j)存储至区块链并共享给区块链节点之后,区块链节点系统中的其他节点(也即,区块链节点)可以根据第二区块中的第二数据的关联信息确定第二数据与第一数据存在关联。区块链节点可以通过第二数据的关联信息确定第一数据所属的第一地址(也即,第一区块地址0xab),并通过第一地址确定第一区块(区块i)。区块链节点基于第二地址(也即,第二区块地址0xcd)在第一区块中更新第一数据的关联信息以建立第一数据和第二数据之间的关联,其中,第二地址为第二数据在区块链中所属的地址。这里,第二数据的关联信息是用于标识第二数据和第一数据存在关联的信息用于标识第一数据发生变化后得到的数据为第二数据。由此,区块链节点可以在第一区块中存储第一数据发生变化后得到的第二数据的地址,进而实现数据的追踪。
进一步地,在一些可行的实施方式中,关联信息可以包括后向关联指针和前向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的地址,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的地址。上述步骤S105中基于第二地址在第一区块中更新第一数据的关联信息可以包括:更新第一区块中第一数据的关联信息中的第一后向关联指针为指向第二地址(也即,由指向null变为指向0xcd)。这里,区块链节点可以在第一区块中将第一数据的后向关联指针进行修改为指向第二地址,通过改变指针在区块链中标识数据之间的关联,进而更简单地实现数据的追踪。这里,第一区块中第一数据的前向关联指针指向为空(指向null,或者一直为空指针),用于表示第一数据是这一系列数据(第一数据、第二数据等)中最原始的数据(最先存入区块链的数据),也即,在区块链中并未存储变化后可以得到第一数据的数据。
可以理解的是,第二数据的关联信息是用于标识第二数据与第一数据之间存在关联的信息,换句话说,第二数据的关联信息是用于标识第二数据是由第一数据发生变化后得到的。进一步可以理解的是,第二数据的关联信息也可以用于标识第二数据和第三数据(也即,第二数据发生变化后得到的数据)之间存在关联,换句话说,第二数据的关联信息也可以用于标识第二数据发生变化后得到第三数据。这里,关联信息可以是指向第一地址(也即,第一数据在区块链中的存储地址)的关联指针,也可以是包含第一地址的关联字符串等使得节点可以在区块链中查找和/或获取到第一数据的信息。
在本申请提供的实施方式中,第二数据是第一数据发生变化之后得到的数据,第二数据被存储在区块链的第二区块中,区块链节点可以根据第二区块中第二数据的关联信息确定第一数据在区块链中的第一地址,由第一地址查找到第一区块,并修改第一区块中第一数据的关联信息,进而在第一区块中标识第二数据的第二地址(也即,第二数据在区块链中的存储位置)。由此,区块链节点可以在第一区块中存储第一数据发生变化后得到的第二数据的地址,进而实现数据的追踪。
如图3所示,在一些可行的实施方式中,用户终端(客户端)或其他节点可以添加或撤销第二数据中的一部分证书,或者更改第二数据中的一部交易金额,或者更改第二数据中的一部分对象的对象权限,并将更新后的第二数据作为第三数据。当区块链节点根据第三区块(区块k)携带的第三数据的关联信息确定第三数据的关联信息中的前向关联指针指向第二地址(也即,第二区块地址0xcd)时,更新第二区块中第二数据的关联信息中的第二后向关联指针为指向第三地址(也即,第三区块地址0xef),以建立第二数据与第三数据的关联。其中,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的地址。换言之,在区块链节点更新第二数据的后向关联指针之前,第二数据的后向关联指针为空(或指向一个为空的地址(null)),表示区块链中不存在由第二数据发生变化得到的数据。当区块链节点通过第三数据的前向关联指针确定第三数据是第二数据发生变化后得到的数据时,则可以更新第二数据的后向关联指针指向第三地址,进而标识第二数据发生变化后的第三数据被存储在区块链的第三地址中,实现数据的追踪。
可以理解的是,A数据的前向关联指针可以指向B数据的地址,用于表示A数据是由B数据变化得到的数据;A数据的后向关联指针可以指向C数据的地址,用于表示C数据是由A数据经过变化后得到的数据。由此可以进一步理解的是,在记账区块链节点将第三区块(也即,携带第三数据和第三数据的关联信息的区块)存储至区块链并共享给区块链节点时,第三数据的前向关联指针指向第二地址,第三数据的后向关联指针可以为空(或指向一个为空的地址)。这里,第三数据的后向关联指针为空(或指向一个为空的地址)用于表示区块链中并不存在第三数据发生变化后的数据。换句话说,第三数据的后向关联指针为空(或指向一个为空的地址)用于表示第三数据是这一系列数据(第一数据、第二数据等数据)中最新(或最后上传)的数据。
在一些可行的实施方式中,数据(第一数据、第二数据等)可以是交易数据。具体请参见图4,图4是本申请实施例提供的更新交易数据的关联指针的流程示意图。如图4所示,第一地址包括第一区块中的第一交易地址、第二地址包括第二区块中的第二交易地址,关联信息包括后向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的交易地址。上述步骤S104中通过第一地址查找得到第一区块可以包括:通过第一区块中的第一交易地址(也即,区块地址为0xab的区块i中的交易地址0x123)查找得到第一区块,并在第一区块中确定第一交易数据的第一后向关联指针。
可以理解的是,在一些可行的实施方式中,关联信息可以包括后向关联指针和前向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的地址,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的地址。上述步骤S105中基于第二地址在第一区块中更新第一数据的关联信息可以包括:更新第一交易数据的关联信息中的第一后向关联指针为指向第二区块中的第二交易地址(也即,区块地址为0xcd的区块j中的交易地址0x456)。也就是说,将第一交易的后向关联指针由指向null变为指向0xcd,0x456。
具体请一并参见图5,图5是本申请实施例提供的更新后的交易数据的关联指针的状态示意图。如图5所示,当数据是交易数据时,数据所属的地址不仅标识交易数据所属的区块,还会标识交易数据所属的交易地址,区块链节点可以更直接地根据第一交易数据的关联信息,定位到第二交易数据所属的第二地址(也即,第二交易数据在区块链中的存储位置),便于更直接地实现数据追踪。这里,区块链节点可以在第一区块中将第一数据的后向关联指针进行修改为指向第二地址,通过改变指针在区块链中标识数据之间的关联,进而更简单地实现数据的追踪。这里,第一区块中第一数据的前向关联指针指向为空(指向null,或者一直为空指针),用于表示第一数据是这一系列数据(第一数据、第二数据等)中最原始的数据(最先存入区块链的数据),也即,在区块链中并未存储变化后可以得到第一数据的数据。
进一步地,如图4和图5所示,在一些可行的实施方式中,用户终端(客户端)或其他节点可以添加或撤销了第二数据中的一部分证书,并将更新后的第二数据作为第三数据。当区块链节点根据第三区块(区块k)携带的第三数据的关联信息确定第三数据的关联信息中的前向关联指针指向第二地址(也即,区块地址为0xcd的区块j中的交易地址0x456)时,可以更新第二区块中第二数据的关联信息中的第二后向关联指针为指向第三地址(也即,区块地址为0xef的区块k中的交易地址0x789),以建立第二数据与第三数据的关联。其中,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的交易地址。换言之,在区块链节点更新第二数据的后向关联指针之前,第二数据的后向关联指针为空(或指向一个为空的地址(null)),表示区块链中不存在由第二数据发生变化得到的数据。当区块链节点通过第三数据的前向关联指针确定第三数据是第二数据发生变化后得到的数据时,则可以更新第二数据的后向关联指针指向第三地址,进而标识第二数据发生变化后的第三数据被存储在区块链的第三地址中,实现数据的追踪。
在一些可行的实施方式中,区块链可以是可编辑区块链,数据(第一数据、第二数据等)可以是交易数据。具体请参见图6,图6是本申请实施例提供的更新可编辑区块链的区块的状态示意图。如图6所示,可编辑区块链具有特殊的哈希值计算方式,这种特性可以使得区块内部的哈希树发生改变之后,重新计算区块中的时间戳和随机数,以使得区块链的哈希值依然保持不变(例如,利用变色龙哈希使更新后的区块与原区块的哈希值相等)。这里,在上述步骤S105中基于第二地址在第一区块中更新第一数据的关联信息之后,该方法还可以对区块进行更新。为表述方便,本申请提供的实施例中将以利用变色龙哈希计算区块哈希值的区块链作为可编辑区块链来进行说明,具体请一并参见图7,图7是本申请实施例提供的更新可编辑区块链的区块的流程示意图。如图7所示,更新可编辑区块链的区块的方法包括如下步骤:
S201:根据第一交易数据和更新后的第一交易数据的关联信息生成第一替换交易。
在一些可行的实施方式中,区块链节点可以根据第一交易数据(TXA)和更新后的第一交易数据的关联信息(前向关联指针(null)和后向关联指针(0x456))生成第一替换交易(TXA1)。
S202:根据第一替换交易得到第一替换交易的哈希值,根据第一替换交易的哈希值更新第一区块中的哈希树,以得到更新后的第一区块的哈希树,并确定更新后的第一区块的哈希树的根节点值。
在一些可行的实施方式中,区块链节点可以根据第一替换交易(TXA1)得到第一替换交易的哈希值(HashA1),根据第一替换交易的哈希值更新第一区块中的哈希树(也即,默克尔树(merkletree)),以得到更新后的第一区块的哈希树。这里,区块的哈希树是用于存储区块中各交易数据的哈希值的一个树状存储结构,在第一交易数据被替换为第一替换交易后,区块中的哈希树中与第一交易数据有关的哈希值也会相应地发生改变。具体地,如图6所示,第一交易的哈希值作为哈希树的一个子节点,当区块链节点将第一交易的哈希值(HashA)更改为第一替换交易的哈希值(HashA1)时,在第一区块的哈希树中的该节点的所有父节点中存储的哈希值都将发生改变。也即,当第一交易的哈希值发生改变时,交易TXA1和交易TXB的联合哈希值(Hash(A1||B))等一系列节点中存储的哈希值都会发生改变。区块链节点可以重新计算并更新这些节点中的哈希值,并得到更新后的第一区块的哈希树的根节点值(也即,哈希树的根节点中存储的哈希值(TX_rooti1))。
S203:根据更新后的第一区块的哈希树的根节点值更新第一区块的随机数和时间戳,以使得更新后的第一区块的哈希值等于第一区块的哈希值并得到更新后的第一区块。
在一些可行的实施方式中,区块链节点可以根据更新后的第一区块的哈希树确定更新后的第一区块的哈希树的根节点值(TX_rooti1)),进而根据更新后的第一区块的哈希树的根节点值更新第一区块的随机数(randomi1)和时间戳(TSi1),以使得更新后的第一区块的哈希值(C_Hash(TX_rooti1,randomi1,TSi1))等于第一区块的哈希值(C_Hash(TX_rooti,randomI,TSi))并得到更新后的第一区块。其中,任一区块的哈希值由任一区块的根节点值、随机数和时间戳计算得到。这里,为了保证区块链的完整性,区块链节点需要更新第一区块的随机数和时间戳,使得更新后的第一区块的哈希值与第一区块的哈希值相等,也就是说,更新后的第一区块的哈希值与区块链中在第一区块之后存储的区块中记录的哈希值保持一致,保持了区块链的完整性,同时提高了区块链的安全性。
在一些可行的实施方式中,为了进一步提高区块链的安全性,区块链节点可以更新区块的存储列表,在区块链中,第k个区块的存储列表用于存储在第k个区块之前k-1个区块的标识值,这个标识值可以由各个区块中的数据通过映射算法(例如,哈希算法)进行映射得到。具体地,存储列表可以是区块编辑列表(BEL_Hash)或布隆过滤器列表(BF_Hash)等列表。当区块链中的区块发生改变时,相应地更新这个区块链中区块的存储列表,并将更新后的存储列表写入最新的区块,可以表示这条区块链中的区块曾经被更新过,进一步提高区块链的安全性和一致性。
S106:客户端获取第一地址,第一地址为第一数据在区块链中所属的地址,根据第一地址在区块链中查找得到第一数据的关联信息。
S107:客户端根据第一数据的关联信息确定第一数据的关联数据的地址,根据第一数据的关联数据的地址获取第一数据的关联数据。
在一些可行的实施方式中,客户端(也即,用户终端)可以通过区块链节点或者其他客户端获取到第一数据在区块链中所属的第一地址,进而通过第一地址在区块链中获得第一数据和/或第一数据的关联信息。在客户端获取到第一数据的关联信息时,客户端可以根据第一数据的关联信息(也即,指向空的前向关联指针和指向第二地址的后向关联指针)确定第一数据存在关联数据(也即,第二数据),并获取第二数据。换句话说,客户端可以通过第一数据的关联信息确定第一数据是由区块链中存储的某个数据(第一数据的关联数据)发生变化得到的,也可以确定第一数据发生变化后得到的数据在区块链中的存储位置。进而,客户端也可以根据第一数据的关联信息中的前向关联指针的指向为空,确定在此区块链中不存在变化后得到第一数据的数据,也即,第一数据是这一系列数据中最原始的数据(最先存入区块链的数据)。
在一些可行的实施方式中,客户端(也即,用户终端)可以在获取第二数据之后,根据第二数据的关联信息(也即,指向第一地址的前向关联指针和指向第三地址的后向关联指针)确定第二数据存在关联数据(也即,第一数据和第三数据)。客户端可以获取这一系列数据(第一数据、第二数据和第三数据)中最新的数据(也即,第三数据)。
由此,客户端可以根据第一数据的关联信息实现对第一数据向前追溯(也即,获取到发生变化后得到第一数据的数据)或者向后追踪(也即,获取到第一数据的关联数据为第一数据发生变化后得到的数据)。
在一些可行的实施方式中,第一数据的关联信息中的后向关联指针指向第四数据所属的第四地址,为了进一步保证数据的可靠性,客户端可以根据第四数据的关联信息(也即,第四数据的前向关联指针)对第一数据的关联信息(也即,第一数据的后向关联指针)进行验证。具体请一并参见图8,图8是本申请实施例提供的对数据的关联信息进行验证的流程示意图。如图8所示,对数据的关联信息进行验证的方法包括如下步骤:
S301:根据第一数据的后向关联指针标识的地址查找到第四数据,并确定第四数据的前向关联指针。
S302:判断第四数据的前向关联指针标识的地址中是否包括第一地址,若判断结果为是,执行步骤S303,否则执行S304。
S303:确定第一数据的后向关联指针通过验证。
S304:确定第一数据的后向关联指针未通过验证。
在一些可行的实施方式中,客户端可以根据第一数据的后向关联指针标识的地址查找到第四数据,并确定第四数据的前向关联指针。客户端可以根据第四数据的前向关联指针标识的地址对第一数据的后向关联指针进行验证。
具体地,若第四数据的前向关联指针标识的地址中包括第一地址,则确定第一数据的后向关联指针通过验证,客户端可以将第四数据作为第一数据的关联数据。若第四数据的前向关联指针标识的地址中不包括第一地址,则确定第一数据的后向关联指针未通过验证,说明第四数据可能不是第一数据的关联数据,客户端可以不将第四数据作为第一数据的关联数据。在这种实施方式中,客户端可以直接通过判断第四数据前向关联指针标识的地址中是否包括第一地址,进而对第一数据的后向关联指针进行验证,使得验证过程更简便直观。
请一并参见图9,图9是本申请实施例提供的区块链数据管理方法的流程示意图。这里,区块链数据管理方法的执行主体可以是区块链节点、记账区块链节点、客户端或者其他具备数据管理功能的装置,为表述方便,以下简称为区块链数据管理装置。如图9所示,区块链数据管理方法包括如下步骤:
S401:根据第一地址在区块链中查找第一数据的第一关联信息。
在一些可行的实施方式中,当区块链数据管理装置接收到第一数据(如前述证书数据,可以包括一个多个证书、证书的适用网址、证书有效期等数据;或者如前述金融数据,可以包括一个或多个交易流程、交易金额、交易对象等数据;或者如前述身份数据,可以包括一个或多个对象的名称、对象的权限、对象的密码等数据,或者其他可以存储在区块链中的数据)所属的第一地址(例如,区块地址为0xab的区块i中的交易地址0x123)时,区块链数据管理装置可以根据第一地址在区块链中查找第一数据的第一关联信息。
在一些可行的实施方式中,在区块链数据管理装置根据第一地址在区块链中查找第一数据的第一关联信息之前,区块链数据管理装置可以确定第二数据的第二关联信息。这里,第二数据是由第一数据变化得到的数据(如前述更新第一数据中的证书有效期后得到的数据,或者如前述添加第一数据中的交易对象后得到的数据,或者如前述更新第一数据中的认证密码后得到的数据,等数据)。
进一步地,在一些可行的实施方式中,关联信息可以包括后向关联指针和前向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的地址,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的地址。可以理解的是,由于第二数据是第一数据发生变化后得到的数据,所以区块链数据管理装置可以基于第二数据的第二关联信息中的第二前向关联指针得到第一数据所属的地址。具体地,当区块链数据管理装置确定第二数据的关联信息中的前向关联指针为指向第一地址(也即,区块地址为0xab的区块i中的交易地址0x123)时,区块链数据管理装置可以确定第二数据是由第一地址存储的数据(也即,第一数据)发生变化得到的数据。
进一步可以理解的是,在一些可行的实施方式中,区块链数据管理装置可以通过第一地址确定第一区块,并利用第二地址(也即,区块地址为0xcd的区块j中的交易地址0x456)在第一区块中更新第一数据的第一关联信息以建立第一数据和第二数据之间的关联。示例性地,区块链数据管理装置可以通过第一地址(也即,区块地址为0xab的区块i中的交易地址0x123)查找得到第一区块(区块i),并在第一区块中更新第一数据的第一后向关联指针为指向第二地址(也即,区块地址为0xcd的区块j中的交易地址0x456)。
在一些可行的实施方式中,区块链数据管理装置可以在第一区块中将第一数据的第一前向关联指针设置为空(或指向一个为空的地址(null)),以表示此时区块链中并没有存储发生变化后可以得到第一数据的数据。
S402:根据第一数据的第一关联信息确定第二数据的第二地址。
S403:根据第二数据的第二地址查询第二数据。
在一些可行的实施方式中,在区块链数据管理装置获取到第一数据的第一关联信息时,区块链数据管理装置可以根据第一数据的第一关联信息(也即,指向第二地址的第一后向关联指针)确定第一数据存在关联数据(也即,第二数据),并获取第二数据。这里,第一数据的第一关联信息中的第一后向关联指针用于指示第一数据发生变化得到的数据(也即,第二数据)在区块链中所属的地址。区块链数据管理装置可以根据第一数据的第一后向关联指针确定第二数据的第二地址(也即,区块地址为0xcd的区块j中的交易地址0x456)。
在一些可行的实施方式中,区块链数据管理装置可以根据第二数据的第二地址(也即,区块地址为0xcd的区块j中的交易地址0x456)查询第二数据,或者获取第二数据,进而实现数据的追踪。
在一些可行的实施方式中,区块链数据管理装置可以通过第一数据的第一关联信息确定第一数据是由区块链中存储的某个数据(第一数据的关联数据)发生变化得到的,也可以确定第一数据发生变化后得到的数据在区块链中的存储位置。进而,区块链数据管理装置也可以根据第一数据的第一关联信息中的第一前向关联指针的指向为空,确定在此区块链中不存在变化后得到第一数据的数据,也即,第一数据是这一系列数据中最原始的数据(最先存入区块链的数据)。
S404:若存在与第二数据关联的第三数据,则将第二数据的第二后向关联指针设置为指向第三数据的第三地址。
在一些可行的实施方式中,区块链数据管理装置可以判断是否存在与第二数据关联的第三数据(如前述添加或撤销了第二数据中的一部分证书后得到的数据,或者如前述更改了第二数据中的一部交易金额后得到的数据,或者如前述更改了第二数据中的一部分对象的对象权限后得到的数据)。例如,当区块链数据管理装置获取或接收到一个数据,该数据的关联信息中包括第二地址(例如,前向关联指针指向第二地址(也即,区块地址为0xcd的区块j中的交易地址0x456)),则区块链数据管理装置可以判断该数据为与第二数据关联的第三数据。区块链数据管理装置可以将第二数据的第二后向关联指针设置为指向第三数据的第三地址(也即,区块地址为0xef的区块k中的交易地址0x789)。
采用本申请提供的实施方式,区块链数据管理装置可以根据第一数据的地址(也即,第一数据在区块链中的存储位置)在区块链中获取到第一数据的第一关联信息,进而得到第二数据的地址并获取第二数据。换句话说,可以确定第一数据发生变化后得到的数据(也即,第二数据)在区块链中的存储位置。由此,可以根据第一数据的第一关联信息实现对第一数据的向后追踪(也即,获取到第二数据(如果存在第三数据,也可以获取到第三数据),也即,获取到第一数据发生变化后得到的数据)。区块链数据管理装置也可以根据第二数据的第二关联信息实现对第二数据的前向追踪,确定第一数据在区块链中的第一地址,由第一地址查找到第一区块,并修改第一区块中第一数据的第一关联信息,进而在第一区块中标识第二数据的第二地址(也即,第二数据在区块链中的存储位置)。可以在第一区块中存储第一数据发生变化后得到的第二数据的地址,进而实现在区块链中表示关联数据之间的关联,进而实现数据的溯源和追踪。
在另一些可行的实施方式中,第一数据可以是第一区块,第二数据可以是第二区块,第三数据可以是第三区块。可以理解的是,上述步骤S401-S404中的实施方式可以包括:
当区块链数据管理装置接收到第一区块(如存储前述证书数据的区块,可以包括存储一个或多个证书、证书的适用网址、证书有效期等数据的区块;或者如存储前述金融数据的区块,可以包括一个或多个交易流程、交易金额、交易对象等数据的区块;或者如存储前述身份数据的区块,可以包括一个或多个对象的名称、对象的权限、对象的密码等数据的区块,或者如其他存储在区块链中的区块)所属的第一地址(例如,区块地址0xab)时,区块链数据管理装置可以根据第一地址在区块链中查找第一区块的第一关联信息。
在一些可行的实施方式中,在区块链数据管理装置根据第一地址在区块链中查找第一区块的第一关联信息之前,区块链数据管理装置可以确定第二区块的第二关联信息。这里,第二区块是由第一区块中的数据发生变化后得到的数据所存储的区块(如前述更新第一区块中的证书有效期后得到的数据所存储的区块,或者如前述添加了第一区块中的交易对象后得到的数据所存储的区块,或者如前述更新第一区块中的认证密码后得到的数据所存储的区块)。
进一步地,在一些可行的实施方式中,关联信息可以包括后向关联指针和前向关联指针。这里,任一区块的关联信息中的后向关联指针用于指示任一区块中的数据发生变化得到的数据所存储的区块所属的地址,任一区块的关联信息中的前向关联指针用于指示区块中的数据发生变化后可以得到该任一区块的区块所属的地址。可以理解的是,由于第二区块是第一区块中的数据发生变化后得到的数据所存储的区块,所以区块链数据管理装置可以基于第二区块的第二关联信息中的第二前向关联指针得到第一区块所属的地址。具体地,当区块链数据管理装置确定第二区块的关联信息中的前向关联指针为指向第一地址(也即,区块地址0xab)时,区块链数据管理装置可以确定第二区块是由第一地址存储的区块中的数据(也即,第一区块中的数据)发生变化后得到的数据所存储的区块。
进一步可以理解的是,在一些可行的实施方式中,区块链数据管理装置可以通过第一地址确定第一区块,并利用第二地址(也即,区块地址0xcd)在第一区块中更新第一区块的第一关联信息以建立第一区块和第二区块之间的关联。示例性地,区块链数据管理装置可以通过第一地址(也即,区块地址0xab)查找得到第一区块(区块i),并在第一区块中更新区块的第一后向关联指针为指向第二地址(也即,区块地址0xcd)。
在一些可行的实施方式中,区块链数据管理装置可以在第一区块中将第一区块的第一前向关联指针设置为空(或指向一个为空的地址(null)),以表示此时区块链中并没有存储区块中的数据发生变化后可以得到第一区块的区块。
在一些可行的实施方式中,在区块链数据管理装置获取到第一区块的第一关联信息时,区块链数据管理装置可以根据第一区块的第一关联信息(也即,指向第二地址的第一后向关联指针)确定第一区块存在关联区块(也即,第二区块),并获取第二区块。这里,第一区块的第一关联信息中的第一后向关联指针用于指示第一区块中的数据发生变化后得到的数据所存储的区块(也即,第二区块)在区块链中所属的地址。区块链数据管理装置可以根据第一区块的第一后向关联指针确定第二区块的第二地址(也即,区块地址0xcd)。
在一些可行的实施方式中,区块链数据管理装置可以根据第二区块的第二地址(也即,区块地址0xcd)查询第二区块(也即,区块j),或者获取第二区块,进而实现数据的追踪。
在一些可行的实施方式中,区块链数据管理装置可以通过第一区块的第一关联信息确定第一区块是由区块链中存储的某个区块(第一区块的关联区块)中的数据发生变化后的数据所存储的区块,也可以确定第一区块中的数据发生变化后得到的数据所存储的区块在区块链中的存储位置。进而,区块链数据管理装置也可以根据第一区块的第一关联信息中的第一前向关联指针的指向为空,确定在此区块链中不存在区块中的数据发生变化后可以得到第一区块的区块,也即,第一区块存储的数据是这一系列数据中最原始的数据(最先存入区块链的数据)。
在一些可行的实施方式中,区块链数据管理装置可以判断是否存在与第二区块关联的第三区块(如前述添加或撤销了第二区块中的一部分证书后得到的数据所存储的区块,或者如前述更改了第二区块中的一部分交易金额后得到的数据所存储的区块,或者如前述更改了第二区块中的一部分对象的对象权限后得到的数据所存储的区块)。例如,当区块链数据管理装置获取或接收到一个区块,该区块的关联信息中包括第二地址(例如,前向关联指针指向第二地址(也即,区块地址0xcd)),则区块链数据管理装置可以判断该区块为与第二区块关联的第三区块。区块链数据管理装置可以将第二区块的第二后向关联指针设置为指向第三区块的第三地址(也即,区块地址0xef)。
采用本申请提供的实施方式,区块链数据管理装置可以根据第一区块的地址(也即,第一区块在区块链中的存储位置)在区块链中获取到第一区块的第一关联信息,进而得到第二区块的地址并获取第二区块。换句话说,可以确定第一区块发生变化后得到的数据所存储的区块(也即,第二区块)在区块链中的存储位置。由此,可以根据第一区块的第一关联信息实现对第一区块的向后追踪(也即,获取到第二区块(如果存在第三区块,也可以获取到第三区块),也即,获取到第一区块中的数据发生变化后得到的数据所存储的区块)。区块链数据管理装置也可以根据第二区块的第二关联信息实现对第二区块的前向追踪,确定第一区块在区块链中的第一地址,由第一地址查找到第一区块,并修改第一区块中第一区块的第一关联信息,进而在第一区块中标识第二区块的第二地址(也即,第二区块在区块链中的存储位置)。可以在第一区块中存储第一区块中的数据发生变化后得到的数据所存储的第二区块的地址,进而实现在区块链中表示关联区块之间的关联,进而实现数据的溯源和追踪。
请参见图10,图10是本申请实施例提供的区块链数据管理装置的一结构示意图。区块链数据管理装置可以是区块链节点、记账区块链节点、客户端或者其他具备数据管理功能的装置,为表述方便,以下简称为区块链数据管理装置,该装置包括:
信息查找模块11,可以用于根据第一地址在区块链中查找第一数据的第一关联信息,这里,第一地址为第一数据在区块链中的地址。这里,第一数据可以是区块数据,单个交易数据,或属于同一区块的多个交易数据等数据。根据第一数据的第一关联信息确定第二数据的第二地址。这里,第二数据是第一数据的关联数据。
地址确定模块12,可以用于根据第一数据的第一关联信息确定第二数据的第二地址。这里,第二数据是第一数据的关联数据。这里,第二地址为第二数据在区块链中的地址。可以理解的是,第一数据的第一关联信息用于表示第一数据发生变化后得到的数据是第二数据。
数据查询模块13,可以用于根据第二数据的第二地址查询第二数据。
在本申请提供的实施方式中,区块链数据管理装置可以根据第一数据的地址(也即,第一数据在区块链中的存储位置)在区块链中获取到第一数据的第一关联信息,进而得到第二数据的地址并获取第二数据。换句话说,区块链数据管理装置可以确定第一数据发生变化后得到的数据(也即,第二数据)在区块链中的存储位置。由此,区块链数据管理装置可以根据第一数据的第一关联信息实现对第一数据的向后追踪(也即,获取到第二数据,也即,获取到第一数据发生变化后得到的数据)。
在一些可行的实施方式中,该装置还包括关联设置模块14,其中:
信息查找模块11还可以用于,确定第二数据的第二关联信息。这里,第二数据为第一数据发生变化后得到的数据(如区块数据,单个交易数据,或属于同一区块的多个交易数据等数据)。
地址确定模块12还可以用于,基于第二数据的第二关联信息确定第一数据的第一地址。这里,第二数据的第二关联信息用于标识第二数据是第一数据发生变化后得到的数据。
关联设置模块14,可以用于通过第一地址确定第一区块;
关联设置模块14,还可以用于利用第二地址在第一区块中更新第一数据的第一关联信息以建立第一数据和第二数据之间的关联。
采用本申请提供的实施方式,区块链数据管理装置可以根据第二数据的第二关联信息实现对第二数据的前向追踪,确定第一数据在区块链中的第一地址,由第一地址查找到第一区块,并修改第一区块中第一数据的第一关联信息,进而在第一区块中标识第二数据的第二地址(也即,第二数据在区块链中的存储位置)。区块链数据管理装置可以在第一区块中存储第一数据发生变化后得到的第二数据的地址,进而实现在区块链中表示关联数据之间的关联,进而实现数据的溯源和追踪。
在一些可行的实施方式中,第一关联信息包括第一后向关联指针,关联设置模块14还可以用于:将第一数据的关联信息中的第一后向关联指针设置为指向第二数据的第二地址。这里,第一数据的关联信息中的后向关联指针用于指示第一数据发生变化得到的数据所属的地址。采用本申请提供的实施方式,区块链数据管理装置可以将第一数据的后向关联指针设置为指向第二地址,表明第一数据发生变化后得到的数据被存储在第二地址,由此通过指针指示数据之间的关联,进而更简单地实现数据的追踪。
在一些可行的实施方式中,第一关联信息还包括第一前向关联指针,关联设置模块14还可以用于:将第一数据的关联信息中的第一前向关联指针设置为指向空地址。这里,第一数据的关联信息中的第一前向关联指针用于指示发生变化后得到第一数据的数据所属的地址。采用本申请提供的实施方式,区块链数据管理装置可以在第一区块中将第一数据的第一前向关联指针设置为空,以表示此时区块链中并没有存储发生变化后得到第一数据的数据。
在一些可行的实施方式中,第二数据的第二关联信息可以包括第二前向关联指针,第二前向关联指针指向第一数据的第一地址。这里,第二数据的关联信息中的第二前向关联指针用于指示发生变化后得到第二数据的数据所属的地址。采用本申请提供的实施方式,区块链数据管理装置可以将第二数据的第二前向关联指针设置为指向第一地址,进而表明第二数据是由第一地址存储的数据(也即,第一数据)发生变化得到的数据,由此通过指针指示数据之间的关联,进而更简单地实现数据的溯源。
在一些可行的实施方式中,第二数据的第二关联信息包括第二后向关联指针,关联设置模块14还可以用于:若存在与第二数据关联的第三数据,则将第二数据的第二后向关联指针设置为指向第三数据的第三地址。这里,第二数据的关联信息中的第二后向关联指针用于指示第二数据发生变化后得到数据(也即,第三数据)所属的地址。采用本申请提供的实施方式,当通过第三数据的前向关联指针确定存在与第二数据关联的第三数据(也即,第三数据是第二数据发生变化后得到的数据)时,区块链数据管理装置可以更新第二数据的后向关联指针指向第三地址,进而标识第二数据发生变化后的第三数据被存储在区块链的第三地址中,实现数据的溯源与追踪。
在另一些可行的实施方式中,第一区块可以是第一区块,第二区块可以是第二区块,第三区块可以是第三区块。可以理解的是,上述区块链数据管理装置可以包括:
信息查找模块11,可以用于根据第一地址在区块链中查找第一区块的第一关联信息,这里,第一地址为第一区块在区块链中的地址。根据第一区块的第一关联信息确定第二区块的第二地址。这里,第二区块是第一区块的关联数据。
地址确定模块12,可以用于根据第一区块的第一关联信息确定第二区块的第二地址。这里,第二区块是第一区块的关联区块。这里,第二地址为第二区块在区块链中的地址。可以理解的是,第一区块的第一关联信息用于表示第一区块内的数据发生变化后得到的数据所存储的区块是第二区块。
数据查询模块13,可以用于根据第二区块的第二地址查询第二区块。
在本申请提供的实施方式中,区块链数据管理装置可以根据第一区块的地址(也即,第一区块在区块链中的存储位置)在区块链中获取到第一区块的第一关联信息,进而得到第二区块的地址并获取第二区块。换句话说,区块链数据管理装置可以确定第一区块内的数据发生变化后得到的数据所存储的区块(也即,第二区块)在区块链中的存储位置。由此,区块链数据管理装置可以根据第一区块的第一关联信息实现对第一区块的向后追踪(也即,获取到第二区块,也即,获取到第一区块内的数据发生变化后得到的数据所存储的区块)。
在一些可行的实施方式中,该装置还包括关联设置模块14,其中:
信息查找模块11还可以用于,确定第二区块的第二关联信息。这里,第二区块为第一区块内的数据发生变化后得到的数据所存储的区块。
地址确定模块12还可以用于,基于第二区块的第二关联信息确定第一区块的第一地址。这里,第二区块的第二关联信息用于标识第二区块是第一区块内的数据发生变化后得到的数据所存储的区块。
关联设置模块14,可以用于通过第一地址确定第一区块;
关联设置模块14,还可以用于利用第二地址在第一区块中更新第一区块的第一关联信息以建立第一区块和第二区块之间的关联。
采用本申请提供的实施方式,区块链数据管理装置可以根据第二区块的第二关联信息实现对第二区块的前向追踪,确定第一区块在区块链中的第一地址,由第一地址查找到第一区块,并修改第一区块中第一区块的第一关联信息,进而在第一区块中标识第二区块的第二地址(也即,第二区块在区块链中的存储位置)。区块链数据管理装置可以在第一区块中存储第一区块内的数据发生变化后得到的数据所存储的第二区块的地址,进而实现在区块链中表示关联数据之间的关联,进而实现数据的溯源和追踪。
在一些可行的实施方式中,第一关联信息包括第一后向关联指针,关联设置模块14还可以用于:将第一区块的关联信息中的第一后向关联指针设置为指向第二区块的第二地址。这里,第一区块的关联信息中的后向关联指针用于指示第一区块内的数据发生变化后得到的数据所存储的区块所属的地址。采用本申请提供的实施方式,区块链数据管理装置可以将第一区块的后向关联指针设置为指向第二地址,表明第一区块内的数据发生变化后得到的数据所存储的区块被存储在第二地址,由此通过指针指示数据之间的关联,进而更简单地实现数据的追踪。
在一些可行的实施方式中,第一关联信息还包括第一前向关联指针,关联设置模块14还可以用于:将第一区块的关联信息中的第一前向关联指针设置为指向空地址。这里,第一区块的关联信息中的第一前向关联指针用于指示发生变化后得到第一区块的数据所属的地址。采用本申请提供的实施方式,区块链数据管理装置可以在第一区块中将第一区块的第一前向关联指针设置为空,以表示此时区块链中并没有存储发生变化后得到第一区块的数据。
在一些可行的实施方式中,第二区块的第二关联信息可以包括第二前向关联指针,第二前向关联指针指向第一区块的第一地址。这里,第二区块的关联信息中的第二前向关联指针用于指示发生变化后得到第二区块的数据所属的地址。采用本申请提供的实施方式,区块链数据管理装置可以将第二区块的第二前向关联指针设置为指向第一地址,进而表明第二区块是由第一地址存储的数据(也即,第一区块)发生变化得到的数据所存储的区块,由此通过指针指示数据之间的关联,进而更简单地实现数据的溯源。
在一些可行的实施方式中,第二区块的第二关联信息包括第二后向关联指针,关联设置模块14还可以用于:若存在与第二区块关联的第三区块,则将第二区块的第二后向关联指针设置为指向第三区块的第三地址。这里,第二区块的关联信息中的第二后向关联指针用于指示第二区块发生变化后得到数据(也即,第三区块)所属的地址。采用本申请提供的实施方式,当通过第三区块的前向关联指针确定存在与第二区块关联的第三区块(也即,第三区块是第二区块发生变化后得到的数据所存储的区块)时,区块链数据管理装置可以更新第二区块的后向关联指针指向第三地址,进而标识第二区块发生变化后的第三区块被存储在区块链的第三地址中,实现数据的溯源与追踪。
请参见图11,图11是本申请实施例提供的区块链数据管理装置的另一结构示意图。该装置可为上述实施例中的区块链节点,该装置包括:
信息接收模块21,用于确定第二区块中携带的第二数据(如区块数据,单个交易数据,或属于同一区块的多个交易数据等数据)的关联信息以及第二数据所属的第二地址。其中,第二数据为第一数据发生变化后得到的数据,第二数据的关联信息是用于标识第二数据和第一数据存在关联的信息。
关联更新模块22,用于基于第二数据的关联信息确定第一数据所属的第一地址,并通过第一地址查找得到第一区块,基于第二地址在第一区块中更新第一数据的关联信息以建立第一数据和第二数据之间的关联。
应理解,信息接收模块21用于执行上述实施例中步骤S103中区块链节点确定第二区块中第二数据的关联信息的步骤。关联更新模块22用于执行上述实施例中步骤S104中区块链节点基于第二数据的关联信息确定第一地址和第一区块以及步骤S105中区块链节点在第一区块中更新第一数据的关联信息的步骤。
在本申请提供的实施方式中,第二数据是第一数据发生变化之后得到的数据,第二数据被存储在区块链的第二区块中,信息接收模块21可以根据第二区块中第二数据的关联信息确定第一数据在区块链中的第一地址。关联更新模块22可以由第一地址查找到第一区块,并修改第一区块中第一数据的关联信息,进而在第一区块中标识第二数据的第二地址(也即,第二数据在区块链中的存储位置)。由此,区块链数据管理装置(也即,区块链节点)可以在第一区块中存储第一数据发生变化后得到的第二数据的地址,进而实现数据的追踪。
在一些可行的实施方式中,关联信息包括后向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的地址。关联更新模块22还用于:更新第一区块中第一数据的关联信息中的第一后向关联指针为指向第二地址。这里,关联更新模块22可以在第一区块中将第一数据的后向关联指针进行修改为指向第二地址,通过改变指针在区块链中标识数据之间的关联,进而更简单地实现数据的追踪。
在一些可行的实施方式中,数据为交易数据,第一地址包括第一区块中的第一交易地址、第二地址包括第二区块中的第二交易地址,关联信息包括后向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的交易地址。关联更新模块22还用于:通过第一区块中的第一交易地址查找得到第一区块。关联更新模块22还用于:在第一区块中确定第一交易数据的第一后向关联指针,更新第一交易数据的关联信息中的第一后向关联指针为指向第二区块中的第二交易地址。也就是说,当数据是交易数据时,数据所属的地址不仅标识交易数据所属的区块,还标识到交易数据所属的交易地址,关联更新模块22可以更直接地根据第一交易数据的关联信息,定位到第二交易数据所属的第二地址(也即,第二交易数据在区块链中的存储位置),便于更直接地实现数据追踪。
在一些可行的实施方式中,第二数据的关联信息中包括第二后向关联指针和第二前向关联指针,第二后向关联指针为空,第二前向关联指针指向第一地址。关联更新模块22还用于:当区块链节点根据第三区块携带的第三数据的关联信息确定第三数据的关联信息中的前向关联指针指向第二地址时,更新第二区块中第二数据的关联信息中的第二后向关联指针为指向第三地址,以建立第二数据与第三数据的关联。其中,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的交易地址。换言之,在区块链节点更新第二数据的后向关联指针之前,第二数据的后向关联指针为空,表示区块链中不存在由第二数据发生变化得到的数据。当区块链节点根据通过第三数据的前向关联指针确定第三数据是第二数据发生变化后得到的数据时,关联更新模块22可以更新第二数据的后向关联指针指向第三地址,进而标识第二数据发生变化后的第三数据被存储在区块链的第三地址中,实现数据的追踪。
在一些可行的实施方式中,关联更新模块22还用于:根据第一交易数据和更新后的第一交易数据的关联信息生成第一替换交易,根据第一替换交易更新第一区块,以得到更新后的第一区块。这种实施方式中,关联更新模块22可以在区块链为可编辑区块链时,利用更新后的第一交易数据的关联信息生成第一替换交易,并根据第一替换交易更新第一区块,进而利用更新后的第一区块替换更新前的第一区块,在实现数据追踪的基础上,保证区块链的完整性与安全性。
在一些可行的实施方式中,关联更新模块22还用于:根据第一替换交易得到第一替换交易的哈希值,根据第一替换交易的哈希值更新第一区块中的哈希树,以得到更新后的第一区块的哈希树,区块的哈希树用于存储区块中各交易数据的哈希值,根据更新后的第一区块的哈希树确定更新后的第一区块的哈希树的根节点值。
在一些可行的实施方式中,关联更新模块22还用于,根据更新后的第一区块的哈希树的根节点值更新第一区块的随机数和时间戳,以使得更新后的第一区块的哈希值等于第一区块的哈希值并得到更新后的第一区块。其中,任一区块的哈希值由任一区块的根节点值、随机数和时间戳计算得到。这里,为了保证区块链的完整性,关联更新模块需要更新第一区块的随机数和时间戳,使得更新后的第一区块的哈希值与第一区块的哈希值相等。也就是说,更新后的第一区块的哈希值与区块链中在第一区块之后存储的区块中记录的哈希值保持一致,保持了区块链的完整性,同时提高了区块链的安全性。
请参见图12,图12是本申请实施例提供的区块链数据管理装置的另一结构示意图。如图12所示,该装置可为上述实施例中的记账区块链节点,该装置还包括:
关联数据生成模块31,用于当接收到第一数据所属的第一地址以及由第一数据变化得到的第二数据时,记账区块链节点根据第一地址生成第二数据的关联信息。
关联数据存储模块32,用于根据第二数据的关联信息和第二数据生成第二区块并将第二区块存储至区块链。
应理解,关联数据生成模块31用于执行上述实施例中步骤S101中记账区块链节点根据第一地址和第二数据生成第二数据的关联信息的步骤。关联数据存储模块32用于执行上述实施例中步骤S101中记账区块链节点根据第二数据和第二数据的关联信息生成第二区块的步骤以及步骤S102中记账区块链节点将第二区块共享给区块链节点的步骤。
在本申请提供的实施方式中,关联数据生成模块31可以在接收到第二数据时,确定第二数据是第一数据发生变化之后得到的数据,从而将第一数据的第一地址(也即,第一数据在区块链中的存储位置)作为第二数据的关联信息。关联数据存储模块32可以将第二数据的关联信息和第二数据存储在区块链的第二区块中。由此,区块链数据管理装置(也即,记账区块链节点)可以在第二区块中标记第二数据是第一数据发生变化后得到的数据,并通过第二数据的关联信息中的第一地址查找到第一数据,进而实现数据的溯源。
在一些可行的实施方式中,关联信息包括后向关联指针和前向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的地址,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的地址。关联数据生成模块31还用于,生成第二数据的关联信息中的前向关联指针为指向第一地址,并将第二数据的关联信息中的后向关联指针设置为空(或指向一个为空的地址)。这里,关联数据生成模块可以将第二数据的前向关联指针设置为指向第一地址,进而表明第二数据是由第一地址存储的数据(也即,第一数据)发生变化得到的数据,由此通过指针指示数据之间的关联,进而更简单地实现数据的溯源。同时,记账区块链节点可以在第二区块中将第二数据的后向关联指针设置为空(或指向一个为空的地址(null)),以表示此时区块链中并没有存储第二数据发生变化后得到的数据。
在一些可行的实施方式中,数据为交易数据,第一地址包括第一区块中的第一交易地址、第二地址包括第二区块中的第二交易地址。
关联数据生成模块31还用于:生成第二交易数据的关联信息中的前向关联指针为指向第一区块中的第一交易地址。也就是说,当数据是交易数据时,数据所属的地址不仅标识交易数据所属的区块,还会标识到交易数据所属的交易地址,关联数据生成模块可以更直接地根据第二交易数据的关联信息,定位到第一交易数据所属的第一地址(也即,第一交易数据在区块链中的存储位置),便于更直接地实现数据的溯源。
请参见图13,图13是本申请实施例提供的区块链数据管理装置的另一结构示意图。如图13所示,该装置可为上述实施例中的客户端,该装置还包括:
信息获取模块41,用于获取第一数据所属的第一地址,根据第一地址查找得到第一数据的关联信息。
数据获取模块42,用于根据第一数据的关联信息确定第一数据的关联数据的地址,并根据第一数据的关联数据的地址获取第一数据的关联数据。这里,第一数据的关联数据为第一数据发生变化后得到的数据,和/或发生变化后得到第一数据的数据。
应理解,信息获取模块41用于执行上述实施例中步骤S106中客户端获取第一地址并根据第一地址在区块链中查找得到第一数据的关联信息的步骤。数据获取模块42用于执行上述实施例中步骤S107中客户端根据第一数据的关联信息确定第一数据的关联数据的地址并获取第一数据的关联数据的步骤。
在本申请提供的实施方式中,信息获取模块41可以根据第一数据的地址(也即,第一数据在区块链中的存储位置)在获取第一数据的同时获取到第一数据的关联信息,数据获取模块42进而得到第一数据的关联数据的地址并获取第一数据的关联数据。换句话说,该装置可以通过第一数据的关联信息确定第一数据是由区块链中存储的某个数据(第一数据的关联数据)发生变化得到的,也可以确定第一数据发生变化后得到的数据在区块链中的存储位置。由此,区块链数据管理装置(也即,客户端)可以根据第一数据的关联信息实现对第一数据向前追溯(也即,获取到发生变化后得到第一数据的数据)或者向后追踪(也即,获取到第一数据的关联数据为第一数据发生变化后得到的数据)。
在一些可行的实施方式中,关联信息包括后向关联指针和前向关联指针。这里,任一数据的关联信息中的后向关联指针用于指示任一数据发生变化得到的数据所属的地址,任一数据的关联信息中的前向关联指针用于指示发生变化后得到任一数据的数据所属的地址。数据获取模块42还用于,根据第一数据的后向关联指针标识的地址查找到第四数据,并确定第四数据的前向关联指针。
在一些可行的实施方式中,数据获取模块42还用于,根据第四数据的前向关联指针标识的地址对第一数据的后向关联指针进行验证。在这种实施方式中,数据获取模块可以通过第一数据的后向关联指针指向的地址得到第一数据的关联数据(也即,第四数据),并根据第四数据的前向关联指针对第一数据的后向关联指针进行验证,进而保证数据的安全性。
在一些可行的实施方式中,数据获取模块42还用于,若第四数据的前向关联指针标识的地址中包括第一地址,则确定第一数据的后向关联指针通过验证。上述数据获取模块还用于,若第四数据的前向关联指针标识的地址中不包括第一地址,则确定第一数据的后向关联指针未通过验证。在这种实施方式中,客户端可以直接通过判断第四数据前向关联指针标识的地址中是否包括第一地址进行,进而对第一数据的后向关联指针进行验证,使得验证过程更简便直观。
请参见图14,图14是本申请实施例提供的数据管理装置的一结构示意图。如图14所示,本申请实施例提供的数据管理装置可以是区块链节点,区块链节点可以是服务器或基站,该服务器或基站可以包括处理器1101、存储器1102、发射器1103、接收器1104、网络接口1107等。其中,上述处理器1101、发射器1103和接收器1104(发射器1103和接收器1104也可集成为收发器)等功能模块可通过耦合器1105与天线1106等设备进行耦合。处理器1101可结合耦合的各个功能模块执行图2、图6和图9中各个实施例所描述的区块链节点所执行的实现方式,具体可参见上述各个实施例提供的实现方式,在此不做限制。这里“耦合”是指两个部件彼此直接或间接地结合。这种结合可以是固定的或可移动性的,这种结合可以允许流动液、电、电信号或其它类型信号在两个部件之间通信。
其中,上述存储器1102用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器1102包括但不限于RAM、ROM、EPROM、或CD-ROM等,在此不做限制。此外,上述存储器1102也可以是处理器1101中的存储器,在此不做限制。
存储器1102存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
上述处理器1101控制区块链节点的操作。上述本申请实施例提供的图2、图6和图9中各个实施例揭示的由区块链节点执行的区块链数据管理的方法可以应用于处理器1101中,或者由处理器1101实现。处理器1101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1101可以是通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1102,处理器1101读取存储器1102中的信息,结合其硬件执行图2、图6和图9中各个实施例所描述的由区块链节点执行的数据管理的方法步骤。网络接口1107可选的可以包括标准的有线接口、无线接口(如WI-FI接口)等,在此不做限制。
在一些可以行的实施方式中,如图14所示,本申请实施例提供的数据管理装置可以是记账区块链节点,记账区块链节点可以是服务器或基站,该服务器或基站可以包括处理器1101、存储器1102、发射器1103、接收器1104、网络接口1107等。其中,上述处理器1101、发射器1103和接收器1104(发射器1103和接收器1104也可集成为收发器)等功能模块可通过耦合器1105与天线1106等设备进行耦合。处理器1101可结合耦合的各个功能模块执行图2和图9中各个实施例所描述的记账区块链节点所执行的实现方式,具体可参见上述各个实施例提供的实现方式,在此不做限制。这里“耦合”是指两个部件彼此直接或间接地结合。这种结合可以是固定的或可移动性的,这种结合可以允许流动液、电、电信号或其它类型信号在两个部件之间通信。
在上述数据管理装置是记账区块链节点时,上述处理器1101控制记账区块链节点的操作。上述本申请实施例提供的图2和图9中各个实施例揭示的由记账区块链节点执行的数据管理装置的方法可以应用于处理器1101中,或者由处理器1101实现。处理器1101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1101可以是通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1102,处理器1101读取存储器1102中的信息,结合其硬件执行图2和图9中各个实施例所描述的由区块链节点执行的区块链数据管理的方法步骤。网络接口1107可选的可以包括标准的有线接口、无线接口(如WI-FI接口)等,在此不做限制。
请参见图15,图15是本申请实施例提供的数据管理装置的另一结构示意图。如图15所示,本申请实施例提供的数据管理装置可以是客户端,客户端可以是服务器或基站,该服务器或基站可以包括处理器1301、存储器1302、用户接口1303、通信接口1304、耦合器1305和天线1306等功能模块。上述存储器1302用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器1302包括但不限于RAM、ROM、EPROM、或CD-ROM等,在此不做限制。此外,上述存储器1302也可以是处理器1301中的存储器,在此不做限制。
存储器1302存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
上述处理器1301控制客户端的操作,处理器1301可以是一个或多个CPU。上述本申请实施例提供的图2、图8和图9中各个实施例揭示的客户端执行的数据管理装置的方法可以应用于处理器1301中,或者由处理器1301实现。处理器1301可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1301中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1301可以是通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1302,处理器1301读取存储器1302中的信息,结合其硬件执行图2和图8中各个实施例所描述的由客户端执行的数据管理的方法步骤。
上述数据管理装置的用户接口1303主要用于为用户提供输入的接口,获取用户输入的数据。用户接口1303可包括多媒体输入和/或输出设备13031、摄像头13032以及显示器13033等等,在此不做限制。用户接口1303可以是与数据管理装置的用户进行交互的信息输入和/或输出模块,可以作为客户端的收发器,例如手机等终端的麦克风和/或喇叭,前置和/或后置摄像头以及触控屏等,在此不做限制。可选的,用户接口1303还可以包括标准的有线接口、无线接口等,在此不做限制。
数据管理装置的处理器1301可通过一个或者多个通信接口1304和耦合器1305与天线1306等设备进行耦合,结合其他功能模块执行图2、图8和图9中各个实施例所描述的客户端所执行的实现方式,具体可参见上述各个实施例提供的实现方式,在此不做限制。这里“耦合”是指两个部件彼此直接或间接地结合。这种结合可以是固定的或可移动性的,这种结合可以允许流动液、电、电信号或其它类型信号在两个部件之间通信。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在一个或多个处理器上运行时,使得在一个或多个处理器执行上述图2、图6和图9中各个实施例所描述的区块链节点所执行的实现方式,具体可参见上述各个实施例提供的实现方式,在此不再赘述。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在一个或多个处理器上运行时,使得在一个或多个处理器执行上述图2和图9中各个实施例所描述的记账区块链节点所执行的实现方式,具体可参见上述各个实施例提供的实现方式,在此不再赘述。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在一个或多个处理器上运行时,使得在一个或多个处理器执行上述图2、图8和图9中各个实施例所描述的客户端所执行的实现方式,具体可参见上述各个实施例提供的实现方式,在此不再赘述。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种区块链数据管理方法,其特征在于,所述方法包括:
根据第一地址在区块链中查找第一数据的第一关联信息,所述第一地址为所述第一数据在所述区块链中的地址;
根据所述第一数据的第一关联信息确定第二数据的第二地址;其中,所述第二数据是所述第一数据的关联数据,所述第二地址为所述第二数据在所述区块链中的地址;
根据所述第二数据的第二地址查询所述第二数据。
2.根据权利要求1所述的方法,其特征在于,所述根据第一地址在区块链中查找第一数据的第一关联信息之前,所述方法还包括:
确定所述第二数据的第二关联信息;
基于所述第二数据的第二关联信息确定所述第一数据的第一地址;
通过所述第一地址确定第一区块;以及
利用第二地址在所述第一区块中更新所述第一数据的第一关联信息以建立所述第一数据和所述第二数据之间的关联。
3.根据权利要求2所述的方法,其特征在于,所述第一关联信息包括第一后向关联指针;所述利用第二地址在所述第一区块中更新所述第一数据的第一关联信息包括:
将所述第一数据的关联信息中的第一后向关联指针设置为指向所述第二数据的第二地址。
4.根据权利要求2或3所述的方法,其特征在于,所述第一关联信息还包括第一前向关联指针,所述方法还包括:
将所述第一数据的关联信息中的第一前向关联指针设置为指向空地址。
5.根据权利要求2至4任一所述的方法,其特征在于,所述第二数据的第二关联信息包括第二前向关联指针,所述第二前向关联指针指向所述第一数据的第一地址。
6.根据权利要求2至5任一所述的方法,其特征在于,所述第二数据的第二关联信息包括第二后向关联指针,所述方法还包括:
若存在与所述第二数据关联的第三数据,则将所述第二数据的第二后向关联指针设置为指向所述第三数据的第三地址。
7.一种区块链数据管理装置,其特征在于,所述装置包括:
信息查找模块,用于根据第一地址在区块链中查找第一数据的第一关联信息,所述第一地址为所述第一数据在所述区块链中的地址;
地址确定模块,用于根据所述第一数据的第一关联信息确定第二数据的第二地址;其中,所述第二数据是所述第一数据的关联数据,所述第二地址为所述第二数据在所述区块链中的地址;
数据查询模块,用于根据所述第二数据的第二地址查询所述第二数据。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括关联设置模块,其中:
所述信息查找模块还用于,确定所述第二数据的第二关联信息;
所述地址确定模块还用于,基于所述第二数据的第二关联信息确定所述第一数据的第一地址;
所述关联设置模块,用于通过所述第一地址确定第一区块;
所述关联设置模块还用于,利用第二地址在所述第一区块中更新所述第一数据的第一关联信息以建立所述第一数据和所述第二数据之间的关联。
9.根据权利要求8所述的装置,其特征在于,所述第一关联信息包括第一后向关联指针;所述关联设置模块还用于:
将所述第一数据的关联信息中的第一后向关联指针设置为指向所述第二数据的第二地址。
10.根据权利要求8或9所述的装置,其特征在于,所述第一关联信息还包括第一前向关联指针,所述关联设置模块还用于:
将所述第一数据的关联信息中的第一前向关联指针设置为指向空地址。
11.根据权利要求8至10任一所述的装置,其特征在于,所述第二数据的第二关联信息包括第二前向关联指针,所述第二前向关联指针指向所述第一数据的第一地址。
12.根据权利要求8至11任一所述的装置,其特征在于,所述第二数据的第二关联信息包括第二后向关联指针,所述关联设置模块还用于:
若存在与所述第二数据关联的第三数据,则将所述第二数据的第二后向关联指针设置为指向所述第三数据的第三地址。
13.一种数据管理装置,其特征在于,包括:存储器、处理器和收发器,所述存储器用于存储指令,所述处理器和收发器用于与所述存储器耦合,读取并运行所述存储器中的指令,以实现如权利要求1-6中任一项所述的方法。
14.一种可读存储介质,其特征在于,用于存储程序,所述程序被一个或多个处理器执行,使得包括所述一个或多个处理器的装置执行如权利要求1-6中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110442409.9A CN115237997A (zh) | 2021-04-23 | 2021-04-23 | 区块链数据管理方法及装置 |
PCT/CN2022/074667 WO2022222568A1 (zh) | 2021-04-23 | 2022-01-28 | 区块链数据管理方法及装置 |
US18/491,549 US20240045867A1 (en) | 2021-04-23 | 2023-10-20 | Blockchain data management method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110442409.9A CN115237997A (zh) | 2021-04-23 | 2021-04-23 | 区块链数据管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237997A true CN115237997A (zh) | 2022-10-25 |
Family
ID=83666068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110442409.9A Pending CN115237997A (zh) | 2021-04-23 | 2021-04-23 | 区块链数据管理方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240045867A1 (zh) |
CN (1) | CN115237997A (zh) |
WO (1) | WO2022222568A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106357640B (zh) * | 2016-09-18 | 2019-11-08 | 江苏通付盾科技有限公司 | 基于区块链网络的身份认证方法、系统及服务器 |
CN109101607B (zh) * | 2018-08-03 | 2021-03-30 | 上海点融信息科技有限责任公司 | 用于搜索区块链数据的方法、装置及存储介质 |
CN110941673B (zh) * | 2019-11-26 | 2023-03-24 | 中国人民解放军战略支援部队信息工程大学 | 区块链数据结构及任务处理方法和装置 |
CN110990413B (zh) * | 2020-02-26 | 2020-08-18 | 台州市相闻信息技术有限公司 | 一种区块链数据存储装置及其快速存储方法 |
-
2021
- 2021-04-23 CN CN202110442409.9A patent/CN115237997A/zh active Pending
-
2022
- 2022-01-28 WO PCT/CN2022/074667 patent/WO2022222568A1/zh active Application Filing
-
2023
- 2023-10-20 US US18/491,549 patent/US20240045867A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240045867A1 (en) | 2024-02-08 |
WO2022222568A1 (zh) | 2022-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112446785B (zh) | 跨链交易方法、系统、装置、设备和存储介质 | |
US10891383B2 (en) | Validating computer resource usage | |
CN111461723B (zh) | 基于区块链的数据处理系统及方法、装置 | |
US20210083856A1 (en) | Improved hardware security module management | |
US20210099299A1 (en) | Expendable cryptographic key access | |
WO2021129062A1 (zh) | 数据查询方法、装置、设备、系统及介质 | |
US20230316273A1 (en) | Data processing method and apparatus, computer device, and storage medium | |
CN111460458B (zh) | 一种数据处理方法、相关装置及计算机可存储介质 | |
CN113271311B (zh) | 一种跨链网络中的数字身份管理方法及系统 | |
CN109656778A (zh) | 数据获取方法、装置、计算机设备和存储介质 | |
CN111178840A (zh) | 业务处理方法及装置、系统、电子设备、存储介质 | |
CN111340483A (zh) | 一种基于区块链的数据管理方法及相关设备 | |
CN111367923A (zh) | 数据处理方法、装置、节点设备及存储介质 | |
CN114239064A (zh) | 隐私计算方法、装置、电子设备及计算机可读存储介质 | |
CN111259452A (zh) | 一种基于区块链的数据管理方法以及相关装置 | |
CN112053159A (zh) | 交易数据验证方法、装置、风险控制服务器及业务服务器 | |
CN112182009A (zh) | 区块链的数据更新方法及装置、可读存储介质 | |
CN111899104B (zh) | 一种业务执行方法及装置 | |
CN113497762A (zh) | 数据报文的传输方法及装置 | |
CN115237997A (zh) | 区块链数据管理方法及装置 | |
CN113541965B (zh) | 一种基于区块链的通信授权方法、装置、设备和存储介质 | |
CN114826772A (zh) | 数据完整性验证系统 | |
CN110719163B (zh) | 一种信息处理方法、设备及存储介质 | |
CN113472781A (zh) | 一种服务获取方法、服务器及计算机可读存储介质 | |
CN112883038B (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 |