CN110544167B - 基于cpk的联盟链的数据处理方法、服务器及存储介质 - Google Patents
基于cpk的联盟链的数据处理方法、服务器及存储介质 Download PDFInfo
- Publication number
- CN110544167B CN110544167B CN201910677985.4A CN201910677985A CN110544167B CN 110544167 B CN110544167 B CN 110544167B CN 201910677985 A CN201910677985 A CN 201910677985A CN 110544167 B CN110544167 B CN 110544167B
- Authority
- CN
- China
- Prior art keywords
- block
- chain
- current block
- federation
- hash value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Finance (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Development Economics (AREA)
- Power Engineering (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及区块链技术领域,公开了一种联盟链的数据处理方法、服务器及存储介质,解决了现有技术中采用PKI模式的联盟链时,涉及签名的用户量较大而存在的高成本、多级链式认证造成计算量大和延时长的问题。所述方法包括:获取联盟主链中当前区块的开始时间的时间戳、魔数以及前一个区块的哈希值;获取当前区块的区块链数据,根据时间戳、魔数、前一个区块的哈希值与区块链数据,得到当前区块的哈希值,其中,若当前区块为第一个区块,第一个区块的魔数与第一个区块的设定起始值和开始时间的时间戳相关;若当前区块为非第一个区块,当前区块的魔数与各个联盟成员方、监管方以及公证方对前一个区块的签名相关。本发明实施例适用于联盟主链形成。
Description
技术领域
本发明涉及区块链技术领域,具体地,涉及一种基于CPK的联盟链的数据处理方法、服务器及存储介质。
背景技术
近年来,随着比特币的兴起,作为比特币的关键技术之一,区块链成了一个极热的热点。与区块链紧密关联的另一些词汇是,分布式记账、去中心化、数字货币等等。其实,区块链只是一项技术,去中心化只是它的功能之一。它也可以用于中心化的系统,或者多中心化的系统。联盟链就是多中心化的区块链应用。
联盟链通常有一个由联盟共同维护的主链,并且允许每个成员拥有自己的子链。子链由成员自己负责,其中部分数据将上传到主链。例如银行业联盟,其成员为若干家银行。则银行内部的交易(指资金的流动不涉及其他银行)数据不上传到主链,而银行间的交易数据须上传到主链。又如建筑材料产业联盟(或某类产品的产业联盟),联盟成员为各种材料的生产厂家和销售厂家。生产厂家自己使用或直接销售给使用者的产品数据,不需要提供给主链,厂家自身的财务数据等也不需要提供给主链,只需放在自己的子链中即可。但提供给销售商的产品数据,则需要上传到主链,以便购买者查询产品的真实性。
联盟链因为涉及若干联盟成员,而每个成员又会有自己的子链,子链的数据又涉及众多生成者,在这种情况下,建立一个可追溯的联盟链,以确保链上的数据的完整性,就需要每个成员对自己生成的数据负责,因而数字签名也必不可少。这就要求每个数据提供者拥有自己的公私钥,于是采用PKI(Public Key Infrastructure,公钥基础设施)模式,若涉及需要签名的用户较少,则少量CA(Certificate Authority,证书颁发机构)即可管理所有公钥证书。但当涉及需要签名的用户量非常大时,就会存在如众多CA的高成本、多级链式认证造成计算量大和延时长等问题。
发明内容
本发明的目的是为了克服现有技术中采用PKI模式的联盟链时,涉及签名的用户量较大时,存在的高成本、多级链式认证造成计算量大和延时长的问题。本发明实施例提供一种基于CPK的联盟链的数据处理方法、服务器及存储介质,通过采用CPK(CombinedPublic Key,组合公钥)模式,由于用户标识与公、私钥绑定,不需要链式认证,也不需要CA这样的机构,进而成本低效率高。
为了实现上述目的,本发明第一方面实施例提供一种基于CPK的联盟链的数据处理方法,所述方法应用于所述联盟链的联盟成员方,所述方法包括:获取联盟主链中当前区块的开始时间的时间戳、当前区块的魔数以及前一个区块的哈希值;获取所述联盟主链中当前区块的区块链数据,并根据所述当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟主链中当前区块的哈希值,其中,若所述当前区块为所述联盟主链中的第一个区块时,所述第一个区块的魔数与所述第一个区块的设定起始值和所述第一个区块的开始时间的时间戳相关;若所述当前区块为所述联盟主链中的非第一个区块时,所述当前区块的魔数与前一个区块的签名信息相关,所述前一个区块的签名信息包括所述联盟链的各个联盟成员方、各个监管方以及公证方对前一个区块的签名。
进一步地,若所述当前区块为所述联盟主链中的第一个区块时,所述获取当前区块的魔数以及前一个区块的哈希值包括:获取第一随机数作为所述第一个区块的设定起始值;利用所述第一随机数对所述第一个区块的开始时间的时间戳做哈希运算,得到所述第一个区块的魔数。
进一步地,所述根据所述当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟主链中当前区块的哈希值包括:根据得到所述联盟主链中第一个区块的哈希值R1,其中,为所述第一个区块的倒数第二个区块链数据的哈希值,为所述第一个区块的倒数第一个区块链数据,n1为所述第一个区块中的区块链数据的个数,其中,所述第一个区块的第一个区块链数据的哈希值为R1.1=H(Q1,D1.1),Q1为所述第一个区块的魔数,D1.1为所述第一个区块的第一个区块链数据。
进一步地,若所述当前区块为所述联盟主链中的非第一个区块时,所述获取当前区块的魔数包括:获取在所述当前区块之前第二个区块的哈希值、前一个区块的开始时间的时间戳以及前一个区块的签名信息;利用所述当前区块之前第二个区块的哈希值对所述前一个区块的开始时间的时间戳以及前一个区块的签名信息进行哈希运算,得到所述当前区块的魔数。
进一步地,所述前一个区块的签名信息包括:以及其中,l为前一个区块,l-1为所述当前区块之前第二个区块,Ql为前一个区块的魔数,Rl-1为之前第二个区块的哈希值,Tl为前一个区块的开始时间的时间戳,为所述联盟链的第i个联盟成员方Pi对第l个区块的签名,为第i个联盟成员方Pi的私钥,n为所述联盟链的联盟成员方的个数,为所述联盟链的第k个监管方Jk对第l个区块的签名,为第k个监管方Jk的私钥,m为所述联盟链的监管方的个数,为所述联盟链的公证方对第l个区块的签名,为公证方N的私钥,其中,所述联盟主链的第一个区块的签名信息包括 以及Q1为所述第一个区块的魔数,R0为生成所述第一个区块的魔数的第一随机数,T1为所述第一个区块的开始时间的时间戳,且Q1=H(R0,T1)。
进一步地,所述利用所述当前区块之前第二个区块的哈希值对所述前一个区块的开始时间的时间戳以及前一个区块的签名信息进行哈希运算,得到所述当前区块的魔数包括:根据得到所述当前区块l+1的魔数Ql+1,其中,l为前一个区块,l-1为所述当前区块之前第二个区块,Rl-1为之前第二个区块的哈希值,Tl为前一个区块的开始时间的时间戳,所述前一个区块的签名信息包括第1个联盟成员方P1对第l个区块的签名第i个联盟成员方Pi对第l个区块的签名第n个联盟成员方Pn对第l个区块的签名第1个监管方J1对第l个区块的签名第k个监管方Jk对第l个区块的签名第m个监管方Jm对第l个区块的签名公证方对第l个区块的签名
进一步地,所述根据所述当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟主链中当前区块的哈希值包括:根据Fl+1=H(Rl,Ql+1||Tl+1),得到所述当前区块l+1的哈希参数Fl+1,其中,Rl为前一个区块的哈希值,Ql+1为所述当前区块的魔数,Tl+1为所述当前区块的开始时间的时间戳;根据得到所述当前区块l+1的哈希值Rl+1,其中,nk为所述当前区块中的区块链数据的个数,为所述当前区块l+1的第nk个区块链数据,为所述当前区块l+1的第nk-1个区块链数据的哈希值,其中,所述当前区块l+1的第1个区块链数据的哈希值为Rl+1,1=H(Fl+1,Dl+1,1),Dl+1,1为所述当前区块l+1的第1个区块链数据。
进一步地,所述方法还包括:获取所述联盟成员方对应的联盟子链中当前区块的开始时间的时间戳、当前区块的魔数以及前一个区块的哈希值;获取所述联盟子链中当前区块的区块链数据,并根据所述联盟子链中当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟子链中当前区块的哈希值,其中,若所述联盟子链中当前区块为所述联盟子链中的第一个区块时,所述第一个区块的魔数与所述第一个区块的预定起始值和所述第一个区块的开始时间的时间戳相关;若所述联盟子链中当前区块为所述联盟子链中的非第一个区块时,所述当前区块的魔数与前一个区块的签名信息相关,所述前一个区块的签名信息包括所述联盟子链对应的联盟成员方、各个监管方以及公证方对前一个区块的签名。
进一步地,若所述联盟子链中当前区块为所述联盟子链中的第一个区块时,所述获取所述联盟子链中当前区块的魔数以及前一个区块的哈希值包括:获取第二随机数作为所述联盟子链中所述第一个区块的预定起始值;利用所述第二随机数对所述联盟子链中第一个区块的开始时间的时间戳做哈希运算,得到所述联盟子链中第一个区块的魔数。
进一步地,所述根据所述联盟子链中当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟子链中当前区块的哈希值包括:根据得到所述联盟子链中第一个区块的哈希值r1,其中,为所述第一个区块的倒数第二个区块链数据的哈希值,为所述第一个区块的倒数第一个区块链数据,w1为所述联盟子链中第一个区块的区块链数据的个数,其中,所述第一个区块的第一个区块链数据的哈希值为r1.1=H(q1,d1.1),q1为所述第一个区块的魔数,d1.1为所述第一个区块的第一个区块链数据。
进一步地,若所述联盟子链中当前区块为所述联盟子链中的非第一个区块时,所述获取当前区块的魔数包括:获取在所述联盟子链中当前区块之前第二个区块的哈希值、前一个区块的开始时间的时间戳以及前一个区块的签名信息;利用所述联盟子链中当前区块之前第二个区块的哈希值对所述联盟子链中前一个区块的开始时间的时间戳以及所述联盟子链中前一个区块的签名信息进行哈希运算,得到所述联盟子链中当前区块的魔数。
进一步地,所述联盟子链中前一个区块的签名信息包括:以及其中,b为前一个区块,b-1为所述当前区块之前第二个区块,qb为前一个区块的魔数,rb-1为之前第二个区块的哈希值,tb为前一个区块的开始时间的时间戳,为所述联盟链的第i个联盟成员方Pi对其联盟子链中第b个区块的签名,为第i个联盟成员方Pi的私钥,为所述联盟链的第k个监管方Jk对所述联盟子链中第b个区块的签名,为第k个监管方Jk的私钥,m为所述联盟链的监管方的个数,为所述联盟链的公证方对所述联盟子链中第b个区块的签名,为公证方N的私钥,其中,所述联盟子链的第一个区块的签名信息包括以及q1为所述联盟子链第一个区块的魔数,r0为生成所述联盟子链的第一个区块的魔数的第一随机数,t1为所述联盟子链第一个区块的开始时间的时间戳,且q1=H(r0,t1)。
进一步地,所述利用所述联盟子链中当前区块之前第二个区块的哈希值对所述联盟子链中前一个区块的开始时间的时间戳以及所述联盟子链中前一个区块的签名信息进行哈希运算,得到所述联盟子链中当前区块的魔数包括:根据得到所述联盟子链中当前区块b+1的魔数qb+1,其中,b为前一个区块,b-1为所述当前区块之前第二个区块,rb-1为之前第二个区块的哈希值,tb为前一个区块的开始时间的时间戳,所述联盟子链中前一个区块的签名信息包括该联盟成员方Pi对第b个区块的签名第1个监管方J1对第b个区块的签名第k个监管方Jk对第b个区块的签名第m个监管方Jm对第b个区块的签名公证方对第b个区块的签名
进一步地,所述根据所述联盟子链中当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟子链中当前区块的哈希值包括:根据Gb+1=H(rb,qb+1||tb+1),得到所述联盟子链中当前区块b+1的哈希参数Gb+1,其中,rb为前一个区块b的哈希值,qb+1为所述当前区块b+1的魔数,tb+1为所述当前区块b+1的开始时间的时间戳;根据得到所述联盟子链中当前区块b+1的哈希值rb+1,其中,wk为所述联盟子链中当前区块中的区块链数据的个数,为所述联盟子链中当前区块b+1的第wk个区块链数据,为所述联盟子链中当前区块b+1的第wk-1个区块链数据的哈希值,其中,所述联盟子链中当前区块b+1的第1个区块链数据的哈希值为rb+1,1=H(gb+1,db+1,1),gb+1为所述联盟子链中当前区块b+1的哈希参数,db+1,1为所述当前区块b+1的第1个区块链数据。
本发明第二方面实施例提供一种基于CPK的联盟链的数据处理服务器,所述服务器用于执行如上所述的基于CPK的联盟链的数据处理方法。
本发明第三方面实施例提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上所述的基于CPK的联盟链的数据处理方法。
通过上述技术方案,联盟链的联盟成员方获取联盟主链中当前区块的开始时间的时间戳、当前区块的魔数以及前一个区块的哈希值,之后,获取所述联盟主链中当前区块的区块链数据,并根据所述当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟主链中当前区块的哈希值,其中,若所述当前区块为所述联盟主链中的第一个区块时,所述第一个区块的魔数与所述第一个区块的设定起始值和所述第一个区块的开始时间的时间戳相关;若所述当前区块为所述联盟主链中的非第一个区块时,所述当前区块的魔数与前一个区块的签名信息相关,所述前一个区块的签名信息包括所述联盟链的各个联盟成员方、各个监管方以及公证方对前一个区块的签名。本发明实施例解决了现有技术中采用PKI模式的联盟链时,涉及签名的用户量较大时,存在的高成本、多级链式认证造成计算量大和延时长的问题,通过采用CPK模式,降低成本,提高了计算效率。
本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
图1是区块链的示意图;
图2是本发明实施例提供的一种基于CPK的联盟链的数据处理方法的流程示意图;
图3是本发明实施例提供的联盟子链的数据处理方法的流程示意图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
图1是区块链的示意图。区块中的每个交易数据都作为哈希函数的输入参与计算,可得到该区块的哈希值,存放在区块头中。同时,一个区块的哈希值自动带入下一个区块,不仅存放在下一个区块头中,还参与下一个区块的哈希计算。这样一来,一个区块自然地与下一个区块通过哈希值和哈希运算绑定在一起,形成一个链式结构,即所谓的区块链。为了使每个区块中的数据不被轻易地篡改,在每个区块中加入了一个定长的数据,称为魔数。最初的魔数通过系统指定,此后则以上一个区块的哈希值作为初始值,以定长的随机数作为输入,通过大量计算产生。区块链技术可用于其它需要保护完整性的各种场合,包括无中心(公有链)、有一个中心(私有链)或有多个中心(联盟链或许可链)的场合。假设一个系统不断地产生新的数据,则以固定的时间段将文档分成一个个区块,区块之间用哈希值相关联。
本发明实施例将CPK应用到联盟链中。下面首先描述一下CPK的基本概念。CPK在ECC(Error Correcting Code,纠错码)的基础上,利用多个公、私钥因子组合出海量用户公、私钥。CPK需要一个KMC(Key Manage Center,密钥管理中心),由KMC统一生成系统参数和用户私钥。KMC选择安全的基于有限域上的椭圆曲线上的加法群G,设其阶为素数n,其中2l-1<n<2l,l≥192,生成元为P。设randomgen()为安全的随机数生成算法,用以生成私钥因子。用randomgen()随机生成s×t个数xij∈[1,n-1],组成私钥因子矩阵:
上述矩阵也称为私钥矩阵,由KMC统一生成并秘密保管,是系统安全的基础。相应地,MKpub=(yij)s×t称为公钥因子矩阵或公钥矩阵,其中yij=xijP。
H(K,m)是输入为m且带有控制密钥K的安全哈希函数。设用户A的身份标识符为IDA,则用户A的签名私钥由以下方法产生:将H(K1,IDA)分成t段,每段为r比特,要求2r=s。设H(K1,IDA)第一个r比特所表示的数为r1-1,则在MKsec=(xij)s×t的第一列取因子以此类推,若H(K1,IDA)的第j列所表示的数是rj-1,则在MKsec=(xij)s×t的第j列去因子而用户A的签名私钥为:对应地A用于验证签名的公钥就是控制密钥K1由KMC选择,连同私钥矩阵一起存放在系统中,供用户使用。
下面将详细描述联盟链的的数据处理。在本发明实施例中,对于联盟链的生成,首先设置CPK参数,完成CPK的初始化,并使联盟个成员及所有用户拥有各自的公、私钥。以下记用户Ui的公钥为KUi,私钥为此外,CPK系统负责为整个联盟链提供统一的时间戳,要求该时间戳的时间取自国家授时中心,并由CPK系统为时间签名生成时间戳。本发明实施例中使用H(IV,M)表示本发明实施例中使用的哈希算法,表示使用初始向量IV对输入M计算其哈希值。用表示签名算法,即用户Ui使用其私钥对消息M进行签名。另外,联盟链中的监管方和公证方由联盟章程确定。联盟章程中还必须明确,联盟链的每个区块的生成时间间隔T的值,比如T为10分钟、30分钟或其它时长,其可根据业务量来确定。另外还需要确定子链中的哪些数据需要提交到主链中。
对于联盟链中的主链结构也如图1所示,只是其中的魔数是由所述联盟链的各个联盟成员方、各个监管方以及公证方共同生成,而主链中的数据则来自于各联盟成员方上传的数据。假设P1,P2,…,Pn是所述联盟链中的全体联盟成员方,J1,J2,…,Jm是所述联盟链中的m个监管方,N是公证方。图2是本发明实施例提供的一种基于CPK的联盟链的数据处理方法的流程示意图。如图2所示,所述方法应用于所述联盟链的联盟成员方,即联盟链的主链由联盟成员方轮流实施(轮流记账),所述方法包括如下步骤:
步骤201,获取联盟主链中当前区块的开始时间的时间戳、当前区块的魔数以及前一个区块的哈希值;
步骤202,获取所述联盟主链中当前区块的区块链数据,并根据所述当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟主链中当前区块的哈希值,其中,若所述当前区块为所述联盟主链中的第一个区块时,所述第一个区块的魔数与所述第一个区块的设定起始值和所述第一个区块的开始时间的时间戳相关;若所述当前区块为所述联盟主链中的非第一个区块时,所述当前区块的魔数与前一个区块的签名信息相关,所述前一个区块的签名信息包括所述联盟链的各个联盟成员方、各个监管方以及公证方对前一个区块的签名。
其中,由于本发明实施例的执行主体为联盟成员方,假设联盟成员方P1负责当前区块的形成。当所述当前区块为所述联盟主链中的第一个区块时,在所述第一个区块形成前,P1获取所述当前区块的开始时间的时间戳、当前区块的魔数以及前一个区块的哈希值。其中,在形成所述联盟主链的第一个区块之前,公证方N生成一个定长的第一随机数R0,并将其发布到安全公告栏。P1从所述安全布告栏上获取所述第一随机数R0并将其作为第一个区块的设定起始值(即前一个区块的哈希值)。同时P1从CPK系统获取第一个区块的开始时间的时间戳T1。然后利用所述第一随机数对所述当前区块的开始时间的时间戳做哈希运算,得到所述当前区块的魔数,如Q1=H(R0,T1),将Q1作为第一个区块的魔数,并将其填入第一个区块的头部,同时开始第一个区块的生成,即在接到第一个区块链数据(如D1.1)时,以Q1对其进行哈希运算,即R1.1=H(Q1,D1.1),并依次对后续数据进行哈希运算。如在接收到第二个区块链数据D1.2之后,R1.1作为初始值,对D1.2进行哈希运算,即R1.2=H(R1.1,D1.2),直到接收到所述第一个区块的最后一个(如n1)区块链数据将前一个区块链数据的哈希值作为初始值,对进行哈希运算,得到所述第一个区块的哈希值因此,第一个区块结束,P1将负责生产区块头部,将设定起始值R0、第一个区块的哈希值R1、第一个区块的魔数(魔数1)以及第一个区块的开始时间的时间戳记录在所述第一个区块的头部中,同时P1将第一个区块的哈希值R1公布到所述安全公告栏。
另外,所述联盟链的各个联盟成员方、各个监管方以及公证方对所述第一个区块的信息进行签名,从所述安全公告栏上获取签名所需的设定起始值R0与第一个区块的开始时间的时间戳T1,然后各自根据Q1=H(R0,T1)得到第一个区块的魔数(魔数1),之后通过各自的私钥以及R0、T1、Q1,得到各自的签名:
通过上述各方对第一个区块的信息进行签名之后,分别将签名结果发布到所述安全公告栏中,以便任何一方均可以获取到,从而计算第二个区块的魔数:即魔数2。另外,需要注意的是,这里要求所述联盟链中的m个监管方J1,J2,…,Jm必须保持规定的顺序。
根据联盟章程中的规定,若是规定联盟主链中的区块是由各联盟成员方轮流负责,则联盟主链中的第二个区块由P2负责。由于生成第二个区块所需的魔数2相关的参数均被公布到安全公告栏上,因此P2从所述安全公告栏上获取所述当前区块之前第二个区块的哈希值(第一个区块的起始区块值R0)、前一个区块的开始时间的时间戳(第一个区块的开始时间的时间戳T1)以及前一个区块的签名信息然后,利用所述当前区块之前第二个区块的哈希值R0对所述前一个区块的开始时间的时间戳T1以及前一个区块的签名信息进行哈希运算,得到所述当前区块的魔数,即得到第二个区块的魔数,即魔数2。然后,P2从CPK系统获取当前区块(第二个区块)的开始时间的时间戳T2,即可开始接收第二个区块中的区块链数据。
首先,P2根据Fl+1=H(Rl,Ql+1||Tl+1),得到所述当前区块l+1的哈希参数Fl+1,其中,Rl为前一个区块的哈希值,Ql+1为所述当前区块的魔数,Tl+1为所述当前区块的开始时间的时间戳,即根据F2=H(R0,Q2||T2)得到第二个区块的哈希参数F2。然后,P2根据得到所述当前区块l+1的哈希值Rl+1,其中,nk为所述当前区块中的区块链数据的个数,为所述当前区块l+1的第nk个区块链数据,为所述当前区块l+1的第nk-1个区块链数据的哈希值,其中,所述当前区块l+1的第1个区块链数据的哈希值为Rl+1,1=H(Fl+1,Dl+1,1),Dl+1,1为所述当前区块l+1的第1个区块链数据。
例如,当P2接收到第二个区块的第一个区块链数据D2.1时,以F2对其进行哈希运算,即R2.1=H(F2,D2.1),并依次对后续数据进行哈希运算。如在接收到第二个区块链数据D2.2之后,R2.1作为初始值,对D2.2进行哈希运算,即R2.2=H(R2.1,D2.2),直到接收到所述第二个区块的最后一个(如n2)区块链数据将前一个区块链数据的哈希值作为初始值,对进行哈希运算,得到所述第二个区块的哈希值因此,第二个区块结束,P2将负责生产区块头部,将前一个区块的哈希值(即第一个区块的哈希值R1)、当前区块的哈希值(即第二个区块的哈希值R2)、当前区块的魔数(即第二个区块的魔数,魔数2)以及当前区块的开始时间的时间戳(即第二个区块的开始时间的时间戳T2)记录在当前区块的头部中(即第二个区块的头部中),同时P2将当前区块(即第二个区块)的哈希值(R2)公布到所述安全公告栏。
另外,所述联盟链的各个联盟成员方、各个监管方以及公证方对所述第二个区块的信息进行签名,需要利用第二个区块的魔数、第一个区块的哈希值R1以及第二个区块的开始时间的时间戳T2。对于第二个区块的魔数,各方可以从所述安全公告栏上获取第一个区块的起始区块值R0、第一个区块的开始时间的时间戳T1以及第一个区块的签名信息然后,利用所述当前区块之前第二个区块的哈希值R0对所述前一个区块的开始时间的时间戳T1以及前一个区块的签名信息进行哈希运算,得到所述当前区块的魔数,即得到第二个区块的魔数,从而各方均可得到第二个区块的魔数。另外,各方可以从所述安全公告栏上获取签名所需的第一个区块的哈希值R1、第二个区块的开始时间的时间戳T2。之后,通过各自的私钥以及Q2、R1、T2,得到各自的签名:
通过上述各方对第二个区块的信息进行签名之后,分别将签名结果发布到所述安全公告栏中,以便任何一方均可以获取到,从而计算下一个区块的魔数,即第二个区块的魔数(魔数2)。
根据联盟章程中的规定,若是规定联盟主链中的区块是由各联盟成员方轮流负责,则联盟主链中的第三个区块由P3负责。由于生成第三个区块所需的魔数3相关的参数均被公布到安全公告栏上,因此P3从所述安全公告栏上获取所述当前区块之前第二个区块的哈希值(第一个区块的哈希值R1)、前一个区块的开始时间的时间戳(第二个区块的开始时间的时间戳T2)以及前一个区块的签名信息然后,利用所述当前区块之前第二个区块的哈希值R1对所述前一个区块的开始时间的时间戳T2以及前一个区块的签名信息进行哈希运算,得到所述当前区块的魔数,即得到第三个区块的魔数,即魔数3。然后,P3从CPK系统获取当前区块(第三个区块)的开始时间的时间戳T3,即可开始接收第三个区块中的区块链数据。
以此类推,当第l个区块结束时,得到其哈希值Rl。设下一个区块l+1由联盟成员方Pj+1负责,获取的时间戳为Tl+1,则Pj+1先计算哈希参数Fl+1=H(Rl,Ql+1||Tl+1),其中,Rl为前一个区块的哈希值,Ql+1为所述当前区块的魔数,Tl+1为所述当前区块的开始时间的时间戳。接着对新接收到的区块链数据进行哈希运算,根据得到所述当前区块l+1的哈希值Rl+1,其中,nk为所述当前区块中的区块链数据的个数,为所述当前区块l+1的第nk个区块链数据,为所述当前区块l+1的第nk-1个区块链数据的哈希值,其中,所述当前区块l+1的第1个区块链数据的哈希值为Rl+1,1=H(Fl+1,Dl+1,1),Dl+1,1为所述当前区块l+1的第1个区块链数据。
当第l+1个区块开始后,各方将按以下步骤共同计算下一个区块的魔数:
各方将自己的签名结果发布到所述安全公告栏中,然后任何一方都可以计算下一个区块的魔数:
Ql+2作为下一个区块,即第l+2个区块的魔数。通过魔数将每个区块的数据绑定在一起,形成联盟主链的链式数据结构。
另外,为了确保每个区块的哈希运算的准确性,可并行设立一个核账子系统,进行核账,即哈希运算在核账子系统中同步进行,两者输出一致时,即认为计算无误。该核账子系统可设置在生成上述联盟主链的服务器之外,为独立的设备,或者设置在生成上述联盟主链的服务器内的虚拟机中,对于上述哈希运算,在核账子系统中可计算一个核对一个,对于核对无误的数据可直接进行删除,减少存储空间的占用。
所述联盟链除了上述描述的联盟主链之外,还有每个联盟成员方Pi自行维护的联盟子链。下面将详细描述联盟子链的数据处理过程。联盟子链的结构仍如图1所示,不同的是,魔数是由该联盟子链对应的联盟成员方、各个监管方以及公证方共同生成的,而链中的数据则是来自其自身的业务。图3是本发明实施例提供的联盟子链的数据处理方法的流程示意图。如图3所示,包括如下步骤:
步骤301,获取所述联盟成员方对应的联盟子链中当前区块的开始时间的时间戳、当前区块的魔数以及前一个区块的哈希值;
步骤302,获取所述联盟子链中当前区块的区块链数据,并根据所述联盟子链中当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟子链中当前区块的哈希值,其中,若所述联盟子链中当前区块为所述联盟子链中的第一个区块时,所述第一个区块的魔数与所述第一个区块的预定起始值和所述第一个区块的开始时间的时间戳相关;若所述联盟子链中当前区块为所述联盟子链中的非第一个区块时,所述当前区块的魔数与前一个区块的签名信息相关,所述前一个区块的签名信息包括所述联盟子链对应的联盟成员方、各个监管方以及公证方对前一个区块的签名。
其中,假设上述联盟子链对应的联盟成员方为P1。当所述当前区块为所述联盟子链中的第一个区块时,在所述第一个区块形成前,P1获取所述当前区块的开始时间的时间戳、当前区块的魔数以及前一个区块的哈希值。其中,根据系统对随机数长度的限制,P1生成一个定长的第二随机数r0,并将其发布到安全公告栏,同时将其作为所述联盟子链中所述第一个区块的预定起始值(即前一个区块的哈希值)。同时P1从CPK系统获取所述联盟子链中第一个区块的开始时间的时间戳t1。然后利用所述第二随机数对所述第一个区块的开始时间的时间戳做哈希运算,得到所述联盟子链中第一个区块的魔数,如q1=H(r0,t1),将q1作为所述联盟子链中第一个区块的魔数,并将其填入第一个区块的头部,同时开始第一个区块的生成,即在接收到所述联盟子链中第一个区块链数据(如d1.1)时,以q1对其进行哈希运算,即r1.1=H(q1,d1.1),并依次对后续数据进行哈希运算。如在接收到第二个区块链数据d1.2之后,r1.1作为初始值,对d1.2进行哈希运算,即r1.2=H(r1.1,d1.2),直到接收到所述第一个区块的最后一个(如w1)区块链数据将前一个区块链数据的哈希值作为初始值,对进行哈希运算,得到所述第一个区块的哈希值因此,第一个区块结束,P1将负责生产区块头部,将预定起始值r0、第一个区块的哈希值r1、第一个区块的魔数(魔数1)以及第一个区块的开始时间的时间戳记录在所述联盟子链中第一个区块的头部中,同时P1将第一个区块的哈希值r1公布到所述安全公告栏。
另外,P1、各个监管方以及公证方对所述第一个区块的信息进行签名,从所述安全公告栏上获取签名所需的第一个区块的预定起始值r0与第一个区块的开始时间的时间戳t1,然后各自根据q1=H(r0,t1)得到所述联盟子链中第一个区块的魔数(魔数1),之后通过各自的私钥以及r0、t1、q1,得到各自的签名:
通过上述各方对所述联盟子链的第一个区块的信息进行签名之后,分别将签名结果发布到所述安全公告栏中,以便任何一方均可以获取到,从而计算所述联盟子链的第二个区块的魔数:即魔数2。另外,需要注意的是,这里要求所述联盟链中的m个监管方J1,J2,…,Jm必须保持规定的顺序。
当所述联盟子链的第一个区块结束时,作为所述联盟子链的实际管理者P1将在其联盟子链的第一区块的头部记录r1和q1。同时,P1还将取得其联盟子链的第一个区块的结束时间,也就是第二个区块的开始时间的时间戳t2。此外,P1有义务将r1和t2发布到所述安全公告栏。第二个区块开始的时候,P1需要先获取到第二个区块所需的魔数2相关的参数,即第一个区块的起始区块值r0、第一个区块的开始时间的时间戳t1以及第一个区块的签名信息 然后,利用所述联盟子链的当前区块之前第二个区块的哈希值对所述前一个区块的开始时间的时间戳以及前一个区块的签名信息进行哈希运算,得到所述当前区块的魔数,即利用第一个区块的起始区块值r0对第一个区块的开始时间的时间戳t1以及第一个区块的签名信息进行哈希运算,得到第二个区块的魔数得到第二个区块的魔数,即魔数2。
然后,P1根据Gb+1=H(rb,qb+1||tb+1),得到所述联盟子链中当前区块b+1的哈希参数Gb+1,其中,rb为前一个区块b的哈希值,qb+1为所述当前区块b+1的魔数,tb+1为所述当前区块b+1的开始时间的时间戳。即根据G2=H(r1,q2||t2)得到所述联盟子链的第二个区块的哈希参数G2。然后,根据得到所述联盟子链中当前区块b+1的哈希值rb+1,其中,wk为所述联盟子链中当前区块中的区块链数据的个数,为所述联盟子链中当前区块b+1的第wk个区块链数据,为所述联盟子链中当前区块b+1的第wk-1个区块链数据的哈希值。其中,所述联盟子链中当前区块b+1的第1个区块链数据的哈希值为rb+1,1=H(gb+1,db+1,1),gb+1为所述联盟子链中当前区块b+1的哈希参数,db+1,1为所述当前区块b+1的第1个区块链数据。例如,当P1接收到所述联盟子链的第二个区块的第一个区块链数据d2.1时,以G2对其进行哈希运算,即r2.1=H(G2,d2.1),并依次对后续数据进行哈希运算,如在接收到第二个区块链数据d2.2之后,r2.1作为初始值,对d2.2进行哈希运算,即r2.2=H(r2.1,d2.2),直到接收到所述联盟子链第二个区块的最后一个(如w2)区块链数据将前一个区块链数据的哈希值作为初始值,对进行哈希运算,得到所述联盟子链的第二个区块的哈希值因此,所述联盟子链的第二个区块结束,P1将负责生产区块头部,将前一个区块的哈希值(即第一个区块的哈希值r1)、当前区块的哈希值(即第二个区块的哈希值r2)、当前区块的魔数(即第二个区块的魔数,魔数2)以及当前区块的开始时间的时间戳(即第二个区块的开始时间的时间戳t2)记录在当前区块的头部中(即第二个区块的头部中),同时P1将当前区块的哈希值(即第二个区块的哈希值r2)公布到所述安全公告栏。
同样,P1、各个监管方以及公证方对所述联盟子链的第二个区块的信息进行签名,需要利用第二个区块的魔数、第一个区块的哈希值r1以及第二个区块的开始时间的时间戳t2。对于第二个区块的魔数,各方可以从所述安全公告栏上获取第一个区块的起始区块值r0、第一个区块的开始时间的时间戳t1以及第一个区块的签名信息然后,利用所述当前区块之前第二个区块的哈希值对所述前一个区块的开始时间的时间戳以及前一个区块的签名信息进行哈希运算,得到所述当前区块的魔数,即得到第二个区块的魔数,从而各方均可得到第二个区块的魔数。另外,各方可以从所述安全公告栏上获取签名所需的第一个区块的哈希值r1与第二个区块的开始时间的时间戳t2。之后,通过各自的私钥以及q2、r1、t2,得到各自的签名:
通过上述各方对第二个区块的信息进行签名之后,分别将签名结果发布到所述安全公告栏中,以便任何一方均可以获取到,从而计算所述联盟子链的下一个区块的魔数,即第三个区块的魔数(魔数3)。
由于生成所述联盟子链的第三个区块所需的魔数3相关的参数均被公布到安全公告栏上,因此P1从所述安全公告栏上获取前一个区块的签名信息 并在本地获取到所述当前区块之前第二个区块的哈希值(第一个区块的哈希值r1)、前一个区块的开始时间的时间戳(第二个区块的开始时间的时间戳t2)。然后,利用所述当前区块之前第二个区块的哈希值r1对所述前一个区块的开始时间的时间戳t2以及前一个区块的签名信息进行哈希运算,得到所述联盟子链的当前区块的魔数,即得到第三个区块的魔数,即魔数3。然后,P1从CPK系统获取当前区块(第三个区块)的开始时间的时间戳t3,即可开始接收第三个区块中的区块链数据。
以此类推,当第b个区块结束时,得到其哈希值rb。设下一个区块b+1的时间戳为tb+1,则P1先计算哈希参数Gb+1=H(rb,qb+1||tb+1),其中,rb为前一个区块b的哈希值,qb+1为所述当前区块b+1的魔数,tb+1为所述当前区块b+1的开始时间的时间戳。接着对新接收到的区块链数据进行哈希运算,根据得到所述联盟子链中当前区块b+1的哈希值rb+1,其中,wk为所述联盟子链中当前区块中的区块链数据的个数,为所述联盟子链中当前区块b+1的第wk个区块链数据,为所述联盟子链中当前区块b+1的第wk-1个区块链数据的哈希值,其中,所述联盟子链中当前区块b+1的第1个区块链数据的哈希值为rb+1,1=H(gb+1,db+1,1),gb+1为所述联盟子链中当前区块b+1的哈希参数,db+1,1为所述当前区块b+1的第1个区块链数据。
当第b+1个区块开始后,各方将按以下步骤共同计算下一个区块的魔数:
各方将自己的签名结果发布到所述安全公告栏中,然后任何一方都可以计算下一个区块的魔数:
qb+2作为下一个区块,即第b+2个区块的魔数。通过魔数将每个区块的数据绑定在一起,形成联盟主链的链式数据结构。
另外,为了确保每个区块的哈希运算的准确性,可并行设立一个核账子系统,进行核账,即哈希运算在核账子系统中同步进行,两者输出一致时,即认为计算无误。该核账子系统可设置在生成上述联盟子链的服务器之外,为独立的设备,或者设置在生成上述联盟子链的服务器内的虚拟机中,对于上述哈希运算,在核账子系统中可计算一个核对一个,对于核对无误的数据可直接进行删除,减少存储空间的占用。
通过上述对联盟链中的联盟主链与联盟子链的数据处理,首先,对于联盟主链中每个区块哈希值的计算,均有对应的核账子系统的核算,保证了哈希值的计算不会发生错误,提高了其准确性与可验证性。而其他联盟成员有权复制和保存数据,并可对区块的哈希值重新计算核对,进一步验证了其正确性,因此区块的哈希值是正确的、可验证的。另外,联盟主链中的魔数是不可伪造的。因为联盟主链中的魔数是由每个联盟成员与监管方、公证方分别使用私钥对前一个区块的魔数、之前第二个区块的哈希值和前一个区块的时戳进行签名后,再经哈希计算而得,如果这个魔数是可伪造的,则意味着哈希函数是不安全的(随意修改输入而产生意定的输出),或者参与方的签名是可伪造的,而这是不可能的。再有,一旦数据(包括联盟主链和联盟子链)被记入区块,则该数据不能被篡改,不论是单方篡改,还是联盟的部分成员乃至所有成员合谋篡改。如果某一方或联盟的部分成员乃至全部成员合谋篡改了区块链数据,则将导致该区块哈希值的改变,因此会导致所有参与方签名值的改变,从而导致下一个魔数的改变,进而导致此后所有区块的哈希值和魔数的改变。由于存在监管方和公证方,他们的签名是不可伪造的,因此这种篡改不能得到监管方和公证方的认可。还有,由于任一数据纳入区块链后将不可篡改,因此数据的生成者在哪一个区块中提交了数据是完全可以追溯、不可否认的。特别是在每个数据提交时必须由生成者签名的要求下,如果他想改变该数据并重新签名,将导致与该区块哈希值不符,因而不被认可。因此,无论是联盟链中的联盟主链还是联盟子链中的数据,在多方监管的情况下,其数据的真实性将得到保证。
另外,对于本发明实施例中的运行效率而言,从联盟主链和联盟子链的构造过程中可以看出,整个链中只涉及到哈希函数的计算、时间戳的获取和基于数字签名的多方计算。在一个区块体的形成过程中,时间戳的获取极快,哈希函数的计算也极快。基于数字签名的和哈希运算的魔数生成过程虽然要稍慢一些,但一个区块开始后,立即进行下一个区块的魔数的计算,中间有一个区块时长的间隔,等该区块结束时,只要获取到时间戳,即可立即开始下一个区块,这就保证了区块间可以无缝地进行衔接,极为高效地运行。
因此,通过本发明实施例由于采用了CPK模式,将会支撑海量用户而不会影响到联盟链系统的效率。加上多方计算魔数时,提前一个时间段进行,因此能以极高的效率运行。
相应的,本发明实施例还提供一种基于CPK的联盟链的数据处理服务器,所述服务器用于执行上述实施例所述的基于CPK的联盟链的数据处理方法。
相应的,本发明实施例还提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述实施例所述的基于CPK的联盟链的数据处理方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种基于CPK的联盟链的数据处理方法,其特征在于,所述方法应用于所述联盟链的联盟成员方,所述方法包括:
获取联盟主链中当前区块的开始时间的时间戳、当前区块的魔数以及前一个区块的哈希值,所述魔数为在每个区块中加入的一个定长的数据;
获取所述联盟主链中当前区块的区块链数据,并根据所述当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟主链中当前区块的哈希值,
其中,若所述当前区块为所述联盟主链中的第一个区块时,所述第一个区块的魔数与所述第一个区块的设定起始值和所述第一个区块的开始时间的时间戳相关;若所述当前区块为所述联盟主链中的非第一个区块时,所述当前区块的魔数与前一个区块的签名信息相关,所述前一个区块的签名信息包括所述联盟链的各个联盟成员方、各个监管方以及公证方对前一个区块的签名,
其中,若所述当前区块为所述联盟主链中的第一个区块时,获取当前区块的魔数以及前一个区块的哈希值包括:
获取第一随机数作为所述第一个区块的设定起始值;
利用所述第一随机数对所述第一个区块的开始时间的时间戳做哈希运算,得到所述第一个区块的魔数;
所述根据所述当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟主链中当前区块的哈希值包括:
根据得到所述联盟主链中第一个区块的哈希值R1,其中,为所述第一个区块的倒数第二个区块链数据的哈希值,为所述第一个区块的倒数第一个区块链数据,n1为所述第一个区块中的区块链数据的个数,其中,所述第一个区块的第一个区块链数据的哈希值为R1.1=H(Q1,D1.1),Q1为所述第一个区块的魔数,D1.1为所述第一个区块的第一个区块链数据;或者
若所述当前区块为所述联盟主链中的非第一个区块时,所述获取当前区块的魔数包括:
获取在所述当前区块之前第二个区块的哈希值、前一个区块的开始时间的时间戳以及前一个区块的签名信息;
利用所述当前区块之前第二个区块的哈希值对所述前一个区块的开始时间的时间戳以及前一个区块的签名信息进行哈希运算,得到所述当前区块的魔数;
所述根据所述当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟主链中当前区块的哈希值包括:
根据Fl+1=H(Rl,Ql+1||Tl+1),得到所述当前区块l+1的哈希参数Fl+1,其中,Rl为前一个区块的哈希值,Ql+1为所述当前区块的魔数,Tl+1为所述当前区块的开始时间的时间戳;
2.根据权利要求1所述的方法,其特征在于,所述前一个区块的签名信息包括:以及其中,l为前一个区块,l-1为所述当前区块之前第二个区块,Ql为前一个区块的魔数,Rl-1为之前第二个区块的哈希值,Tl为前一个区块的开始时间的时间戳,为所述联盟链的第i个联盟成员方Pi对第l个区块的签名,为第i个联盟成员方Pi的私钥,n为所述联盟链的联盟成员方的个数,为所述联盟链的第k个监管方Jk对第l个区块的签名,为第k个监管方Jk的私钥,m为所述联盟链的监管方的个数,为所述联盟链的公证方对第l个区块的签名,为公证方N的私钥,其中,所述联盟主链的第一个区块的签名信息包括 以及Q1为所述第一个区块的魔数,R0为生成所述第一个区块的魔数的第一随机数,T1为所述第一个区块的开始时间的时间戳,且Q1=H(R0,T1)。
3.根据权利要求1所述的方法,其特征在于,所述利用所述当前区块之前第二个区块的哈希值对所述前一个区块的开始时间的时间戳以及前一个区块的签名信息进行哈希运算,得到所述当前区块的魔数包括:
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述联盟成员方对应的联盟子链中当前区块的开始时间的时间戳、当前区块的魔数以及前一个区块的哈希值;
获取所述联盟子链中当前区块的区块链数据,并根据所述联盟子链中当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟子链中当前区块的哈希值,
其中,若所述联盟子链中当前区块为所述联盟子链中的第一个区块时,所述第一个区块的魔数与所述第一个区块的预定起始值和所述第一个区块的开始时间的时间戳相关;若所述联盟子链中当前区块为所述联盟子链中的非第一个区块时,所述当前区块的魔数与前一个区块的签名信息相关,所述前一个区块的签名信息包括所述联盟子链对应的联盟成员方、各个监管方以及公证方对前一个区块的签名。
5.根据权利要求4所述的方法,其特征在于,若所述联盟子链中当前区块为所述联盟子链中的第一个区块时,所述获取所述联盟子链中当前区块的魔数以及前一个区块的哈希值包括:
获取第二随机数作为所述联盟子链中所述第一个区块的预定起始值;
利用所述第二随机数对所述联盟子链中第一个区块的开始时间的时间戳做哈希运算,得到所述联盟子链中第一个区块的魔数。
7.根据权利要求4所述的方法,其特征在于,若所述联盟子链中当前区块为所述联盟子链中的非第一个区块时,所述获取当前区块的魔数包括:
获取在所述联盟子链中当前区块之前第二个区块的哈希值、前一个区块的开始时间的时间戳以及前一个区块的签名信息;
利用所述联盟子链中当前区块之前第二个区块的哈希值对所述联盟子链中前一个区块的开始时间的时间戳以及所述联盟子链中前一个区块的签名信息进行哈希运算,得到所述联盟子链中当前区块的魔数。
8.根据权利要求7所述的方法,其特征在于,所述联盟子链中前一个区块的签名信息包括:以及其中,b为前一个区块,b-1为所述当前区块之前第二个区块,qb为前一个区块的魔数,rb-1为之前第二个区块的哈希值,tb为前一个区块的开始时间的时间戳,为所述联盟链的第i个联盟成员方Pi对其联盟子链中第b个区块的签名,为第i个联盟成员方Pi的私钥,为所述联盟链的第k个监管方Jk对所述联盟子链中第b个区块的签名,为第k个监管方Jk的私钥,m为所述联盟链的监管方的个数,为所述联盟链的公证方对所述联盟子链中第b个区块的签名,为公证方N的私钥,其中,所述联盟子链的第一个区块的签名信息包括 以及q1为所述联盟子链第一个区块的魔数,r0为生成所述联盟子链的第一个区块的魔数的第一随机数,t1为所述联盟子链第一个区块的开始时间的时间戳,且q1=H(r0,t1)。
9.根据权利要求7所述的方法,其特征在于,所述利用所述联盟子链中当前区块之前第二个区块的哈希值对所述联盟子链中前一个区块的开始时间的时间戳以及所述联盟子链中前一个区块的签名信息进行哈希运算,得到所述联盟子链中当前区块的魔数包括:
10.根据权利要求4所述的方法,其特征在于,所述根据所述联盟子链中当前区块的开始时间的时间戳、当前区块的魔数、前一个区块的哈希值与所述当前区块的区块链数据,得到所述联盟子链中当前区块的哈希值包括:
根据Gb+1=H(rb,qb+1||tb+1),得到所述联盟子链中当前区块b+1的哈希参数Gb+1,其中,rb为前一个区块b的哈希值,qb+1为所述当前区块b+1的魔数,tb+1为所述当前区块b+1的开始时间的时间戳;
11.一种基于CPK的联盟链的数据处理服务器,其特征在于,所述服务器用于执行上述权利要求1-10任一项所述的基于CPK的联盟链的数据处理方法。
12.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1-10中任一项所述的基于CPK的联盟链的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910677985.4A CN110544167B (zh) | 2019-07-25 | 2019-07-25 | 基于cpk的联盟链的数据处理方法、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910677985.4A CN110544167B (zh) | 2019-07-25 | 2019-07-25 | 基于cpk的联盟链的数据处理方法、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110544167A CN110544167A (zh) | 2019-12-06 |
CN110544167B true CN110544167B (zh) | 2022-03-01 |
Family
ID=68710345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910677985.4A Active CN110544167B (zh) | 2019-07-25 | 2019-07-25 | 基于cpk的联盟链的数据处理方法、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110544167B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1858795A (zh) * | 2006-05-22 | 2006-11-08 | 北京易恒信认证科技有限公司 | 一种基于cpk的电子票据可信认证系统和方法 |
CN107425981A (zh) * | 2017-06-12 | 2017-12-01 | 清华大学 | 一种基于区块链的数字证书管理方法及系统 |
CN107807951A (zh) * | 2017-09-18 | 2018-03-16 | 联动优势科技有限公司 | 一种区块链生成方法、数据验证方法、节点及系统 |
CN108122098A (zh) * | 2018-01-10 | 2018-06-05 | 晋商博创(北京)科技有限公司 | 基于cpk的数字货币系统、支付方法及终端 |
CN108270821A (zh) * | 2016-12-30 | 2018-07-10 | 深圳瀚德创客金融投资有限公司 | 用于区块链网络中的区块生成方法和网络节点 |
WO2018224954A1 (en) * | 2017-06-07 | 2018-12-13 | nChain Holdings Limited | Computer-Implemented System and Method for Managing Transactions Over a Blockchain Network |
CN109246084A (zh) * | 2018-08-13 | 2019-01-18 | 中国联合网络通信集团有限公司 | 新区块生成方法、装置、电子设备与存储介质 |
CN109583893A (zh) * | 2018-11-21 | 2019-04-05 | 北京航空航天大学 | 可追踪的基于区块链的数字货币交易系统 |
WO2019116249A1 (en) * | 2017-12-15 | 2019-06-20 | nChain Holdings Limited | Computer-implemented systems and methods for authorising blockchain transactions with low-entropy passwords |
-
2019
- 2019-07-25 CN CN201910677985.4A patent/CN110544167B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1858795A (zh) * | 2006-05-22 | 2006-11-08 | 北京易恒信认证科技有限公司 | 一种基于cpk的电子票据可信认证系统和方法 |
CN108270821A (zh) * | 2016-12-30 | 2018-07-10 | 深圳瀚德创客金融投资有限公司 | 用于区块链网络中的区块生成方法和网络节点 |
WO2018224954A1 (en) * | 2017-06-07 | 2018-12-13 | nChain Holdings Limited | Computer-Implemented System and Method for Managing Transactions Over a Blockchain Network |
CN107425981A (zh) * | 2017-06-12 | 2017-12-01 | 清华大学 | 一种基于区块链的数字证书管理方法及系统 |
CN107807951A (zh) * | 2017-09-18 | 2018-03-16 | 联动优势科技有限公司 | 一种区块链生成方法、数据验证方法、节点及系统 |
WO2019116249A1 (en) * | 2017-12-15 | 2019-06-20 | nChain Holdings Limited | Computer-implemented systems and methods for authorising blockchain transactions with low-entropy passwords |
CN108122098A (zh) * | 2018-01-10 | 2018-06-05 | 晋商博创(北京)科技有限公司 | 基于cpk的数字货币系统、支付方法及终端 |
CN109246084A (zh) * | 2018-08-13 | 2019-01-18 | 中国联合网络通信集团有限公司 | 新区块生成方法、装置、电子设备与存储介质 |
CN109583893A (zh) * | 2018-11-21 | 2019-04-05 | 北京航空航天大学 | 可追踪的基于区块链的数字货币交易系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110544167A (zh) | 2019-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210314397A1 (en) | Fund conversion between blockchains | |
US20210258169A1 (en) | Split-key wallet access between blockchains | |
CN107506661B (zh) | 一种基于区块链的生成房屋历史记录的方法 | |
JP6756041B2 (ja) | 情報保護用のシステム及び方法 | |
KR20200099149A (ko) | 낮은 엔트로피 패스워드로 블록체인 트랜잭션을 승인하기 위한 컴퓨터 구현 시스템 및 방법 | |
CN110785783A (zh) | 对用于区块链系统的签名验证进行测试的方法和设备 | |
US11227282B2 (en) | Time-bounded activity chains with multiple authenticated agent participation bound by distributed single-source-of-truth networks that can enforce automated value transfer | |
CN112132579B (zh) | 一种区块链共识节点更新方法及装置 | |
CN111080296B (zh) | 一种基于区块链系统的验证方法及装置 | |
CN111062188A (zh) | 基于区块链的唯一标识码的生成、校验方法及设备 | |
CN108540447B (zh) | 一种基于区块链的证书验证方法及系统 | |
CN109981586B (zh) | 一种节点标记方法及装置 | |
CN111488134B (zh) | 基于区块链的公开随机数生成方法及设备 | |
CN114039733B (zh) | 一种针对联盟链的存证业务转移方法、装置及设备 | |
CN114529415A (zh) | 基于区块链的交易验证方法及装置、电子设备 | |
CN110544167B (zh) | 基于cpk的联盟链的数据处理方法、服务器及存储介质 | |
CN111311260A (zh) | 一种账户私钥的重置方法及装置 | |
CN114846765B (zh) | 提供去中心化身份验证的方法和设备 | |
CN112636904B (zh) | 随机数生成与验证方法、装置、电子设备及可读存储介质 | |
CN109698750A (zh) | 区块链的区块生成方法、装置、设备及可读存储介质 | |
CN113139209A (zh) | 一种基于原子性签名的可验证凭据实现方法和系统 | |
CN111383008B (zh) | 基于账户模型的区块链转账方法及装置 | |
CN111523892B (zh) | 一种区块链的跨链交易方法及装置 | |
US11575744B2 (en) | Computer-implemented system and method for controlling processing steps of distributed system | |
CN114930372A (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 |