CN107451007B - 针对增加区块进行勘误的区块链的验证方法及系统 - Google Patents
针对增加区块进行勘误的区块链的验证方法及系统 Download PDFInfo
- Publication number
- CN107451007B CN107451007B CN201710425458.5A CN201710425458A CN107451007B CN 107451007 B CN107451007 B CN 107451007B CN 201710425458 A CN201710425458 A CN 201710425458A CN 107451007 B CN107451007 B CN 107451007B
- Authority
- CN
- China
- Prior art keywords
- block
- hash value
- data
- current
- chain
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Record Information Processing For Printing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种针对增加区块进行勘误的区块链的验证方法及系统,属于区块链技术领域,方法包括:将当前区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第一散列值,并与当前区块的子区块的区块头中存储的第二散列值进行比较;如果相同,则识别区块链中是否存在与当前区块对应的副本区块;如果存在,则将该副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值;如果第三散列值与副本区块的区块头中存储的第四散列值相同,则确定当前区块到其子区块之间的一致性验证通过。本发明实施例的方案,旨在通过增加区块完成勘误的情况,提供一种对该区块链进行一致性验证的方法。
Description
技术领域
本发明实施例属于区块链技术领域,尤其涉及一种针对增加区块进行勘误的区块链的验证方法及系统。
背景技术
随着互联网的不断发展,区块链技术应运而生,它是一种互联网数据库技术,具有去中心化、公开透明的特点。具体地,区块链技术的本质是去中心化且寓于分布式结构的数据存储、传输和证明的方法,用数据区块取代目前互联网对中心服务器的依赖,使得所有数据的变更或者交易项目都被同时记录在多个账本节点之上。由于没有中央控制点的分布式对等网络,并且使用分布式集体运作的方法,可以说,区块链是网络上的“公开大账本”。它存在许多节点,每个节点都可以观察到整个账本,并且共同参与维护,其收益则是获得记账的权利,并且可以复制一份完整的数据库,单个节点无法修改数据库,从而保证了账本数据的安全可靠。
当下,采用区块链技术进行数据的组织和管理已经被广泛的应用到了各种商业领域。
发明人在实现本发明的过程中,发现现有技术存在如下缺陷:
现有的区块链是沿着区块链的延展方向,依次生成新的区块,且区块之间满足一致性验证,这也是为了防止区块中的数据被恶意篡改。但是,在一些情况下,当区块链上的某个区块中的区块体数据确实存在错误,或者出于监管或政策部门的特殊需求,需要被修改更正,但如果强行对该数据进行修改,势必会导致区块链的一致性验证不通过,从而出现修改区块数据与区块链一致性验证之间的矛盾。
发明内容
本发明实施例提供一种针对增加区块进行勘误的区块链的验证方法及系统,旨在现有区块链的延展过程中,针对已形成的区块链,通过增加区块而完成勘误的情况下,提供一种对该区块链进行一致性验证的方法。
为达到上述目的,本发明实施例提供了一种针对增加区块进行勘误的区块链的验证方法,所述区块链包括一个延展区块链,或者一个所述延展区块链和至少一个与所述延展区块链链接的副本区块;所述副本区块为对所述延展区块链中原始区块的区块体数据进行勘误后生成的区块;所述副本区块的区块体数据较被勘误的所述原始区块的区块体数据,除待勘误数据被修改外,其他数据对应相同,所述验证方法包括:依据区块之间的链接关系,依次对所述延展区块链中的各区块进行如下操作:将当前区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第一散列值,并与所述当前区块的子区块的区块头中存储的第二散列值进行比较;如果所述第一散列值与所述第二散列值相同,则识别所述区块链中是否存在与所述当前区块对应的所述副本区块;如果所述区块链中存在与所述当前区块对应的所述副本区块,则将该副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值;如果所述第三散列值与所述副本区块的区块头中存储的第四散列值相同,则确定所述当前区块到其子区块之间的一致性验证通过。
本发明实施例提供了一种针对增加区块进行勘误的区块链的验证系统,所述区块链包括一个延展区块链,或者一个所述延展区块链和至少一个与所述延展区块链链接的副本区块;所述副本区块为对所述延展区块链中原始区块的区块体数据进行勘误后生成的区块;所述副本区块的区块体数据较被勘误的所述原始区块的区块体数据,除待勘误数据被修改外,其他数据对应相同,所述验证系统包括:散列值比较模块、区块识别模块、散列值计算模块和验证确定模块,所述验证系统依据区块之间的链接关系,依次对所述延展区块链中的各区块进行如下操作,其中:所述散列值比较模块,用于将当前区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第一散列值,并与所述当前区块的子区块的区块头中存储的第二散列值进行比较;所述区块识别模块,用于如果所述第一散列值与所述第二散列值相同,则识别所述区块链中是否存在与所述当前区块对应的所述副本区块;所述散列值计算模块,用于如果所述区块链中存在与所述当前区块对应的所述副本区块,则将该副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值;所述验证确定模块,用于如果所述第三散列值与所述副本区块的区块头中存储的第四散列值相同,则确定所述当前区块到其子区块之间的一致性验证通过。
本发明实施例的针对增加区块进行勘误的区块链的验证方法及系统,在对区块链中的各区块进行验证操作时,先对当前区块中的所有数据经不可逆算法得到第一散列值,并与当前区块的子区块的区块头中存储的第二散列值进行比较;如果第一散列值与第二散列值相同,则进一步从区块链中识别,是否存在与当前区块对应的副本区块;如果存在,则将该副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值,并与副本区块的区块头中存储的第四散列值进行比较;如果第三散列值与第四散列值相同,则确定当前区块到其子区块之间的一致性验证通过,从而实现针对增加区块而进行勘误的区块链的一致性验证。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
图1为本发明实施例提供的区块链的形态图一;
图2为本发明实施例提供的区块链的形态图二;
图3为本发明实施例提供的区块链的形态图三;
图4为本发明实施例提供的针对增加区块进行勘误的区块链的验证方法流程图一;
图5为本发明实施例提供的区块链的形态图四;
图6为本发明实施例提供的区块链的形态图五;
图7为本发明实施例提供的区块链的形态图六;
图8为本发明实施例提供的区块链的形态图七;
图9a为本发明实施例提供的区块链的形态图八;
图9b为本发明实施例提供的区块链的形态图九;
图10为本发明实施例提供的针对增加区块进行勘误的区块链的验证方法流程图二;
图11为本发明实施例提供的针对增加区块进行勘误的区块链的验证系统示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
首先需要说明的是,本发明实施例将提供一种针对增加区块进行勘误的区块链的验证方法,以对通过增加区块对区块链进行勘误更正的情况下,提供针对该区块链的数据的验证方法。所谓增加区块进行勘误是指针对位于延展区块链中每一个被勘误的区块,其对应的副本区块中包含了勘误结果数据,并且这些副本区块以单链条串行、并行等方式链接在延展区块链。本方案则是提供了一种针对以增加区块进行勘误的方式而形成的区块链的验证方法。具体通过依据区块之间的链接关系,依次对延展区块链中的各区块进行如下操作:将当前区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第一散列值,并与当前区块的子区块的区块头中存储的第二散列值进行比较;如果第一散列值与第二散列值相同,则识别区块链中是否存在与当前区块对应的副本区块;如果存在,则将该副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值;如果第三散列值与副本区块的区块头中存储的第四散列值相同,则确定当前区块到其子区块之间的一致性验证通过。这里所述的区块体数据可理解为作为实际交易数据的信息,区块头数据中包含由当前区块的父区块的所有数据经不可逆算法生成的固定长度的字符串即散列值,以及与当前区块相关的控制信息,区块体数据和区块头数据构成一个区块的完整数据。
其次需要说明的是,本发明实施例中的区块链中各区块的区块体数据记载的交易信息不局限于商业中的“账本”或“金融交易”的信息,也可以广义的理解为是需要通过区块链这种数据组织形式管理的多样化的对象数据,如针对企业进行管理的企业管理数据,针对项目进行进展跟踪的项目进程管理数据等。本发明实施例中,对区块链本身的形态及延展方向不做限定,只是在区块链正常延展的过程中,对通过增加区块进行勘误的区块链,提供一种对该区块链进行验证的方法。例如,区块链的延展形态可以为如图1所示的传统的单链条的区块链,也可以是如图2所示的整体上呈树形结构的区块链(该区块链中每个区块只有一个父区块,并有一个或多个子区块),还可以是如图3所示的具有有向无环图型结构的区块链(该区块链中存在至少一个区块具有一个或多个父区块)。
以下将对本发明实施例的针对增加区块进行勘误的区块链的验证方法进行详细阐述。
实施例一
图4为本发明实施例提供的针对增加区块进行勘误的区块链的验证方法流程图一,本方法的执行主体可以为具有数据处理功能的系统,包括终端和/或服务器。本发明实施例中的区块链涉及以下几个概念:延展区块链、原始区块和副本区块。
延展区块链:当为新产生的数据生成新区块时,该新区块在整个区块链中所链接的部分区块链称之为延展区块链,延展区块链中的各区块称为原始区块。本实施例中,一个完整的区块链可包括一个延展区块链,或者一个延展区块链和至少一个与延展区块链链接的副本区块。这些副本区块只是起到对延展区块链中的区块的区块体数据进行勘误更正的目的,不视为为新产生的数据生成的新区块。所述副本区块的区块体数据较被勘误的原始区块的区块体数据,除待勘误数据被修改外,其他数据对应相同。
上述区块链中区块的区块体数据可存储于一数据表中,该数据表中包括多条数据记录,每条数据记录对应存储区块链中不同位置处的区块体数据。
其中,数据表中可包括多条由关联存储的第一数据在区块链中的位置信息和第一数据的内容构成的第一数据记录,该数据表中的所有第一数据的内容构成了区块链中所有原始区块的区块体数据;
数据表中还包括多条由关联存储的第二数据在区块链中的位置信息和第二数据的内容构成的第二数据记录,该数据表中的所有第二数据的内容构成了区块链中所有副本区块的区块体数据。
数据表中的第一数据记录和第二数据记录中数据组织形式是相同的,区别仅在于:第一数据记录用于存储区块链中原始区块的区块体数据,第二数据记录用于存储区块链中副本区块的区块体数据。原始区块与对该原始区块的区块体数据进行勘误后所形成的副本区块之间具有关联关系,该关联关系可在第一数据记录和/或第二数据记录中通过增加标识信息来体现,例如,在第二数据记录中添加被勘误的第一数据在延展区块链中的位置信息。
为了方便描述区块链中各区块的区块体数据在数据表中的存储状态,首先对区块链中区块(这里原始区块和副本区块不做区分)的区块体数据进行如下简单说明。本实施例将区块链中各区块的区块体数据划分为了多个数据条目,每个数据条目内独立的包含一条交易信息,并且对应一个数据ID,例如图5所示,其示出了区块链中区块的区块体数据的存在形式,即每个区块的区块体数据中可以包括多条数据条目。图5中,由Block1、Block2和block3……构成的区块链中,位于区块Block2中的tx01:olddata,作为一个数据条目,其数据ID为tx01,交易信息为olddata(olddata泛指区块链中还没有被勘误的原始交易信息)。实际上,上述第一数据、第二数据可以是区块体数据中的一条或者多条数据条目对应的交易信息。为了便于后续方法内容的说明,这里的一条第一数据或一条第二数据对应于区块链中的一条数据条目。
当区块链管理者需要对区块链中区块的区块体数据进行勘误时,可向系统输入待勘误的第一数据在区块链中的位置信息,该位置信息具体可以是第一数据所在的区块的编号(区块链中各区块的编号唯一确定,如图5中的“Block1”、“Block2”、“Block3”、均可作为区块的编号),以及该第一数据在区块的区块体数据中的数据ID(如图5中的“tx01”)。通过锁定第一数据在区块链中所在的区块编号,以及在该区块的区块体数据中的数据ID就可以唯一确定一个数据条目及其包含的交易信息。因此,这里需要说明的是,针对某个数据条目中的交易信息进行勘误是在决定进行数据勘误时就已经确定的,而在具体执行数据勘误时,只需要锁定被勘误数据即第一数据在区块链中的位置信息即可,而不必再向系统明确输入第一数据的具体内容。
所述的第二数据,是指第一数据被勘误后的数据,即用于替换第一数据所对应的那部分数据。在向系统输入的数据勘误请求中包括两部分内容,即:待勘误的第一数据在延展区块链中的位置信息,以及对第一数据进行勘误后的第二数据。
在实际应用场景中,区块链管理者可能会向系统一次性输入多条交易信息在区块链中的位置信息,以及对这些交易信息进行勘误后的结果信息,系统会根据这些交易信息在区块链中的位置信息,分析其所对应的信息条目,从而以信息条目为单位,将其视为多个数据勘误请求进行处理,即每个数据勘误请求中只包含针对一个数据条目的数据勘误请求。
本实施例中,在对区块链中的区块体数据进行勘误的方式是通过增加副本区块实现对原始区块的区块体数据进行勘误更正。如图6、图7、图8示出了三种通过增加区块数目而实现勘误所形成的区块链的形态图。
基于上述对区块链中区块的区块体数据的存在状态,能够清楚说明数据表中第一数据记录和第二数据记录的意义。
表1为对应于图6或图7的数据表的具体内容。
表1数据表
数据ID | 第一数据 | 第二数据 | 区块编号 | …… |
tx01 | olddata1 | (空) | Block2 ver:1.0 | …… |
tx02 | olddata2 | (空) | Block2 ver:1.0 | …… |
tx01 | (空) | newdata1 | Block2 ver:2.0 | …… |
tx02 | olddata2 | (空) | Block2 ver:2.0 | |
tx01 | (空) | newdata1 | Block2 ver:3.0 | …… |
tx02 | (空) | newdata2 | Block2 ver:3.0 | …… |
…… | …… | …… | …… | …… |
表1中,包含第一数据的记录记为第一数据记录,包含第二数据的记录记为第二数据记录。图6或图7中,延展区块链中的区块“Block2”中的数据ID分别为“tx01”、和“tx02”的数据分别在副本区块“Block2(ver2.0)”以及副本区块“Block2(ver3.0)”中被勘误。本实施例中,在区块链对应的区块数据表中,可默认为延展区块链中的各原始区块的版本号为ver1.0,则可将原区块编号+版本号作为最终的区块编号,例如,原始区块的区块编号:“Block2(ver1.0)”,副本区块的区块编号:“Block2(ver2.0)”、“Block2(ver3.0)”。
表2为对应于图8的数据表的具体内容。
表2数据表
数据ID | 第一数据 | 第二数据 | 区块编号 | …… |
tx01 | olddata1 | (空) | Block2 ver:1.0 | …… |
tx02 | olddata2 | (空) | Block2 ver:1.0 | …… |
tx01 | (空) | newdata1 | Block2 ver:2.0 | …… |
tx02 | olddata2 | (空) | Block2 ver:2.0 | …… |
tx01 | (空) | newdata1 | Block2 ver:3.0 | …… |
tx02 | (空) | newdata2 | Block2 ver:3.0 | …… |
…… | …… | …… | …… | …… |
图8相对图7的区别仅在于,延展区块链中的区块“Block2”中的数据ID分别为“tx01”、和“tx02”的数据在副本区块“Block2(ver2.0)”以及副本区块“Block2(ver3.0)”中被勘误,并且后一个高版本的区块包含了其之前的副本区块中的所有勘误数据。
由图6、图7、图8也可以看出每个被勘误的原始区块,其对应的副本区块至少为一个。
另外,在具体应用场景中,还可能存在针对一原始区块的同一第一数据进行多次勘误的情况,每次勘误均会对应生成一个更高版本的副本区块,如图9a和9b所示,其为针对原始区块Block2(ver1.0)中数据ID为tx01的第一数据进行多次勘误后所形成的区块链,其中,Block2(ver2.0)为对该第一数据进行第一次勘误后所形成的副本区块,Block2(ver3.0)为对该第一数据进行第二次勘误后所形成的副本区块。
如图4所示,该针对增加区块进行勘误的区块链的验证方法包括依据区块之间的链接关系,依次对延展区块链中的各区块进行如下步骤的操作:
S410,将当前区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第一散列值,并与当前区块的子区块的区块头中存储的第二散列值进行比较;
在区块链延展生成新区块的过程中,是将前一区块的所有数据,包括区块头数据和区块体数据,经不可逆算法生成固定长度的字符串作为散列值,添加到后一区块的区块头中。如果要保证前一区块到后一区块的逻辑链接关系正确,必要条件是前一区块的区块体数据不被篡改。这也是验证区块链一致性的基本逻辑。
本步骤中的第一散列值,为对当前区块的区块头数据和区块体数据经上述不可逆算法生成的固定长度的字符串;第二散列值,为在区块延展过程中,生成当前区块的子区块时,对当前区块的区块头数据和区块体数据经同样的不可逆算法生成的固定长度的字符串,并且存在该子区块的区块头中。如果当前区块的数据(特别是区块体数据)没有被篡改,那么原则上第一散列值和第二散列值应该是相等的。如果不相同,则表征区块体数据被篡改(本实施例中默认区块头数据是不会被修改的)。
这里需要说明的是,针对图2和图3所示的区块链的形态图中,可能存在一个区块具有多个父区块的情况,相应的,该区块的区块头中会同时存储有多个第二散列值,且这些第二散列值分别对应于一个父区块,因此,本步骤中的,第一散列值与第二散列值相等的情况也包含:第一散列值与多个并存的第二散列值中的一个第二散列值相等的情况。
S420,如果第一散列值与第二散列值相同,则识别区块链中是否存在与当前区块对应的副本区块;
第一散列值与第二散列值相同,仅满足了当前区块到其子区块之间一致性的初步验证要求,此时还要进一步地识别区块链中是否存在与当前区块关联的副本区块,如果存在还要对该副本区块的一致性进行进一步验证;具体地,可以在数据表中该区块的区块体数据对应的第一数据记录中查找当前区块是否存在对应的副本区块。
S430,如果区块链中存在与当前区块对应的副本区块,则将该副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值;
S440,如果第三散列值与副本区块的区块头中存储的第四散列值相同,则确定当前区块到其子区块之间的一致性验证通过。
在区块链延展生成新区块的过程中,是将前一区块的所有数据,包括区块头数据和区块体数据,经不可逆算法生成固定长度的字符串作为散列值,添加到后一区块的区块头中。如果要保证前一区块到后一区块的逻辑链接关系正确,必要条件是前一区块的区块体数据不被篡改。这也是验证区块链一致性的基本逻辑。
本步骤中的第三散列值,为对当前区块对应的副本区块的父区块的区块头数据和区块体数据经上述不可逆算法生成的固定长度的字符串;第四散列值,为在区块延展过程中,生成当前副本区块时,对该副本区块的父区块的区块头数据和区块体数据经同样的不可逆算法生成的固定长度的字符串,并且存在该副本区块的区块头中。如果当前副本区块的数据(特别是区块体数据)没有被篡改,那么原则上第三散列值和第四散列值应该是相等的。如果不相同,则表征区块体数据被篡改(本实施例中默认区块头数据是不会被修改的)。
这里需要说明的是,被勘误的原始区块可能存在多个副本区块,此时需要分别计算各副本区块的父区块对应的第三散列值,并对应的与副本区块中存储的第四散列值进行比较,如果全部对应相同,则才确定第三散列值与第四散列值相同,否则确定第三散列值与第四散列值不同。如果第三散列值与第四散列值相同,则说明原始区块所对应的各副本区块也满足区块链的一致性验证,此时可以确定当前的原始区块到其子区块之间的一致性验证通过。
本发明实施例的针对增加区块进行勘误的区块链的验证方法,在对区块链中的各区块进行验证操作时,先对当前区块中的所有数据经不可逆算法得到第一散列值,并与当前区块的子区块的区块头中存储的第二散列值进行比较;如果第一散列值与第二散列值相同,则进一步从区块链中识别,是否存在与当前区块对应的副本区块;如果存在,则将该副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值,并与副本区块的区块头中存储的第四散列值进行比较;如果第三散列值与第四散列值相同,则确定当前区块到其子区块之间的一致性验证通过,从而实现针对增加区块而进行勘误的区块链的一致性验证。
实施例二
图10为本发明实施例提供的针对增加区块进行勘误的区块链的验证方法流程图二,该方法实施例可视为对图4所示方法步骤的进一步细化方案,如图10所示,该针对增加区块进行勘误的区块链的验证方法包括依据区块之间的链接关系,依次对延展区块链中的各区块进行如下步骤的操作:
S101,将当前区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第一散列值,并与当前区块的子区块的区块头中存储的第二散列值进行比较;
如果第一散列值与第二散列值相同,则执行步骤S102,否则执行S106;
S102,识别区块链中是否存在与当前区块对应的副本区块;步骤S102与步骤S420的内容相同;
在步骤S102之后,如果在区块链中,识别出存在与当前区块对应的副本区块,则执行步骤S103,否则执行S105;
S103,将副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值;
步骤S104,比较第三散列值与副本区块的区块头中存储的第四散列值是否相同;如果相同则执行S105,如果不同,则执行S106。
S105,确定当前区块到其子区块之间的一致性验证通过;
S106,确定当前区块到其子区块之间的一致性验证未通过。
本发明实施例的针对增加区块进行勘误的区块链的验证方法,在图4所示实施例的基础上,对当前区块到其子区块的一致性验证是否通过的情况进行了进一步的补充和完善,提高了区块链一致性验证的准确性。
实施例三
图11为本发明实施例提供的针对增加区块进行勘误的区块链的验证系统示意图,可用于执行如图4所示的方法步骤。其中,所述区块链包括一个延展区块链,或者一个延展区块链和至少一个与延展区块链链接的副本区块;所述副本区块为对延展区块链中原始区块的区块体数据进行勘误后生成的区块;副本区块的区块体数据较被勘误的原始区块的区块体数据,除待勘误数据被修改外,其他数据对应相同,
所述验证系统包括:散列值比较模块111、区块识别模块112、散列值计算模块113和验证确定模块114,所述验证系统依据区块之间的链接关系,依次对延展区块链中的各区块进行如下操作,其中:
散列值比较模块111,用于将当前区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第一散列值,并与当前区块的子区块的区块头中存储的第二散列值进行比较;区块识别模块112,用于如果第一散列值与第二散列值相同,则识别区块链中是否存在与当前区块对应的副本区块;散列值计算模块113,用于如果区块链中存在与当前区块对应的副本区块,则将该副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值;验证确定模块114,用于如果第三散列值与副本区块的区块头中存储的第四散列值相同,则确定当前区块到其子区块之间的一致性验证通过。
进一步地,上述验证确定模块114还可用于,如果第一散列值与第二散列值不同,则确定当前区块到其子区块之间的一致性验证未通过。
进一步地,上述验证确定模块114还可用于,如果第一散列值与第二散列值相同,且识别出区块链中不存在与当前区块对应的副本区块,则确定当前区块到其子区块之间的一致性验证通过。
进一步地,上述验证确定模块114还可用于,如果第三散列值与第四散列值不同,则确定当前区块到其子区块之间的一致性验证未通过。
进一步地,上述被勘误的原始区块,其对应的副本区块至少为一个。
细化后的系统可用于执行如图10所示的方法步骤。
本发明实施例的针对增加区块进行勘误的区块链的验证系统,在对区块链中的各区块进行验证操作时,先对当前区块中的所有数据经不可逆算法得到第一散列值,并与当前区块的子区块的区块头中存储的第二散列值进行比较;如果第一散列值与第二散列值相同,则进一步从区块链中识别,是否存在与当前区块对应的副本区块;如果存在,则将该副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值,并与副本区块的区块头中存储的第四散列值进行比较;如果第三散列值与第四散列值相同,则确定当前区块到其子区块之间的一致性验证通过,从而实现针对增加区块而进行勘误的区块链的一致性验证。
进一步地,本实施例中的细化内容中,还对当前区块到其子区块的一致性验证是否通过的情况进行了进一步的补充和完善,提高了区块链一致性验证的准确性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种针对增加区块进行勘误的区块链的验证方法,其特征在于,所述区块链包括一个延展区块链,或者一个所述延展区块链和至少一个与所述延展区块链链接的副本区块;所述副本区块为对所述延展区块链中原始区块的区块体数据进行勘误后生成的区块;所述副本区块的区块体数据较被勘误的所述原始区块的区块体数据,除待勘误数据被修改外,其他数据对应相同,
所述验证方法包括:
依据区块之间的链接关系,依次对所述延展区块链中的各区块进行如下操作:
将当前区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第一散列值,并与所述当前区块的子区块的区块头中存储的第二散列值进行比较;
如果所述第一散列值与所述第二散列值相同,则识别所述区块链中是否存在与所述当前区块对应的所述副本区块;
如果所述区块链中存在与所述当前区块对应的所述副本区块,则将该副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值,并与所述副本区块的区块头中存储的第四散列值进行比较;
如果所述第三散列值与所述副本区块的区块头中存储的第四散列值相同,则确定所述当前区块到其子区块之间的一致性验证通过。
2.根据权利要求1所述的验证方法,其特征在于,所述方法还包括:
如果所述第一散列值与所述第二散列值不同,则确定所述当前区块到其子区块之间的一致性验证未通过。
3.根据权利要求1所述的验证方法,其特征在于,所述方法还包括:
如果所述第一散列值与所述第二散列值相同,且识别出所述区块链中不存在与所述当前区块对应的所述副本区块,则确定所述当前区块到其子区块之间的一致性验证通过。
4.根据权利要求1所述的验证方法,其特征在于,所述方法还包括:
如果所述第三散列值与所述第四散列值不同,则确定所述当前区块到其子区块之间的一致性验证未通过。
5.根据权利要求1-4中任一项所述的验证方法,其特征在于,被勘误的所述原始区块,其对应的所述副本区块至少为一个。
6.一种针对增加区块进行勘误的区块链的验证系统,其特征在于,所述区块链包括一个延展区块链,或者一个所述延展区块链和至少一个与所述延展区块链链接的副本区块;所述副本区块为对所述延展区块链中原始区块的区块体数据进行勘误后生成的区块;所述副本区块的区块体数据较被勘误的所述原始区块的区块体数据,除待勘误数据被修改外,其他数据对应相同,
所述验证系统包括:散列值比较模块、区块识别模块、散列值计算模块和验证确定模块,所述验证系统依据区块之间的链接关系,依次对所述延展区块链中的各区块进行如下操作,其中:
所述散列值比较模块,用于将当前区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第一散列值,并与所述当前区块的子区块的区块头中存储的第二散列值进行比较;
所述区块识别模块,用于如果所述第一散列值与所述第二散列值相同,则识别所述区块链中是否存在与所述当前区块对应的所述副本区块;
所述散列值计算模块,用于如果所述区块链中存在与所述当前区块对应的所述副本区块,则将该副本区块的父区块的区块头数据和区块体数据经不可逆算法生成固定长度的字符串作为第三散列值;
所述验证确定模块,用于如果所述第三散列值与所述副本区块的区块头中存储的第四散列值相同,则确定所述当前区块到其子区块之间的一致性验证通过。
7.根据权利要求6所述的验证系统,其特征在于,所述验证确定模块还用于,
如果所述第一散列值与所述第二散列值不同,则确定所述当前区块到其子区块之间的一致性验证未通过。
8.根据权利要求6所述的验证系统,其特征在于,所述验证确定模块还用于,
如果所述第一散列值与所述第二散列值相同,且识别出所述区块链中不存在与所述当前区块对应的所述副本区块,则确定所述当前区块到其子区块之间的一致性验证通过。
9.根据权利要求6所述的验证系统,其特征在于,所述验证确定模块还用于,
如果所述第三散列值与所述第四散列值不同,则确定所述当前区块到其子区块之间的一致性验证未通过。
10.根据权利要求6-9中任一项所述的验证系统,其特征在于,被勘误的所述原始区块,其对应的所述副本区块至少为一个。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710181088 | 2017-03-24 | ||
CN2017101810885 | 2017-03-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107451007A CN107451007A (zh) | 2017-12-08 |
CN107451007B true CN107451007B (zh) | 2020-11-06 |
Family
ID=60486801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710425458.5A Expired - Fee Related CN107451007B (zh) | 2017-03-24 | 2017-06-08 | 针对增加区块进行勘误的区块链的验证方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107451007B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108462582B (zh) * | 2018-02-09 | 2020-03-27 | 北京欧链科技有限公司 | 区块链中的反馈处理方法和装置 |
US10754989B2 (en) * | 2018-03-27 | 2020-08-25 | International Business Machines Corporation | Runtime self-correction for blockchain ledgers |
CN109409855B (zh) * | 2018-10-29 | 2022-03-22 | 合肥学院 | 一种元区块及其生成、识别、过滤方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912618A (zh) * | 2016-04-07 | 2016-08-31 | 浙江万马新能源有限公司 | 基于区块链的充电桩充电交易通讯方法及装置 |
CN106250721A (zh) * | 2016-07-28 | 2016-12-21 | 杭州云象网络技术有限公司 | 一种基于区块链的电子版权保护方法 |
CN106415530A (zh) * | 2013-11-19 | 2017-02-15 | 日出科技集团有限责任公司 | 区块挖掘方法和装置 |
CN106506467A (zh) * | 2016-10-31 | 2017-03-15 | 国云科技股份有限公司 | 一种基于区块链的身份证明记录方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10484168B2 (en) * | 2015-03-02 | 2019-11-19 | Dell Products L.P. | Methods and systems for obfuscating data and computations defined in a secure distributed transaction ledger |
-
2017
- 2017-06-08 CN CN201710425458.5A patent/CN107451007B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106415530A (zh) * | 2013-11-19 | 2017-02-15 | 日出科技集团有限责任公司 | 区块挖掘方法和装置 |
CN105912618A (zh) * | 2016-04-07 | 2016-08-31 | 浙江万马新能源有限公司 | 基于区块链的充电桩充电交易通讯方法及装置 |
CN106250721A (zh) * | 2016-07-28 | 2016-12-21 | 杭州云象网络技术有限公司 | 一种基于区块链的电子版权保护方法 |
CN106506467A (zh) * | 2016-10-31 | 2017-03-15 | 国云科技股份有限公司 | 一种基于区块链的身份证明记录方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107451007A (zh) | 2017-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391291B (zh) | 修改区块链即有区块体数据的区块链勘误方法及系统 | |
CN107463597B (zh) | 针对修改区块体数据的区块链的被动验证方法及系统 | |
KR102424841B1 (ko) | 스마트 계약 시스템에서 블록체인을 생성하고 무결성을 검증하는 방법 | |
CN107391292B (zh) | 针对保持区块体数据实现勘误的区块链验证方法及系统 | |
Thin et al. | Formal analysis of a proof-of-stake blockchain | |
CN107918865B (zh) | 保单数据批改处理方法、装置、服务器和存储介质 | |
CN107391557B (zh) | 针对设置链外勘误表的区块链串行查询方法及系统 | |
CN107423163B (zh) | 整体串行增加区块的区块链的勘误方法及系统 | |
EP3678346A1 (en) | Blockchain smart contract verification method and apparatus, and storage medium | |
US7941709B1 (en) | Fast connectivity recovery for a partitioned namespace | |
CN113329031A (zh) | 一种区块的状态树的生成方法及装置 | |
US10387236B2 (en) | Processing data errors for a data processing system | |
CN107451007B (zh) | 针对增加区块进行勘误的区块链的验证方法及系统 | |
CN109194646B (zh) | 一种基于区块链的安全认证数据存取方法 | |
CN107451177B (zh) | 针对增加区块的单个勘误的区块链的查询方法及系统 | |
CN107463596B (zh) | 针对设置链外勘误表的区块链并行查询方法及系统 | |
US20200110905A1 (en) | Security hardened software footprint in a computing environment | |
CN110555770A (zh) | 一种基于增量哈希的区块链世界状态校验和恢复方法 | |
CN107451002B (zh) | 针对修改区块体数据的区块链的主动验证方法及系统 | |
CN107451011B (zh) | 并行增加区块的区块链的勘误方法及系统 | |
CN112115098A (zh) | 一种基于HyperLedger和IPFS的溯源系统 | |
CN115237444A (zh) | 基于版本号的并发控制方法、装置、设备及存储介质 | |
CN107426293B (zh) | 单个串行增加区块的区块链的勘误方法及系统 | |
CN112015826B (zh) | 基于区块链的智能合约安全性检测方法及相关设备 | |
JP2018106700A (ja) | リアルタイムで監査可能なクラウドアクセス方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201106 |
|
CF01 | Termination of patent right due to non-payment of annual fee |