一种基于区块链智能合约的转账方法及系统
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种基于区块链智能合约的转账方法及系统。
背景技术
众所周知,目前用户可以在区块链网络上注册账户,用户之间可以通过自己的账户进行转账。
假设账户A(转账方)想要向账户B(收账人)转账,那么,账户A首先会构建包含转账金额与账户B的账户标识的转账交易,随后,该转账交易会被广播给区块链网络中的各节点。各节点对转账交易进行校验通过后,执行转账交易,将转账金额写入账户B。
然而,在现有的基于区块链的转账模式下,用户的账户余额和转账金额会暴露给区块链网络中的各节点,无法保护用户的隐私。
发明内容
为了避免将用户的账户余额与转账金额暴露给区块链网络中的各节点,以便保护用户的隐私,本说明书实施例提供一种基于区块链智能合约的转账方法及系统,技术方案如下:
根据本说明书实施例的第1方面,提供一种基于区块链智能合约的转账方法,区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账方法包括:
登录有转账账户的转账客户端确定收账账户、转账金额以及至少一个花销资产;
所述转账客户端根据所述转账金额与所述至少一个花销资产对应的金额,创建找零资产与转账资产;其中,所述找零资产包含的加密金额是使用所述转账账户的公钥对所述找零资产对应的金额进行加密后得到的,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;
所述转账客户端构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述找零资产、所述至少一个花销资产;
所述区块链网络通过所述智能合约,校验所述转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断所述转账资产对应的金额与所述找零资产对应的金额之和是否等于所述至少一个花销资产对应的金额;
所述区块链网络若确定校验通过,则通过所述智能合约,从所述转账账户扣除所述至少一个花销资产,向所述转账账户增加所述找零资产,向所述收账账户增加所述转账资产。
根据本说明书实施例的第2方面,提供一种基于区块链智能合约的转账方法,区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账方法包括:
登录有转账账户的转账客户端确定收账账户、转账金额以及至少一个花销资产;
所述转账客户端根据所述转账金额与所述至少一个花销资产对应的金额,创建找零资产与转账资产;其中,所述找零资产包含的加密金额是使用所述转账账户的公钥对所述找零资产对应的金额进行加密后得到的,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;
所述转账客户端指定N个其他收账账户,并创建与所述N个其他收账账户一一对应的N个其他转账资产;其中,针对每个其他转账资产,该其他转账资产包含的加密金额是使用对应的其他收账账户的公钥对0进行加密后得到的;
所述转账客户端构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述找零资产、所述至少一个花销资产、所述N个其他收账账户的账户标识、所述N个其他转账资产、所述收账账户与所述转账资产之间的对应关系、所述N个其他收账账户与所述N个其他转账资产之间的一一对应关系;
所述区块链网络通过所述智能合约,校验所述转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断所述转账资产对应的金额、所述找零资产对应的金额与所述N个其他转账资产对应的金额之和是否等于所述至少一个花销资产对应的金额;
所述区块链网络若确定校验通过,则通过所述智能合约,从所述转账账户扣除所述至少一个花销资产,向所述转账账户增加所述找零资产,向所述收账账户增加所述转账资产,向每个其他收账账户增加对应的其他转账资产。
根据本说明书实施例的第3方面,提供一种基于区块链智能合约的转账系统,包括区块链网络与登录有转账账户的转账客户端;
所述区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账客户端,确定收账账户、转账金额以及至少一个花销资产;根据所述转账金额与所述至少一个花销资产对应的金额,创建找零资产与转账资产;其中,所述找零资产包含的加密金额是使用所述转账账户的公钥对所述找零资产对应的金额进行加密后得到的,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述找零资产、所述至少一个花销资产;
所述区块链网络,通过所述智能合约,校验所述转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断所述转账资产对应的金额与所述找零资产对应的金额之和是否等于所述至少一个花销资产对应的金额;若确定校验通过,则通过所述智能合约,从所述转账账户扣除所述至少一个花销资产,向所述转账账户增加所述找零资产,向所述收账账户增加所述转账资产。
根据本说明书实施例的第4方面,提供一种基于区块链智能合约的转账系统,包括区块链网络与登录有转账账户的转账客户端;
所述区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账客户端,确定收账账户、转账金额以及至少一个花销资产;根据所述转账金额与所述至少一个花销资产对应的金额,创建找零资产与转账资产;其中,所述找零资产包含的加密金额是使用所述转账账户的公钥对所述找零资产对应的金额进行加密后得到的,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;指定N个其他收账账户,并创建与所述N个其他收账账户一一对应的N个其他转账资产;其中,针对每个其他转账资产,该其他转账资产包含的加密金额是使用对应的其他收账账户的公钥对0进行加密后得到的;构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述找零资产、所述至少一个花销资产、所述N个其他收账账户的账户标识、所述N个其他转账资产、所述收账账户与所述转账资产之间的对应关系、所述N个其他收账账户与所述N个其他转账资产之间的一一对应关系;
所述区块链网络,通过所述智能合约,校验所述转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断所述转账资产对应的金额、所述找零资产对应的金额与所述N个其他转账资产对应的金额之和是否等于所述至少一个花销资产对应的金额;若确定校验通过,则通过所述智能合约,从所述转账账户扣除所述至少一个花销资产,向所述转账账户增加所述找零资产,向所述收账账户增加所述转账资产,向每个其他收账账户增加对应的其他转账资产。
本说明书实施例所提供的技术方案,其一,在区块链网络中部署智能合约,智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账。也就是说,脱离区块链网络默认支持的资产与转账体系,而在智能合约内部另行搭建资产与转账体系,用户的资产管理以及转账都通过智能合约来进行。
其二,将用户的账户余额具体化成若干资产,资产作为一种数据结构,包含加密金额,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额进行加密后得到的。如此,用户的账户中的资产对应的金额是不可见的(即账户余额不可见),只有用户自己可以使用私钥进行解密后查看。
其三,转账用户在向收账用户进行转账,实际上是将自己拥有的资产转移给收账用户。转账交易涉及的花销金额、转账金额、找零金额都不会暴露给各节点,但是,这却不会影响区块链网络中的各节点对转账交易进行校验(即判断该笔转账交易涉及的输入输出是否相等)。各节点能够使用同态加密算法,在不获取具体的花销金额、转账金额、找零金额的前提下,判断花销金额是否等于转账金额与找零金额之和。
通过本说明书实施例,可以隐藏用户的账户余额,也可以在隐藏转账金额的前提下实现用户间的转账。
此外,通过上述第2方面与第4方面的技术方案,还可以实现对一笔转账交易涉及的实际收账账户信息的隐藏。具体地,在一笔转账交易中,增加至少一个虚假收账账户,转账账户向每个虚假收账账户转账的虚假转账金额都是0。由于虚假转账金额是加密的,因此,实际上造成了收账账户的混淆,外界无法准确分辨实际收账账户具体是哪个账户。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的一种基于区块链智能合约的转账方法的流程示意图;
图2是本说明书实施例提供的另一种基于区块链智能合约的转账方法的流程示意图;
图3是本说明书实施例提供的另一种基于区块链智能合约的转账方法的流程示意图;
图4是本说明书实施例提供的另一种基于区块链智能合约的转账方法的流程示意图;
图5是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图;
图6是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图;
图7是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图;
图8是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图;
图9是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图;
图10是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图;
图11是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图;
图12是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图;
图13是用于配置本说明书实施例方法的一种计算机设备的结构示意图。
具体实施方式
在现有的基于区块链的转账方案中,区块链网络中的各节点对转账交易的验证事项一般包括验证转账账户的余额是否充足,即账户A的余额是否大于或等于转账金额,若是,则验证通过。这意味着,如果要进行转账,那么转账人的账户余额以及转账金额都会暴露给区块链网络中的各节点。
而本方案的关注点在于,如何在不暴露转账用户的账户余额以及转账金额的前提下,判断转账用户的账户余额是否足够支付转账金额。
为了满足该需求,在本说明书的各实施例中,在区块链网络中部署智能合约,通过智能合约搭建有资产与转账体系。在该体系中,不再有账户余额的概念,而是将用户的账户中的金额对象化成资产这一数据结构,资产相当于一种虚拟物,用户间进行转账是,转账用户花销某个自己拥有的资产,该资产就会分裂为转账资产与找零资产,转账资产转移给收账用户,找零资产返还给转账用户。在特殊情况下,用户花销的资产对应的金额刚好等于转账资产对应的金额,此时,可以不产生找零资产,也可以产生找零资产(只不过找零资产对应的金额为0)。
需要说明的是,在该体系中,资产的数据结构中包含加密金额,记为E(v),该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额(记为v)进行加密后得到的。这意味着,资产对应的金额被隐藏,只有拥有资产的用户的账户才有权(使用自己的私钥)对自己拥有的资产对应的金额进行查看。此外,由于每个账户拥有的资产对应的金额都是隐藏的,因此,每个账户的账户余额事实上也是隐藏的。
在实际应用中,用户在区块链网络中进行注册,开通自己的账户。智能合约(可以视为程序)负责管理每个账户拥有的资产,并负责对转账交易进行校验(智能合约记载有与校验事项相关的逻辑代码)。在具体实现上,智能合约可以维护一个key-value形式的用户资产表,在用户资产表中,key存储账户标识,value存储资产标识。
下表1示列性地给出了所述用户资产表。
账户1 |
资产1、资产2 |
账户2 |
资产3、资产4、资产5 |
账户3 |
资产6 |
表1
例如,账户1向账户2转账120元,假设资产1对应的金额为100元,资产2对应的金额为50元,那么账户1需要花销掉自己的资产1与资产2,随后,资产1与资产2消失,产生了资产7(金额为120元)与资产8(金额为30元),账户1得到资产8,账户2得到资产7。可见,资产1+资产2实际上是这笔转账的输入,资产7+资产8实际上是这笔转账的输出。智能合约对这笔转账交易涉及的输入输出校验无误后,会执行这笔转账交易,表1会更新为如下所示的表4。
账户1 |
资产8 |
账户2 |
资产3、资产4、资产5、资产7 |
账户3 |
资产6 |
表2
如此,在本发明中,针对一笔转账交易,将验证余额的问题转化成了验证输入输出是否平衡的问题。由于每个资产的金额实际上是加密的,因为不会暴露给区块链网络中的各节点。节点在执行转账交易时,采用同态加密算法校验输入的资产与输出的资产是否相等,如果校验通过,就意味着这笔转账交易是可行的(相当于说明了转账人的余额充足)。
此外,本方案提供了一种为账户充值资产的方法。具体而言,在用户的账户初始化时,该账户中并不存在任何资产。该账户可以通过接收其他账户转账的资产来获得资产,也可以通过在链下进行资产充值来获得资产。
对于资产充值,可以由在区块链网络中注册的较高权限的账户来负责。例如,管理员可以在区块链网络中注册管理员账户,管理员账户具有如下权限:发起一笔充值交易,充值交易中包含被充值的账户的账户标识、充值资产。其中,充值资产包含的加密金额是使用被充值的账户的公钥对一定的金额进行加密后得到的。如此,用户可以在链下使用法币向管理员购买对应有一定金额的资产,管理员通过管理员账户向区块链网络提交充值交易,区块链网络可以通过智能合约直接执行该充值交易,实现对某个账户的资产充值。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。需要说明的是,由于以下的各实施例所基于的技术思想都是类似的,因此,下文的各实施例可互相参照理解。
图1是本说明书实施例提供的一种基于区块链智能合约的转账方法的流程示意图,包括如下步骤:
S100:登录有转账账户的转账客户端确定收账账户、转账金额以及至少一个花销资产。
在本说明书实施例中,用户可以在自己的设备(如手机、个人计算机等)上安装区块链客户端,通过区块链客户端在区块链网络中进行注册,开通账户。用户后续可以在区块链客户端上登录自己的账户,管理自己的资产。
区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产(即记录每个账户拥有资产的情况,并随时更新每个账户拥有资产的情况)以及用于实现账户之间的转账(即用于校验转账交易、执行转账交易)。
在本说明书实施例中,对于针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的。例如,账户1拥有的资产是使用账户1的公钥对一定的金额进行加密后得到的;账户2接收到的其他账户转账的资产是使用账户2的公钥对转账金额进行加密后得到的。
可见,在本说明书实施例中,使用非对称加密的方式,确保每个用户拥有的资产只能被用户本人查看。
在本说明书实施例中,转账客户端是指登录有转账用户的账户(转账账户)的区块链客户端。登录了转账账户的客户端才有权限操作转账账户中的资产。
当需要进行转账时,转账客户端需要确定由转账用户指定的收账账户、转账金额以及至少一个花销资产。其中,花销资产是转账账户已经拥有的资产中,被转账用户指定用于转账的资产。
在实际应用中,转账用户指定的花销资产对应的金额可以大于转账金额(会有结余以找零的形式返还),也可以等于转账金额(没有结余),却不能小于转账金额(否则无法通过校验)。
S102:所述转账客户端根据所述转账金额与所述至少一个花销资产对应的金额,创建找零资产与转账资产。
在本说明书实施例中,如果所述至少一个花销资产对应的金额等于转账金额,也可以创建找零资产(对应的金额为0)。
其中,所述找零资产包含的加密金额是使用所述转账账户的公钥对所述找零资产对应的金额进行加密后得到的,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的。
S104:所述转账客户端构建转账交易并提交给所述区块链网络。
在转账交易中,包括如下内容:收账账户的账户标识、转账资产、找零资产、上述的至少一个花销资产。
S106:所述区块链网络通过所述智能合约,校验所述转账交易。
在本说明书实施例中,区块链网络对转账交易进行校验,一般是校验转账交易涉及的出账和入账是否平衡,如果不平衡,就认定这笔转账交易不可执行,转账失败。
具体而言,区块链网络中每个节点采用同态加密算法,判断所述转账资产对应的金额与所述找零资产对应的金额之和是否等于所述至少一个花销资产对应的金额。
众所周知,同态加密是指,对经过加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方式处理未加密的数据得到的输出是一样的。因此,在本说明书实施例中,虽然转账资产、找零资产以及花销资产对应的金额都是加密的,对于节点来说都是不可知的,但是节点可以采用同态加密算法,在不解密转账资产、找零资产以及花销资产对应的加密金额的前提下,判断所述转账资产对应的金额与所述找零资产对应的金额之和是否等于所述至少一个花销资产对应的金额。
进一步地,以下给出一种基于Pedersen承诺机制的同态加密算法实施例。
针对任一资产,该资产还包含Pedersen承诺参数gvhr与对随机数r进行加密得到的加密随机数E(r)。其中,对于任一资产,该资产中包含的E(r)对应的随机数r都是针对该资产进行随机指定的,也就是说,任意两个资产分别对应的随机数r不一定是相同的。需要说明的是,r的作用是防止gvhr被暴力破解。
在对转账交易进行校验时,节点可以采用基于Pedersen承诺机制的同态加密算法,根据所述转账资产包含的Pedersen承诺参数、所述找零资产包含的Pedersen承诺参数与所述至少一个花销资产包含的Pedersen承诺参数,判断所述转账资产对应的金额与所述找零资产对应的金额之和是否等于所述至少一个花销资产对应的金额。其中,g和h为椭圆曲线生成元,在本说明书实施例中,所有资产都是用相同的g与h。
S108:所述区块链网络若确定校验通过,则通过所述智能合约,执行所述转账交易。
在本说明书实施例中,如果判断结果显示所述转账资产对应的金额与所述找零资产对应的金额之和等于所述至少一个花销资产对应的金额,则可以认定校验通过。
执行转账交易包括:通过所述智能合约,从所述转账账户扣除所述至少一个花销资产,向所述转账账户增加所述找零资产,向所述收账账户增加所述转账资产。也即,由智能合约对转账账户与收账账户的资产情况进行更新。
此外,在实际应用中,转账用户可能存在恶意,将转账金额指定为负数,以转账的方式偷取他人的资产。或者,由于转账用户操作失误或转账客户端出现故障,将找零资产对应的金额指定为负数,导致转账用户实际转账的金额大于原本想转账的金额。
为此,可以基于零知识证明原理,在转账资产的实际金额与找零资产的实际金额都不可见的情况下,校验转账资产的实际金额与找零资产的实际金额是否皆落入指定数值范围,如[0,∞)或[0,264]。如果校验结果为是,就排除了以上情况发生的可能性。
具体而言,转账交易中还可以包括范围证明Range Proof,范围证明具体可以是Bullet Proof,Borromean环签名等。
如此,在对转账交易进行校验时,还可以根据所述范围证明,判断所述转账资产对应的金额、所述找零资产对应的金额是否皆落入上述指定数值范围。
另外,在实际应用中,转账用户可能恶意花销不属于自己的资产进行转账。为了防止这种情况发生,在对转账交易进行校验时,还可以通过所述智能合约,根据智能合约记录的账户资产情况,判断所述转账账户所拥有的资产中是否存在所述至少一个花销资产。
在本说明书实施例中,针对任一资产,该资产还包含表征该资产已花销或未花销的第一状态参数。如此,在校验转账交易时,节点可以通过所述智能合约,针对所述转账交易中包括的每个花销资产,根据该花销资产可以包含的第一状态参数,判断该花销资产是否未花销;若判断结果为是,则对该花销资产包含的第一状态参数进行修改,使得修改后的该第一状态参数表征该花销资产已花销。
此外,针对任一资产,该资产还可以包含表征该资产存在或不存在的第二状态参数。如此,在校验转账交易时,还可以通过所述智能合约,针对所述转账交易中包括的每个花销资产,根据该花销资产包含的第二状态参数,判断该花销资产是否存在。
对于上述描述的各校验事项,每个校验事项对应有判断结果。在本说明书实施例中,所述区块链网络若确定校验所述转账交易的过程中产生的各判断结果皆为是,则确定校验通过。
图2是本说明书实施例提供的另一种基于区块链智能合约的转账方法的流程示意图,包括如下步骤:
S200:登录有转账账户的转账客户端确定收账账户、转账金额以及至少一个花销资产。
S202:所述转账客户端根据所述转账金额与所述至少一个花销资产对应的金额,创建找零资产与转账资产。
其中,所述找零资产包含的加密金额是使用所述转账账户的公钥对所述找零资产对应的金额进行加密后得到的,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的。
S204:所述转账客户端指定N个其他收账账户,并创建与所述N个其他收账账户一一对应的N个其他转账资产。
其中,针对每个其他转账资产,该其他转账资产包含的加密金额是使用对应的其他收账账户的公钥对0进行加密后得到的。
S206:所述转账客户端构建转账交易并提交给所述区块链网络。
所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述找零资产、所述至少一个花销资产、所述N个其他收账账户的账户标识、所述N个其他转账资产。
应当理解,所述转账交易还可以包括其他内容,以表征出所述收账账户与所述转账资产之间的对应关系,以及所述N个其他收账账户与所述N个其他转账资产之间的一一对应关系。
S208:所述区块链网络通过所述智能合约,校验所述转账交易。
其中,校验所述转账交易包括:采用同态加密算法,判断所述转账资产对应的金额、所述找零资产对应的金额与所述N个其他转账资产对应的金额之和是否等于所述至少一个花销资产对应的金额。
S210:所述区块链网络若确定校验通过,则执行所述转账交易。
其中,执行所述转账交易包括:通过所述智能合约,从所述转账账户扣除所述至少一个花销资产,向所述转账账户增加所述找零资产,向所述收账账户增加所述转账资产,向每个其他收账账户增加对应的其他转账资产。
图2所示的方法是在图1所示的方法的基础上进行进一步改进得到的,可参见前文对图1所示方法的说明。
在图2所示方法中,不仅可以隐藏账户余额与转账金额,还可以隐藏收账用户的信息(即不暴露收账用户的身份)。在一笔转账交易中,增加至少一个虚假收账账户,转账账户向每个虚假收账账户转账的虚假转账金额都是0。由于虚假转账金额是加密的,因此,实际上造成了收账账户的混淆,外界无法准确分辨实际收账账户具体是哪个账户。需要说明的是,N为大于0的自然数,N越大,混淆效果越好。
在图2所示的方法中,也可以采用基于Pedersen承诺机制的同态加密算法,根据所述转账资产包含的Pedersen承诺参数、所述找零资产包含的Pedersen承诺参数、所述至少一个花销资产包含的Pedersen承诺参数、N个其他转账资产包含的Pedersen承诺参数,判断所述转账资产对应的金额、所述找零资产对应的金额与所述N个其他转账资产对应的金额之和是否等于所述至少一个花销资产对应的金额。
也可以通过所述智能合约,根据所述范围证明,判断所述转账资产对应的金额、所述找零资产对应的金额、所述N个其他转账资产对应的金额是否皆落入[0,∞),或是否皆落入[0,264]。
图3是本说明书实施例提供的另一种基于区块链智能合约的转账方法的流程示意图,包括如下步骤:
S300:登录有转账账户的转账客户端确定收账账户与至少一个花销资产。
S302:所述转账客户端根据所述至少一个花销资产对应的金额,创建转账资产。
其中,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的。可见,在图3所示的方法中,转账用户指定的转账金额等于所述至少一个花销资产对应的金额,不会有结余。
S304:所述转账客户端构建转账交易并提交给所述区块链网络。
其中,所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述至少一个花销资产。
S306:所述区块链网络通过所述智能合约,校验所述转账交易。
其中,校验所述转账交易包括:采用同态加密算法,判断所述转账资产对应的金额是否等于所述至少一个花销资产对应的金额。
S308:所述区块链网络若确定校验通过,则通过所述智能合约执行转账交易。
其中,执行转账交易包括:从所述转账账户扣除所述至少一个花销资产,向所述收账账户增加所述转账资产。
图4是本说明书实施例提供的另一种基于区块链智能合约的转账方法的流程示意图,包括如下步骤:
S400:登录有转账账户的转账客户端确定收账账户与至少一个花销资产。
S402:所述转账客户端根据所述至少一个花销资产对应的金额,创建转账资产。
其中,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的。可见,在图4所示的方法中,转账用户指定的转账金额等于所述至少一个花销资产对应的金额,不会有结余。
S404:所述转账客户端指定N个其他收账账户,并创建与所述N个其他收账账户一一对应的N个其他转账资产。
其中,针对每个其他转账资产,该其他转账资产包含的加密金额是使用对应的其他收账账户的公钥对0进行加密后得到的。
S406:所述转账客户端构建转账交易并提交给所述区块链网络。
所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述至少一个花销资产、所述N个其他收账账户的账户标识、所述N个其他转账资产。
S408:所述区块链网络通过所述智能合约,校验所述转账交易。
校验所述转账交易包括:采用同态加密算法,判断所述转账资产对应的金额与所述N个其他转账资产对应的金额之和是否等于所述至少一个花销资产对应的金额。
S410:所述区块链网络若确定校验通过,则通过所述智能合约,执行转账交易。
执行转账交易包括:从所述转账账户扣除所述至少一个花销资产,向所述收账账户增加所述转账资产,向每个其他收账账户增加对应的其他转账资产。
一种基于区块链智能合约的转账系统,包括区块链网络与登录有转账账户的转账客户端;
所述区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账客户端,确定收账账户、转账金额以及至少一个花销资产;根据所述转账金额与所述至少一个花销资产对应的金额,创建找零资产与转账资产;其中,所述找零资产包含的加密金额是使用所述转账账户的公钥对所述找零资产对应的金额进行加密后得到的,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述找零资产、所述至少一个花销资产;
所述区块链网络,通过所述智能合约,校验所述转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断所述转账资产对应的金额与所述找零资产对应的金额之和是否等于所述至少一个花销资产对应的金额;若确定校验通过,则通过所述智能合约,从所述转账账户扣除所述至少一个花销资产,向所述转账账户增加所述找零资产,向所述收账账户增加所述转账资产。
一种基于区块链智能合约的转账系统,包括区块链网络与登录有转账账户的转账客户端;
所述区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账客户端,确定收账账户、转账金额以及至少一个花销资产;根据所述转账金额与所述至少一个花销资产对应的金额,创建找零资产与转账资产;其中,所述找零资产包含的加密金额是使用所述转账账户的公钥对所述找零资产对应的金额进行加密后得到的,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;指定N个其他收账账户,并创建与所述N个其他收账账户一一对应的N个其他转账资产;其中,针对每个其他转账资产,该其他转账资产包含的加密金额是使用对应的其他收账账户的公钥对0进行加密后得到的;构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述找零资产、所述至少一个花销资产、所述N个其他收账账户的账户标识、所述N个其他转账资产;
所述区块链网络,通过所述智能合约,校验所述转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断所述转账资产对应的金额、所述找零资产对应的金额与所述N个其他转账资产对应的金额之和是否等于所述至少一个花销资产对应的金额;若确定校验通过,则通过所述智能合约,从所述转账账户扣除所述至少一个花销资产,向所述转账账户增加所述找零资产,向所述收账账户增加所述转账资产,向每个其他收账账户增加对应的其他转账资产。
一种基于区块链智能合约的转账系统,包括区块链网络与登录有转账账户的转账客户端;
所述区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账客户端,确定收账账户与至少一个花销资产;根据所述所述至少一个花销资产对应的金额,创建转账资产;其中,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述至少一个花销资产;
所述区块链网络,通过所述智能合约,校验所述转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断所述转账资产对应的金额是否等于所述至少一个花销资产对应的金额;若确定校验通过,则通过所述智能合约,从所述转账账户扣除所述至少一个花销资产,向所述收账账户增加所述转账资产。
一种基于区块链智能合约的转账系统,包括区块链网络与登录有转账账户的转账客户端;
所述区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账客户端,确定收账账户与至少一个花销资产;根据所述至少一个花销资产对应的金额,创建转账资产;其中,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;指定N个其他收账账户,并创建与所述N个其他收账账户一一对应的N个其他转账资产;其中,针对每个其他转账资产,该其他转账资产包含的加密金额是使用对应的其他收账账户的公钥对0进行加密后得到的;构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述至少一个花销资产、所述N个其他收账账户的账户标识、所述N个其他转账资产;
所述区块链网络,通过所述智能合约,校验所述转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断所述转账资产对应的金额与所述N个其他转账资产对应的金额之和是否等于所述至少一个花销资产对应的金额;若确定校验通过,则通过所述智能合约,从所述转账账户扣除所述至少一个花销资产,向所述收账账户增加所述转账资产,向每个其他收账账户增加对应的其他转账资产。
图5是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图,区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账装置为登录有转账账户的转账客户端,所述转账装置包括:
确定模块501,确定收账账户、转账金额以及至少一个花销资产;
创建模块502,根据所述转账金额与所述至少一个花销资产对应的金额,创建找零资产与转账资产;其中,所述找零资产包含的加密金额是使用所述转账账户的公钥对所述找零资产对应的金额进行加密后得到的,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;
构建提交模块503,构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述找零资产、所述至少一个花销资产。
图6是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图,区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账装置是所述区块链网络中的任一节点,所述转账装置包括:
校验模块601,通过所述智能合约,校验转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断转账资产对应的金额与找零资产对应的金额之和是否等于至少一个花销资产对应的金额;
执行模块602,若确定校验通过,则通过所述智能合约,从转账账户扣除所述至少一个花销资产,向转账账户增加所述找零资产,向收账账户增加所述转账资产。
图7是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图,区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账装置为登录有转账账户的转账客户端,所述转账装置包括:
确定模块701,确定收账账户、转账金额以及至少一个花销资产;
创建模块702,根据所述转账金额与所述至少一个花销资产对应的金额,创建找零资产与转账资产;其中,所述找零资产包含的加密金额是使用所述转账账户的公钥对所述找零资产对应的金额进行加密后得到的,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;
指定模块703,指定N个其他收账账户,并创建与所述N个其他收账账户一一对应的N个其他转账资产;其中,针对每个其他转账资产,该其他转账资产包含的加密金额是使用对应的其他收账账户的公钥对0进行加密后得到的;
构建提交模块704,构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述找零资产、所述至少一个花销资产、所述N个其他收账账户的账户标识、所述N个其他转账资产。
图8是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图,区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账装置为所述区块链网络中的任一节点,所述转账装置包括:
校验模块801,通过所述智能合约,校验转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断转账资产对应的金额、找零资产对应的金额与N个其他转账资产对应的金额之和是否等于至少一个花销资产对应的金额;
执行模块802,若确定校验通过,则通过所述智能合约,从转账账户扣除所述至少一个花销资产,向所述转账账户增加所述找零资产,向收账账户增加所述转账资产,向每个其他收账账户增加对应的其他转账资产。
图9是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图,区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账装置是登录有转账账户的转账客户端,所述转账装置包括:
确定模块901,确定收账账户与至少一个花销资产;
创建模块902,根据所述所述至少一个花销资产对应的金额,创建转账资产;其中,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;
构建提交模块903,构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述至少一个花销资产。
图10是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图,区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账装置是所述区块链网络中的任一节点,所述转账装置包括:
校验模块1001,通过所述智能合约,校验转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断转账资产对应的金额是否等于至少一个花销资产对应的金额;
执行模块1002,若确定校验通过,则通过所述智能合约,从转账账户扣除所述至少一个花销资产,向收账账户增加所述转账资产。
图11是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图,区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账装置是登录有转账账户的转账客户端,所述转账装置包括:
确定模块1101,确定收账账户与至少一个花销资产;
创建模块1102,根据所述至少一个花销资产对应的金额,创建转账资产;其中,所述转账资产包含的加密金额是使用所述收账账户的公钥对所述转账资产对应的金额进行加密后得到的;
指定模块1103,指定N个其他收账账户,并创建与所述N个其他收账账户一一对应的N个其他转账资产;其中,针对每个其他转账资产,该其他转账资产包含的加密金额是使用对应的其他收账账户的公钥对0进行加密后得到的;
构建提交模块1104,构建转账交易并提交给所述区块链网络;所述转账交易中包括所述收账账户的账户标识、所述转账资产、所述至少一个花销资产、所述N个其他收账账户的账户标识、所述N个其他转账资产。
图12是本说明书实施例提供的一种基于区块链智能合约的转账装置的结构示意图,区块链网络中部署有智能合约,所述智能合约用于管理每个账户所拥有的资产以及用于实现账户之间的转账;针对任一资产,该资产为包含加密金额E(v)的数据,该加密金额是使用拥有该资产的账户的公钥对该资产对应的金额v进行加密后得到的;
所述转账装置是所述区块链网络中的任一节点,所述转账装置包括:
校验模块1201,通过所述智能合约,校验转账交易;其中,校验所述转账交易包括:采用同态加密算法,判断转账资产对应的金额与N个其他转账资产对应的金额之和是否等于至少一个花销资产对应的金额;
执行模块1202,若确定校验通过,则通过所述智能合约,从转账账户扣除所述至少一个花销资产,向收账账户增加所述转账资产,向每个其他收账账户增加对应的其他转账资产。
本说明书还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图1~4任一所示方法的功能。
图13示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器2210、存储器2220、输入/输出接口2230、通信接口2240和总线2250。其中处理器2210、存储器2220、输入/输出接口2230和通信接口2240通过总线2250实现彼此之间在设备内部的通信连接。
处理器2210可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器2220可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器2220可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器2220中,并由处理器2210来调用执行。
输入/输出接口2230用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口2240用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线2250包括一通路,在设备的各个组件(例如处理器2210存储器2220、输入/输出接口2230和通信接口2240)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器2210、存储器2220、输入/输出接口2230、通信接口2240以及总线2250,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图1~4任一所示法的功能。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。