CN111695885B - 基于减小交易输入的数字凭证区块链压缩方法 - Google Patents
基于减小交易输入的数字凭证区块链压缩方法 Download PDFInfo
- Publication number
- CN111695885B CN111695885B CN201910195612.3A CN201910195612A CN111695885B CN 111695885 B CN111695885 B CN 111695885B CN 201910195612 A CN201910195612 A CN 201910195612A CN 111695885 B CN111695885 B CN 111695885B
- Authority
- CN
- China
- Prior art keywords
- transaction
- hash
- pointer
- blockchain
- block
- 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
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/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- 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/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
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本公开提供了一种基于减小交易输入的数字凭证区块链压缩方法,包括:对全节点的区块链数据进行压缩,通过交易输入的索引指针替换交易输入的哈希指针,压缩区块链中交易大小,得到压缩数据。本公开采用索引指针替换交易输入中的哈希指针,压缩了交易大小,因此在区块传输时,可减少数据传输量;同时,对于数字凭证区块链中的全节点,可以应用本公开减小本地区块链数据所需的存储空间。
Description
技术领域
本公开涉及区块链技术领域,尤其涉及一种基于减小交易输入的数字凭证区块链压缩方法。
背景技术
区块链技术在数据存储上具有去中心化、集体维护、信息不可篡改、无需信任的优点。数字凭证技术采用区块链技术实现分布式共识并防止双重支付,区块链由一组具有共识协议(工作量证明,股权证明和股权授权证明)的节点维护,每个全节点保留整个区块链的本地副本,因此,每个节点都可以访问历史信息,完成搜索交易和计算余额。然而,随着区块链包含的数据的数量逐渐增加,其所需的存储空间不断增大。例如,完整的某数字凭证区块由区块头和区块体组成,其中,区块头占80个字节并包含区块的基本信息,例如版本号,前一个区块的区块头哈希值,Merkle根哈希,时间戳,目标值和随机数;区块体包括交易数据。该些交易数据用于构建Merkle树,Merkle树的数根存储在块头中。每笔交易都由发送者使用数字签名进行签名,从而确保交易无法伪造。一笔交易包括若干交易输入和若干交易输出。交易的每个输入对应于某一先前笔交易的输出,用哈希指针表示,占32字节,称为previous tx hash。由于每个交易至少有一个输入,因此哈希指针占用区块中的大量空间。
由此可知,随着数据量逐渐增加,公共区块链系统需要大量存储空间。数字凭证区块链体积过大已被强调为可扩展性问题,繁重的存储负载会增加全节点的成本,使得全节点的数量减少,最终导致区块链由较少的全节点控制,这与其去中心化的思想相矛盾。因此亟需一种方法减少数字凭证区块链的存储空间。
发明内容
(一)要解决的技术问题
本公开提供了一种基于减小交易输入的数字凭证区块链压缩方法,以至少部分解决以上所提出的技术问题。
(二)技术方案
根据本公开的一个方面,提供了一种基于减小交易输入的数字凭证区块链压缩方法,包括:对全节点的区块链数据进行压缩,通过交易输入的索引指针替换交易输入的哈希指针,压缩区块链中交易大小,得到压缩数据。
在一些实施例中,所述索引指针包括:区块高度,所述区块高度表示包含由所述交易输入的哈希指针引用的某一先前交易的区块的高度;交易索引,所述交易索引是由所述交易输入的哈希指针引用的某一先前交易在区块中的位置。
在一些实施例中,初始区块的区块高度为零,且初始币交易的位置用0表示。
在一些实施例中,所述区块高度所占空间为20-24bit,所述交易索引所占空间为16-20bit,所述索引指针所占空间为36-44bit。
在一些实施例中,所述的数字凭证区块链压缩方法包括:
S101,将区块A[i]复制到B[i],对于A[i](i∈(0,L-1))中的每笔交易tx,执行S102,S103,S104步骤;
S102,对于tx的每个交易输入t,执行S103,S104步骤;
S103,采用交易输入t的哈希指针作为函数INQ(hash,A)的参数hash,通过INQ(hash,A)函数得到先前交易在区块链A中的区块高度和交易索引,作为交易输入t的索引指针t.X;
S104,执行函数REP(B[i],hash,X),采用交易输入t的索引指针t.X替换在B[i]中交易输入t哈希指针hash;
S105,得到压缩后的数字凭证区块链B;
其中,A表示数字凭证区块链,A包含L个区块,A[i]是高度为i的区块;B表述压缩后的数字凭证区块链,B[i]是区块链B中高度为i的区块;函数INQ(hash,A)中,hash为交易输入的哈希指针;函数REP(B[i],hash,X)中,X为交易输入的索引指针,函数REP(B[i],hash,X)表示在B[i]中用索引指针X替换哈希指针hash。
在一些实施例中,解压过程包括:从第一个区块开始到最后一个区块,对于区块链中的每笔交易的每个输入t,通过索引指针t.X找出其对应的交易,然后计算该交易的哈希值作为哈希指针,并用得到的所述哈希指针替换所述索引指针t.X。
在一些实施例中,所述述解压的方法包括:
S201,将区块E[i]复制到F[i],从i=0至i=L-1,对于E[i]中的每笔交易tx,执行步骤S202,S203,S204;
S202,对于每笔交易tx的每个交易输入t,执行步骤S203,S204;
S203,通过函数FIND(t.X,E)得到在区块链E中的索引指针t.X指示的某一先前交易T;并通过SHA256(SHA256(T))计算得到某一先前交易T的哈希值作为哈希指针hash;
S204,执行REPL(F[i],X,hash),在F[i]中用所述哈希指针hash替换交易输入t的索引指针t.X;
S205,得到解压后的数字凭证区块链F;
其中,E表示压缩后的数字凭证区块链,E包含L个区块,t.X表示交易输入t的索引指针;F表述解压后的数字凭证区块链,F[i]是区块链F中高度为i的区块;函数FIND(t.X,E)返回在压缩区块链E中的索引指针t.X指示的某一先前交易T的内容;函数SHA256(SHA256(T))用于计算得到某一先前交易T的哈希值;函数REPL(F[i],X,hash)中,hash为用于替换的哈希指针,X为待替换的索引指针,REPL(F[i],X,hash)表示在F[i]中用哈希指针hash替换索引指针X。
在一些实施例中,当新的空白节点B加入网络时,该节点将从另一个全节点F下载数据,在所述全节点F发送数据时,采用上述的压缩方法来减小区块链数据的大小;当B接收到压缩数据时,该节点采用上述的解压方法解压数据以获得完整区块链数据。
在一些实施例中,对本地压缩区块链中任意一笔交易C,计算交易C的哈希值采用函数CAL(C)表示,包括:
S301,对于压缩的交易C的每个交易输入t,执行S302,S303步骤;
S302,采用交易输入t的索引指针t.X,通过函数FIND(t.X)返回在本地压缩区块链中的索引指针t.X指示的某一先前交易T;通过CAL(T)计算某一先前交易T的哈希指针hash;其中交易C的输入t为某一先前交易T的某一输出;
S303,通过函数REPL(C,X,hash)在交易C中,用哈希指针hash替换交易输入t的索引指针t.X;
S304,通过SHA256(SHA256(C))得到交易C的交易哈希值D;
其中,函数FIND(t.X)返回在本地压缩区块链中由索引指针t.X指示的某一先前交易T的内容;函数REPL(C,X,hash)中C为交易,hash为用于替换的哈希指针,X为待替换的索引指针,REPL(C,X,hash)表示在交易C中用哈希指针hash替换索引指针X,得到解压后的交易C;函数SHA256(SHA256(C))用于计算解压后的交易C的哈希值。
在一些实施例中,SPV验证过程包括:
全节点F维护一个交易池和一个未花费的交易输出集,其上述压缩方法来减少所需的区块链存储空间,并通过本地信息验证新交易和区块;SPV节点采用以下方法从全节点F请求信息来验证交易:
SPV节点获取来自全节点的特定信息来验证交易,该特定信息包括连接该笔交易与区块头中Merkle根哈希的Merkle分支,其中通过上述任意一笔交易C哈希值计算方法计算每个交易的哈希指针以构建Merkle分支,且不替换最近区块中的先前交易哈希;
SPV节点利用Merkle分支计算Merkle根哈希,并将其与块头中的Merkle根哈希进行比较,以定位该笔交易所在的区块;
当该区块位于主链中且深度至少为6时,该交易确认为有效。
(三)有益效果
从上述技术方案可以看出,本公开基于减小交易输入的数字凭证区块链压缩方法至少具有以下有益效果其中之一:
(1)采用索引指针替换交易输入中的哈希指针,压缩了交易大小,因此在区块传输时,可减少数据传输量;
(2)对于数字凭证区块链中的全节点,可以应用本公开减小本地区块链数据所需的存储空间。
附图说明
图1为本公开实施例当新的空白节点加入网络时,区块链数据压缩及传输过程的示意图。
图2为本实施依据本地信息完成新交易和区块的验证过程的示意图。
具体实施方式
本公开提供了一种基于减小交易输入的数字凭证区块链压缩方法,通过用索引指针替换交易输入中哈希指针,来压缩数字凭证区块链中交易大小,即利用区块高度和交易索引组成的索引指针代替交易输入中的哈希指针。当新的空白节点加入网络时,全节点应用该压缩算法对区块链数据压缩然后进行传输,可以减小数据传输量,空白节点接收到数据后进行解压便可得到完整区块链数据。全节点也可以应用该方法减小本地区块链数据所需的存储空间,并依据本地信息完成新交易和区块的验证。
在描述问题的解决方案之前,先定义一些特定词汇的定义是有帮助的。
交易哈希,即区块体内每笔交易的哈希值,用于构建Merkle树;
Merkle树,每个交易哈希对应一个叶子节点,将相邻两个哈希值合并成字符串再进行哈希,直至得到顶部的一个节点,即Merkle根哈希。
SPV(Simplified Payment Verification),即简单支付验证,找到需验证的交易所在的区块,并确认该交易被6次确认过。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
本公开某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本公开的各种实施例可以由许多不同形式实现,而不应被解释为限于此处所阐述的实施例;相对地,提供这些实施例使得本公开满足适用的法律要求。
在区块链中,一笔完整的交易由输入、输出以及脚本信息等组成,对完整的交易内容进行两次SHA256哈希运算就得到了交易的哈希值,也就是交易哈希。由于交易的输入需要引用之前某笔交易的输出,于是就在交易输入里加上了被引用的交易的哈希值,来定位这笔交易,在交易输入中出现的之前某笔交易的哈希值即为交易哈希指针。其中,交易哈希用来构建merkle树,交易哈希指针用来定位交易输入中所引用的之前某笔交易。
在本公开的一个示例性实施例中,提供了一种基于减小交易输入的数字凭证区块链压缩方法。本公开基于减小交易输入的数字凭证区块链压缩方法包括:
S1,对全节点的区块链数据进行压缩,通过用索引指针替换交易输入的哈希指针,来压缩数字凭证区块链中交易大小,得到压缩数据。具体地,该压缩过程包括:对于数字凭证区块中的每笔交易的每个输入,构建由哈希指针“previous tx hash”引用的某一先前交易的索引指针t.X;并采用索引指针t.X替换哈希指针“previous tx hash”。
其中,索引指针t.X由区块高度和交易索引组成。一般的,所述区块高度所占空间为20-24bit,所述交易索引所占空间为16-20bit,所述索引指针所占空间为36-44bit。其中,区块高度表示包含由哈希指针“previous tx hash”引用的某一先前交易的区块的高度。初始区块的区块高度为零。本实施例中,用20bit表示区块高度,从而足以容纳包含5×105个区块的某数字凭证区块链。
此外,交易索引指的是由哈希指针“previous tx hash”引用的某一先前交易在区块中的位置,其中,初始币交易的位置用0表示。优选地,根据某数字凭证规范,块大小不能超过1MB。因此,20bit的交易索引足以记录交易在区块中的位置。因此,新索引指针需要总共20+20=40bit。
在一实施例中,采用A表示数字凭证区块链,A包含L个区块,A[i]是高度为i的区块;B表述压缩后的数字凭证区块链。具体步骤如下:
S101.将区块A[i]复制到B[i],对于A[i](i∈(0,L-1))中的每笔交易tx,执行S102,S103,S104步骤;
S102.对于tx的每个交易输入t,执行S103,S104步骤;
S103.采用t的哈希指针“previous tx hash”作为函数INQ(hash,A)的参数hash,通过INQ(hash,A)函数得到区块链A中的区块高度和交易索引,作为索引指针t.X;
S104.执行函数REP(B[i],hash,X),采用40bit的索引指针t.X替换在B[i]中哈希指针;
S105.得到压缩后的数字凭证区块链B。
其中,函数INQ(hash,A)中,hash为哈希指针,A为区块链;函数INQ(hash,A)返回哈希指针hash对应的交易在区块链A中的区块高度和交易索引,函数INQ可以通过blockexplorer网站的API实现;函数REP(B[i],hash,X)中,B[i]是区块链B中高度为i的区块,hash为哈希指针,X为索引指针,函数REP(B[i],hash,X)表示在B[i]中,用包括区块高度和交易索引的索引指针X替换哈希指针hash。
S2,目的节点接收到所述压缩数据,对所述压缩数据进行解压,获得完整的区块链数据。具体地,从第一个区块开始到最后一个区块,对于区块链中的每笔交易的每个输入t,通过索引指针t.X找出其对应的交易,然后计算该交易输入t的哈希指针“previous txhash”,并用得到的哈希指针“previous tx hash”替换索引指针t.X。
在一实施例中,采用E表示压缩后的数字凭证区块链,E包含L个区块,t.X表示交易输入t的40bit索引指针;F表述解压后的数字凭证区块链。具体步骤如下:
S201.将区块E[i]复制到F[i],从i=0至i=L-1,对于E[i]中的每笔交易tx,执行步骤S202,S203,S204;
S202.对于每笔交易tx的每个交易输入t,执行步骤S203,S204;
S203.T←FIND(t.X,E),hash←SHA256(SHA256(T)),即通过函数FIND(t.X,E)返回在区块链E中的索引指针t.X指示的某一先前交易T;并通过SHA256(SHA256(T))计算得到某一先前交易T的哈希值作为哈希指针hash;
S204.执行REPL(F[i],X,hash)在F[i]中用哈希指针hash替换交易输入t的40bit索引指针t.X;
S205.得到解压后的数字凭证区块链F。
其中,函数FIND(t.X,E)中,t.X为索引指针,E为区块链,函数FIND(t.X,E)返回在压缩区块链E中的索引指针t.X指示的某一先前交易T的内容;函数SHA256(SHA256(T))用于计算得到某一先前交易T的哈希值;函数REPL(F[i],X,hash)中,F[i]是区块链F中高度为i的区块,hash为用于替换的哈希指针,X为待替换的索引指针,函数REPL(F[i],X,hash)表示在F[i]中,用哈希指针hash替换索引指针X。
图1为本公开实施例当新的空白节点加入网络时,区块链数据压缩及传输的示意图。如图1所示,当新的空白节点B加入网络时,该节点将从另一个全节点F下载数据。在发送数据时,全节点F可以应用所述步骤S1中的压缩方法来减小区块链数据的大小。而后,当B接收到压缩数据时,该节点采用所述步骤S2中的方法解压数据以获得完整区块链数据。
对于本地压缩的区块链,除进行解压操作外,还可以进行以下操作:
S3,对本地压缩区块链中任意一笔交易,计算交易哈希指针。在数字凭证区块链中,交易哈希指针用于构建Merkle树。交易哈希指针定义为:Hash←SHA256(SHA256(T)),T表示交易内容。由于提出的压缩方法修改了交易的输入,因此无法直接计算它们的哈希指针。要恢复交易的哈希指针“previous tx hash”,必须恢复其对应的某一先前交易的内容。
计算交易C的哈希值采用函数CAL(C)表示,具体步骤如下:
S301.对于压缩的交易C的每个交易输入t,执行S302,S303步骤;
S302.T←FIND(t.X),hash←CAL(T),即采用交易输入t的索引指针t.X,通过函数FIND(t.X)返回在本地压缩区块链中的索引指针t.X指示的某一先前交易T;通过CAL(T)计算某一先前交易T的哈希指针hash;其中交易C的输入t为某一先前交易T的某一输出;
S303.通过函数REPL(C,X,hash)在交易C中,用哈希指针hash替换交易输入t的40bit索引指针t.X;
S304.通过SHA256(SHA256(C))得到交易C的交易哈希值D。
其中,函数FIND(t.X)中t.X为交易输入t的索引指针,返回在本地压缩区块链中由40bit索引指针t.X指示的某一先前交易T的内容。函数REPL(C,X,hash)中C为交易,hash为用于替换的哈希指针,X为待替换的索引指针,表示在交易C中,用哈希指针hash替换40bit索引指针X;函数SHA256(SHA256(C))用于计算解压后的交易C的哈希值。
S4,SPV中的验证。SPV节点是仅存储区块头的轻节点。SPV节点需要来自全节点的特定信息来验证交易。该特定信息包括连接该笔交易与区块头中Merkle根哈希的Merkle分支。然后,SPV节点利用Merkle分支计算Merkle根哈希,并将其与块头中的Merkle根哈希进行比较,以定位该笔交易所在的区块。当该区块位于主链中且深度至少为6时,该交易被认为是有效的。
由于该压缩方法修改了交易内容,交易哈希指针无法直接计算,需要通过S3计算每个交易的哈希指针以构建Merkle分支。然而,这需要巨大的计算量。为了减少计算量,可不替换最近区块中的“previous tx hash”。例如,可以保留在过去七天内生成的区块(大约1000个区块)。
图2为本实施依据本地信息完成新交易和区块的验证过程的示意图。例如图2所示。全节点F可以应用上述方法来减少所需的区块链存储空间。它维护一个交易池和一个未花费的交易输出集(UTXOset)。因此,它可以通过本地信息验证新交易和区块。SPV节点S可以使用S4中描述的方法从F请求足够的信息来验证交易。
至此,已经结合附图对本公开实施例进行了详细描述。需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。
再者,单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。
此外,除非特别描述或必须依序发生的步骤,上述步骤的顺序并无限制于以上所列,且可根据所需设计而变化或重新安排。并且上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本公开也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本公开的内容,并且上面对特定语言所做的描述是为了披露本公开的最佳实施方式。
本公开可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。本公开的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本公开实施例的相关设备中的一些或者全部部件的一些或者全部功能。本公开还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本公开的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。并且,在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。
类似地,应当理解,为了精简本公开并帮助理解各个公开方面中的一个或多个,在上面对本公开的示例性实施例的描述中,本公开的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本公开要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,公开方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本公开的单独实施例。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (8)
1.一种基于减小交易输入的数字凭证区块链压缩方法,包括:对全节点的区块链数据进行压缩,通过交易输入的索引指针替换交易输入的哈希指针,压缩区块链中交易大小,得到压缩数据;其中,所述索引指针包括:
区块高度,所述区块高度表示包含由所述交易输入的哈希指针引用的某一先前交易的区块的高度,其中,交易的每个输入对应于某一先前笔交易的输出,用哈希指针表示,占32字节,称为previous tx hash;
交易索引,所述交易索引是由所述交易输入的哈希指针引用的某一先前交易在区块中的位置;
所述数字凭证区块链压缩方法,包括:
S101,将区块A[i]复制到B[i],对于A[i],i∈(0,L-1),A[i]中的每笔交易tx,执行S102,S103,S104步骤;
S102,对于tx的每个交易输入t,执行S103,S104步骤;
S103,采用交易输入t的索引指针t.X替换在B[i]中交易输入t的哈希指针hash,通过INQ(hash,A)函数得到先前交易在区块链A中的区块高度和交易索引,作为交易输入t的索引指针t.X;
S104,执行函数REP(B[i],hash,X),采用交易输入t的索引指针t.X替换在B[i]中交易输入t哈希指针hash;
S105,得到压缩后的数字凭证区块链B;
其中,A表示数字凭证区块链,A包含L个区块,A[i]是高度为i的区块;B表述压缩后的数字凭证区块链,B[i]是区块链B中高度为i的区块;函数INQ(hash,A)中,hash为交易输入的哈希指针;函数REP(B[i], hash,X)中,X为交易输入的索引指针,函数REP(B[i],hash,X)表示在B[i]中用索引指针X替换哈希指针hash。
2.根据权利要求1所述的数字凭证区块链压缩方法,其中,初始区块的区块高度为零,且初始币交易的位置用0表示。
3.根据权利要求1所述的数字凭证区块链压缩方法,其中,所述区块高度所占空间为20-24bit,所述交易索引所占空间为16-20bit,所述索引指针所占空间为36-44bit。
4.根据权利要求1所述的数字凭证区块链压缩方法,其中,解压过程包括:从第一个区块开始到最后一个区块,对于区块链中的每笔交易的每个输入t,通过索引指针t.X找出其对应的交易,然后计算该交易的哈希值作为哈希指针,并用得到的所述哈希指针替换所述索引指针t.X。
5.根据权利要求4所述的数字凭证区块链压缩方法,所述解压的方法包括:
S201,将区块E[i]复制到F[i],从i=0至i=L-1,对于E[i]中的每笔交易tx,执行步骤S202,S203,S204;
S202,对于每笔交易tx的每个交易输入t,执行步骤S203,S204;
S203,通过函数FIND(t.X,E)得到在区块链E中的索引指针t.X指示的某一先前交易T;并通过SHA256(SHA256(T))计算得到某一先前交易T的哈希值作为哈希指针hash;
S204,执行REPL(F[i],X,hash),在F[i]中用所述哈希指针hash替换交易输入t的索引指针t.X;
S205,得到解压后的数字凭证区块链F;
其中,E表示压缩后的数字凭证区块链,E包含L个区块,t.X表示交易输入t的索引指针;F表述解压后的数字凭证区块链,F[i]是区块链F中高度为i的区块;函数FIND(t.X,E)返回在压缩区块链E中的索引指针t.X指示的某一先前交易T的内容;函数SHA256(SHA256(T))用于计算得到某一先前交易T的哈希值;函数REPL(F[i],X,hash)中,hash为用于替换的哈希指针,X为待替换的索引指针,REPL(F[i],X,hash)表示在F[i]中用哈希指针hash替换索引指针X。
6.根据权利要求5所述的数字凭证区块链压缩方法,其中,当新的空白节点B加入网络时,该节点将从另一个全节点F下载数据,在所述全节点F发送数据时,采用所述权利要求1中的压缩方法来减小区块链数据的大小;当B接收到压缩数据时,该节点采用所述权利要求5中的方法解压数据以获得完整区块链数据。
7.根据权利要求1所述的数字凭证区块链压缩方法,其中,对本地压缩区块链中任意一笔交易C,计算交易C的哈希值采用函数CAL(C)表示,包括:
S301,对于压缩的交易C的每个交易输入t,执行S302,S303步骤;
S302,采用交易输入t的索引指针t.X,通过函数FIND(t.X,E)返回在本地压缩区块链中的索引指针t.X指示的某一先前交易T;通过CAL(T)计算某一先前交易T的哈希指针hash;其中交易C的输入t为某一先前交易T的某一输出;
S303,通过函数REPL(C,X,hash)在交易C中,用哈希指针hash替换交易输入t的索引指针t.X;
S304,通过SHA256(SHA256(C))得到交易C的交易哈希值D;
其中,函数FIND(t.X,E)返回在本地压缩区块链中由索引指针t.X指示的某一先前交易T的内容;函数REPL(C,X,hash)中C为交易,hash为用于替换的哈希指针,X为待替换的索引指针,REPL(C,X,hash)表示在交易C中用哈希指针hash替换索引指针X,得到解压后的交易C;函数SHA256(SHA256(C))用于计算解压后的交易C的哈希值。
8.根据权利要求7所述的数字凭证区块链压缩方法,其中,SPV验证过程包括:
全节点F维护一个交易池和一个未花费的交易输出集,其采用所述权利要求1的方法来减少所需的区块链存储空间,并通过本地信息验证新交易和区块;SPV节点采用以下方法从全节点F请求信息来验证交易:
SPV节点获取来自全节点的特定信息来验证交易,该特定信息包括连接该笔交易与区块头中Merkle根哈希的Merkle分支,其中通过所述权利要求7的方法计算每个交易的哈希指针以构建Merkle分支,且不替换最近区块中的先前交易哈希;
SPV节点利用Merkle分支计算Merkle根哈希,并将其与块头中的Merkle根哈希进行比较,以定位该笔交易所在的区块;
当该区块位于主链中且深度至少为6时,该交易确认为有效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910195612.3A CN111695885B (zh) | 2019-03-14 | 2019-03-14 | 基于减小交易输入的数字凭证区块链压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910195612.3A CN111695885B (zh) | 2019-03-14 | 2019-03-14 | 基于减小交易输入的数字凭证区块链压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111695885A CN111695885A (zh) | 2020-09-22 |
CN111695885B true CN111695885B (zh) | 2023-08-29 |
Family
ID=72475337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910195612.3A Active CN111695885B (zh) | 2019-03-14 | 2019-03-14 | 基于减小交易输入的数字凭证区块链压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111695885B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113973021B (zh) * | 2021-07-13 | 2022-09-27 | 华中科技大学 | 一种图式区块链的网络传输优化装置及方法 |
CN114219477B (zh) * | 2021-11-03 | 2022-09-16 | 重庆邮电大学 | 基于链上存储的区块链数据存储扩展方法 |
CN114070887A (zh) * | 2021-11-17 | 2022-02-18 | 安徽中科晶格技术有限公司 | 一种基于图式结构的游走压缩系统及压缩方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023808A (zh) * | 2012-12-28 | 2013-04-03 | 南京邮电大学 | 基于块状链表结构的6lowpan数据包重装缓存方法 |
CN103873438A (zh) * | 2012-12-12 | 2014-06-18 | 鸿富锦精密工业(深圳)有限公司 | 压缩包上传去重系统及方法 |
WO2017146333A1 (ko) * | 2016-02-22 | 2017-08-31 | (주)코인플러그 | 블록체인을 기반으로 하는 금융기관 제증명서류 위변조 검증시스템 및 방법 |
CN107728941A (zh) * | 2017-09-28 | 2018-02-23 | 中国银行股份有限公司 | 一种区块链数据压缩方法及系统 |
WO2018119930A1 (zh) * | 2016-12-29 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 交易验证处理方法、装置及节点设备 |
WO2018119587A1 (zh) * | 2016-12-26 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 数据处理方法、装置、系统及信息采集设备 |
CN108563796A (zh) * | 2018-05-04 | 2018-09-21 | 蔷薇信息技术有限公司 | 区块链的数据压缩处理方法、装置及电子设备 |
CN108924107A (zh) * | 2018-06-21 | 2018-11-30 | 桂林电子科技大学 | 一种区块链远程医疗数据调用可验证方法 |
CN109165224A (zh) * | 2018-08-24 | 2019-01-08 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
CN109213767A (zh) * | 2018-09-19 | 2019-01-15 | 挖财网络技术有限公司 | 一种适用于区块链的账户数据管理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017171165A1 (ko) * | 2015-12-14 | 2017-10-05 | (주)코인플러그 | 블록체인을 기반으로 하는 공인인증서 발급시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 발급방법 |
-
2019
- 2019-03-14 CN CN201910195612.3A patent/CN111695885B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103873438A (zh) * | 2012-12-12 | 2014-06-18 | 鸿富锦精密工业(深圳)有限公司 | 压缩包上传去重系统及方法 |
CN103023808A (zh) * | 2012-12-28 | 2013-04-03 | 南京邮电大学 | 基于块状链表结构的6lowpan数据包重装缓存方法 |
WO2017146333A1 (ko) * | 2016-02-22 | 2017-08-31 | (주)코인플러그 | 블록체인을 기반으로 하는 금융기관 제증명서류 위변조 검증시스템 및 방법 |
WO2018119587A1 (zh) * | 2016-12-26 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 数据处理方法、装置、系统及信息采集设备 |
WO2018119930A1 (zh) * | 2016-12-29 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 交易验证处理方法、装置及节点设备 |
CN107728941A (zh) * | 2017-09-28 | 2018-02-23 | 中国银行股份有限公司 | 一种区块链数据压缩方法及系统 |
CN108563796A (zh) * | 2018-05-04 | 2018-09-21 | 蔷薇信息技术有限公司 | 区块链的数据压缩处理方法、装置及电子设备 |
CN108924107A (zh) * | 2018-06-21 | 2018-11-30 | 桂林电子科技大学 | 一种区块链远程医疗数据调用可验证方法 |
CN109165224A (zh) * | 2018-08-24 | 2019-01-08 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
CN109213767A (zh) * | 2018-09-19 | 2019-01-15 | 挖财网络技术有限公司 | 一种适用于区块链的账户数据管理方法 |
Non-Patent Citations (1)
Title |
---|
Marcus Brandenburger.Blockchain and Trusted Computing: Problems, Pitfalls, and a Solution for Hyperledger Fabric.《 Distributed, Parallel, and Cluster Computing》.2018,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111695885A (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11973869B2 (en) | Maintaining blocks of a blockchain in a partitioned blockchain network | |
US11914712B1 (en) | Blockchain based secure naming and update verification | |
CN111695885B (zh) | 基于减小交易输入的数字凭证区块链压缩方法 | |
CN113329031B (zh) | 一种区块的状态树的生成方法及装置 | |
CN111680050B (zh) | 一种联盟链数据的分片处理方法、设备和存储介质 | |
CN108648084B (zh) | 一种区块链网络的数据处理方法、装置、设备及存储介质 | |
US11269839B2 (en) | Authenticated key-value stores supporting partial state | |
CN112261159A (zh) | 执行跨片事务的方法及系统、主链节点和目标分片节点 | |
CN110599169A (zh) | 数据处理方法、装置、终端及介质 | |
CN109727132B (zh) | 区块链共识节点的获取方法、装置、电子设备及存储介质 | |
US10389685B2 (en) | Systems and methods for securely transferring selective datasets between terminals | |
CN110930152B (zh) | 一种基于区块链的数据处理方法及相关设备 | |
CN112651046A (zh) | 跨链交易的数据同步方法、装置、系统及终端设备 | |
EP4357883A1 (en) | Data verification method and apparatus, device and storage medium | |
CN112261162B (zh) | 执行跨片事务的方法及系统、主链节点和目标分片节点 | |
CN111488396A (zh) | 业务数据区块链的数据同步方法及装置 | |
Daveas et al. | A gas-efficient superlight bitcoin client in solidity | |
CN113259478A (zh) | 在区块链系统中执行交易的方法、装置及区块链系统 | |
CN117370460A (zh) | 基于双链存储的区块链存储优化方法及装置 | |
US20220005025A1 (en) | Distributed ledger management system, distributed ledger management method, and node | |
WO2023075941A1 (en) | Method and system for pruning blocks from blockchains for data retention and storage scalability purposes | |
CN112396422B (zh) | 提交跨片事务的方法及系统、主链节点和目标分片节点 | |
US11657040B2 (en) | Blockchain machine network acceleration engine | |
CN112261156B (zh) | 一种提交跨片事务的方法及系统、主链节点和源分片节点 | |
CN111523897B (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 |