CN110992010B - 一种数字货币发行总量控制方法及验证方法 - Google Patents

一种数字货币发行总量控制方法及验证方法 Download PDF

Info

Publication number
CN110992010B
CN110992010B CN201911240879.6A CN201911240879A CN110992010B CN 110992010 B CN110992010 B CN 110992010B CN 201911240879 A CN201911240879 A CN 201911240879A CN 110992010 B CN110992010 B CN 110992010B
Authority
CN
China
Prior art keywords
issuing
banknote
transaction
bank
row
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
Application number
CN201911240879.6A
Other languages
English (en)
Other versions
CN110992010A (zh
Inventor
代文昊
顾小卓
付毛毛
范广
王梓梁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN201911240879.6A priority Critical patent/CN110992010B/zh
Publication of CN110992010A publication Critical patent/CN110992010A/zh
Application granted granted Critical
Publication of CN110992010B publication Critical patent/CN110992010B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • G06Q20/0655Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed centrally
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Control Of Vending Devices And Auxiliary Devices For Vending Devices (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本发明公开了一种数字货币发行总量控制方法及验证方法。本发行方法为:1)央行根据各发钞行的身份信息为每一设定发钞行生成对应的身份认证私钥sk1和公钥pk1,并通过秘密传输通道发给对应的设定发钞行;各设定发钞行每次发钞时,随机生成区块链中使用的私钥skx和公钥pkx;所述发钞行的私钥为SK=(sk1,skx)、公钥为PK=(pk1,pkx);2)所述发钞行对本次发钞量和发钞行身份进行多接收者签密,并将该签密信息附在发钞交易信息中;3)央行根据该发钞交易判断发钞量和发钞行身份是否被篡改,如果未被篡改且对应发钞行有所需的发行量,则允许该发钞行发行本次发钞量;否则拒绝发行。本方法满足发行量可控且安全高效。

Description

一种数字货币发行总量控制方法及验证方法
技术领域
本发明属于密码学技术领域,涉及一种可信的数字货币发行总量控制方法及验证方法。
背景技术
近年来,加密货币逐渐走向成熟,很多国家开始研究区块链等相关技术,并着手推动央行数字货币的发行。相比于普通货币,央行发行数字货币有助于提高支付效率,降低支付成本,防止逃税和洗钱等。
目前,央行发行数字货币还处于研究探索阶段,国际上暂时也没有成功的经验和先例,因而就法定数字货币如何吸收转换区块链技术这一前沿领域的探索和实践有着重要意义。
从2008年中本聪提出比特币开始,比特币、以太坊、EOS等一系列加密货币开始发行和流通。这些加密货币不受时间和空间的限制,能够使支付过程相对于传统货币变得更加便捷有效。尤其在跨境交易时,能够快捷方便且低成本的实现资金的快速转移。同时,这些加密货币利用了密码学的算法和协议,采用分布式记账***,理论上防止了人为的通货膨胀,能够保证货币的安全性,并且具有较好的匿名性。但是,由于这些加密货币的去中心化特性,没有机构或政府给予其信用支撑,理论上不受政府部门管控,导致价格波动很大,货币丢失或被盗后无法找回。
央行数字货币是由国家央行发行的加密货币。其具备法定地位、国家主权背书和明确的发行责任主体,是真正意义上的货币。相比于去中心化加密货币,国家信用和央行的能力可以保证央行数字货币长期具有稳定的价格,更适合实际的使用。虽然已有很多国家正在研究并推动央行数字货币的发行,但是目前还没有国家成功发行央行数字货币。发钞授权、敏感信息保护、发行总量可控等都是央行数字货币面临的问题。另外,去中心化加密货币的一些优点能否保持也受到广泛关注,例如在央行作为发行责任主体后,数字货币能否在技术上预防较大的通货膨胀也是影响央行数字货币广泛流通使用的重要因素。
零知识证明是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的密码学验证技术。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。一些加密货币项目中使用了零知识证明技术来使加密货币获得更良好的属性,例如ZCash中使用零知识证明来实现真正的匿名交易。
多接收者签密是当代密码学领域的另一个研究热点。该技术运用到区块链中,可保证交易的可控匿名性。当一则消息需要向多个接收者传输时,传统的加密方案由于要重复多次加密过程,效率和实时性较低,不能满足实际应用需求。因此,多接收者签密方案被提出。在多接受者签密方案中,签密者对一则消息进行一次签密,每个接收者均可使用自己的私钥对接收到的消息的机密性和可靠性进行验证。
能够安全有效地发钞是数字货币发行的前提。数字货币的很多性质也需要在发钞操作中得到保证。央行数字货币的发钞操作有以下需求:一是数字货币由央行授权发钞行进行发行操作,二是货币的发行量能够由央行监管,三是发钞行身份和发行金额等敏感信息应能够防止泄露,四是在保证发钞行身份和发行金额隐私性的同时能够让更多参与方相信每次发钞行的发钞行为是合法的。
目前,央行发行数字货币还处于研究探索阶段,国际上暂时也没有成功的经验和先例,因而就法定数字货币如何吸收转换区块链技术这一前沿领域的探索和实践有着重要意义。
发明内容
为解决上述问题,本发明提供了一种可信的数字货币发行总量控制方法及验证方法。本发明包含两个算法,范围证明密码算法和可信发行量证明算法。其中为满足央行数字货币的央行授权、发行量可控并监管、发钞行身份信息的动态隐藏和发行金额为密态等要求,本发明使用无证书公钥密码体制和多接收者签密技术设计了范围证明密码算法。在该算法中央行根据各个发钞行的身份信息生成身份认证公私钥对,并通过秘密传输通道发给各发钞行。各发钞行每次发钞时,随机生成区块链中使用的不同公私钥对,同时对本次发钞量和发钞行身份进行多接收者签密操作,并将该签密信息附在发钞交易信息中。虽然发钞行每次使用区块链上不同的公私钥,但央行仍能判断该笔发钞交易属于哪个发钞行,并维护一个发钞行剩余发钞量承诺表进行发钞合法性的判断。
其中为保证用户无法得知发钞交易中发钞行的身份信息以及发钞金额的前提下,仍能判断发钞行每笔发钞交易是否合法,本发明使用零知识证明技术设计了可信发行量证明算法。在该算法中需要央行维护并发布发钞行剩余发钞量承诺表,该表不直接暴露发钞行身份信息以及剩余发钞量,而是公布以上设定敏感信息的哈希值。央行可通过范围证明密码算法获得区块中发钞交易的详细内容,并根据这些信息生成非交互式零知识证据,将该证据以及更新后的发钞行剩余发钞量承诺表等信息打包成一笔交易进行发布。用户可从该交易中提取信息,对交易指向的区块中所有发钞交易的合法性进行验证。
本发明的技术方案为:
一种数字货币发行总量控制方法,其步骤包括:
1)央行根据各设定发钞行的身份信息为每一设定发钞行生成对应的身份认证私钥sk1和公钥pk1,并通过秘密传输通道发给对应的设定发钞行;各设定发钞行每次发钞时,随机生成区块链中使用的私钥skx和公钥pkx;所述发钞行的私钥为SK=(sk1,skx)、公钥为PK=(pk1,pkx);
2)所述发钞行对本次发钞量和发钞行身份进行多接收者签密,并将该签密信息附在发钞交易信息中;
3)央行根据该发钞交易判断发钞量和发钞行身份是否被篡改,如果未被篡改且对应发钞行有所需的发行量,则允许该发钞行发行本次发钞量;否则拒绝发行。
进一步的,生成所述发钞行的私钥SK、公钥PK的方法为:
11)选取一安全参数λ和一个基域Fq,其中q是大素数,且q>2λ;选取一个定义在Fq上的椭圆曲线E(Fq)和E(Fq)上的一个生成元P,生成元P的阶为素数n;选择六个散列函数
Figure BDA0002306191780000031
H1:E(Fq)×E(Fq)→{0,1}w、H2,H3,H4:{0,1}w→{0,1}w
Figure BDA0002306191780000034
,w是正整数,n-1为循环群
Figure BDA0002306191780000035
中的最大值;选择对称加密函数Esk()及其对应的解密函数Dsk(),其中sk表示对称密钥;
12)央行生成自己的身份认证公私钥对(sc,Pc)以及区块链中的公私钥对(sc2,Pc2);其中私钥sc,公钥Pc=sc·P,私钥sc2,公钥Pc2=sc2·P;央行向各设定发钞行公布公共参数pp={q,E(Fq),n,Pc,Pc2,H0,H1,H2,H3,H4,H5,E,D}并指定发钞行的发行量;
13)以发钞行A的身份ID作为输入,央行计算QID=H0(ID)和发钞行A相应的身份认证私钥skA=sc*QID以及身份认证公钥PKA=skA·P;然后央行经由安全信道向发钞行A发送身份认证公私钥对(skA,PKA);
14)发钞行A随机选取
Figure BDA0002306191780000032
并计算PKx=skx·P,作为本次发钞的区块链公私钥对,得到发钞行A的完整私钥SK=(skA,skx),完整公钥PK=(PKA,PKx);其中身份认证公私钥对(skA,PKA)固定并不对区块链公开,每次发钞时变换公私钥对(skx,PKx)。
进一步的,发钞行A对本次发钞量v和发钞行身份PKA进行多接收者签密的方法为:
21)发钞行A随机选取σ∈{0,1}w,计算r=H1(σ,PKA),U=r·P;
22)计算FA=r·PKx,KA=r·PKA,TA=H1(KA,FA),Fc=r·Pc2,Kc=r·Pc以及Tc=H1(Kc,Fc);
23)计算
Figure BDA0002306191780000033
||表示连接操作;
24)计算对称密钥sk=H4(σ),以及V=Esk(v),Γ=Esk(PKA);
25)计算H=H5(U,V,Γ,PKA,PKx),H′=H6(U,V,Γ,PKA,PKx),W=skA+r*H+skx*H′,Λ=H5(v,σ,CA,Cc,V,Γ,U,W);
26)发钞行A生成密文CT=<(CA,Cc),V,Γ,W,U,A>、发钞交易tx=(PKx,CT,Δ),并将该发钞交易tx发布到区块链上;Δ代表防止延展性攻击所需要实现的数据结构。
进一步的,所述步骤3)的实现方法为:
31)央行从区块链上发布的发钞交易tx中提取密文CT=<(CA,Cc),V,Γ,W,U,Λ>;计算K=sc·U,F=sc2·U,T=H1(K,F)以及H2(T);
32)通过CA=H2(T)||Y计算得到Y;Y表示CA移除了H2(T)后的剩余部分;
33)计算
Figure BDA0002306191780000041
34)设置sk′=H4(σ),计算得到v′=Dsk′(V),PKA′=Dsk′(Γ),H=H5(U,V,Γ,PKA′,PKx),H′=H5(U,V,Γ,PKA′,PKx),Λ′=H5(v′,σ,CA,Cc,V,Γ,U,W);
35)央行寻找PKA′对应的发钞行,判断该发钞交易tx是否为发钞行A发起,如果是发钞行A发起且Λ′==Λ、PKA′+U·H+PKx·H′==P·W,则判定本次发行量v和发钞行身份PKA未被篡改,否则拒绝发行;
36)央行根据维护的发钞行A剩余发行量承诺,判断该发钞行A的剩余发行量是否满足本次发行量v,若满足则更新发钞行A剩余发行量承诺并允许该发钞行A发行本次发钞量;否则拒绝发行。
进一步的,央行的完整公钥为(Pc,Pc2)、完整私钥为(sc,sc2);其中私钥
Figure BDA0002306191780000042
私钥
Figure BDA0002306191780000043
一种数字货币发行总量验证方法,其步骤包括:
1)央行根据安全参数λ,生成安全系数为λ的满足发钞交易可信证明的电路Circuit,生成证明密钥pkproof和验证密钥(pkproof,vkproof):=KeyGen(1λ,Circuit),并公开安全参数λ、可信电路Circuit、证明密钥pkproof以及验证密钥vkproof
2)央行分配每一设定发钞行i的发行总量Sumi,随后发起一笔承诺交易,该承诺交易中包含发钞行i的初始剩余量列表
Figure BDA0002306191780000044
其中
Figure BDA0002306191780000045
为该承诺交易发起时最长区块链中最新区块的哈希值,PKi发钞行i的完整公钥;
3)央行监听区块链,当发现新区块new中出现发钞交易,从该发钞交易中得到发行量vi,计算发钞行i新的剩余量承诺
Figure BDA0002306191780000046
以及生成多个非交互式零知识证明,非交互式零知识证明πi为发钞行i的非交互式零知识证明;然后将发钞行i的非交互式零知识证明以及更新后的剩余发钞量承诺打包成一笔交易tx进行发布;
4)验证者从区块中获得该交易tx后,对交易指向的区块中所有发钞交易的合法性进行验证。
生成零知识证明πi的方法为:
11)设置
Figure BDA0002306191780000051
txj为第j笔发钞交易,
Figure BDA0002306191780000052
为发钞行i进行完前一区块发钞后的剩余量承诺;
12)设置
Figure BDA0002306191780000053
其中(sc,sc2)为央行的私钥,
Figure BDA0002306191780000054
为发钞行i进行完前一区块发钞后的发钞剩余量,
Figure BDA0002306191780000055
为发钞行i进行完当前区块发钞后的发钞剩余量;
13)生成零知识证明πi:=Prove(pkproof,xi,ai)。
进一步的,验证者从区块中获得该交易tx后,对交易指向的区块中所有发钞交易的合法性进行验证的方法为:
21)验证者从交易tx中提取
Figure BDA0002306191780000056
找到对应区块的可信证明交易,若old==0,则找到最初发布的承诺交易,提取其中的
Figure BDA0002306191780000057
22)从tx中提取
Figure BDA0002306191780000058
找到对应区块中的发钞交易tx1…txj
23)设置
Figure BDA0002306191780000059
24)计算bi:=Verify(vkproof,xii),如果验证成功bi=1,否则等于0;
25)输出bA∧bB,如果输出等于1,则判定区块new中的发钞交易在合法范围内。
进一步的,新的发钞行剩余量承诺
Figure BDA00023061917800000510
进一步的,所述验证者为发钞行或用户。
与现有技术相比,本发明的积极效果为:
1.本发明使用多接收者签密和无证书公钥密码体制的思想设计了范围证明密码算法。该算法保证央行数字货币发行操作能够满足央行授权、发行量可控、身份信息的动态隐藏、发行金额为密态等要求,同时拥有较高的安全性和效率。
2.本发明利用非交互式零知识证明技术,设计了可信发行量证明算法。该算法实现了可信发钞,即发钞操作能够在***露发钞行身份及发钞量等敏感信息的前提下,使区块链中任何参与节点(包括用户)均能验证每次发钞行的发行量是否在发行范围内。这一特性使央行数字货币继承了普通加密货币防止大规模通货膨胀的优点,使公众拥有监管发钞行发行量的权利,有利于央行数字货币的推广和流通。
3.对比实验:测试环境为***ubuntu16.04、内存16GB DDR3 1600MHz、[email protected]四核,使用C++实现下面两个算法并进行了测试。针对范围证明算法,明文的加密耗时3ms,解密耗时4ms,密文长度为457字节;针对可信发行量证明算法,验证证据仅需9ms,证据大小为固定的288字节。因此本方案具有毫秒级的运行速率,性能较好,能够满足实际应用,具有较强的实用性。
附图说明
图1为本发明方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下参照附图,对本发明作进一步详细说明。
一:范围证明密码算法
首先描述范围证明密码算法,发钞行的私钥为SK=(sk1,skx),其中sk1为部分私钥,由央行根据发钞行身份信息进行生成,skx为区块链中每次身份动态隐藏变换的私钥。与SK相对应的公钥为PK=(pk1,pkx),pk1由sk1生成,pkx由skx生成。其中公私钥对(sk1,pk1)为身份认证公私钥对,保持不变,并且公钥pk1只有发钞行和央行知道,与发钞行进行身份绑定;公私钥对(skx,pkx)为传统区块链中的公私钥对,由发钞行控制进行动态隐藏,每次动态隐藏均代表公私钥对(skx,pkx)的变换。
算法步骤如下:
1)***设置
输入安全参数λ,央行选取一个基域Fq,其中q是大素数,且q>2λ。选取一个定义在Fq上的椭圆曲线E(Fq)和E(Fq)上的一个生成元P,生成元P的阶为一个大素数n。然后,央行选择六个散列函数
Figure BDA0002306191780000061
H1:E(Fq)×E(Fq)→{0,1}w,H2,H3,H4:{0,1}w→{0,1}w
Figure BDA0002306191780000062
w是正整数,
Figure BDA0002306191780000063
为最大值为n-1的整数循环群,n-1为循环群
Figure BDA0002306191780000064
中的最大值。同时,央行还选择对称加密函数Esk()及其对应的解密函数Dsk(),其中sk表示对称密钥。接下来,央行生成自己的身份认证公私钥对(sc,Pc),其中私钥
Figure BDA0002306191780000065
公钥Pc=sc·P。央行生成在区块链中的公私钥对(sc2,Pc2),其中私钥
Figure BDA0002306191780000066
公钥Pc2=sc2·P。最后,央行向发钞行公布公共参数pp={q,E(Fq),n,Pc,Pc2,H0,H1,H2,H3,H4,H5,E,D}并指定发钞行的发行量。
2)提取部分私钥
以发钞行A的身份ID∈{0,1}*作为输入,央行计算QID=H0(ID)和发钞行A相应的身份认证私钥skA=sc*QID以及身份认证公钥PKA=skA·P。接下来,央行经由安全信道向发钞行A发送身份认证公私钥对(skA,PKA)。
3)设置完整私钥
发钞行A随机选取
Figure BDA0002306191780000071
并计算PKx=skx·P,作为本次发钞的区块链公私钥对。发钞行A的完整私钥为(skA,skx),完整公钥为(PKA,PKx)。其中身份认证公私钥对(skA,PKA)固定并不对区块链公开,每次发钞时变换公私钥对(skx,PKx),做到在区块链中身份的动态隐藏。
4)发行量的签密
为了做到发钞行A的发行量v在区块链上保密,但是对央行和发钞行A公开。使用了多接收者签密技术,央行和发钞行A可对密文进行解密。发钞行A的私钥为(skA,skx),公钥为(PKA,PKx),央行的公钥为(Pc,Pc2)。发钞行A对发行量v以及身份信息PKA进行如下操作得密文CT:
a)随机选取σ∈{0,1}w,计算r=H1(σ,PKA),U=r·P。
b)计算FA=r·PKx,KA=r·PKA以及TA=H1(KA,FA),Fc=r·Pc2,Kc=r·Pc以及Tc=H1(Kc,Fc)。
c)计算Ci(i∈{A,c}),
Figure BDA0002306191780000072
||表示连接操作;其中,A代表发钞行,c代表央行,即需要对发钞行和央行分别进行计算得到CA、Cc
d)计算对称密钥sk=H4(σ),以及V=Esk(v),Γ=Esk(PKA)。
e)计算H=H5(U,V,Γ,PKA,PKx),H′=H6(U,V,Γ,PKA,PKx),W=skA+r*H+skx*H′,Λ=H5(v,σ,CA,Cc,V,Γ,U,W)。
f)设置密文CT=<(CA,Cc),V,Γ,W,U,Λ>,发钞交易tx=(PKx,CT,Δ),Δ代表防止延展性攻击所需要实现的数据结构,例如对交易进行签名。发钞行A将该发钞交易tx发布到区块链上。
5)发行量的解密
央行首先从区块链上发布的发钞交易tx中提取密文CT=<(CA,Cc),V,Γ,W,U,Λ>,央行和发钞行A可以使用它们的私钥(以央行为例(sc,sc2))进行如下操作:
a)计算K=sc·U,F=sc2·U,T=H1(K,F)以及H2(T)。
b)用H2(T)通过Ci=H2(T)||Y找到Ci(i∈{A,c}),Y表示Ci移除了H2(T)后的剩余部分。对于央行和发钞行来说,解密时只匹配属于自己的密文,央行匹配Cc,发钞行匹配CA;以央行为例,只需要截取Cc移除H2(T)后的剩余部分即可得到Y,例如Cc=1001,H2(T)=10,那么Y=01。
c)计算
Figure BDA0002306191780000081
d)设置sk′=H4(σ),得v′=Dsk′(V),PKA′=Dsk′(Γ),H=H5(U,V,Γ,PKA′,PKx),H′=H5(U,V,Γ,PKA′,PKx),Λ′=H5(v′,σ,CA,Cc,V,Γ,U,W)。
e)央行寻找PKA′对应的发钞行,判断该交易是否为合法的发钞行发起,以及如果Λ′==Λ并且PKA′+U·H+PKx·H′==P·W,则说明发行量v和发钞行身份PKA未被篡改,否则“拒绝”。
f)为了效率(避免央行遍历区块)和公开可验证的用途,央行维护一个发钞行剩余发行量承诺(可信发行量证明算法详细介绍),判断该发钞行是否有足够的发行量,若有则更新承诺,否则“拒绝”。
模块二:可信发行量证明算法
接下来介绍可信发行量证明算法,主要思想是用户在不知道发钞行身份和发行金额的情况下,对本区块的发钞交易进行发行量的合法性验证,判断发钞行是否超发货币,从而信任发钞行的发钞行为。以下介绍中会出现央行C、发钞行i{i∈A,B}、央行维护并发布的发钞行剩余量承诺Listi=HASH(PKi‖HASHhead‖Balancei)(其中PKi为发钞行的身份认证公钥并且不对外公开,HASHhead为发钞交易所处区块的哈希值用以保证随机性,防止本区块无该行的发钞交易,Balancei为该行的剩余发钞量)、用户user。
当发钞行发出一笔发钞交易时,央行会对这笔交易进行发钞量的合法性验证,并针对该交易所处的区块生成一笔含有非交互式零知识的证明和新的发钞行剩余量承诺的可信证明交易,以供用户在不知道发钞交易源于哪个发钞行以及发行金额隐藏的情况下,对该区块中的发钞交易进行发行量的合法性验证。
为简化算法的描述,假定
Figure BDA0002306191780000082
old代表前一个拥有发钞交易的区块,new代表当前区块以及该区块中的发钞交易为tx1…txj,j为该区块中发钞交易个数。本发明的算法使用Bryan Parno等人提出的Pinocchio协议作为非交互式零知识证明算法,该算法细节不再赘述。为简化算法的描述,假设发钞行i{i∈A,B}为两个,描述如下:
1)***设置
央行输入安全参数λ,生成安全系数为λ的满足发钞交易可信证明的电路Circuit,生成证明密钥和验证密钥(pkproof,vkproof):=KeyGen(1λ,Circuit),并公开安全参数λ、可信电路Circuit、证明密钥pkproof以及验证密钥vkproof
2)初始化发钞行剩余量列表
央行分配各发钞行的发行总量Sumi{i∈A,B},随后发起一笔承诺交易,交易信息中包含发钞行的初始剩余量列表
Figure BDA0002306191780000091
其中
Figure BDA0002306191780000092
为该承诺交易发起时最长区块链中最新区块的哈希值。该列表信息并不暴露发钞行的身份以及发钞金额剩余量。
3)生成发钞交易可信证明
央行监听区块链,当发现新区块new中出现发钞交易并都满足范围证明算法时,央行根据范围证明算法得到发行量vi,计算新的发钞行剩余量承诺
Figure BDA0002306191780000093
以及生成两个零知识证明πi{i∈A,B},生成过程如下:
a)设置
Figure BDA0002306191780000094
txj为第j笔发钞交易,
Figure BDA0002306191780000095
为发钞行i进行完前一区块发钞后的剩余量承诺,
Figure BDA0002306191780000096
为前一区块的头哈希值(该区块与
Figure BDA0002306191780000097
所述的前一区块,为同一区块);
Figure BDA0002306191780000098
为当前区块的头哈希值(该区块与
Figure BDA0002306191780000099
所述的当前区块,为同一区块)。
b)设置
Figure BDA00023061917800000910
其中(sc,sc2)为央行的私钥,
Figure BDA00023061917800000911
为发钞行i进行完前一区块发钞后的发钞剩余量,
Figure BDA00023061917800000912
为发钞行i进行完当前区块发钞后的发钞剩余量。
c)生成零知识证明πi:=Prove(pkproof,xi,ai),其中xi作为公开输入,ai作为私有输入即证据,i∈A,B。
d)央行打包信息生成可信证明交易并广播
Figure BDA00023061917800000913
Δ代表防止延展性攻击所需要实现的数据结构,例如对交易进行签名。
4)验证可信性证明
用户从区块中获得可信证明交易tx后,可通过如下过程对发钞行的发行量进行验证:
a)从tx中提取
Figure BDA00023061917800000914
找到对应区块的可信证明交易,若old==0,则找到最初发布的承诺交易,提取其中的
Figure BDA00023061917800000915
b)从tx中提取
Figure BDA00023061917800000916
找到对应区块中的发钞交易记为tx1…txj,j表示该区块中发钞交易的总个数。
c)设置
Figure BDA00023061917800000917
d)计算bi:=Verify(vkproof,xii),如果验证成功bi=1,否则等于0。
e)输出bA∧bB。输出等于1,用户则相信区块new中的发钞交易在合法范围内。
本算法的零知识证明前提是央行发布初始发行量承诺,随后用户验证的可信交易都是基于该承诺来判断发钞行的发钞量是否在最初的承诺范围内,如果央行需动态增加发钞行的发行量,则如同步骤2中再发布一次发行量承诺即可,与初始化承诺的区别在于动态发行量承诺中区块哈希值为上一可信交易中的
Figure BDA0002306191780000101
通过范围证明密码算法和可信发行量证明算法,发钞行可以做到身份的动态隐藏以及***露发行金额,用户在无法判断发钞交易属于哪个发钞行、无法读取发行金额以及不知道发行总量的情况下可以对发钞行的行为进行合法性验证。
尽管为说明目的公开了本发明的具体内容、实施算法以及附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

Claims (5)

1.一种数字货币发行总量验证方法,其步骤包括:
1)央行根据安全参数λ,生成安全系数为λ的满足发钞交易可信证明的电路Circuit,生成证明密钥pkproof和验证密钥(pkproof,vkproof):=KeyGen(1λ,Circuit),并公开安全参数λ、可信电路Circuit、证明密钥pkproof以及验证密钥vkproof
2)央行分配每一设定发钞行i的发行总量Sumi,随后发起一笔承诺交易,该承诺交易中包含发钞行i的初始剩余量列表
Figure FDA0004073806390000011
其中
Figure FDA0004073806390000012
为该承诺交易发起时最长区块链中最新区块的哈希值,PKi发钞行i的完整公钥;
3)央行监听区块链,当发现新区块new中出现发钞交易,从该发钞交易中得到发行量vi,计算发钞行i新的剩余量承诺
Figure FDA0004073806390000013
以及生成多个非交互式零知识证明,非交互式零知识证明πi为发钞行i的非交互式零知识证明;然后将发钞行i的非交互式零知识证明以及更新后的剩余发钞量承诺打包成一笔交易tx进行发布;
4)验证者从区块中获得该交易tx后,对交易指向的区块中所有发钞交易的合法性进行验证。
2.如权利要求1所述的方法,其特征在于,生成零知识证明πi的方法为:
11)设置
Figure FDA0004073806390000014
txj为第j笔发钞交易,
Figure FDA0004073806390000015
为发钞行i进行完前一区块发钞后的剩余量承诺;
12)设置
Figure FDA0004073806390000016
其中(sc,sc2)为央行的私钥,
Figure FDA0004073806390000017
为发钞行i进行完前一区块发钞后的发钞剩余量,
Figure FDA0004073806390000018
为发钞行i进行完当前区块发钞后的发钞剩余量;
13)生成零知识证明πi:=Prove(pkproof,xi,ai)。
3.如权利要求1或2所述的方法,其特征在于,验证者从区块中获得该交易tx后,对交易指向的区块中所有发钞交易的合法性进行验证的方法为:
21)验证者从交易tx中提取
Figure FDA0004073806390000019
找到对应区块的可信证明交易,若old==0,则找到最初发布的承诺交易,提取其中的
Figure FDA00040738063900000110
22)从tx中提取
Figure FDA00040738063900000111
找到对应区块中的发钞交易tx1…txj
23)设置
Figure FDA00040738063900000112
24)计算bi:=Verify(vkproof,xii),如果验证成功bi=1,否则等于0;
25)输出bA∧bB,如果输出等于1,则判定区块new中的发钞交易在合法范围内。
4.如权利要求1所述的方法,其特征在于,新的发钞行剩余量承诺
Figure FDA0004073806390000021
5.如权利要求1所述的方法,其特征在于,所述验证者为发钞行或用户。
CN201911240879.6A 2019-12-06 2019-12-06 一种数字货币发行总量控制方法及验证方法 Active CN110992010B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911240879.6A CN110992010B (zh) 2019-12-06 2019-12-06 一种数字货币发行总量控制方法及验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911240879.6A CN110992010B (zh) 2019-12-06 2019-12-06 一种数字货币发行总量控制方法及验证方法

Publications (2)

Publication Number Publication Date
CN110992010A CN110992010A (zh) 2020-04-10
CN110992010B true CN110992010B (zh) 2023-05-16

Family

ID=70090650

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911240879.6A Active CN110992010B (zh) 2019-12-06 2019-12-06 一种数字货币发行总量控制方法及验证方法

Country Status (1)

Country Link
CN (1) CN110992010B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114285546B (zh) * 2021-11-24 2023-12-12 淮阴工学院 一种可用于车载自组网络中的异构签密通信方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110383311A (zh) * 2018-11-07 2019-10-25 阿里巴巴集团控股有限公司 监管区块链机密交易

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521776B2 (en) * 2002-10-01 2019-12-31 Andrew H B Zhou UN currency (virtual payment cards) issued by central bank or other issuer for mobile and wearable devices
US20150356523A1 (en) * 2014-06-07 2015-12-10 ChainID LLC Decentralized identity verification systems and methods
WO2018175504A1 (en) * 2017-03-20 2018-09-27 Wasserman Steven Victor Blockchain digital currency: systems and methods for use in enterprise blockchain banking
CN113904785A (zh) * 2017-05-16 2022-01-07 江峰 一种带主权货币发布机制和区块链发布机制的多中心有限域区块链认证***
CN107392605A (zh) * 2017-06-26 2017-11-24 中国人民银行数字货币研究所 数字货币的发行方法和***
CN108765129B (zh) * 2018-05-17 2019-08-23 北京众享比特科技有限公司 基于区块链的传统银行资产分发与清算***及方法
CN109191123B (zh) * 2018-08-10 2022-08-12 中国人民银行数字货币研究所 一种数字货币代理发行额度控制***及方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110383311A (zh) * 2018-11-07 2019-10-25 阿里巴巴集团控股有限公司 监管区块链机密交易

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Omar Abdulkader;等.IBMSDC: Intelligent Blockchain based Management System for protecting Digital Currencies Transactions.《 2019 Third World Conference on Smart Trends in Systems Security and Sustainablity (WorldS4)》.2019,全文. *

Also Published As

Publication number Publication date
CN110992010A (zh) 2020-04-10

Similar Documents

Publication Publication Date Title
US6446052B1 (en) Digital coin tracing using trustee tokens
Law et al. How to make a mint: the cryptography of anonymous electronic cash
EP0786178B1 (en) Secret-key certificates
Yi et al. A new blind ECDSA scheme for bitcoin transaction anonymity
Chen et al. A novel electronic cash system with trustee-based anonymity revocation from pairing
CN1108041C (zh) 运用椭圆曲线加密算法的数字签名方法
Zhang et al. Provably-secure electronic cash based on certificateless partially-blind signatures
CN107908932B (zh) 一种基于l算法的数字货币防伪及验证方法、***和设备
Jacobson et al. Mix-based electronic payments
Tomescu et al. Utt: Decentralized ecash with accountable privacy
CN110599164B (zh) 一种可监管的链下任意收款方快速支付方法
Naganuma et al. Auditable zerocoin
CN113468570A (zh) 基于智能合约的隐私数据共享方法
Cao et al. Strong anonymous mobile payment against curious third-party provider
JPH11508707A (ja) 秘密鍵上の制限的にブラインド可能な証明書
CN110992010B (zh) 一种数字货币发行总量控制方法及验证方法
CN111539719B (zh) 基于盲签名的可审计混币服务方法及***模型
Ni et al. Dual-anonymous off-line electronic cash for mobile payment
Verbücheln How perfect offline wallets can still leak bitcoin private keys
Juels Trustee tokens: Simple and practical anonymous digital coin tracing
CN111262844A (zh) 一种基于密码技术的隐私保护方法
CN114399307B (zh) 一种区块链隐私的计算机交易方法
Sakalauskas et al. A simple off-line E-cash system with observers
Ebrahimi et al. Enhancing cold wallet security with native multi-signature schemes in centralized exchanges
Tsaur et al. An efficient and secure ECC-based partially blind signature scheme with multiple banks issuing E-cash payment applications

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