比特币是中本聪在2009年提出的分布式密码货币,其经过共识将交易信息(发送方、接收方、交易金额)打包公开存储在区块链上,因此可以不需要第三方中介而确认交易[1].在现代电子支付系统当中,用户必须信任银行不会篡改系统、不会滥用用户的隐私,而比特币采用化名地址给用户提供了隐私保护.由于交易是公开存储的,任何人都可以查看交易路径,并可以向前追溯到该比特币的起源.若交易与真实世界有关,则可能会追踪到用户真实身份,因此更多、更复杂的密码学技术被应用在区块链中以增强其隐私性.Zerocoin方案[2]通过非交互式零知识证明(non-interactive zero knowledge, NIZK)提供了发送方和接收方的不可关联性,Zerocash方案[3]运用ZK-SNARKs提供了匿名性程度极高的密码货币隐私保护方案[4],Monero方案[5]基于Crypto Note协议[6]、环状机密交易Ring CT[7]来隐藏交易金额和交易双方地址.然而,隐私保护程度的加强会带来另一个问题:缺乏和难以审计,可能会让地下钱庄洗钱、敲诈勒索等非法行为更加泛滥.文献[8]中的机密交易方案,利用Pedersen承诺可隐藏交易金额,审计方无法确知区块链中的交易情况,将导致网络洗钱等违法交易行为难以控制.而若将交易数据直接对审计方公开,又与用户隐私保护需求相悖,从而失去区块链本身的意义.
本文针对机密交易中过度强调隐私保护所导致的对区块链中的交易难以审计的问题,在保证用户交易数据隐私的同时,授权审计方获知某时间段内所有用户的交易总额,提出可审计的机密交易方案.
对于区块链中隐私数据进行审计的尝试目前主要有2类方法:1)在交易确认中加入中心方;2)利用密码学工具.2016年英国央行和伦敦大学学院共同开发了数字货币框架RSCoin,由央行控制法定货币的发行,商业银行存储各交易账本,最终再由央行确认放入链中[9].央行对交易享有最终确认权,以此达到监管审计的目的.2017年Cecchetti等人提出了Solidus协议,该协议由若干个银行控制所有账户并代表用户完成交易[10].通过引入可公开验证的不经意RAM机为交易提供机密性.审计方通过2种方式进行审计:1)银行能够证明链上数据的正确性,审计方可以按需获取交易日志并验证其正确性和完整性;2)银行共享其私有解密密钥,审计方可以直接并主动监控银行及其账户内的活动.
在链中引入中心方干预交易的确认很难兼容现有带隐私保护的区块链应用,研究人员逐渐引入密码学工具以达到链外审计的目标.2016年,Garman等人扩展了Zerocash协议,通过引入追踪密钥追溯币的交易历史[11],为去中心化匿名支付提供追责功能.随后,Naganuma等人提出可审计的Zerocoin方案,发送者在交易生成中嵌入审计信息,允许指定审计方获得交易中的关联信息[12].以上2类方案都是对逐条交易进行审计,需要较大的审计成本;同时方案更改了交易结构,使交易尺寸增大,导致区块的传输性能降低.2018年,Narula等人提出即支持隐私保护又可审计的分布式账本zkLedger[13].zkLedger采用多栏总分类账结构,将银行间所有交易保存在一个账本上,一行代表一个交易,一列代表一个银行的所有交易.由交易发送方产生交易(一行),使用Pedersen承诺隐藏金额,而对于未参与交易的银行,发送方产生对金额值0的承诺,则可使交易参与方不被第三方知道[14].审计方通过账本中的一列对银行进行查询,得到一个银行的某些交易统计信息如交易和、均值等.zkLedger通过Schnorr型[15]非交互式零知识证明提供审计功能.与Zerocash方案不同,zkLedger方案不依赖可信第三方进行参数设置.与zkLedger粗粒度监管方式不同,Wüst等人提出了既支持隐私保护又可监管的密码货币方案PRCash[16],其监管粒度较细,针对的是各节点之间的交易.PRCash改进Mimblewimble方案来产生交易[17],每个输出均需要范围证明和监管证明,监管方作为第三方验证监管证明.PRCash方案监管的是交易额度,若超过限额,则通过监管证明解密部分信息获得接收方身份;若未超出限额,可通过监管证明验证其交易额在额度之内[14].但其只能监管到交易额的范围,如何设置一个通用的阈值进行监管是一个难点,若频繁采用小额度交易进行洗钱,可能会监管不当.2019年Li等人提出了可追溯的Monero方案[18].付款人在产生收款人一次性密钥对时,同时产生标签用于在收款人充当恶意付款人时追溯收款人的长期公钥.审计方通过使用自己的私钥解密标签中密文即可获得付款人的长期公钥,而通过对交易中的密文进行解密则可找到相应的一次性公钥,由此导致该方案的隐私性较弱.同年,Chen等人提出可审计追责的机密交易方案PGC[19],其将承诺形式的交易转换成Elgamal加密的形式,无需对随机数与金额保持追踪来获取信息;利用零知识证明确保其有效正确性;采用签名证明账户所有权.对于有争议的交易,PGC通过用户对该交易金额的正确性进行零知识证明来达到审计问责的目的.但该方案的研究限于理论层面,在实际应用中的性能有待考究.
本方案中交易的创建过程类似机密交易,输入、输出形式均为对金额的Pedersen承诺,同时输入需要附带发送方地址.以图1为例介绍一个区块的结构,该区块中有2个交易:交易1为两输入单输出,同时附带一个范围证明range proof(Out1);交易2为单输入两输出,同时附带2个输出的聚合范围证明range proof(Out2,Out3).通过Bulletproofs生成聚合的范围证明,其具体构建见文献[20].
Fig. 1 Block structure
图1 区块结构
该系统由3种角色组成:审计方、区块验证者(Leader)、用户.
1) 审计方.区块链外具有审计功能的参与方,可以查看所有区块以及审计多个区块中所有交易的和.
2) 区块验证者.审计方、用户相交互的媒介,设置为前一个区块的记账者,由共识协议(如PBFT共识)选出.
3) 用户.产生交易发送至区块链网络的参与方,分为发送方与接收方.
图2为例阐述审计过程[14]:
Fig. 2 Audit framework
图2 审计框架
1) 审计方想审计区块链中多个区块中所有交易的和,先产生审计请求发送给上一个区块验证者;
2) 区块验证者收到请求后验证请求来源为审计方,则进行下一步与用户进行交互,否则为非法请求,丢弃该请求;
3) 区块验证者转发审计请求给各用户,每个用户验证收到的审计请求,验证通过后开始计算审计令牌;
4) 各用户将令牌发送给验证者,区块验证者根据令牌进行验证,将每个用户的结果计算、整合,得到最终结果发送给审计方;
5) 审计方将收到的结果解密得到所有交易的总和,并验证其正确性.
ACT(auditable confidential transaction)方案由(Setup,Request,Verify_Request,Response,LDec,Add,Audit,Verify)8个算法组成[14]:
1) Setup(1λ)→(pubpara,secpara).参数生成算法,输入安全参数λ,输出公共参数pubpara、私有参数secpara.
2) Request(pubpara,req,ssk)→(req,sig).请求算法,由审计方执行,输入公共参数pubpara、请求消息req与签名私钥ssk,输出审计请求req及签名sig.
3) Verify_Request(pubpara,req,sig)→{0,1}.验证请求算法,由验证者和用户执行,输入公共参数pubpara、审计请求req、签名sig,输出1代表审计请求验证通过,可以进行后续步骤,0表示审计请求非法,丢弃该请求.
4) Response(pubpara,si,sri)→(Tokeni).响应算法,由用户i执行,输入公共参数pubpara、用户i的交易和si、随机数之和sri,输出用户i的审计令牌Tokeni.
5) LDec(pubpara,secpara,Tokeni)→(ci,msri).解密算法,由验证者执行,输入公共参数pubpara、secpara、审计令牌Tokeni,输出每个用户的交易和的密文ci以及每个用户的随机数和msri.
6) Add(pubpara,ci,msri)→(audit_data).求和算法,验证者输入公共参数pubpara、每个用户交易和的密文ci、每个用户的随机数和msri,输出审计数据audit_data.
7) Audit(pubpara,ask,audit_data)→sum.审计算法,审计方输入公共参数pubpara、审计私钥ask、审计数据audit_data,输出交易和sum.
8) Verify(pubpara,sum,audit_data)→{0,1}.验证算法,审计方输入公共参数pubpara、上一步算法产生的交易和sum、审计数据audit_data,输出0或1.1表示审计结果正确,用户和验证者均诚实;0表示验证者不诚实.
本节介绍ACT方案所满足的安全性质,分别为可审计性、审计可靠性以及交易金额隐私性[14].
定义1. 可审计性.对于ACT方案,如果满足如下条件,则审计方可以审计到所有用户的交易总额.
Verify(pubpara,sum,audit_data)=1]≥1-v(λ),
其中,υ(λ)为可忽略函数.
即对于诚实按照操作进行交互的用户和验证者,审计方可以正确审计到一段时间内该网络总的交易额.
定义2. 审计可靠性.对于ACT方案,如果满足条件,则该方案具有审计可靠性.
Verify(pubpara,sum,audit_data)=0]≥1-v(λ),
其中,RD指真实数据,∉RD表示伪造的数据,enc_sum表示所有用户交易总和的密文.即审计方可以检测到伪造数据,假数据无法通过审计验证.
定义3. 交易金额隐私性.对于任意多项式时间敌手
如果
在图3实验中成功的优势是可忽略的,则ACT方案具有交易金额隐私性.
图3的实验中Π为ACT方案,
的优势为
![]()
|Pr[b=b′]-1
2|,
即除了用户自己之外,其他人均无法获得单个用户的交易金额之和.换言之,交易和(s1,s2)的密文(c1,c2)(分别对用户1和用户2)对敌手
是不可区分的.
ACT方案基本设计思想如下:利用数字签名算法生成审计请求,确保只有审计方有权审计.用户对个人交易总额进行双重加密生成审计令牌:第1重加密采用同态加密,使得审计方和区块验证者无法获知各用户各自的交易和;第2重加密附带零知识证明,可检测不诚实用户伪造数据,同时保证交易数据隐私和审计数据准确性.审计令牌包含交易输入承诺中的随机数总和以及零知识证明.区块验证者根据令牌解密外层密文,验证零知识证明有效性;随后将各用户的内层密文相乘、以及将随机数的和相加,同时发给审计方.审计方解密得到所有用户的交易额总和,并利用Pedersen承诺的同态性可验证其正确性.
ACT方案具体构造为:
1) Setup(1λ)→(apk,ask,lpk,lsk,spk,ssk).输入安全参数λ,产生审计方公钥apk=(N,g1),私钥ask=μ;验证者私钥为lsk,公钥lpk=(f,g2),Elgamal加密体制模数k以及审计方签名私钥ssk,签名公钥spk.输出pubpara=(k,apk,lpk,spk),secpara=(ask,lsk,ssk).
2) Request(pubpara,req,ssk)→(req,sig).请求信息req=(h_first,h_end)表示审计区块高度从h_first到h_end的区块交易和;对req生成数字签名,签名记作sig=(Ω,s),输出审计请求req和签名sig.
3) Verify_Request(pubpara,req,(Ω,s))→{0,1}.验证签名sig,输出1代表审计请求验证通过,可以进行后续步骤,0表示审计请求非法,丢弃该请求.
4) Response(pubpara,si,sri)→(csumi,π1i,sri,csri,π2i).对于交易总额进行双重加密及证明,具体过程由3步组成:
① 用户用区块验证者公钥lpk进行加密Enc(),随机选择y∈Zk,计算密文csri=Enc(lpk,hsri)=(ct1,ct2)=(fymod k,hsri×
mod k),同时附带一个NIZK-π1i证明明文hsri与用户i的所有交易输入承诺乘积中的h部分一致:
π1i=NIZK{Enc(lpk,hsri)明文是hsri∧公钥为lpk};
② 用审计方公钥apk对交易和si进行Paillier加密,随机选取整数
且gcd(r,N)=1,对明文si,利用公钥(N,g1)和随机因子r计算密文ci:ci=E[si,r]=
×rNmod N2;
③ 用验证者公钥lpk对步骤2)产生的ci进行加密,随机选择x∈Zk,计算交易和密文csumi=
同时附带零知识证明π2i证明明文确实为用户自己在这段时间内的交易和:π2i=NIZK{Enc(lpk,ci)明文是
×rN∧公钥为lpk}.
输出Token=(csumi,sri,csri,π1i,π2i).
5) LDec(pubpara,secpara,csumi,sri,csri,π1i,π2i)→(ci,msri).验证者验证π1i,π2i的有效性后,将csumi和csri进行解密.csumi的明文ci=cp2(cp1lsk)-1 mod k,csri的明文msri=ct2(ct1lsk)-1 mod k,计算hsri是否等于msri,相等则证明用户诚实,所发随机数之和数据正确.
6) Add(ci,msri)→(enc_sum,r_sum).验证者将步骤4)中得到的所有ci相乘,所有msri相加,计算所有用户的交易和密文
所有用户的承诺随机数之和
输出audit_data=(enc_sum,r_sum).
7) Audit(pubpara,ask,enc_sum)→sum.审计方利用私钥ask=μ将验证者发来的密文enc_sum进行解密,得到交易和sum=Dec[enc_sum]=L(enc_sumμmod N2)
L(gμmod N2) mod N,其中L(x)=(x-1)
N.
8) Verify(pubpara,sum,r_sum)→{0,1}.将该段时间内区块中所有的输入承诺相乘,即comm=
计算comm′=gsumhr_sum,判断comm是否等于comm′.相等则输出1,证明该段时间内交易总额为sum;不等则输出0,说明验证者不诚实,可对验证者进行经济惩罚.
以NIZK-π1i为例展示响应算法Response(pubpara,si,sri)→(csumi,π1i,sri,csri,π2i)中零知识证明的具体构建.NIZK-π1i=NIZK{Enc(lpk,hsri)中明文是hsri且公钥为lpk},即证明用户发给验证者的随机数之和sri正确,与承诺中对应随机数之和相匹配.设群G=
f
=
g
=
h
,公钥lpk=flsk,A,B,C∈G,用户(证明者)使得验证者相信他知道
使得A=fx,B=
且
其中x=x′表示密文csri是用区块验证者的公钥加密得到,
表示明文中sri是用户i输入承诺的随机数之和.如图4展示了NIZK-π1i的具体构建,应用Fiat-Shamir启发式方法将交互式证明转换为非交互式证明,在生成证明时,证明者将验证者选择的挑战信息用Hash值代替,则NIZK-π1i=(S,T,U,r,a,b,c).
Fig. 4 Construction of NIZK-π1i
图4 非交互式证明π1i的构建
验证者通过检查r=Hash(pubpara,S,T ,U)
来检查π1i=(S,T ,U ,r,a,b,c)的有效性.
与
构建类似,本文不再赘述.
本节对ACT方案的安全性进行证明.
定理1. 在用户和验证者都是诚实的前提下,审计方能够审计到一段时间内所有交易的总消费额.
证明. 假设用户和验证者均诚实,则审计方收到的数据信息是正确的.审计方收到enc_sum后,根据Pailliar加密同态性,
根据二项式定理,
mod N2.根据文献[21]可知,g=(1+N)αβN,则gciμ=((1+N)αβN)μsi=(1+N)α μsiβNμsi mod N2.根据Carmichael定理[22],∀w∈
,wNμ=1 mod N2,因此gciμ=(1+α×μ×si×n) mod N2.
因此
可知审计方得到的交易和是正确的,由承诺的同态性质,
gsumhr_sum,因此Verify算法输出为1.可审计性得证,即审计方能够审计到一段时间内所有交易的总消费额.
证毕.
定理2. 如果零知识证明满足可靠性,且承诺方案满足绑定性,则ACT方案满足审计可靠性.
证明. 可靠性指若审计方收到虚假数据,则其通过验证算法的可能性极小.虚假数据来源于2方面:①用户;②验证者.
情况1.假设存在不诚实的用户想要对验证者进行欺骗,让其接受证明,则用户所用明文不是真正的随机数和sr,即用随机字符串sr′代替,零知识证明
中,B=
此时CrU=gzrhr×sri×
因此,用户骗过验证者接受该证明的概率可忽略.对于交易和si为虚假数据而骗过验证者接受该证明的概率同理可证.
情况2.假设存在不诚实的验证者对审计方进行欺骗,即在Add(ci,msri)→(enc_sum,r_sum)算法产生输出后,编造假数据通过审计方验证的概率不可忽略,则存在enc_sum′≠enc_sum,r_sum≠r_sum′,使得Pr{Dec[enc_sum′]=sum′:gsum′hr_sum′=gsumhr_sum}≥1-v(λ),v(λ)为可忽略函数.与承诺方案的绑定性相矛盾,所以不诚实的验证者无法欺骗审计方.综上,该方案具有可靠性.
证毕.
定理3. 如果零知识证明是零知识的,且判定复合剩余问题是困难的,则该方案满足交易金额隐私性.
证明. 通过游戏序列来证明本定理.
G1. 第1个游戏是原始的![]()
G2. 第2个游戏与G1类似,不同之处是零知识证明π是由模拟器S模拟的,S调用Sim(1λ)获得陷门trap.在每次调用Response(pubpara,si,sri)→(csumb,π1i,sri,csri,π2i)算法时,S计算π1←Sim(trap)而不使用任何证据,π2←Sim(trap).由于零知识证明至少是计算零知识的,模拟的π的分布和G1中根据证据进行计算的π是一样的,因此![]()
G3. 第3个游戏与G2类似,不同之处是在每个用户进行Paillier加密交易总额的过程中用随机串加密代替密文.即密文Enc(apk,r),明文r是从明文空间中均匀采样的消息而不是实际的交易和.由引理1可知,
通过引理2可知,![]()
证毕.
引理1. 令
为在IND-CPA实验
中
的优势,则![]()
证明. 令
首先展示如何构造一个在IND-CPA实验中优势大于等于∂
q的求解器(敌手)
为敌手
询问挑战者
密文的总次数.每一次,
选取2个明文(s0,s1)发送给IND-CPA挑战者
向
询问s=s0的密文,在响应阶段
收到c=Enc(apk,mb),其中b是
选取的比特值.
输出b′作为IND-CPA实验返回的结果.注意到当b=0时,
的视图和G2的分布一样,b=1时,
的视图与G3分布一样,通过q次询问,
在IND-CPA实验中成功的优势必须大于等于∂
q.假设
在IND-CPA实验中最大的优势为
则有![]()
证毕.
引理2. 令
为在IND-CPA实验中
的优势,如果判定复合剩余假设满足,则![]()
证明. 考虑图5所示的区分算法D:

情况1..选择
是
的元素,其中Res(
)的定义为模
的N次剩余,则:
c=(1+N)sb×rNmod N2.
r从
或
中均匀选择时,[rNmod N2]上的分布是相同的,因此
运行D算法和IND-CPA实验的视图分布一样.当
的输出b′=b时,算法D输出1,则:
Pr [D(N,[rNmod N2])=1]=![]()
情况2.选择y∈
,则
在该情况下的视图独立于b.由于y是从群
均匀选择,则密文c在
也是均匀分布的,其独立于明文s.因此,b′=b的概率为1
2.即
Pr [D(N,r)=1]=1
2.
因此,
|Pr [D(N,[rNmod N2])=1]-
Pr[D(N,r)=1]|=![]()
由判定复合剩余假设,可得:
|Pr [D(N,[rNmod N2])=1]-
Pr[D(N,r)=1]|≤v(λ).
因此,
综上,![]()
因此,如果零知识证明是计算零知识的,且判定复合剩余问题是困难的,则该方案满足交易金额隐私性.
证毕.
本节通过仿真实验对交易中范围证明与审计中各算法进行性能评估.实验环境配置为Mac OS操作系统,8 GB RAM,CPU为Intel Core i5 2.3 GHz.实验程序采用C语言编写,调用pbc,libsecp256k1等密码学库进行双线性映射、点乘等运算.如图6、图7所示为PRCash与Bulletproofs范围证明的生成与验证时间对比,PRCash范围证明采用的是文献[23]中基为4的证明形式,由于其采用了效率较低的双线性映射,因此时间较长,随着范围的增加,使用Bulletproofs生成证明的效率可以提高3倍以上,而验证效率则可以提高8倍以上.
Fig. 6 Generation time for range proof
图6 范围证明生成时间
Fig. 7 Verification time for range proof
图7 范围证明验证时间
图8所示为ACT方案中各算法在不同密钥长度下的执行时间折线图.实验中对Paillier密码体制中的N分别应用了4种长度:512 b,1 024 b,2 048 b,3 072 b,在4种长度下模拟得到了Response(分为encrypt与NIZK两步)、LDec(分为decrypt与NIZK两步)、Audit算法的执行时间.结果显示,算法中NIZK的生成时间约为加密的2倍,而验证者验证NIZK的时间则达到解密的10倍左右,占据了算法执行的大部分时间.在2 048 b下,用户生成审计令牌的时间大约需要0.66 s,验证者对于一个用户发来的一个响应执行LDec算法大约需要0.6×2=1.2 s,若用户数为100个,则每次审计时验证者需要大约2 min.
Fig. 8 Execution time for ACT algorithm
图8 ACT算法的执行时间
图9所示为交易个数在10万~100万时审计方执行Verify算法的时间.实验中模拟单个交易金额均为100密码币,由于运行Verify算法需要将审计的区块内所有交易输入承诺相乘,因此图9中实线显示交易数越多,算法执行时间越长.若采取预先计算的形式,将交易乘积缓存,则审计时无需做大量的乘法运算,如图9中虚线所示,采用缓存形式的算法执行时间基本独立于交易个数,且时间很短,约为3 ms.
Fig. 9 Execution time for Verify algorithm
图9 运行Verify算法的执行时间
针对机密交易金额隐私性强导致审计缺失和审计困难的问题,本文提出可审计交易总额的机密交易方案ACT,利用签名对审计请求来源进行身份认证,确保审计方的合法身份.该方案在审计中引入Paillier同态加密,可以保护单个交易以及单个用户的金额隐私,同时采用零知识证明在保证交易隐私性的同时可有效检测到不诚实用户伪造数据,从而保障审计数据的准确性.通过安全性分析及性能分析,该方案可以实现一段时间内区块链网络中交易总额的审计,同时可以有效保护交易金额隐私.且交易创建过程中利用Bulletproofs范围证明技术,使得交易创建与验证的效率提高.应指出:由于交易和范围有限,当交易和较小时,验证者有可能通过穷举获取到单个用户的交易和,可通过调整审计区块范围提高金额总和,从而增加验证者通过穷举获知用户交易和的时间成本.同时计算审计令牌时涉及的零知识证明占据了大部分时间,因此如何进一步优化审计策略、提高审计效率是下一步研究的方向.
致谢 感谢审稿专家的宝贵意见让本文更完善,比如指出验证者可能穷举获得单个用户的交易和问题.
[1]Nakamoto S. Bitcoin: A peer-to-peer electronic cash system[EB/OL]. [2016-11-02]. https://bitcoin.org/bitcoin.pdf
[2]Miers I, Garman C, Green M, et al. Zerocoin: Anonymous distributed E-Cash from bitcoin[C] //Proc of IEEE Symp on Security & Privacy. Piscataway, NJ: IEEE, 2013: 397-411
[3]Sasson E B, Chiesa A, Garman C, et al.Zerocash: Decentralized anonymous payments from bitcoin[C] //Proc of IEEE Symp on Security and Privacy. Piscataway, NJ: IEEE, 2014: 459-474
[4]Zhu Liehuang, Gao Feng, Shen Meng, et al. Summary of research on blocchain privcy protection[J]. Journal of Computer Research and Development, 2017, 54(10): 2170-2186 (in Chinese)(祝烈煌, 高峰, 沈蒙, 等. 区块链隐私保护研究综述[J]. 计算机研究与发展, 2017, 54(10): 2170-2186)
[5]Shen N, Mackenzie A, Lab T M. Ring confidential transactions[J]. Ledger, 2016, 1: 1-18
[6]Saberhagen N. Cryptonote v2.0[EB/OL].[2018-04-13]. https://cryptonote.org/whitepaper.pdf
[7]Liu J K, Wei V K, Wong D S. Linkable spontaneous anonymous group signature for ad hoc groups[C] //Proc of Australasian Conf on Information Security and Privacy. Berlin: Springer, 2004: 325-335
[8]Maxwell G. Confidential transactions[EB/OL]. [2017-07-07]. https://people.xiph.org/~greg/confidential_values.txt
[9]Danezis G, Meiklejohn S. Centrally banked cryptocurrencies[C/OL] //Proc of the 23rd Annual Network and Distributed System Security Symp. Rosten, VA: Internet Society, 2016 [2020-06-05]. http://dx.doi.org/10.14722/noss.2016.23187
[10]Cecchetti E, Zhang Fan, Ji Yan, et al. Solidus: Confidential distributed ledger transactions via PVORM[C] //Proc of the 2017 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2017: 701-717
[11]Garman C, Green M, Miers I. Accountable privacy for decentralized anonymous payments[C] //Proc of Int Conf on Financial Cryptography and Data Security. Berlin: Springer, 2016: 81-98
[12]Naganuma K, Yoshino M, Sato H, et al. Auditable zerocoin[C] //Proc of IEEE European Symp on Security and Privacy Workshops. Piscataway, NJ: IEEE, 2017: 59-63
[13]Narula N, Vasquez W, Virza M. zkLedger: Privacy-preserving auditing for distributed ledgers[C] //Proc of the 15th USENIX Symp on Networked Systems Design and Implementation. Berkeley, CA: USENIX Association, 2018: 65-80
[14]Jiang Yihan. Research on Auditability and Verifiability Technologies for Blockchain Transactions[D]. Beijing: Beijing Jiaotong University, 2019 (in Chinese)(姜轶涵. 面向区块链交易的可审计与验证技术研究[D]. 北京: 北京交通大学, 2019)
[15]Schnorr C P. Efficient signature generation by smart cards[J]. Journal of Cryptology, 1991, 4(3): 161-174
[16]Wüst K, Kostiainen K, Capkun V, et al. PRCash: Fast, private and regulated transactions for digital currencies[R/OL]. IACR Cryptology. ePrint Arch, 2018 [2020-06-04]. https://eprint.iacr.org/2018/412
[17]Jedusor T E. Mimblewimble[EB/OL]. [2019-03-02]. https://download.wpsoftware.net/bitcoin/wizardry/mimblewimble.txt
[18]Li Yannan, Yang Guomin, Susilo W, et al. Traceable monero: Anonymous cryptocurrency with enhanced accountability[J]. IEEE Transactions on Dependable and Secure Computing, 2019, DOI:10.1109/TDSC.2019.2910058
[19]Chen Yu, Ma Xuecheng, Tang Cong, et al. PGC: Pretty good decentralized confidential payment system with auditability[R/OL]. IACR Cryptology. ePrint Arch, 2019 [2020-06-04]. https://eprint.iacr.org/2019/319
[20]Bünz B, Bootle J, Boneh D, et al. Bulletproofs: Short proofs for confidential transactions and more[C] //Proc of 2018 IEEE Symp on Security and Privacy (SP). Piscataway, NJ: IEEE, 2018: 315-334
[21]Paillier P, Pointcheval D. Efficient public-key cryptosystems provably secure against active adversaries[C] //Proc of Int Conf on the Theory and Application of Cryptology and Information Security. Berlin: Springer, 1999: 165-179
[22]Yabuta M. A simple proof of Carmichael’s theorem on primitive divisors[J]. Fibonacci Quarterly, 2001, 39(5): 439-443
[23]Camenisch J, Chaabouni R. Efficient protocols for set membership and range proofs[C] //Proc of Int Conf on the Theory and Application of Cryptology and Information Security. Berlin: Springer, 2008: 234-252