CN109345222B - 数字货币的结账方法、终端及机器可读存储介质 - Google Patents
数字货币的结账方法、终端及机器可读存储介质 Download PDFInfo
- Publication number
- CN109345222B CN109345222B CN201811124244.5A CN201811124244A CN109345222B CN 109345222 B CN109345222 B CN 109345222B CN 201811124244 A CN201811124244 A CN 201811124244A CN 109345222 B CN109345222 B CN 109345222B
- Authority
- CN
- China
- Prior art keywords
- record
- account
- bank
- isum
- balance
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/10—Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Computer Security & Cryptography (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明实施例提供一种数字货币的结账方法、终端及机器可读存储介质,属于计算机及其软件技术领域,保证了账本的安全性,不受账本存放方式的限制,另外由于提供了账单中各账目的线性和,在账单丢失时为恢复账目提供条件,缩小查账范围。所述方法包括:获取账单并验证账单的真实性,账单包括账目信息以及账目信息的真实性证明、证据链以及证据链的真实性证明;当验证账单为真时,获取账目名称中的账户信息;查找与账户信息对应的账本记录,并将账单作为最新一条记录存储在对应的账本记录中;以及根据账目信息中的付款金额以及证据链,更新账本记录中的证据链码和余额,并存储在最新一条记录中。本发明实施例适用于银行终端对于数字户币的结账过程。
Description
技术领域
本发明涉及计算机及其软件技术领域,具体地涉及一种数字货币的结账方法、终端及机器可读存储介质。
背景技术
银行账本的记账方法与存储方法,是关系到银行金融安全的关键所在。目前,由于没有解决自我保护性记账方法,账本的安全大都靠存储方法来弥补。现有的存储方式有三种,第一种是将一个账本在不同区块分散存储,用数据完整性码形成数据链,以数据链的完备性来保证账本的完整性。因为结账是在不同区块间进行,***效率和***开销是可想而知的。第二种方法是在一个数据库内分布式存储的方式。上述二者比较起来,库内分布式存放方式,其***效率更高。无论是库间区块式存储或库内分布式存储,其管理模式基本相同。第三种是集中式热备份的存储方式,是传统的存放和管理模式,也是行之有效的方法之一,但一直没有解决自我保护性记账方法,库的安全保护问题变得很突出。
本申请发明人在实现本发明的过程中发现,现有技术的上述方案具有以下缺陷:在解决账本的自我保护性的时候,无法保证***效率,或者在保证***效率的时候,无法保证账本存储的安全性。
发明内容
本发明实施例的目的是提供一种数字货币的结账方法、终端及机器可读存储介质,同时解决了账本存储的安全性以及***效率的问题,提出了基于证据链的存储方法,不受存储地和管理方法的影响,不仅能保证账本的完整性还能恢复账本中丢失的账目。
为了实现上述目的,本发明实施例提供一种数字货币的结账方法,所述方法包括:获取账单并验证所述账单的真实性,所述账单包括账目信息以及所述账目信息的真实性证明、证据链以及所述证据链的真实性证明,所述证据链为所述账目信息中的账目名称的线性和;当验证所述账单为真时,获取所述账目名称中的账户信息;查找与所述账户信息对应的账本记录,并将所述账单作为最新一条记录存储在对应的账本记录中;以及根据所述账目信息中的付款金额以及所述证据链,更新所述账本记录中的证据链码和余额,并存储在所述最新一条记录中,所述证据链码为所述账本记录中的证据链的线性和。
进一步地,所述获取账单并验证所述账单的真实性包括:获取账单,所述账单为data={bank,time1,sign1,Client,sign2,Client,time2,sign3,amount,sign4,use,sign5,Firm,sign6,Isum,sign7},其中,Bank为银行名;time1为银行签名时间;sign1为银行对time1的数字签名,用于标记(s1,c1),且表示银行名真实性证明;Client为付款账户;sign2为银行对付款账户的数字签名,用于标记(s2,c2),且表示付款账户真实性证明;time2为付款账户签名时间;sign3为付款账户对time2的数字签名,用于标记(s3,c3),且表示付款账户真实性证明;amount为付款金额;sign4为付款账户对付款金额的数字签名,用于标记(s4,c4),且表示付款金额真实性证明;use为资金用途;sign5为付款账户对资金用途的数字签名,用于标记(s5,c5),且表示资金用途真实性证明;Firm为收款账户;sign6为付款账户对收款账户的数字签名,用于标记(s6,c6),且表示收款账户真实性证明;Isum为银行名、付款账户、金额、资金用途和收款账户的线性和;sign7为付款账户对线性和的数字签名,用于标记(s7,c7),且表示线性和真实性证明;s1、s2、s3、s4、s5、s6和s7为签名码,c1、c2、c3、c4、c5、c6和c7为验证码;根据VERBANK(time1,s1)=c1’,VERBANK(Client,s2)=c2’,VERCLIENT(time2,s3)=c3’,VERCLIENT(amount,s4)=c4’,VERCLIENT(use,s5)=c5’,VERCLIENT(Firm,s6)=c6’,VERCLIENT(Isum,s7)=c7’,分别得到银行名真实性证明的验证码c1’,付款账户真实性证明c2’,付款账户真实性证明c3’,付款金额真实性证明c4’,资金用途真实性证明c5’,收款账户真实性证明c6’,线性和真实性证明c7’,其中,VER为验证函数,BANK为银行名的公钥,CLIENT为收款账户的公钥;分别验证c1与c1’,c2与c2’,c3与c3’,c4与c4’,c5与c5’,c6与c6’,c7与c7’是否相同,确定所述账单是否为真。
进一步地,所述账户信息包括收款账户和付款账户。
进一步地,所述根据所述账目信息中的所述证据链,更新所述账本记录中的证据链码包括:根据或者得到所述账本记录中更新后的证据链码ecoden,其中,Isumn为所述账目信息中的所述证据链,ecoden-1为所述最新一条记录的上一条记录中的证据链码,Isumi为所述账本记录中的第i条记录中的证据链。
进一步地,在所述更新所述账本记录中的证据链码和余额,并存储在所述最新一条记录中之后,所述方法还包括:根据SIGbank(ecoden)=(s8,c8)=sign8,SIGbank(balancen)=(s9,c9)=sign9,分别得到所述银行名对更新后的证据链码的数字签名以及所述银行名对更新后的余额的数字签名,其中,SIG为签名函数;bank为所述银行名的私钥;ecoden为更新后的证据链码;balancen为更新后的余额;sign8用于标记(s8,c8),且表示更新后的证据链码真实性证明;sign9用于标记(s9,c9),且表示更新后的余额真实性证明;s8和s9为签名码;c8和c9为验证码;将所述银行名对更新后的证据链码的数字签名以及所述银行名对更新后的余额的数字签名存储在所述最新一条记录中。
进一步地,所述方法还包括:通过下述方式,根据账本记录中的证据链和证据链码验证所述账本记录的完整性:根据或者依次验证所述账本记录中的每条记录是否丢失,其中i=1,2,3,…,n;当存在 或者时,确定所述账本记录中的第i-1条记录丢失。
进一步地,在所述确定所述账本记录中的第i-1条记录丢失之后,所述方法还包括:根据ecodei-1=ecodei-Isumi,确定所述账本记录中的第i-1条记录中的证据链码ecodei-1;根据Isumi-1=ecodei-ecodei-1,确定所述账本记录中的第i-1条记录中的证据链Isumi-1。
进一步地,在所述确定所述账本记录中的第i-1条记录丢失之后,所述方法还包括:根据balancei-1=balancei-amounti,确定所述账本记录中的第i-1条记录中的余额balancei-1,其中,balancei为所述账本记录中的第i条记录中的余额,amounti为所述账本记录中的第i条记录中的付款金额;根据amounti-1=balancei-1-balancei-2,确定所述账本记录中的第i-1条记录中的付款金额amounti-1,其中,balancei-2为所述账本记录中的第i-2条记录中的余额。
进一步地,在所述确定所述账本记录中的第i-1条记录丢失之后,所述方法还包括:根据银行名、账户信息和资金用途的预设列表,所述第i-1条记录中的付款金额以及证据链,通过穷举运算确定所述账本记录中的第i-1条记录中的银行名、账户信息和资金用途。
进一步地,在所述确定所述账本记录中的第i-1条记录丢失之后,所述方法还包括:查找热备份数据库中所述第i-1条记录,提取并恢复所述账本记录中的第i-1条记录。
相应的,本发明实施例还提供一种银行终端,所述银行终端用于执行所述数字货币的结账方法。
相应的,本发明实施例还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行所述数字货币的结账方法。
通过上述技术方案,得到由账目之间建立的证据链以及账单之间建立的证据链码,同时解决了账本存储的安全性以及***效率的问题,能够及时发现账本记录中丢失的记录,并可以恢复丢失记录中的账目信息,这种自我保护性账本,大大减轻了账本存放的负担。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是本发明实施例提供的数字户币的示意图;
图2是本发明实施例提供的一种数字货币的结账方法的流程示意图;
图3是本发明实施例提供的账本记录的示意图。
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
在网络化时代,纸质货币是不能在网上流通的,因此纸质货币必须改为数字化。那么,纸币上的所有物理签名必须改用数字签名实现,纸币上的所有物理防伪措施,必须改用逻辑措施实现。这种货币形态上的变化,必然引起结账方法的变化。
数字货币是数字化的现钞,现钞是工厂印制的,称为厂币。数字货币中的户币像支票一样是由账户开出的。户币要把现钞中的证明功能全部转化过来,缺一不可。户币比现钞更具有优越性,既可流通于市面,也可流通于网络,其安全性功能也比现钞强。其中最重要的一条就是户币不怕丢,不怕被复制,窃取了也没有意义,这对银行账本安全性是至关重要的。
其中,收款账户与付款账户之间的一次交易形成一个账单,一个账单包括的账目信息中包含多个账目名称,例如,银行名、收款账户、付款账户、付款金额、资金用途等。多次交易则形成账本记录,账本记录中的每一条记录包含了一次交易形成的账单的内容。交易是通过户币进行的,因此一个账单就是一张数字户币,如图1所示,其中包括发行行提供的账目名称和证据以及付款账户提供的账目名称和证据,在交易时其由付款账户开出,不仅能流通于市面上,也能流通于网络上,也直接适用于银行的结账。账单中还包括账目名称的线性和,并由线性和形成证据链。在银行对收款账户和付款账户进行结账时,通过证据链可判断记录的丢失与否,以及丢失的是哪个记录,而且通过证据链以及记录中的证据链码可恢复被丢失的记录,具体实施方式如下所述。
图2是本发明实施例提供的一种数字货币的结账方法的流程示意图。该方法应用于银行终端,如图2所示,所述方法包括如下步骤:
步骤201,获取账单并验证所述账单的真实性,所述账单包括账目信息以及所述账目信息的真实性证明、证据链以及所述证据链的真实性证明,所述证据链为所述账目信息中的账目名称的线性和。
其中,在收款账户和付款账户交易的时候,收款账户首先发出收款通知,例如,该收款通知可以为二维码形式,或者其他数据形式发送给付款账户。当收款通知为二维码时,如QR1={Firm,time3,sign10,amount,sign11},其中包括了收款账户Firm;收款账户签名时间time3;收款账户对时间time3的数字签名sign10,用于标记(s10,c10),且表示收款账户真实性证明;收款金额amount;收款账户对收款金额的数字签名sign11,用于标记(s11,c11),且表示收款金额真实性证明。
付款账户接收到付款通知之后,先验证其中的真实性证明,例如,根据下述方式验证其真实性:
由VERFIRM(time3,s10)=c10’,得到收款账户真实性证明的验证码c10’;
由VERFIRM(amount,s11)=c11’,得到收款金额真实性证明的验证码c11’。
其中,VER为验证函数,FIRM为收款账户的公钥,由付款账户根据收款账户的标识Firm以及公钥矩阵得到。付款账户分别验证c10与c10’,c11与c11’是否相同,确定付款通知是否为真。若为真,则付款账户根据户币模板的要求填写相关账目信息。若不为真,则付款账户不向收款账户进行付款。其中,所述户币模板为付款账户根据自身付款需求向银行申请得到的,对于户币模板的申请不是本发明所要阐述的内容,本领域技术人员可根据现有技术获得,此处不再赘述。
当付款账户验证收款账户发来的收款通知为真时,向收款账户发送账单,即如图1所示的数字户币。其中,银行名为付款账户的开户行。付款账户直接将付款金额、资金用途和收款账户等账目信息写入如图1所示的数字户币中,并对其进行数字签名,具体实施方式如下所示:
SIGbank(time1)=(s1,c1)=sign1,
SIGbank(Client)=(s2,c2)=sign2,
SIGclient(time2)=(s3,c3)=sign3,
SIGclient(amount)=(s4,c4)=sign4,
SIGclient(use)=(s5,c5)=sign5,
SIGclient(Firm)=(s6,c6)=sign6,
SIGclient(Isum)=(s7,c7)=sign7。
其中,所述账目信息中包括了银行对银行签名时间time1的数字签名sign1,且表示银行名真实性证明,以及银行对付款账户Client的数字签名sign2,且表示付款账户真实性证明,均是通过银行私钥bank进行签名。所述账目信息中还包括了付款账户对付款账户签名时间time2的数字签名sign3、对付款金额amount的数字签名sign4、对资金用途use的数字签名sign5、对收款账户Firm的数字签名sign6以及对银行名、付款账户、金额、资金用途和收款账户的线性和Isum的数字签名sign7,分别表示付款账户真实性证明、付款金额真实性证明、资金用途真实性证明、收款账户真实性证明、线性和真实性证明,均是通过付款账户私钥client进行签名。另外,SIG为签名函数,s1、s2、s3、s4、s5、s6和s7为签名码,c1、c2、c3、c4、c5、c6和c7为验证码。
由于上述账单中,各项账目都做了数字签名,使每一个账目都具有自身保护的独立能力。数字户币中规定了收款账户,并由付款账户签名,本户币只对指定的收款账户有意义,对任何第三方均没有意义。因此该账单不怕丢失,不怕被窃,是账本安全的基础保障。
另外,由于账单中提供了各账目的线性和,一旦账单被丢失,线性和提供恢复账目的条件,大大缩小了查账的范围。
付款账户将账单制作好之后,例如,账单data={bank,time1,sign1,Client,sign2,Client,time2,sign3,amount,sign4,use,sign5,Firm,sign6,Isum,sign7}发送给收款账户,收款账户需要对所述账单中的真实性证明进行验证,如下所示:
根据VERBANK(time1,s1)=c1’,
VERBANK(Client,s2)=c2’,
VERCLIENT(time2,s3)=c3’,
VERCLIENT(amount,s4)=c4’,
VERCLIENT(use,s5)=c5’,
VERCLIENT(Firm,s6)=c6’,
VERCLIENT(Isum,s7)=c7’,
分别得到银行名真实性证明的验证码c1’,付款账户真实性证明c2’,付款账户真实性证明c3’,付款金额真实性证明c4’,资金用途真实性证明c5’,收款账户真实性证明c6’,线性和真实性证明c7’。其中,VER为验证函数,BANK为银行公钥,CLIENT为付款账户公钥,收款账户根据银行名的标识bank、付款账户的标识Client以及公钥矩阵计算出银行公钥和付款账户公钥。所述收款账户分别验证c1与c1’,c2与c2’,c3与c3’,c4与c4’,c5与c5’,c6与c6’,c7与c7’是否相同,确定所述账单是否为真。
当所述收款账户验证所述账单为真时,则向所述付款账户发送收据并将所述账单发送至银行。若不为真,则中断本次交易。
同样的,银行获取到所述账单之后也要验证所述账单的真实性。
其中,银行获取所述账单data={bank,time1,sign1,Client,sign2,Client,time2,sign3,amount,sign4,use,sign5,Firm,sign6,Isum,sign7}。
并根据VERBANK(time1,s1)=c1’,
VERBANK(Client,s2)=c2’,
VERCLIENT(time2,s3)=c3’,
VERCLIENT(amount,s4)=c4’,
VERCLIENT(use,s5)=c5’,
VERCLIENT(Firm,s6)=c6’,
VERCLIENT(Isum,s7)=c7’,
分别得到银行名真实性证明的验证码c1’,付款账户真实性证明c2’,付款账户真实性证明c3’,付款金额真实性证明c4’,资金用途真实性证明c5’,收款账户真实性证明c6’,线性和真实性证明c7’,其中,VER为验证函数,BANK为银行名的公钥,CLIENT为收款账户的公钥。
然后,分别验证c1与c1’,c2与c2’,c3与c3’,c4与c4’,c5与c5’,c6与c6’,c7与c7’是否相同,确定所述账单是否为真。
当银行验证所述账单为真时,则执行步骤202。否则,丢弃所述账单。
在所述账单中,除去银行对银行签名时间和付款账户的签名,其余各账目信息均是通过付款账户进行签名,实现了账户的自主可控的原则,而且其余各账目信息均作为独立变量,实现了“一事一证”,杜绝了信任转移以及权利被接管,另外通过数字签名,均具有自我保护能力,不需要额外的保护,因此对于账单的存储地的安全性没有要求,存储地不受限制。
步骤202,当验证所述账单为真时,获取所述账目名称中的账户信息;
步骤203,查找与所述账户信息对应的账本记录,并将所述账单作为最新一条记录存储在对应的账本记录中。
其中,银行需要获取所述账目名称中的账户信息,即收款账户和付款账户。然后,在本地查找与收款账户和付款账户对应的账本记录,即银行终端本地存储的收款账户对应的账本记录,其中包含收款账户与其他账户之间的交易的记录,存在收账记录和付账记录。同样的,付款账户对应的账本记录也包含付款账户与其他账户之间的交易记录,也存在收账记录和付账记录。其中,对于本次交易,付款账户对应的账本记录中的记录为付账记录,而收款账户对应的账本记录中的记录为收款记录,具体记录的不同之处在于付款金额是正还是负。对于付款账户来说,付款金额为负值,对于收款账户来说收款金额为正值。
另外,在将所述账单作为最新一条记录存储在对应的账本记录中的时候,可以将包含发行行提供的账目名称和证据与付款账户提供的账目名称和证据一同存储,或者,由于发行行提供的账目名称和证据是银行自己提供的证据,只用于检查其真伪,可不参与银行记录,即所述账单中的发行行提供的账目名称和证据可以不进行存储,而仅将所述账单中的付款账户提供的账目名称和证据作为最新一条记录存储在对应的账本记录中,如图3所示,对于付款账户对应的账本记录,将本次账单中的付款账户与其数字签名、付款金额与其数字签名、资金用途与其数字签名、收款账户与其数字签名、证据链与其数字签名作为最新一条记录存储在其账本记录中。如图3所示,第n条记录即为付款账户的最新一条记录。
步骤204,根据所述账目信息中的付款金额以及所述证据链,更新所述账本记录中的证据链码和余额,并存储在所述最新一条记录中,所述证据链码为所述账本记录中的证据链的线性和。
其中,银行在结账时,首先计算余额。计算方式如下所示:
balancen=balancen-1-amount(对于付款账户的账本记录)
balancen=balancen-1+amount(对于收款账户的账本记录)
然后对更新后的余额利用银行名的私钥进行数字签名,得到签名9:
SIGbank(balancen)=(s9,c9)=sign9
其中,SIG为签名函数;bank为所述银行名的私钥;balancen为更新后的余额;sign9用于标记(s9,c9),且表示更新后的余额真实性证明;s9为签名码;c9为验证码。
在线性和的基础上,银行终端根据所述账目信息中的所述证据链,更新所述账本记录中的证据链码:
得到所述账本记录中更新后的证据链码ecoden。其中,Isumn为所述账目信息中的所述证据链,ecoden-1为所述最新一条记录的上一条记录中的证据链码,Isumi为所述账本记录中的第i条记录中的证据链。
其中,对于计算更新后的证据链码,可以有上述两种方式,即通过所述账本记录中的所有记录(包括最新一条记录)的证据链的线性和得到更新后的证据链码,或者,在没有验证该账本记录的完整性时,也可以通过上一条记录中的证据链码与本次账单中的证据链的线性和得到更新后的证据链码。
然后,所述银行名对更新后的证据链码进行数字签名,得到签名8:
SIGbank(ecoden)=(s8,c8)=sign8
其中,ecoden为更新后的证据链码;sign8用于标记(s8,c8),且表示更新后的证据链码真实性证明;s8为签名码;c8为验证码。
之后,将更新后的证据链码与所述银行名对更新后的证据链码的数字签名,以及更新后的余额与所述银行名对更新后的余额的数字签名一同存储在所述最新一条记录中,如图3所示。
在本发明的一种实施方式中,一个账本记录是由记录构成的,如果一个账本记录是完整的,那么证明账本记录中的记录是完整的。因为记录中的每一账目都有数字签名,自身保护功能很强,篡改是不大可能的,但是数字签名不能发现丢失与否。因此,这就需要根据账本记录中的证据链和证据链码验证所述账本记录的完整性。还是以图3所示的账本记录为例,从证据链码的线性和中可知,如果证据链被断开,那么等式两端就不会相等,而断开的地方就是丢失记录的地方。
对于检查记录丢失的方式可以有以下两种:
第一种方式是从前往后检查,即从第一条记录开始检查:
其中,若是发现即表示所述账本记录中的第i-1条记录丢失。例如,所述账本记录中的第2条记录丢失,由于第2条记录丢失,那么在检查第2条记录时,就会将第3条记录当做第2条记录来检查,即Isum3当做Isum2,ecode3当做ecode2,但是实际上由此即可判断第2条记录丢失。
第二种方式是从后往前反推验证,即从第n条记录开始检查:
其中,若是发现即表示所述账本记录中的第i-1条记录丢失。仍是以第2条记录丢失为例,由于第2条记录丢失,那么在检查第3条记录时,就会将第1条记录当做第2条记录,即ecode1当做ecode2,但是实际上由此即可判断第2条记录丢失。
通过本实施方式,可直接利用证据链和证据链码来确定丢失的记录,而无需将本地存储的账本记录与热备份数据库中对应的账本记录进行一一对应的来检查其完整性,减少了账本记录完整性检查的工作量。
在本发明的另一个实施方式中,在确定所述账本记录中的第i-1条记录丢失之后,还可以利用所述账本记录中的付款金额、证据链、证据链码和余额对第i-1条记录进行恢复,从而得到第i-1条记录中的付款金额、证据链、证据链码和余额。具体方式如下所示:
例如,可以根据ecodei-1=ecodei-Isumi,确定所述账本记录中的第i-1条记录中的证据链码ecodei-1。然后根据Isumi-1=ecodei-ecodei-1,确定所述账本记录中的第i-1条记录中的证据链Isumi-1。仍是以第2条记录丢失为例,由于第3条记录是已知的,由ecode2=ecode3-Isum3,得到第2条记录中的证据链码ecode2,然后由Isum2=ecode3-ecode2,得到第2条记录中的证据链Isum2。当然上述恢复第i-1条记录中的证据链和证据链码仅作为示例,还可以通过其他方式得到第i-1条记录中的证据链和证据链码,例如,当得到第i-1条记录中的证据链码ecodei-1之后,还可以通过Isumi-1=ecodei-1-ecodei-2,得到第i-1条记录中的证据链。对于其它方式得到第i-1条记录中的证据链和证据链码的示例,此处不再一一举例,无论通过什么方式,均是以以及 为基础的。
另外,在恢复第i-1条记录中的余额与付款金额时,可根据balancei-1=balancei-amounti,确定所述账本记录中的第i-1条记录中的余额balancei-1,以及根据amounti-1=balancei-1-balancei-2,确定所述账本记录中的第i-1条记录中的付款金额amounti-1,其中,balancei为所述账本记录中的第i条记录中的余额,amounti为所述账本记录中的第i条记录中的付款金额,balancei-2为所述账本记录中的第i-2条记录中的余额。以图3所示的账本记录为例,若其中第2条记录丢失,若该账本记录为付款账户“张三”的账本记录,则在确定第2条记录中的余额2时,由于balance3=balance2+amount3,则反推balance2=balance3-amount3,即balance2=balance3-(-512),然后同样由于balance2=balance1+amount2,则反推amount2=balance2-balance1。同样,在确定第i-1条记录中的余额与付款金额也有其他示例,此处不再赘述。
在恢复第i-1条记录中的银行名、付款账户、资金用途与收款账户时,根据线性和 可知,由于该账本记录属于付款账户或收款账户的,因此账户信息中的一者已知,通过上述实施方式得到付款金额已知,若该条记录为付款账户的账本记录所有时,则上述还存在未知因素银行名、资金用途和收款账户。如果是同行交易,则银行名也是已知的。若不是同行交易,则银行名的范围也是有限的,可根据银行名、账户信息和资金用途的预设列表,所述第i-1条记录中的付款金额以及证据链,代入上述线性和Isum中,通过穷举运算确定所述账本记录中的第i-1条记录中的银行名、账户信息和资金用途。
另外,对于第i-1条记录中的银行名、付款账户、付款金额、资金用途、收款账户、证据链、证据链码和余额可以恢复,但是上述信息的真实性证明却不能恢复,因此热备份数据库的支持就是必要的。由于明确了丢失的记录,则通过查找热备份数据库中对应的记录,即可恢复上述信息的真实性证明。
或者,在确定了所述账本记录中的第i-1条记录丢失之后,直接查找热备份数据库中所述第i-1条记录,直接提取拷贝到本地,恢复本地账本记录中的第i-1条记录。
通过本发明实施例,由于每次交易均是在数字户币基础上实现的,而数字户币所用数字签名是用CPK签名协议,一次交易的结账时间只需毫秒级,无需担心现有技术中出现的***效率和开销的问题。另外,在数字户币中规定了收款账户和付款账户,而且都对交易金额做了数字签名。CPK数字签名由时间因素和标识因素构成,防止了被复制利用,可杜绝内、外作案的可能性。数字户币不怕被丢失、被复制,因为数字户币对非当事人没有任何意义。同样,以数字户币结账的银行账本记录,也不怕被窃、被复制,这对银行存储账本记录的数据库的安全性是至关重要的。
对数字户币的账本记录的存储方法,唯一担心的是账单的丢失,尽管一个账单的丢失不影响日常结账,不造成安全危害,但给账目管理造成麻烦。基于证据链码的存储方法,不受存储地和存放方式的影响,不仅能判别账本记录中账单的丢失与否,而且能确定丢失的是哪一个账本记录和哪一个账单,并能恢复被丢失的账目。另外,由本发明可扩展的,在账本记录和账本记录之间也可以建立证据链码,判断账本记录丢失与否。账本记录的完整性只与证据链、证据链码相关,与账本记录的存储无关。这种自我保护性记账方法,可大大缓解对账本记录数据库的安全负担。
相应的,本发明实施例还提供一种银行终端,所述银行终端用于执行上述实施例所述的数字货币的结账方法。
相应的,本发明实施例还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行上述实施例所述的数字货币的结账方法。
以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤的执行方法和地点不限,所用银行私钥可以用软件包保护,也可以存储在一个存储介质中,包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁碟或者光盘等各种可以存储参数的介质。
此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。
Claims (11)
1.一种数字货币的结账方法,其特征在于,包括:
获取账单并验证所述账单的真实性,所述账单包括账目信息以及所述账目信息的真实性证明、证据链以及所述证据链的真实性证明,所述证据链为所述账目信息中的账目名称的线性和;
当验证所述账单为真时,获取所述账目名称中的账户信息;
查找与所述账户信息对应的账本记录,并将所述账单作为最新一条记录存储在对应的账本记录中;
根据所述账目信息中的付款金额,更新所述账本记录中的余额,以及根据所述账目信息中的所述证据链,更新所述账本记录中的证据链码;
将更新后的所述余额与所述证据链码存储在所述最新一条记录中,所述证据链码为所述账本记录中的证据链的线性和,
其中,所述方法还包括:
通过下述方式,根据账本记录中的证据链和证据链码验证所述账本记录的完整性:
根据ecodei=Isum1⊕Isum2⊕…⊕Isumi,或者ecodei=Isumi⊕ecodei-1,依次验证所述账本记录中的每条记录是否丢失,其中i=1,2,3,…,n,ecodei为所述账本记录中的第i条记录中的证据链码,Isumi为所述账本记录中的第i条记录中的证据链;
当存在ecodei≠Isum1⊕Isum2⊕…⊕Isumi,或者ecodei≠Isumi⊕ecodei-1时,确定所述账本记录中的第i-1条记录丢失。
2.根据权利要求1所述的方法,其特征在于,所述获取账单并验证所述账单的真实性包括:
获取账单,所述账单为data={bank,time1,sign1,Client,sign2,Client,time2,sign3,amount,sign4,use,sign5,Firm,sign6,Isum,sign7},
其中,Bank为银行名;time1为银行签名时间;sign1为银行对time1的数字签名,用于标记(s1,c1),且表示银行名真实性证明;Client为付款账户;sign2为银行对付款账户的数字签名,用于标记(s2,c2),且表示付款账户真实性证明;time2为付款账户签名时间;sign3为付款账户对time2的数字签名,用于标记(s3,c3),且表示付款账户真实性证明;amount为付款金额;sign4为付款账户对付款金额的数字签名,用于标记(s4,c4),且表示付款金额真实性证明;use为资金用途;sign5为付款账户对资金用途的数字签名,用于标记(s5,c5),且表示资金用途真实性证明;Firm为收款账户;sign6为付款账户对收款账户的数字签名,用于标记(s6,c6),且表示收款账户真实性证明;Isum为银行名、付款账户、金额、资金用途和收款账户的线性和;sign7为付款账户对线性和的数字签名,用于标记(s7,c7),且表示线性和真实性证明;s1、s2、s3、s4、s5、s6和s7为签名码,c1、c2、c3、c4、c5、c6和c7为验证码;
根据VERBANK(time1,s1)=c1’,
VERBANK(Client,s2)=c2’,
VERCLIENT(time2,s3)=c3’,
VERCLIENT(amount,s4)=c4’,
VERCLIENT(use,s5)=c5’,
VERCLIENT(Firm,s6)=c6’,
VERCLIENT(Isum,s7)=c7’,
分别得到银行名真实性证明的验证码c1’,付款账户真实性证明的验证码c2’,付款账户真实性证明的验证码c3’,付款金额真实性证明的验证码c4’,资金用途真实性证明的验证码c5’,收款账户真实性证明的验证码c6’,线性和真实性证明的验证码c7’,其中,VER为验证函数,BANK为银行名的公钥,CLIENT为收款账户的公钥;
分别验证c1与c1’,c2与c2’,c3与c3’,c4与c4’,c5与c5’,c6与c6’,c7与c7’是否相同,确定所述账单是否为真。
3.根据权利要求1所述的方法,其特征在于,所述账户信息包括收款账户和付款账户。
4.根据权利要求3所述的方法,其特征在于,所述根据所述账目信息中的所述证据链,更新所述账本记录中的证据链码包括:
根据ecoden=Isumn⊕ecoden-1,
或者ecoden=Isum1⊕Isum2⊕…⊕Isumi⊕…⊕Isumn-1⊕Isumn,得到所述账本记录中更新后的证据链码ecoden,其中,Isumn为所述账目信息中的所述证据链,ecoden-1为所述最新一条记录的上一条记录中的证据链码,Isumi为所述账本记录中的第i条记录中的证据链。
5.根据权利要求4所述的方法,其特征在于,在所述将更新后的所述余额与所述证据链码存储在所述最新一条记录中之后,所述方法还包括:
根据SIGbank(ecoden)=(s8,c8)=sign8,SIGbank(balancen)=(s9,c9)=sign9,分别得到银行名对更新后的证据链码的数字签名以及所述银行名对更新后的余额的数字签名,其中,SIG为签名函数;bank为所述银行名的私钥;ecoden为更新后的证据链码;balancen为更新后的余额;sign8用于标记(s8,c8),且表示更新后的证据链码真实性证明;sign9用于标记(s9,c9),且表示更新后的余额真实性证明;s8和s9为签名码;c8和c9为验证码;
将所述银行名对更新后的证据链码的数字签名以及所述银行名对更新后的余额的数字签名存储在所述最新一条记录中。
6.根据权利要求1所述的方法,其特征在于,在所述确定所述账本记录中的第i-1条记录丢失之后,所述方法还包括:
根据ecodei-1=ecodei-Isumi,确定所述账本记录中的第i-1条记录中的证据链码ecodei-1;
根据Isumi-1=ecodei-ecodei-1,确定所述账本记录中的第i-1条记录中的证据链Isumi-1。
7.根据权利要求6所述的方法,其特征在于,在所述确定所述账本记录中的第i-1条记录丢失之后,所述方法还包括:
根据balancei-1=balancei-amounti,确定所述账本记录中的第i-1条记录中的余额balancei-1,其中,balancei为所述账本记录中的第i条记录中的余额,amounti为所述账本记录中的第i条记录中的付款金额;
根据amounti-1=balancei-1-balancei-2,确定所述账本记录中的第i-1条记录中的付款金额amounti-1,其中,balancei-2为所述账本记录中的第i-2条记录中的余额。
8.根据权利要求7所述的方法,其特征在于,在所述确定所述账本记录中的第i-1条记录丢失之后,所述方法还包括:
根据银行名、账户信息和资金用途的预设列表,所述第i-1条记录中的付款金额以及证据链,通过穷举运算确定所述账本记录中的第i-1条记录中的银行名、账户信息和资金用途。
9.根据权利要求1所述的方法,其特征在于,在所述确定所述账本记录中的第i-1条记录丢失之后,所述方法还包括:
查找热备份数据库中所述第i-1条记录,提取并恢复所述账本记录中的第i-1条记录。
10.一种银行终端,其特征在于,所述银行终端用于执行所述权利要求1-9任一项所述的数字货币的结账方法。
11.一种机器可读存储介质,其特征在于,该机器可读存储介质上存储有指令,该指令用于使得机器执行上述权利要求1-9任一项所述的数字货币的结账方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811124244.5A CN109345222B (zh) | 2018-09-26 | 2018-09-26 | 数字货币的结账方法、终端及机器可读存储介质 |
PCT/CN2019/095810 WO2020063036A1 (zh) | 2018-09-26 | 2019-07-12 | 数字货币的结账方法、终端及机器可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811124244.5A CN109345222B (zh) | 2018-09-26 | 2018-09-26 | 数字货币的结账方法、终端及机器可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109345222A CN109345222A (zh) | 2019-02-15 |
CN109345222B true CN109345222B (zh) | 2022-04-26 |
Family
ID=65306562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811124244.5A Active CN109345222B (zh) | 2018-09-26 | 2018-09-26 | 数字货币的结账方法、终端及机器可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109345222B (zh) |
WO (1) | WO2020063036A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109345222B (zh) * | 2018-09-26 | 2022-04-26 | 晋商博创(北京)科技有限公司 | 数字货币的结账方法、终端及机器可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106779696A (zh) * | 2016-11-29 | 2017-05-31 | 南相浩 | 一种基于cpk的数字银行和数字货币及支付方法 |
CN107580022A (zh) * | 2017-08-02 | 2018-01-12 | 国家计算机网络与信息安全管理中心 | 一种数据共享***和方法 |
CN108122098A (zh) * | 2018-01-10 | 2018-06-05 | 晋商博创(北京)科技有限公司 | 基于cpk的数字货币***、支付方法及终端 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017194976A1 (en) * | 2016-05-13 | 2017-11-16 | De La Rue International Limited | Methods and systems for processing assets |
CN107274159B (zh) * | 2017-06-09 | 2024-07-12 | 北京泛融科技有限公司 | 一种基于区块并发执行算法的记账***及方法 |
CN107240017B (zh) * | 2017-07-20 | 2021-08-03 | 捷德(中国)科技有限公司 | 区块链交易管理***及方法 |
CN109345222B (zh) * | 2018-09-26 | 2022-04-26 | 晋商博创(北京)科技有限公司 | 数字货币的结账方法、终端及机器可读存储介质 |
-
2018
- 2018-09-26 CN CN201811124244.5A patent/CN109345222B/zh active Active
-
2019
- 2019-07-12 WO PCT/CN2019/095810 patent/WO2020063036A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106779696A (zh) * | 2016-11-29 | 2017-05-31 | 南相浩 | 一种基于cpk的数字银行和数字货币及支付方法 |
CN107580022A (zh) * | 2017-08-02 | 2018-01-12 | 国家计算机网络与信息安全管理中心 | 一种数据共享***和方法 |
CN108122098A (zh) * | 2018-01-10 | 2018-06-05 | 晋商博创(北京)科技有限公司 | 基于cpk的数字货币***、支付方法及终端 |
Also Published As
Publication number | Publication date |
---|---|
WO2020063036A1 (zh) | 2020-04-02 |
CN109345222A (zh) | 2019-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11037111B2 (en) | Method for issuing currency and making payment by managing balance database for each block in blockchain network and server using same | |
CN111144862B (zh) | 数字货币双离线支付的实现方法、装置、设备、存储介质 | |
CN108389047B (zh) | 区块链中母链与子链交易的方法及区块链网络 | |
US11436595B2 (en) | Method for issuing, using, refunding, settling and revoking electronic voucher using updated status of balance database by respective blocks in blockchain, and server using the same | |
JP2021184274A (ja) | ブロックチェーン上のセキュアなピアツーピア通信の方法 | |
KR102050129B1 (ko) | 블록 검증을 위한 복수의 일방향 함수를 지원하는 블록 체인 | |
CN112037068B (zh) | 资源转移方法、***、装置、计算机设备和存储介质 | |
CN106779696B (zh) | 一种基于cpk的数字银行和数字货币及支付方法 | |
US10410214B2 (en) | System and method for financial transaction validation | |
CN108009445B (zh) | 一种半中心化的可信数据管理*** | |
KR101837167B1 (ko) | Utxo 기반 프로토콜에서 머클 트리 구조를 사용하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버 | |
US11373177B2 (en) | Method for issuing currency and making payment using utxo-based protocol and server using same | |
CN110223067B (zh) | 一种具有去中心化特性的链下一对多支付方法及*** | |
CN109345222B (zh) | 数字货币的结账方法、终端及机器可读存储介质 | |
KR20190093011A (ko) | 보안성이 강화된 블록 체인 시스템 및 이중 블록 체인 구조를 이용한 데이터 블록 생성방법 | |
KR102376783B1 (ko) | 블록체인 기반의 거래내역 확인 시스템 | |
KR20180052838A (ko) | 수취인 증명 기반의 불변의 이중 기록을 이용한 안심송금 방법 | |
KR101841929B1 (ko) | 머클트리 구조를 사용하여, 문서를 오프라인으로 발행하며 발행된 오프라인 문서에 대한 인증을 수행하는 방법 및 이를 이용한 서버 | |
CN111159774B (zh) | 去中心化的智能合约托管钱包的方法及*** | |
CN110163754B (zh) | Fabric区块链中实现铸币交易的方法、客户端、区块链及*** | |
CN111275554A (zh) | 一种证券型通证的交易方法和***、存储介质 | |
JP6963872B1 (ja) | 通貨管理システム | |
CN112766940B (zh) | 一种基于区块链的电子支票交易方法及*** | |
CN114546872A (zh) | 一种凭证管理测试方法、装置、计算机设备及存储介质 | |
WO2020110077A1 (en) | Holder for cryptocurrency storage devices |
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 |