一种区块链数据处理方法、装置及计算机可读存储介质与流程

文档序号:15639762发布日期:2018-10-12 21:55阅读:195来源:国知局

本申请涉及但不限于计算机数据处理技术领域,尤指一种区块链数据处理方法、装置及计算机可读存储介质。



背景技术:

区块链技术也被称为分布式账本技术,是一种去中心化的分布式数据库技术,其特点是去中心化、公开透明、不可篡改、可信任。

然而,当前的区块链系统中,用户对交易数据签名后,就相当于打上了该用户的标记,不利于保护用户身份隐私。而如果通过某种方式保护用户身份隐私,往往又会带来用户检索交易数据的不便。



技术实现要素:

以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。

本申请实施例提供一种区块链数据处理方法、装置及计算机可读存储介质,能够快速检索同一用户端的所有交易数据,同时保护用户的隐私。

第一方面,本申请实施例提供一种区块链数据处理方法,所述方法包括:

对交易数据验证通过后,对所述交易数据进行背书签名;所述交易数据包括交易接收端的交易地址和本次交易时生成的地址参数,所述交易地址利用所述交易接收端上次接收交易时生成的地址参数生成,所述本次交易时生成的地址参数用于生成所述交易接收端下次接收交易的交易地址;所述交易数据上链后,同一交易接收端的所有接收交易数据形成一链式结构。

在一个可选实施例中,所述链式结构中包含相同交易地址的交易数据互为兄弟节点。

在一个可选实施例中,对交易数据验证之前,所述方法还包括:生成地址参数,从状态树查找所述交易接收端的交易地址,将生成的地址参数和查找到的所述交易地址发送给交易发送端,由所述交易发送端将所述交易地址和地址参数添加到交易数据中;

所述对所述交易数据进行背书签名后,所述方法还包括:判断所述交易数据中的交易地址与所述状态树中的所述交易接收端的交易地址相同时,利用所述生成的地址参数生成一个新的交易地址更新所述状态树中的所述交易接收端的交易地址。

在一个可选实施例中,所述地址参数为随机数;

所述利用所述生成的地址参数生成一个新的交易地址,包括:利用函数对所述生成的地址参数以及所述交易接收端的密钥进行一次或多次运算,生成交易地址。

在一个可选实施例中,所述方法还包括:

收到用户端发起的密钥更新请求,对所述用户端进行身份认证后,颁发新的加密密钥,发起转换交易流程,使转换机构账户发起交易,由所述转换机构账户的签名密钥对所述交易数据进行签名,生成特定解锁脚本,以将所述用户端原账户中的未花费的交易输出转换为新的未花费交易输出。

第二方面,本申请实施例还提供一种区块链数据处理方法,所述方法包括:

交易接收端根据上一次接收交易数据中的地址参数生成本次接收交易的交易地址,从账本数据中查找包含所述交易地址的交易数据。

在一个可选实施例中,当所述交易接收端作为交易发送端时,所述方法还包括:所述交易发送端提交交易时,使用引用接收交易数据的上一次接收交易数据中的地址参数生成公私钥对,使用所述公私钥对生成当前交易中的解锁脚本。

第三方面,本申请实施例还提供一种区块链数据处理管理端装置,所述管理端装置包括验证模块和背书签名模块,其中:

所述验证模块,用于对交易数据进行验证;

所述背书签名模块,用于在所述验证模块验证通过后,对所述交易数据进行背书签名;

所述交易数据包括交易接收端的交易地址和本次交易时生成的地址参数,所述交易地址利用所述交易接收端上次接收交易时生成的地址参数生成,所述本次交易时生成的地址参数用于生成所述交易接收端下次接收交易的交易地址;所述交易数据上链后,同一交易接收端的所有接收交易数据形成一链式结构。

在一个可选实施例中,所述装置还包括第一地址生成模块,用于生成地址参数,以及从状态树查找所述交易接收端的交易地址,将生成的地址参数和查找到的所述交易地址发送给交易发送端;以及用于判断所述交易数据中的交易地址与所述状态树中的所述交易接收端的交易地址相同时,利用所述生成的地址参数生成一个新的交易地址更新所述状态树中的所述交易接收端的交易地址。

在一个可选实施例中,所述地址参数为随机数;

所述第一地址生成模块利用所述生成的地址参数生成一个新的交易地址,包括:所述第一地址生成模块利用函数对所述生成的地址参数以及所述交易接收端的密钥进行一次或多次运算,生成交易地址。

在一个可选实施例中,所述装置还包括颁发密钥模块和转换交易模块,其中:

所述颁发密钥模块,用于收到用户端发起的密钥更新请求,对所述用户端进行身份认证后,颁发新的加密密钥;

所述转换交易模块,用于发起转换交易流程,使转换机构账户发起交易,由所述转换机构账户的签名密钥对所述交易数据进行签名,生成特定解锁脚本,以将所述用户端原账户中的未花费的交易输出转换为新的未花费交易输出。

第四方面,本申请实施例还提供一种区块链数据处理用户端装置,所述用户端装置包括第二地址生成模块和检索模块,其中:

所述第二地址生成模块,用于根据上一次接收交易数据中的地址参数生成本次接收交易的交易地址;

所述检索模块,用于从账本数据中查找包含所述交易地址的交易数据。

在一个可选实施例中,所述用户端装置还包括签名模块,所述签名模块用于在所述用户端作为交易发送端时,在提交交易时,使用引用接收交易数据的上一次接收交易数据中的地址参数生成公私钥对,使用所述公私钥对生成当前交易中的解锁脚本。

此外,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现上述管理端执行方法或者用户端执行方法的步骤。

在具有管理端的区块链系统中,使用户端的接收交易数据形成一个或有兄弟节点的逻辑链条,从而能够快速检索同一用户端的所有交易数据,同时使用户端具有一次性交易地址的特征,达到保护用户身份隐私的目的。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

在阅读并理解了附图和详细描述后,可以明白其他方面。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例一流程图;

图2为本发明实施例一中一可选流程图;

图3为本发明实施例一装置结构示意图;

图4为本发明实施例二流程图;

图5为本发明实施例二装置结构示意图;

图6为本发明应用示例流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

下面先对本申请所涉及的区块链系统进行介绍。

本文所述区块链系统由用户端和管理端系统组成,管理端系统使用联盟链或私有链模式,生成的账本数据对外公开,用户端及外部使用者包括监管者和第三方可获取对外的账本数据及验证账本。管理端系统包括管理端、链生成机构、发行机构、转换机构等,其中,管理端可以是一个服务器集群,其中包括一台或多台服务器;转换机构可以与管理端合设,也可以分开设置;链生成机构和发行机构可以分别有多个。链上数据分为控制数据和交易数据两部分。控制数据主要是管理端用来管理和控制区块链系统而发布的信息数据的集合,包括用户和机构的注册信息,token的发行,交易规则和密钥、证书等更新信息。除用户的身份信息为密文外,其余大部分数据都为明文,以方便有效监管,也能保护用户的身份隐私。交易数据是所有单笔交易的集合。每笔交易数据中除token数额和输出地址对应的用户标识(可选)为密文外,其余数据都为明文。交易的token数额使用机密交易的方式加密,除该token对应交易地址的用户端和管理端能解密明文外,其余均不能解密查看明文,但可用密文验证机密交易token数额的有效性,即在密文的情况下验证交易的所有输入token之和减去所有输出token之和是否等于零。

在本实施例中,用户端的密钥分为签名密钥和加密密钥两类。其中:

签名密钥是由用户端本地生成和管理使用的,使用不可导出的硬件作为载体,以确保密钥的安全使用。签名密钥通过ca(certificateauthority,认证授权)机构颁发用户的身份认证证书或使用eid(electronicidentity,公安部公民网络身份识别系统签发给公民的网络身份标识)机制,实现用户的实名身份认证。签名密钥包括签名公钥和签名私钥。

加密密钥是用户端通过身份认证证书或eid在管理端注册后,由管理端颁发相应的加密密钥给用户端,由用户端的本地钱包存储和使用。加密密钥包括机密交易密钥、秘密共享子密钥和对称加密密钥。机密交易密钥用于加、解密用户交易中的相关token数额;秘密共享子密钥用于使用秘密共享算法加密交易双方的身份标识等数据;对称加密密钥用于加密存储用户端的身份信息等数据。除上述解释的用途外,加密密钥中的一个或多个密钥还可用于生成交易地址。

本实施例系统中使用uxto(unspenttransactionoutputs,未花费的交易输出)模型。在utxo模型中,一笔交易包括一个或多个输入和一个或多个输出。每个输入是一个对现有的未花费交易输出的引用,以及对应的解锁脚本。当对现有的未花费交易输出引用解锁后,就不能够再次引用解锁,也即不能够双花。而每个输出包括token数额和锁定脚本,锁定脚本需对应的解锁脚本才能够解锁,也即创建了一个新的未花费的交易输出。锁定脚本包含一个交易地址和解锁方式,其中交易地址是用一非对称密钥的公钥通过一单向不可逆函数得到,而解锁脚本是交易地址对应的公钥数据和私钥对交易数据的签名,可以使用该公钥验证签名。锁定脚本和解锁脚本还可以使用多重签名的方式。

下面分实施例对本发明的方法和装置进行说明:

实施例一

本实施例描述管理端的区块链数据处理方法,如图1所示,包括以下步骤:

步骤s1,对交易数据进行验证;

所述交易数据包括交易接收端的交易地址和本次交易时生成的地址参数,所述交易地址利用所述交易接收端上次接收交易时生成的地址参数生成,所述本次交易时生成的地址参数用于生成所述交易接收端下次接收交易的交易地址;

交易数据由用户端提交给管理端,管理端对交易数据的验证主要是验证有效性,例如包括验证解锁脚本的有效性,token数额的有效性,以及交易地址是否是对应用户的地址等;

步骤s2,交易数据验证通过后,对所述交易数据进行背书签名。

管理端的背书签名是对用户端提交的整个交易数据的签名。

所述交易数据上链后,同一交易接收端的所有接收交易数据将会形成一链式结构。该链式结构为一逻辑链。该逻辑链隐含在生成的账本数据中。

管理端对交易数据背书签名后,通知系统上链。交易数据上链可以是将所述交易数据写入联盟链或私有链,然后生成的账本数据可对外公开。

可选地,如果有多个针对同一交易接收端的并发交易,即存在多个包含相同交易地址的交易数据,则包含相同交易地址的交易数据在所述链式结构中互为兄弟节点。

通过交易数据中包含的用上一次接收交易中的地址参数生成的交易地址和用于生成下一次交易地址的地址参数,使得同一用户端的接收交易数据形成一个或有兄弟节点的逻辑链条,从而能够快速检索用户端的所有接收交易数据,且由于发送交易数据是引用接收交易数据,进而能够实现快速获取到所有交易数据。同时该交易地址是一次性的,对不同用户是唯一的,从而可以达到保护用户身份隐私的目的。

在一个可选实施例中,如图2所示:

对交易数据验证(步骤s1)之前,所述方法还包括:

步骤s0,生成地址参数,从状态树查找所述交易接收端的交易地址,将生成的地址参数和查找到的所述交易地址发送给交易发送端,由所述交易发送端将所述交易地址和地址参数添加到交易数据中;

所述对所述交易数据进行背书签名(步骤s2)之后,所述方法还包括:

步骤s3,判断所述交易数据中的交易地址与所述状态树中的所述交易接收端的交易地址相同时,利用所述生成的地址参数生成一个新的交易地址更新所述状态树中的所述交易接收端的交易地址。

如果判断所述交易数据中的交易地址与所述状态树中的所述交易接收端的交易地址不相同,则说明该交易接收端的交易地址已经更新过了,无需再生成新的交易地址。

在本可选实施例中,通过用状态树存储交易地址保证每次交易时的交易地址都是最新的。

在一个可选实施例中,所述地址参数可以为一随机数;上述利用所述生成的地址参数生成一个新的交易地址,包括:利用函数对所述生成的地址参数以及所述交易接收端的密钥进行一次或多次运算,生成交易地址。进行多次运算时可以使用相同或者不同的函数。

在一个可选实施例中,收到用户端发起的密钥更新请求,管理端对所述用户端进行身份认证后,颁发新的加密密钥,发起转换交易流程,使转换机构账户发起交易,由所述转换机构账户的签名密钥对所述交易数据进行签名,生成特定解锁脚本,以将所述用户端原账户中的未花费的交易输出转换为新的未花费交易输出。所述特定解锁脚本是指由转换机构生成的解锁脚本,以区别于由用户端生成的解锁脚本。采用该可选实施例可以解决用户丢失签名密钥导致资产损失的问题。

实现本实施例方法的管理端装置可包括验证模块101和签名背书模块102,如图3所示,其中:

所述验证模块101,用于对交易数据进行验证;

所述背书签名模块102,用于在所述验证模块验证通过后,对所述交易数据进行背书签名;所述交易数据包括交易接收端的交易地址和本次交易时生成的地址参数,所述交易地址利用所述交易接收端上次接收交易时生成的地址参数生成,所述本次交易时生成的地址参数用于生成所述交易接收端下次接收交易的交易地址;所述交易数据上链后,同一交易接收端的所有接收交易数据形成一链式结构。

在所述链式结构中包含相同交易地址的交易数据互为兄弟节点。

在一个可选实施例中,该装置还可包括第一地址生成模块,用于生成地址参数,以及从状态树查找所述交易接收端的交易地址,将生成的地址参数和查找到的所述交易地址发送给交易发送端;以及用于判断所述交易数据中的交易地址与所述状态树中的所述交易接收端的交易地址相同时,利用所述生成的地址参数生成一个新的交易地址更新所述状态树中的所述交易接收端的交易地址。

在一个可选实施例中,所述地址参数为随机数;所述第一地址生成模块利用所述生成的地址参数生成一个新的交易地址,包括:所述第一地址生成模块利用函数对所述生成的地址参数以及所述交易接收端的密钥进行一次或多次运算,生成交易地址。

在一个可选实施例中,所述装置还包括颁发密钥模块和转换交易模块,其中:

所述颁发密钥模块,用于收到用户端发起的密钥更新请求,对所述用户端进行身份认证后,颁发新的加密密钥;

所述转换交易模块,用于发起转换交易流程,使转换机构账户发起交易,由所述转换机构账户的签名密钥对所述交易数据进行签名,生成特定解锁脚本,以将所述用户端原账户中的未花费的交易输出转换为新的未花费交易输出。

上述管理端装置还可以是一种计算机设备,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时可实现上述实施例部分或全部步骤。

本实施例在具有管理端的区块链系统中,使用户端的接收交易数据形成一个或有兄弟节点的逻辑链条,从而能够快速检索同一用户端的所有交易数据,同时使用户端具有一次性交易地址的特征,达到保护用户身份隐私的目的。

实施例二

本实施例描述用户端的区块链数据处理方法,如图4所示,包括以下步骤:

步骤s11,交易接收端根据上一次接收交易数据中的地址参数生成本次接收交易的交易地址;

步骤s12,从账本数据中查找包含所述交易地址的交易数据。

由于同一交易接收端的所有接收交易数据形成一逻辑上的链式结构,因此使得交易接收端可以依据上一次接收交易数据中的地址参数生成本次接收交易的交易地址,根据本次接收交易的交易地址可以快速查找到本次交易数据。同时由于交易地址是一次性的,保护了该交易接收端的用户隐私。

在一个可选实施例中,当所述交易接收端作为交易发送端时,所述方法还包括:所述交易发送端提交交易时,使用引用接收交易数据的上一次接收交易数据中的地址参数生成公私钥对,使用所述公私钥对生成当前交易中的解锁脚本。

实现本实施例方法的用户端装置可包括第二地址生成模块201和检索模块202,如图5所示,其中:

所述第二地址生成模块201,用于根据上一次接收交易数据中的地址参数生成本次接收交易的交易地址;

所述检索模块202,用于从账本数据中查找包含所述交易地址的交易数据。

在一个可选实施例中,所述用户端装置还可包括签名模块,所述签名模块用于在所述用户端作为交易发送端时,在提交交易时,使用引用接收交易数据的上一次接收交易数据中的地址参数生成公私钥对,使用所述公私钥对生成当前交易中的解锁脚本。

上述用户端装置还可以是一种计算机设备,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时可实现上述实施例部分或全部步骤。

本实施例基于同一用户端的接收交易数据链条,能够快速检索同一用户端的所有交易数据。

应用示例

本示例中将管理端和用户端的数据处理方法结合在一起描述。

本例系统中的交易地址是由一个计算得出的k值与用户端的签名公钥做运算,比如椭圆曲线上的标量乘运算,得到一个新的公钥,对该新的公钥通过一单向不可逆函数得到交易地址,该新的公钥也称为交易地址对应的公钥。该新的公钥对应的私钥也可通过k值与用户端的签名私钥做运算,比如有限域的乘运算得到。而同一用户端的接收交易数据中的交易地址都是通过计算得出的不同k值参与运算得到的,具有一次性地址的特征,所以外部不能够通过交易地址的相关信息追踪用户的相关身份,但可以验证用户的解锁签名。同理,本实施例生成交易地址的方式还可以用于多重签名的地址(即用多个不同公钥生成的地址),只需做相关的运算即可。

下面描述本示例中区块链系统的数据处理方法,如图6所示,包括以下步骤:

步骤10,用户端a向管理端提交与用户端b的交易请求;

本实施例以交易接收端为用户端b为例进行说明,交易接收端可以有多个;

步骤20,管理端从系统状态树中获取用户端b的交易地址并随机生成nonce值,并将该交易地址和nonce值发送给用户端a,作为本次交易的输出地址和nonce值;

同理,如果用户端a要与多个接收端进行交易,即在步骤10中提交了与多个接收端的交易请求,则管理端传输多个接收端相应的交易地址给用户端a即可;

可选的,管理端还可以将交易地址对应的用户标识(本实施例中该交易地址对应的用户标识为用户端b的用户标识,在其他实施例中,如果有多个输出,每个交易地址对应一个用户标识)使用秘密共享算法加密发送给用户端a,该秘密共享者为用户端a、交易地址对应的用户端和管理端,只有这三者的秘密共享子密钥能解密数据;用户端a解密用户标识的明文并验证是否正确,并在相应的交易数据中包含该密文的用户标识,就能在具有密钥的情况下追溯输出地址的用户标识;

可选的,管理端还可以将用户端a的用户标识使用秘密共享算法加密发送给用户端a,该秘密共享者为用户端a和管理端,只有这两者的秘密共享子密钥能解密数据;

nonce值和用户端的密钥(如对称加密密钥)通过一单向不可逆函数得到前文所述k值,进而根据前文所述的方法得到用户端的一个新交易地址;该k值可称为交易地址对应的k值,该nonce值可称为交易地址对应的nonce值;管理端需确保通过nonce值计算出的本次交易用户的新交易地址在系统内都是唯一的;

用户注册时管理端会生成该用户的初始nonce值,并使用该用户的密钥(如对称加密密钥)加密存储在控制数据链上,并在系统状态树中记录该nonce值生成的用户交易地址,也即用户的第一个接收交易地址;

步骤30,用户端a可使用本地钱包中的最后一个接收交易数据中的nonce值计算出自己的找零地址,找零地址也即用户端a的接收交易地址,生成方式同步骤20中的交易地址,当需要给自己找零时,将作为本次交易的输出地址(一个交易的多个输出之一);

本步骤为可选步骤,如果用户端a需要找零,则执行本步骤,如果不需要找零,则步骤20后直接执行步骤40;

在步骤20中管理端将用户端a的用户标识使用秘密共享算法加密发送给用户端a,该秘密共享者为用户端a和管理端;这样在交易数据中还包含找零地址对应的该密文的用户标识;

因为utxo模型的输入是引用未花费的交易输出,所以包含输出地址对应的密文用户标识,就能追溯交易输入的密文用户标识;

步骤40,用户端a获取本次交易的输入所引用的未花费交易输出的交易地址对应的k值,根据前文所述方法得到交易地址对应的公私钥对,使用该私钥对不含解锁脚本的交易数据进行签名,连同该公钥数据,产生未花费交易输出对应的解锁脚本;交易数据中包含步骤20的交易输出地址和nonce值,如果有的话,还包含步骤30的找零地址;除token数额为机密交易的密文和输出地址对应的用户标识(可选)为密文外,其余数据都为明文;用户端a向管理端提交包含解锁脚本的交易数据;用户端a向管理端提交的包含解锁脚本的交易数据包括:版本信息、引用未花费的交易输出和对应的解锁脚本、密文的用户标识(可选)、密文的token数据、锁定脚本、nonce值(步骤20中获得)、时间戳;锁定脚本包括:交易输出地址和解锁方式。

本实施例的方法中由于交易数据中包含一次性交易地址(根据上一次接收交易的nonce值计算得出)和nonce值(用于生成下一次接收交易的交易地址),所以对同一用户而言,该用户的所有接收交易数据即未花费的交易输出形成了一个或有兄弟节点的逻辑链条;而未花费交易输出的交易地址对应的k值,可通过引用接收交易数据的上一个接收交易数据中的nonce值计算得到的,计算方式同步骤20中的计算k值;

步骤50,管理端验证用户端a提交的交易数据的有效性,包括验证解锁脚本的有效性,token数额的有效性,以及交易地址是否是对应用户的地址;

管理端验证交易地址是否是对应用户的地址时,可以从系统状态树中的用户交易地址和管理端缓存过期时间内新生成的交易地址缓存中查询;

步骤60,管理端验证交易数据通过后,对交易数据进行背书签名,并且通知系统上链;由系统将背书后的交易数据写入联盟链或私有链的账本数据中,然后生成的账本数据对外公开;

管理端在通知上链时,验证交易数据中的用户交易地址与系统状态树中的用户交易地址是否相同,如果相同,则使用该交易的nonce值和用户端的密钥(如对称加密密钥)通过一单向不可逆函数得到一个k值,进而得到一个对应的交易地址;生成方式同步骤20中的交易地址;使用该交易地址更新系统状态树中对应的用户交易地址;

由此可见,对同一个接收用户端而言,下一个接收交易的地址是该用户本次接收交易数据中的nonce值和该用户密钥计算得出,而用户初始nonce值是在注册时加密存储在链上;所以用户通过获取初始nonce值,就能计算出第一个接收交易地址,通过地址获取到接收交易数据,并通过交易数据中的nonce值就能计算出下一个接收交易地址,进而通过nonce值和交易地址使用户的接收交易数据形成一个逻辑链条;

而在多个用户端给该用户发起并发交易时,管理端从系统状态树中获取到的交易地址是同一个地址;只有当第一个提交交易数据并通过后,才会修改系统状态树中的交易地址为下一个地址;所以存在并发交易时使用相同地址的情况,而这些相同地址的接收交易数据形成逻辑链条上的兄弟节点;

用户端的本地钱包根据该用户的初始nonce值,就能获取到该用户的所有接收交易数据;并由于utxo模型中用户所有的发送交易都需引用相应的未花费交易输出作为输入,也即引用接收交易数据,所以用户能检索到所有的接收交易数据,就能通过相关交易的引用从而检索所有的发送交易数据;用户端本地钱包保存了该逻辑链条的关系,而用户端的一个接收交易中的交易地址是通过对应的上一个接收交易数据中的nonce值计算得出的;这也就解释了步骤40中用户能够直接查找到未花费交易输出的上一个接收交易数据的nonce值,进而能够解锁该未花费交易;

步骤70,用户端b通过本地钱包的最后一个接收交易数据的nonce值计算出交易地址,利用该交易地址查询账本数据,即可查找到本次交易数据,该交易输出地址连同锁定脚本即产生一个新的未花费交易输出,并且只有用户端b能生成对应的解锁脚本,而外部并不知道该交易地址与用户端b的关联。

从上可得出本次交易的输出地址,是对应用户端的上一个接收交易的nonce值计算得出,所以输出用户端的本地钱包根据最后一个接收交易数据的nonce值计算出的交易地址,并在对外的账本数据中查找该地址的交易数据,当本次交易数据上链写入账本数据后,就能通过该地址查找到本次交易数据。而这个查找的过程并不依赖任何消息通知机制,也不依赖管理端,用户端可自行在对外的账本数据上根据交易地址进行查找。

用户端的每一个发送交易的输入都需引用相应的未花费交易输出,且不存在次序关联,所以用户端的发送交易也可以进行并发操作,并具有防重放的功能。

采用本实施例方法,用户端及外部使用者包括监管者和第三方可以验证对外账本数据中每笔交易数据的管理端的背书签名,用户端的解锁签名,密文验证机密交易数额的有效性,但并不知道对应的用户信息和交易数额,从而达到用户数据隐私的目的。还可以使用spv(simplifiedpaymentverification)验证该交易是否存在,而无须具有整个账本数据。并且只需授权相应的密钥,监管者和第三方就可以在对外的账本数据上快速检索相应用户的所有相关交易数据。

在一个可选实施例中,系统中还可以设置一个特殊的公开身份的转换机构账户。其作用是当用户丢失签名密钥或需更新密钥时,由用户端本地生成一个新的签名密钥并通过更新的身份认证证书或eid在系统中更新用户信息,并由管理端颁发新的加密密钥。但由于用户端新的签名密钥并不能解锁之前的锁定脚本,所以需由转换机构账户生成一个特殊的转换交易。该转换交易由管理端审核用户更新通过后,由管理端的系统发起。转换交易中只包含一笔输入和一笔输出,交易的输入是引用用户之前的一笔未花费的交易输出,交易的输出是用户新生成的交易地址,转换机构账户对该交易数据进行签名,生成一个特殊的解锁脚本,使用户之前的一笔未花费的交易输出转换为一笔新的未花费交易输出。这样就能通过转换交易解决用户的本地签名密钥丢失后资产损失的问题。而转换交易除特殊的解锁脚本外,其余和普通的交易一致,所以外部并不知道对应的用户信息和交易数额,以保护用户的隐私数据。而特殊的解锁脚本使用的是公开身份的转换机构账户的签名,所以外部可以验证该签名并能知道该交易为转换交易。该转换交易也按照前文所述的链式结构使用户的接收交易数据形成一逻辑链条。由于转换交易是由管理端的系统发起,所以需要监管转换交易的输入和输出是否为同一个用户的交易地址,由管理端授权相应的密钥给监管者,监管者可在对外的账本数据上进行验证。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

以上显示和描述了本申请的基本原理和主要特征和本申请的优点。本申请不受上述实施例的限制,上述实施例和说明书中描述的只是说明本申请的原理,在不脱离本申请精神和范围的前提下,本申请还会有各种变化和改进,这些变化和改进都落入要求保护的本申请范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1