环保与物流场景下的隐私交易记录方法

文档序号:31857528发布日期:2022-10-19 03:27阅读:37来源:国知局
环保与物流场景下的隐私交易记录方法

1.本发明涉及互联网场景下的交易记录处理技术领域,具体涉及一种具有匿名特性和交易数额隐藏功能的交易记录方法。


背景技术:

2.随着互联网技术的发展,交易记录的数字化趋势显现,数字化的交易记录防伪性强,便利性高,在诸如物流、电力资源采购和碳排放等场景中都具有良好的应用前景。不同于当前中心化的数字交易记录形式,以区块链技术为底层技术的去中心化的交易记录方式无需依赖任何权威机构,就可以完成交易的流转,其中,交易的进行都遵循系统中预定的逻辑,不能被任何中心化的机构控制。
3.但是,在现实场景中,交易记录流转则往往由中心化的节点或机构主导,产生不同的机构种类,对应不同的机构功能。在碳排放额度分配的场景中,生态环境管理部门决定各个生态环境分管部门排放量总额度,意味着它可以“凭空制造可流转交易记录”,各个生态环境分管部门接受来自生态环境管理部门的配额,并将之分配给下属的重点单位企业。类似的,在物流运输等场景中也存在相似的节点分类,具体地,物品工厂制造物资,意味着它可以“凭空制造可流转交易记录”,物品工厂将生产的物资转运至物流运转中心,物资也可以在物流运转中心之间流转,收件方则可以接受来自各个物流运转中心的物资。多数现存的交易记录方案没有根据这些特点对系统参与者进行明确分类,确定各个参与者的功能职责。参考目前的大多数需要记录交易流转的体系,参与者角色可分为三种,分别是管理节点、代理节点以及其他参与者,称为用户节点。管理节点作为原始信任实体,可以凭空产生交易记录,代理节点接受管理节点为之分配的交易额度,并将这些大额的交易记录再打碎并流转给其他用户节点,实现不同层级之间的交易额度流转。
4.在现实场景下,交易记录中往往存在隐私保护需求,需要设计一种方法来保证其具体数额、流转方向、参与节点的身份隐私,尤其是交易额度的隐藏。隐藏的交易额度带来了一些问题,最为显著的一个问题是,交易验证者无法直接通过明文交易额度验证交易有效性。因此,需要证明每条交易记录中的交易额度收支守恒,并证明每一个参与实体的流出交易额度总量受控。现有的交易记录额度隐藏方案通常使用承诺,生成交易额度在某一规定额度之内的证明则使用范围证明算法。


技术实现要素:

5.本发明目的是设计一种适用于环保与物流场景下的、具有匿名特性和交易数额隐藏功能的交易记录方法,能够在隐藏实体身份和交易额度的条件下控制代理节点流出的总交易额度,并能够在短时间内验证出一个交易中的交易额度是否在该交易发起者的剩余交易额度之内。
6.本发明的技术方案
7.为了实现上述目的,本发明提供了一种环保和物流场景下的隐藏参与实体身份与
交易额度的隐私交易记录方法,该方法利用区块链技术中的交易发起、交易验证和共识流程来实现交易记录的流转,使用表格式账本匿名化参与实体的身份,使用密码学中的承诺和范围证明技术隐藏交易记录中的额度,并将此密文交易流转记录保存在区块链上。本发明设计了隐藏交易额度的交易内容以及用于记录交易流转的账本结构,并根据账本结构和交易内容设计了交易发起和交易验证方法,使用现存的共识流程,例如pbft等,可实现具有匿名特性和交易数额隐藏功能的交易记录方法,根据账本结构和交易内容,本发明还设计了交易的审计方法,允许任意实体公开验证代理节点与用户节点的总输出交易额度不超过其总输入交易额度。
8.本发明提供的环保和物流场景下的隐私交易记录方法,本发明方法应用于环保领域下碳中和授权交易场景中,各单位之间碳排放量的授权与交易记录,或应用于物流领域下包裹转运场景中,各包裹转运信息的记录,并保持参与实体的匿名和碳排放量授权交易或包裹转运记录的隐藏,同时允许公开验证各个交易记录中的密态交易额度守恒且密态交易额度在限定范围之内;
9.所述方法使用一种基于区块链的三层架构,将每一个参与实体对应区块链网络中的一个节点。每一个参与实体独立维护一个表格状本地帐本,表格的每一行代表一个交易记录,每一列代表一个参与实体或其他交易信息。一个本地帐本中包括多条交易,每一个交易流转记录即为本地账本中的一笔交易。本发明将所有节点分为三类,分别是管理节点、代理节点与用户节点,所述管理节点对应于环保场景中的生态环境管理部门或物流场景中的物品工厂,该管理节点通过发起以代理节点作为接收者的交易,可为每个代理节点分配交易额度,由管理节点作为接收者的交易总额度,即其总输入交易额度可小于由该管理节点作为发送者的交易总额度,即其总输出交易额度,管理节点可制造交易额度;代理节点对应于环保场景中的各生态环境分管部门或物流场景中的物流转运中心;用户节点对应于环保场景中的各重点企业或物流场景中的收件方;代理节点和用户节点在被分配的交易额度之内,将部分被分配额度转移至其他节点。三种节点类型中,管理节点是系统中的原始信任实体,其发起的交易被特殊对待,在提供有效的身份证明的前提下,允许管理节点作为发起者的交易的输出额度大于该交易中的输入额度,即管理节点可以制造交易流转额度;管理节点通过发起一笔接收者为代理节点的交易来为代理节点分配交易额度,拥有剩余交易额度的代理节点可发起交易,在发起交易时,同样需要提供身份证明;类似地,拥有剩余交易额度的用户节点也可以发起交易,但不需要提供身份证明。综上所述,交易额度的流动过程可以使用一个流网络表示,该流网络中的每一个节点都被允许拥有输入流和输出流,并只允许管理节点的所有输出流之和大于其所有输入流之和,以完成交易额度产生的过程。
10.下面首先详细描述账本结构、交易内容,随后描述交易记录、交易审计的具体方法。
11.账本结构为表格状,每一行代表一笔交易记录,每一个列代表一个参与实体的交易内容或者与交易相关的其他信息,例如交易时间戳和交易编号。每一笔交易记录中,每一个参与实体的交易内容都包含密态的交易金额以及一系列证明。在这一账本结构下,虽然每一列对应的系统参与实体是确定的,但每一个列与系统参与实体的具体对应关系是混淆的,参与者的身份不能通过分析交易记录之间的联系确定,能够实现实体的匿名特性。
12.每一个参与实体的交易内容都包含密态的交易金额以及一系列证明,这些证明用
于验证一笔交易的收支平衡,并验证交易额度不超过交易发起者剩余的总交易额度,能够实现交易额度隐藏的特性。对于每一笔交易i,系统参与者pj对应列j(j=0,1

n,其中n是系统参与者个数)的交易内容包括:
13.(1)对交易金额v
i,j
的承诺其中r
i,j
是一个随机值,g,h是椭圆曲线加法群中的元素;
14.(2)π
i,j
,一个证明集合,可用于证明代理节点当前交易额度在节点pj的剩余交易额度之内且交易不是伪造的。当交易i的发起者为管理节点,若管理节点为pj,其他节点为p
j'
,∏
i,j
包括一个身份证明identityproof
i,j
,π
i,j'
包括一个新的承诺值balancecomm
i,j'
和一个范围证明rangeproof
i,j'
;当交易i的发起者为代理节点,对任意节点pj,π
i,j
包括一个新的承诺值balancecomm
i,j
,一个范围证明rangeproof
i,j
,和代理节点提供的身份证明identityproof
i,j
;当交易i的发起者为用户节点,对任意节点pj,π
i,j
是一个新的承诺值balancecomm
i,j
和一个范围证明rangeproof
i,j
。其中,身份证明identityproof
i,j
使用实体pj的私钥生成,使用pj的公钥验证。对balancecomm
i,j
和rangeproof
i,j
,当comm
i,j
(v
i,j
,r
i,j
)中的中v
i,j
大于0时,balancecomm
i,j
使用新的随机值对v
i,j
再做一次承诺,即balancecomm
i,j
:=comm
i,j
(v

i,j
,r'
i,j
),v

i,j
=v
i,j
,范围证明rangeproof
i,j
证明v

i,j
属于[c,d),其中c,d均为正整数且c《d;当comm
i,j
(v
i,j
,r
i,j
)中v
i,j
小于0时,balancecomm
i,j
计算第j列的总和的承诺,balancecomm
i,j
:=comm
i,j
(v'
i,j
,r'
i,j
),v

i,j
=∑jv
i,j
,范围证明rangeproof
i,j
证明v

i,j
属于[c,d)。v'
i,j
属于[c,d),即v
i,j
'属于[c,c+2s)且不属于[d,d+2k),其中,c,d,s均为正整数且c《d,c+2s《d+2s。因此,使用bulletproof范围证明算法证明交易额度v

i,j
属于[c,d),需要使用到两个证明:证明v'
i,j
属于区间[c,c+2s),且证明v

i,j
不属于区间[d,d+2k)。
[0015]
一条交易记录i中的各个承诺构成了一个证明,证明当前交易i中∑iv
i,j
=0,即第i行所有承诺隐藏的交易额度和为0。该证明不需要额外的数据填充与计算,而只依赖于随机数r
i,j
的选择。验证者利用承诺的同态加特性计算交易i中承诺的和commsumi=comm(∑iv
i,j
,∑
iri,j
),通过将commsumi的值与预期值做对比,即验证∑iv
i,j
=0。
[0016]
为了实现交易额度隐藏特性并实现高效的交易验证,本发明结合了基于borromean环签名的范围证明算法和bulletproof范围证明算法,将每一笔交易i中的所有范围证明聚合成一个或多个聚合的范围证明,使用聚合的范围证明验证代替对单个范围证明的验证。如图10所示,当聚合个数超过4个的时候,使用bulletproof证明时,单个证明的平均验证时间优于基于borromean环签名的范围证明方案。由于使得bulletproof的单个证明验证时间小于基于borromean环签名的范围证明(或基于zk-snark的证明)的单个证明验证时间的聚合个数随设备的变化而变化,更一般的,假设使bulletproof的单个证明验证时间小于基于borromean环签名的单个范围证明验证时间的聚合个数为2b,其中b为整数且b≥0。因此,当系统参与者至少为2b个时,将同时使用bulletproof范围证明算法和基于borromean环签名的范围证明算法,对每一个交易i中每个实体对应的范围证明rangeproof
i,j
,(j=0,1,

,n),妥善选择将被聚合的范围证明的个数,得到一个或多个聚合的范围证明和一个或多个基于borromean的范围证明,得到一个范围证明集合rangeproofi;当系统参与者小于2b个时,只使用基于borromean的范围证明算法,交易i中每
个实体对应的范围证明rangeproof
i,j
,(j=0,1,

,n)组成范围证明集合rangeproofi。
[0017]
使用bulletproof范围证明算法进行聚合,聚合的证明个数需为二的整数幂。因此,使用一种分配方案来聚合较大系统中的范围证明,对于一个参与者个数为n的系统,对其聚合方式描述如下:容易得到,整数n可以表示成二进制形式:n=a0+a1*2+a2*22+...+a
l
*2
l
,(a0,a1,...,a
l
∈z且0<n<2
l+1
),显而易见的,为了使用bulletproof范围证明算法的聚合功能,一共需要得到n=a0+a1+...+a
l
个聚合证明,其中a
l
对应的聚合证明是2
l
个原始证明的聚合。因此,对于一个参与者个数为n=a0+a1*2+a2*22+...a
l
*2
l
的系统,使用ab+a
b+1
+...+a
l
个聚合bulletproof范围证明,以及a0+

+a
b-1
t*2
b-1
个基于borromean环签名的范围证明。bulletproof证明聚合的原始证明的个数不同,单个证明的平均验证时间也不同,对于一个聚合了2k个原始bulletproof范围证明的聚合证明,假设其单个证明的平均的验证时间为tk(k=1,2,...l,tk取值约在0.1ms~50ms),单个基于borromean环签名的范围证明验证时间为t(t取值约为20ms),于是在本聚合方案下,一个共需要n=a0+...+a
b-1
*2
b-1
+ab*2b+...+a
l
*a
l
个原始范围证明的系统,只需要a0t+...+a
b-1
t*2
b-1
+abt
b2b
+...a
l
t
l2l
的总验证时间。
[0018]
使用一种基于动态规划算法的范围证明聚合方法,求解a0,a1,a2,...,a
l
将多个原始范围证明聚合,达到高效交易验证的目的。在以下约束条件和求解目标下求解a0,a1,a2,...,a
l
[0019]
约束条件:n=a0+a1*2+a2*22+...+a
l
*2
l
[0020]
a0,a1,...,a
l
∈z。
[0021]
优化目标:minimize a0+...+a
b-1
t*2
b-1
+abt
b2b
+...+a
l
t
l2l
[0022]
该问题可以被看成是一个完全背包问题的变体,该问题可以被转化为:现存在一个可容纳重量为n的背包,存在l个不同的物品,对于每一个物品k,其重量是2k,当k《b时,物品的价值是t2k,当k≥b时,物品k的价值是t
k2k
,每一个物品有无限件,目标是在正好装满背包时,获得最小的物品总价值。求解该问题,使用v(w)代表对w个范围证明进行聚合之后,得到的最小的交易验证时间。递推式为:
[0023]
v(w)=min{v(w-1)+t,...,v(w-2
b-1
)+2
b-1
t,v(w-2b)+t
b2b
,...,v(w-2
l
)+t
l2l
};
[0024]
v(0)=0。
[0025]
使用上述递推式,可以计算出当w=n时,v(w)的取值,并记录获得a0,a1,a2,...,a
l
的取值。基于这一思想,能够在多项式时间内求得a0,a1,a2,...,a
l
使得一笔交易的验证时间最短,同时得到一组聚合的范围证明,将交易i中的该组聚合的范围证明集合表示为rangeproofi,存储在交易中不对应任何参与实体一列。
[0026]
如图10所示,在bulletproof范围证明中,当聚合证明的个数在64个之内时,聚合证明的数目越多,平均单个证明所需的验证时间越短,且当聚合个数小于2b(图10展示的设备下测试得到b=2)个时,基于borromean环签名的范围证明的平均单个证明验证时间低于bulletproof。若存在这样的规律:在bulletproof范围证明中,随着聚合证明个数的增加,平均单个证明所需要的验证时间逐渐递减,则可进一步对上述背包问题进行简化,使用贪心策略即可完成a0,a1,a2,...,a
l
的求解。
[0027]
在基于贪心策略的求解中,递推式如下所示:
[0028][0029]
v(0)=0。
[0030]
使用上述递推式,相较求解完全背包问题,可以更高效地求解a0,a1,a2,...,a
l

[0031]
每一个节点都可以参与交易发起、交易验证、共识流程来记录交易,在交易记录完成之后,任意实体可以参与交易审计过程,对代理节点与用户节点的交易记录进行审计。
[0032]
所述方法的交易记录步骤包括:
[0033]
(1)交易发起:交易发起过程由发起交易的节点独自完成,具体地,在交易发起过程中,节点根据自身节点类型与交易额度为交易填充内容,填充完成后将交易广播到区块链网络中,每一个交易的填充内容可参见对上述交易内容的介绍;图3展示了一笔交易的填充过程;
[0034]
(2)交易验证:交易验证过程由各个节点完成,具体地,它们验证每一个接收到的交易的有效性,有效的交易进入共识流程,无效的交易被丢弃,交易验证中,对发起者为管理节点的交易进行验证时,只需要验证每一个∏
i,j
有效,对发起者为代理节点和用户节点的交易进行验证时,需验证证明每一个π
i,j
与证明有效。其中,使用聚合的范围证明,在交易i的验证中,可以使用对交易中的聚合范围证明集合rangeproofi验证,来替代对每一个参与实体pj对应的证明∏
i,j
中的范围证明验证,故有两种方法验证每一个π
i,j
有效:(1)对交易i中的每一个参与实体pj,验证其单元格中的π
i,j
有效,对每一个π
i,j
中包含的范围证明rangeproof
i,j
单独进行验证,这一方法效率较低;(2)首先验证交易i中的聚合范围证明集合rangeproofi有效,随后对每一个参与实体pj,验证其对应单元格中π
i,j
中除范围证明之外的所有证明的有效性,这一方法效率较高;图4展示了一笔交易的验证过程;
[0035]
(3)共识流程:共识流程由管理节点和代理节点共同完成,本发明中不限制具体共识方式,可选的,这里可以使用pbft等不同种共识算法来完成共识流程,经过共识流程,一笔交易最终被各个节点添加到本地帐本,成功完成交易记录。
[0036]
所述的交易审计过程为:
[0037]
交易审计中,审计代理节点pj时,根据每一个交易i之前发生的交易k中pj列的承诺comm
k,j
(v
k,j
,r
k,j
)与交易i的证明π
i,j
,验证对历史承诺中的交易额度v
k,j
求和的承诺等于π
i,j
中的新承诺,且π
i,j
证明中的范围证明有效即可,该操作能够在不打开承诺时完成。
[0038]
为了提供足够的隐私保证,本发明提出的表格式分布式账本将占用大量存储空间。为了减小空间占用,对于没有参与本次交易的参与实体,它们在本交易中所占据的单元格可以被压缩省去,于是表格式的账本将转变为基于链表的账本。与之相对的,在每一个单元格中,增加该单元格对应的实体编号的记录。
[0039]
本发明的优点和有益效果:
[0040]
本发明设计的表格式账本,能够匿名化各个参与实体身份,隐藏交易记录中的额度,并能保证交易额度在密态情况下的交易记录的正确流转,并允许各节点公开、在线地审计代理节点与用户节点的交易流转过程,针对于环保和物流场景,本发明划分出了不同的参与实体类型,相较于所有实体功能相同的设计,本发明能够更好地应用于环保领域的碳排放额度分配与交易记录场景,以及物流领域的物资流转记录场景。
[0041]
本发明综合使用了基于环签名的范围证明方案以及bulletproof范围证明方案,并给出一种范围证明的聚合方法,能够获得较低的单个证明验证所需的平均时间,提高了单笔交易的验证效率,提高系统的每秒交易处理数。
附图说明
[0042]
图1.给出了本发明的账本设计与交易内容设计图,展示了账本设计样式与不同交易中的不同内容,以及交易验证和交易审计所需要的交易数据。
[0043]
图2.给出了本发明中常用符号与描述。
[0044]
图3.给出了本发明在环保或物流场景下的一笔交易填充的流程图。
[0045]
图4.给出了本发明在环保或物流场景下的一笔交易验证的流程图。
[0046]
图5.给出了本发明中各个节点类型与环保场景的各节点的对应图。
[0047]
图6.给出了本发明在环保场景下的交易流转示例图。
[0048]
图7.给出了本发明中各个节点类型与物流场景的各节点的对应图。
[0049]
图8.给出了本发明在物流场景下的交易流转示例图。
[0050]
图9.给出了本发明使用的基于borromean环签名的范围证明算法运算时间测试结果。
[0051]
图10.给出了本发明中使用的基于sm2的bulletproof范围证明算法在聚合后得到的单个证明验证时间和基于borromean环签名的范围证明算法的单个证明验证时间的对比。
具体实施方式
[0052]
实施例1:
[0053]
下面将结合附图介绍本发明的具体实施方式。
[0054]
如图1所示为本发明中的交易记录方法涉及的主要内容,包括账本结构和交易内容的设计,以及交易的验证和审计所需要的交易内容示例。账本上的每一条交易记录都通过交易发起和交易验证过程之后被写入账本,成为一笔有效的交易记录。审计过程可能发生在交易被写入账本之后的任意一个时刻,可被任意节点公开验证。
[0055]
如图2,给出了为本发明中常用符号的描述。
[0056]
如图6所示为本发明在环保场景下的一个实施例,如图8所示为本发明在物流场景下的一个实施例。本实施例中,一笔交易允许的最大额度限制为2
32
。其中,证明π
i,j
是多个其他证明的集合,在如图6和图8的实施例中不单独表示,除了承诺comm
i,j
(v
i,j
,r
i,j
)之外的数据都属于证明π
i,j
;证明通过对承诺comm
i,j
同态求和完成,不需要额外的数据,如图6和图8的实施例中不单独指出。下面首先对图6所示的实施例进行详述,随后对图8的实施例进行详述。可选地,在实施例介绍中,交易记录中的共识流程使用最长链原则。
[0057]
如图5所示为本发明中各个节点类型与环保场景下各个实体类型对应的关系图,是本发明应用于碳排放交易场景时,本发明中提出的各个节点类型与碳交易场景中涉及到的各个机构的对应关系图,其中,本发明中的管理节点对应于生态环境管理部门,负责制定碳排放量配额分配办法,为各个生态环境分管部门制定大致的碳排放量,代理节点对应于各个生态环境分管部门,负责对其下属的各个重点企业进行碳排放量的配额分配与调整,
用户节点对应于各个重点企业,接受生态环境分管部门为之指定的碳排放量配额,并可以彼此之间进行碳排放量的交易。其中将碳排放配额与交易量统称碳交易额度,碳交易额度对应于本发明中的交易额度。使用本发明的审计方法,允许生态环境管理部门针对各个生态环境分管部门进行碳排放配额审计,确保各个生态环境分管部门为其下属的重点企业分配的碳排放额度少于等于允许分配的额度,避免碳排放量分配超标,允许对各个重点企业进行碳排放交易量进审计,保证其碳排放交易量在其拥有的总碳排放量之内,不存在碳排放超标现象。
[0058]
如图6所示的实施例中,在环保场景下一共完成了三笔交易记录,分别是交易0(txid=0)、交易1(txid=1)和交易2(txid=2),它们的发起者分别是生态环境管理部门、生态环境分管部门和重点企业。下面分别介绍每一个交易的交易记录过程,随后以对生态环境分管部门1(p1)的审计为例,介绍交易审计过程。
[0059]
如图6所示,在交易0中,生态环境管理部门p0,分配给生态环境分管部门1p1400单位额度的碳排放量,分配给生态环境分管部门2p2600单位的碳排放量。交易0的交易记录流程为:
[0060]
(1)交易0的发起:交易0的发起者生态环境管理部门p0根据本次交易额度,首先每一个承诺中保护的交易额度,即计算v
0,0
=-1000,v
0,1
=400,v
0,2
=600,v
0,3
=v
0,4
=0,随后生成随机数r
0,0
,r
0,1
,r
0,2
,r
0,3
,r
0,4
,使得r
0,0
+r
0,1
+r
0,2
+r
0,3
+r
0,4
=0,然后使用pedersen承诺来加密每一个交易额度值,将承诺分别表示为comm(-1000,r
0,0
),comm(400,r
0,1
),comm(600,r
0,2
),comm(0,r
0,3
),comm(0,r
0,4
),计算完成后,将这五个数据分别填充到对应的单元格;随后,p0为自己生成一个身份证明identityproof
0,0
,并填充到自己所在列;随后p0分别计算v'
0,1
,v'
0,2
,v'
0,3
与v'
0,4
,分别为v'
0,1
=v'
0,2
=400,v'
0,3
=600,v'
0,4
=0,将它们也使用pedersen承诺加密,得到balancecomm(v'
0,1
,r'
0,1
),balancecomm(v'
0,2
,r'
0,2
),balancecomm(v'
0,3
,r'
0,3
)与balancecomm(v'
0,4
,r'
0,4
),分别填充到p1,p2,p3和p4对应的交易单元格中,最后,p0使用基于bulletproof环签名的范围证明算法生成范围证明rangeproof(v'
0,1
),rangeproof(v'
0,2
),rangeproof(v'
0,3
)和rangeproof(v'
0,4
),证明v'
0,1
,v'
0,2
,v'
0,3
与v'
0,4
处于范围[0,2
32
)中,并将这4个范围证明聚合,得到rangeproof0,并填充到交易0中。此时,如图3所示,交易填充过程结束,交易0中除交易id与时间戳之外的所有单元格中的内容填充完成。注意,证明πb可通过承诺值进行计算,不存储额外的数据。随后,p0将交易0广播到其他节点。
[0061]
(2)交易0的验证:p1,p2,p3,p4接收到p0广播的交易0之后,只需要验证p0的身份证明identitiyproof
0,0
是否有效即可,在此实施例中,每一个实体都验证交易0有效。
[0062]
(3)交易0的共识流程:p1,p2,p3,p4验证交易0有效之后,将交易0添加到自己的本地帐本上,p0直接将交易0添加到自己的本地帐本上。
[0063]
如图6所示,在交易1中,生态环境分管部门1p1随后分配给其下属重点企业1p3额度为200的碳排放量,交易1的交易记录流程为:
[0064]
(1)交易1的发起:p1发起这笔交易时,与交易0相同,首先计算v
1,0
,v
1,1
,v
1,2
,v
1,3
,v
1,4
的取值,随后生成随机数r
1,0
,r
1,1
,r
1,2
,r
1,3
,r
1,4
,同样使之相加为0,使用pedersen承诺方案为每一个实体计算承诺值comm(0,r
1,0
),comm(-200,r
1,1
),comm(0,r
1,2
),comm(200,r
1,3
)和comm(0,r
1,4
),计算完成后,将它们分别填充到对应的单元格;随后,p1为自己生成一
个身份证明identityproof
1,1
,并填充到自己所在列。随后,p1为每一个参与者计算v'
1,0
,v'
1,1
,v'
1,2
,v'
1,3
与v'
1,4
,分别为v'
1,0
=0,v'
1,1
=200,v'
1,3
=200,v'
1,2
=v
1,4
=0。使用它们计算新的承诺值并为每一个实体分别填充;最后,p1为所有实体生成范围证明并聚合成rangeproof1,并将之填充到交易1中,将填充完成的交易1广播至其他节点。
[0065]
(2)交易1的验证:p0,p2,p3,p4接收到p1广播的交易1之后,首先验证聚合证明rangeproof1的有效性;随后证明有效,证明方法是,将一横行的每一个comm(v
1,j
,r
1,j
)求和,得到comm(0+(-200)+0+(200)+0,r
1,0
),验证它是否为1,如果是1,则证明通过,否则验证失败,交易无效;由于交易1的发起者为p1,因此需要交易发起者证明自己的代理节点的身份,因此需要验证身份证明identityproof
1,1
的有效性。如果身份证明有效,则交易有效,否则交易无效
[0066]
(3)交易1的共识流程:p0,p2,p3,p4验证交易1有效之后,将交易1添加到自己的本地帐本上,p1直接将交易1添加到自己的本地帐本上。
[0067]
如图6,交易2是生态环境分管部门1下属重点企业1和生态环境分管部门2下属重点企业1之间的交易(实体p3与p4之间的交易),交易2的交易记录流程是:
[0068]
(1)交易2的发起:p3首先为每一个交易参与者计算对交易额度的承诺并填充到对应单元格;随后计算新的承诺值并填充;随后p3将填充完毕的交易2广播到其他节点。
[0069]
(2)交易2的验证:p0,p1,p2,p4接收到p3广播的交易2之后,如图4所示的交易验证中,为了验证图6所示的交易3,类似交易1的验证方式,首先验证聚合范围证明的有效性,随后证明有效即可。
[0070]
(3)交易2的共识流程:p0,p1,p2,p4验证交易2有效之后,将交易2添加到自己的本地帐本上,p3直接将交易2添加到自己的本地帐本上。
[0071]
对于图6中除了交易0以外的交易可以进行输出交易额度的审计。以交易1为例,为了保证交易1中计算得到的v'
1,1
是合法的,交易审计的方法是:将交易1之前的所有实体p1对应的单元格中所有的comm(v
i,1
,r
i,1
)再次求和,将求和结果与交易1中的balancecomm(v'
1,1
,r'
1,1
)的值进行对比。若二者相同,那么审计通过,说明实体p1流出交易额度小于剩余交易额度。在本实施例中,对实体p1的所有历史交易的承诺求和,即计算comm(400,r
0,1
)+comm(-200,r
1,1
)=balancecomm(v

1,1
,r

1,1
)=balancecomm(200,r

1,1
)。
[0072]
如图7所示,是本发明应用于物流转运场景时,本发明中提出的各个节点类型与物流转运时涉及到的各个机构的对应关系图,其中本发明的管理节点对应于物品生产工厂,可以创造交易额度,也即创造物品;本发明中的代理节点对应于各级物流转运中心,各级物流转运中心接收来自物品生产工厂的物品,并将物品发往其他物流转运中心,一次物品流转对应于本发明中的一笔交易,转运物品数目对应于交易额度,本发明中的用户节点对应于收件方,收件方可以接受来自各个物流转运中心的物品,对应于本发明中从代理节点到用户节点的交易。
[0073]
如图8所示的实施例中,在物流场景下一共完成了三笔交易记录,分别是交易0(txid=0)、交易1(txid=1)和交易2(txid=2),它们的发起者分别是物品工厂、物流转运中心1和物流转运中心2,分别代表物品的生产和从工厂到物流转运中心的转运过程、物流转运中心之间的物品转运过程、以及从物流转运中心到收件方之间的物品转运过程。下面
分别介绍每一个交易的交易记录过程。
[0074]
如图8所示,在交易0中,物品工厂p0首先发起了一笔交易0(txid=0),将300单位的物资转运到物流转运中心1,即p1,交易0的交易发起过程如下所述:
[0075]
(1)交易0的发起:类似于图6中所示的交易填充过程,p0首先计算v
0,0
,v
0,1
,v
0,2
,v
0,3
,的值,随后生成随机数r
0,0
,r
0,1
,r
0,2
,r
0,3
,并使得r
0,0
+r
0,1
+r
0,2
+r
0,3
=0,为四个实体分别计算pedersen承诺值并填充;随后,p0为自己生成一个身份证明identityproof
0,0
,并填充到自己所在列;随后p0为另外四个实体分别计算v'
0,1
,v'
0,2
,v'
0,3
,并使用他们计算新的承诺值并分别填充到p1,p2,p3对应的交易单元格中;最后,p0为p1,p2,p3实体使用基于bulletproof环签名的范围证明算法生成范围证明并聚合得到rangeproof0;随后p0将填充完成的交易0广播到其他节点。
[0076]
(2)交易0的验证:p1,p2,p3接收到p0广播的交易0之后,只需要验证p0的身份证明identityproof
0,0
是否有效即可。
[0077]
(3)交易0的共识流程:p1,p2,p3验证交易1有效之后,将交易1添加到自己的本地帐本上,p0直接将交易1添加到自己的本地帐本上。
[0078]
如图8所示,在交易1中,物流转运中心1即p1随后将300单位的物资转运至物流转运中心2,即p2,交易1的交易记录过程如下所述:
[0079]
(1)交易1的发起:p1计算v
1,0
,v
1,1
,v
1,2
,v
1,3
的取值,随后生成相加为0的随机数r
1,0
,r
1,1
,r
1,2
,r
1,3
,使用pedersen承诺方案为四个实体计算承诺值并分别填充到对应的单元格;随后p1为自己生成一个身份证明identityproof
1,1
,并填充到自己所在列;随后,p1为每一个参与者计算v'
1,0
,v'
1,1
,v'
1,2
,v'
1,3
,使用它们计算新的承诺值并为每一个实体分别填充,最后,p1为所有实体生成范围证明并聚合;随后p1将交易1广播到其他节点。
[0080]
(2)交易1的验证:p0,p2,p3接收到p1广播的交易1之后,首先验证聚合证明identityproof1的有效性;随后证明有效;最后证明identityproof
1,1
的有效性。
[0081]
(3)交易1的共识流程:p0,p2,p3验证交易1有效之后,将交易1添加到自己的本地帐本上,p1直接将交易1添加到自己的本地帐本上。
[0082]
如图8所示,交易2中,p2随后将300单位的物资交付给收件方p3,交易2的交易记录过程如下所示:
[0083]
(1)交易2的发起:p2发起交易时,首先为每一个交易参与者计算对交易额度的承诺并填充到对应单元格。随后计算新的承诺值并填充,并生成身份证明。该交易的验证方式与交易2的验证方式相同,首先验证聚合范围证明的有效性,随后证明有效且identityproof
2,2
有效即可。
[0084]
(2)交易2的验证:p0,p1,p3验证交易有效之后,将交易1添加到自己的本地帐本上,p1直接将交易1添加到自己的本地帐本上。
[0085]
(3)交易2的共识流程:p0,p1,p3验证交易2有效之后,将交易2添加到自己的本地帐本上,p2直接将交易2添加到自己的本地帐本上。
[0086]
图8中的交易的审计方式与图6所示的审计过程相同。
[0087]
图9是使用sm3杂凑算法,使用secp256k1曲线的基于borromean环签名的范围证明算法在intel i7-8556u 1.80ghz处理器,8g内存,64位windows10操作系统环境下的证明生
成和验证时间。其中设交易额度v∈[0,mu),0≤u≤128,令m=2,分别选取u=16,32,48,64。可以看到,本发明实现的范围证明算法,运行时间达到毫秒级别。在本方法中,范围证明算法耗时占比非常高,对范围证明算法的优化有助于提高数字货币系统的吞吐率,实现更高的每秒交易处理量。
[0088]
图10是本发明使用的使用sm2公钥密码bulletproof算法聚合后的单个证明验证时间开销和基于borromean环签名的范围证明算法的单个范围证明时间验证开销对比。测试在intel i7-8556u 1.80ghz处理器,8g内存,64位windows10操作系统上进行,其中需要证明交易额度v∈[0,2
32
)。可以看到,在聚合的数量较少的情况下,基于borromean环签名的范围证明算法在平均验证时间上更有优势,而当聚合的证明数目增多,bulletproof范围证明算法的优势凸显。
[0089]
参考文献
[0090]
[1]b
ü
nz b,bootle j,boneh d,et al.bulletproofs:shortproofs for confidential transactions and more[c]//2018ieee symposium on security andprivacy(sp).ieee,2018:315-334.
[0091]
[2]sasson e b,chiesaa,garman c,et al.zerocash:decentralized anonymous payments from bitcoin[c]//2014ieee symposium on security andprivacy.ieee,2014:459-474.
[0092]
[3]noether s,mackenziea.ring confidential transactions[j].ledger,2016,1:1-18.
[0093]
[4]camenisch j,chaabouni r.efficient protocols for set membership and range proofs[c]//international conference on the theory and application of cryptology and information security.springer,berlin,heidelberg,2008:234-252.
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1