本发明涉及数据处理技术领域,尤其是一种数字银行的总分双链的弱中心化可信数据管理系统及方法。
背景技术:
传统银行体系长期采用“中心化”管理模式,该模式具备高效可控和管理便捷等优势,但近年来随着一些内部人作案和外部攻击事件的披露,中心化模式的弊端日益突显:中心集中存储所有的账户信息和交易信息,很容易成为黑客攻击的目标,造成巨大损失。更为重要的是,中心化管理缺乏透明性和可监督性,储户只能被动的完全信任银行,难以主动实施监督。银行拥有每一笔交易的记账权,具备伪造客户信息、篡改交易记录的能力,在特定情况下,存在中心作弊侵害储户利益的风险。
近年来,基于区块链技术的“去中心化”管理模式逐渐受到关注和热捧。建立在多方共同记账原理下的区块链技术,具备高安全性、公开透明、数据防篡改可追溯等优势。但该技术目前仍处于初期,存在高耗低效、隐私泄露和责任主体缺失等问题。此外,若采用该模式,银行将丧失系统的中心地位,政府更难以实施监管,无法保证金融体系的安全性和可控性。目前,以“比特币”为代表的虚拟货币是区块链在金融应用中的典型代表,我国央行也准备发行自己的数字货币,但央行的数字货币以国家信用作为背书,仍然采用中心化模式,无法从本质上体现区块链多方信任的特点,进而无法充分发挥虚拟货币的业务优势。同时,它对现有银行体系的运作模式改动较大,建设成本和维护成本都将十分高昂。
有鉴于此,为了更好的满足银行业需求,提升银行公信力,我们结合现有银行系统的业务特点和区块链的技术优势,提出了一种新型的银行数据存储和管理方案。
技术实现要素:
本发明所要解决的技术问题是:针对上述存在的问题,提供一种数字银行的总分双链的弱中心化可信数据管理系统及方法,将中心化的数据管理与分布式的、轻客户端的数据审计相结合,从而兼有中心化的高效便捷性与去中心化的安全透明性。
本发明采用的技术方案如下:
一种数字银行的总分双链的弱中心化可信数据管理方法,具体包括如下步骤:
步骤1、将所有交易流水依据交易主体和交易时间交织成一张有向交易网;
步骤2、将所述有向交易网分别从横竖两个方向切割成一条总账链和若干条分户账链;
步骤3、以所述总账链为主体,将所有分户账链的链头信息同步并入总账链的区块中,从而将所述总账链和分户账链合并成一条bc链;
步骤4、通过链头验证和交易验证对相关交易和账户信息进行查验,确保查验信息的真实性:所述链头验证为验证bc链的最新区块与自身分户账链的链头信息的关系;所述交易验证为验证自身具体历史交易与所述bc链中对应历史区块的关系。
进一步地,所述bc链包括若干按时序前后衔接的区块;每个所述bc链的区块包括区块头和区块体;所述区块头,用于储存该区块的摘要信息,并将储存的所述摘要信息对全体储户公开;所述区块体,用于储存当期的详细交易数据。
进一步地,步骤1中,所述交易网的结构为:
纵向为交易主体,对应储户的账户信息;
横向为交易时间,对应时间片内所有储户的交易,即银行系统的总账信息。
进一步地,所述时间片为将交易时间按天划分的等长的若干时间片。
进一步地,步骤2中,所述总账链,按照块链结构存储信息,每个区块装载对应时间片内的所有交易;
所述分户账链为,将储户个人的交易数据按照时间先后顺序串联,并按公式(1)的计算模式组成的哈希链:
其中,txi表示第i笔交易的明细,balancei表示第i笔交易后的账户余额;末尾hi(i=n)称为分户账链的链头信息。
进一步地,将所述bc链中当期所有交易构成总账树,当期所有分户账链的链头信息构成分户账树;则有如下数量关系:
head_pc_merkle_root(suma**)=2×tx_merkle_root(suma*)%m(2);
head_pc_merkle_root(sumb)=tb(3);
其中,suma**和sumb为分户账树的树根head_pc_merkle_root中的字段,suma**表示基于所有分户账统计的当期交易总额模m的值,tb表示系统的总余额;suma*为总账树的树根tx_merkle_root中的字段,它表示基于银行总账统计的当期交易总额模m的值。
进一步地,所述链头验证,包括:
通过银行返回的默克尔路径来验证储户自身的链头信息是否被如实的包含在所述bc链的最新区块的分户账树中,完成自身链头信息的存在性证明;
并验证最新区块中的整体交易数据是否满足公式(2)和公式(3)的数值关系。
进一步地,所述交易验证,包括:
通过银行返回的默克尔路径来验证自身分户账链上的某笔具体交易是否被如实的包含在bc链的对应历史区块的总账树中,完成自身具体交易的存在性证明;
并验证对应历史区块中的整体交易数据是否满足公式(2)和公式(3)的数值关系。
一种数字银行的总分双链的弱中心化可信数据管理系统,包括通过网络连接的客户端和服务器;
所述客户端,包括:客户端存储模块和请求模块;
所述客户端存储模块,用于存储bc链的块头链和自身的分户账链;
所述请求模块,用于根据向所述服务器发送查验请求;
所述服务器,包括:中心存储模块和账户管理模块;
所述中心存储模块,用于存储完整的交易流水、账户数据、bc链以及每位储户的分户账链数据;
所述账户管理模块,用于根据所述客户端的请求模块发送的查验请求,返回客户端对应区块的默克尔路径和系统整体交易数据;
所述客户端,通过接收对应区块的默克尔路径和系统整体交易数据,进行链头验证和交易验证。
进一步地,所述客户端和服务器均设置有各自的私钥和公钥,并通过数字签名来进行身份认证。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、本发明将所有交易流水依据交易主体和交易时间交织成一张有向交易网;然后将所述有向交易网切割成一条总账链和若干条分户账链;再然后以所述总账链为主体,将所有分户账链的链头信息同步并入总账链的区块中,从而将所述总账链和分户账链合并成一条bc链;本发明一方面通过总分双链结构,保证数据公开透明,具有区块链的不可篡改性和可追溯性特征,另一方面通过弱中心化,保证数据集中存储,又使得所有储户都是分布式监督人,间接实施对系统整体账务数据的审计,从而有效避免了银行篡改数据、记假账的可能。
2、本发明相比于比特币网络,无关人员无法获取其他储户的交易记录和账户信息,也无法获知银行的存款规模等整体性商业信息,同时数据存储中心化和不可篡改的特点也便于审计机构对银行实施监管和内部审计。
3、本发明无需额外建造新的公链或发行新的数字货币,仅仅通过引入非对称加密账户管理技术和对账务数据进行区块链式的存储改造,就能使得银行在保留系统中心地位的同时,实现众多虚拟数字货币的特色业务和功能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为转账交易流程图。
图2为本发明数字银行的总分双链的弱中心化可信数据管理方法流程图。
图3为本发明的有向交易网结构示意图。
图4为本发明的总分双链的逻辑结构示意图。
图5为本发明的bc链的详细结构图。
图6为本发明的数字银行的总分双链的弱中心化可信数据管理系统结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明的发明构思为:将所有交易流水依据交易主体和交易时间交织成一张有向交易网;然后将所述有向交易网切割成一条总账链和若干条分户账链;再然后以所述总账链为主体,将所有分户账链的链头信息同步并入总账链的区块中,从而将所述总账链和分户账链合并成一条bc链;由此形成一种总分双链的弱中心化可信数据管理,通过总分双链结构,一方面保证数据公开透明,具有区块链的不可篡改性和可追溯性特征,同时数据集中存储,满足银行自己掌控数据,保护银行及储户账务隐私的需求。
在对详细步骤进行说明前,对本发明涉及到的相关技术内容进行说明。
merkle树是一种哈希二叉树,它是一种用作快速归纳和校验大规模数据完整性的数据结构。构造一棵完整的merkle树需要递归的对数据节点进行哈希运算,并将新生成的哈希节点插入到merkle树中,直到只剩下一个哈希节点,该节点就是merkle根。
merkle树提供了一种快速验证数据存在性的方法。当n个数据元素经过哈希计算并插入merkle树时,任意一个满节点回溯至多log2(n)个路径节点就能到达merkle根,即至多经过log2(n)+1(包括对自身的一次哈希)次哈希计算就能检查出任意数据元素是否存在于该merkle树,从而完成其存在性证明。
以下结合实施例对本发明的特征和性能作进一步的详细描述。
实施例1
本实施例提供一种数字银行的总分双链的弱中心化可信数据管理方法,首先,本发明的数字银行的总分双链的弱中心化可信数据管理系统采用非对称加密技术来识别身份和保障安全,即储户和银行都有各自的私钥和公钥,并通过数字签名来进行身份认证和实现信息的不可抵赖性。例如,储户通过数字签名来确保交易请求的真实性,银行通过数字签名来确保系统消息和转账回执的真实性。同时,类似比特币等虚拟数字货币的注册模式,数字银行系统中没有所谓中心化的ca机构(即“证书授权中心”),储户的密钥对由储户自己生成,其公钥与账户地址的对应关系在其向银行进行账户注册时完成映射,私钥由储户自己保管。无ca机构的非对称加密账户管理技术是实现可信数字银行的基础。相比现有银行体系中,基于对银行的绝对信任而普遍采用对称加密技术来保护账户安全和进行身份识别的方式,本发明采用的非对称加密技术可以避免银行利用手中的信息优势,任意伪造或篡改储户的交易记录。如图1所示的一笔转账交易的完整流程,其中,交易请求tx中,va、vb分别表示转出方alice和转入方bob的账号,amount为转账金额,time1为请求时间,memo为备注信息,sgna为转出方私钥对该请求的签名,以确认该请求的真实性;转账回执re中,time2为记账时间,balancea为交易完成后转出方的账户余额,head_pba表示转出方分户账链的链头信息,sgnc为银行私钥对该交易的签名,以确认该交易已完成的真实性;转账通知msg中的参数与re类似。转账回执re和转账通知msg中,head_pb的作用既是对当前交易的确认,也是对该储户所有历史交易的确认。所述数字银行的总分双链的弱中心化可信数据管理方法,如图2所示,具体包括如下步骤:
步骤1、将所有交易流水依据交易主体和交易时间交织成一张有向交易网;
所述有向交易网中:
纵向为交易主体,对应储户的账户信息;
横向为交易时间,对应时间片内所有储户的交易,即银行系统的总账信息;
如图3所示的有向交易网结构示意图,所述时间片为将交易时间等长划分的若干时间片,优选按天划分,设为24小时,以便与银行现行的“日记账”对应,
所述有向交易网中:节点vi(i=0,1,2,…,n)表示单位时间片内的每一个储户;每一个箭头都对应一笔转账交易;箭头始端为转出方,末端为转入方;横向实线代表不同节点间的资金流向,纵向虚线代表同一个节点内的余额流向。所述有向交易网是一个不断生长的动态网络,并且由于新开户账户不断有新的节点产生。将银行总账本身视作一个特殊节点v0,初始状态全网只有一个节点v0,其他储户vi(i=1,2,…,n)在后期逐渐并入网络。规定所有节点的存款余额必须不小于零,银行v0的初始余额为一个足够大的正值tb(total-balance),而储户vi(i=1,2,…,n)的初始余额为0。由于所有交易都是有向交易网内节点间的转账,包括储户vi(i=1,2,…,n)对自身账户存取现金也可视为储户vi(i=1,2,…,n)与银行v0之间的转账。因此,交易网内的资金流是一个闭环,总余额始终等于常量tb。
储户vi(i=1,2,…,n)存入x的现金,等价于银行v0向vi(i=1,2,…,n)转账x,即银行v0自身存款余额减少x,而储户vi(i=1,2,…,n)的存款余额增加x,同时银行现金资产增加x。类似的,储户vi(i=1,2,…,n)提取y的现金,等价于储户vi(i=1,2,…,n)向银行v0转账y,即vi(i=1,2,…,n)自身存款余额减少y,而银行v0的存款余额增加y,同时银行现金资产减少y。银行v0的初始余额tb足够大意味着无论储户如何提现,银行v0的余额永远为正值。
步骤2、将所述有向交易网分别从横竖两个方向切割成一条总账链和若干条分户账链;
如图4所示的总分双链的逻辑结构示意图,具体地,将所述有向交易网进一步抽象,分别从横竖两个维度进行切割:横向为总账信息,纵向为账户信息,形成两种逻辑数据链:一条总账链gc(general-chain)和若干条分户账链pc(private-chain);
整个系统只有一条总账链gc,而每一位储户都有一条相对独立的分户账链pc。所述总账链gc,按照块链结构存储信息,每个区块装载对应时间片内的所有交易,并利用前后区块的哈希迭代,锁定历史交易;所述分户账链pc,将储户个人的交易数据按照时间先后顺序串联,并按公式(1)的计算模式组成的哈希链。
其中,txi表示第i笔交易的明细,balancei表示第i笔交易后的账户余额;末尾hi(i=n)称为分户账链的链头信息head_pc,例如图3中的31号方块就代表储户b节点v2的链头信息head_pc。
步骤3、以所述总账链gc为主体,将所有分户账链pc的链头信息同步并入总账链gc的区块中,从而将所述总账链gc和分户账链pc合并成一条bc链(binary-chain);
如图5所示的bc链的详细结构图:
所述bc链包括若干按时序前后衔接的区块;每个所述bc链的区块包括区块头和区块体;所述区块头,用于储存该区块的摘要信息,并将储存的所述摘要信息对全体储户公开;所述区块体,用于储存当期的详细交易数据。所述摘要信息包括:时间戳、交易笔数、交易总额模m的值(m是一个远大于单笔交易最大限额但小于单位时间片交易总额的整数值)、两颗默克尔树(总账树tx_merkle和分户账树head_pc_merkle)的根值,以及上一区块头的哈希值。bc链的所有区块头信息对全体储户公开,通过对bc链的块头链的分布式存储,实现全体储户的交易共识,进而达到对中心银行实施监督的目的。所述bc链的块头链为所有bc链区块的区块头构成的数据链。
当期所有交易构成总账树tx_merkle;所述总账树tx_merkle,是一颗扩展的默克尔树,每个叶节点对应当期的一笔交易tx,存储的信息包括该交易的哈希值hash(tx)和交易额amount。除了像传统默克尔树对哈希值层层迭代外,每个节点的suma字段等于其最相近的两个子节点的交易额之和模m。这样,根节点的root字段锁定了当期的所有交易,同时suma*字段等于当期的总交易额模m。
当期所有分户账链pc的链头信息构成分户账树head_pc_merkle;所述分户账树head_pc_merkle也是一颗扩展的默克尔树:每个叶节点对应一位个体储户的账务信息,储存的内容除各自分户账链pc的链头信息外,还包括该账户本期内的交易总额∑amount和当期期末余额balance。对应的,根节点的root字段锁定了当期所有储户的分户账链pc,同时suma**字段等于当期总交易额的两倍值模m(同一笔交易会同时记录在交易双方的分户账链上),sumb字段等于系统总余额tb。其数量关系如下:
head_pc_merkle_root(suma**)=2×tx_merkle_root(suma*)%m(2);
head_pc_merkle_root(sumb)=tb(3);
其中,suma**和sumb为分户账树的树根head_pc_merkle_root中的字段,suma**表示基于所有分户账统计的当期交易总额模m的值,tb表示系统的总余额;suma*为总账树的树根tx_merkle_root中的字段,它表示基于银行总账统计的当期交易总额模m的值
综上所述,非对称加密技术保证了银行无法伪造虚假交易来直接侵害储户利益,总账树tx_merkle锚定了所有的交易,分户账树head_pc_merkle锚定了所有的分户账链pc,而每条分户账链pc又是锚定每位储户个人交易的锚。通过双链存证及相互对照,结合数值验证,可以有效“锁住”数据,预防银行作弊。如果只有总账链gc,没有分户账链pc,储户只能完成交易的存在性证明,但无法验证交易的完整性,即银行可能“漏掉”部分交易记录。相反,如果只有分户账链,储户虽然能够独立验证自身交易的完整性,但由于分户账链是彼此孤立无关联的,公众缺少总账数据无法充当交易见证人,银行可以利用信息不对称的优势,制造局部真实,整体虚假的局面,例如转账时记单边账,或利用内部账户伪造历史交易记录。
步骤4、通过链头验证和交易验证对相关交易和账户信息进行查验,确保查验信息的真实性;该查验通过储户对其历史交易的日常查询来具体实施;所述链头验证为验证bc链的最新区块与自身分户账链的链头信息head_pc的关系;所述交易验证为验证自身具体历史交易与所述bc链中对应历史区块的关系;
在实际的验证过程中,所述链头验证和交易验证的验证过程均细化为两类验证,即对自身数据的验证和对系统整体数据的验证,前者体现为存在性验证,后者体现为数值关系的验证:
所述链头验证是验证bc链中最新区块的真实性:一方面通过银行返回的默克尔(merkle)路径来验证储户自身的链头信息head_pc是否被如实的包含在最新区块的分户账树head_pc_merkle中,完成自身head_pc的存在性证明;另一方面验证最新区块中的整体交易数据是否满足公式(2)和公式(3)的数值关系,即在先前分户账树从储户叶节点回溯到根节点head_pc_merkle_root的过程中,查验sumb是否恒定为总余额tb,suma**是否等于最新区块头中“交易总额取模suma*”的两倍值模m。
所述交易验证是验证某笔特定历史交易的真实性:一方面通过银行返回的默克尔(merkle)路径来验证自身分户账链pc上的某笔具体交易tx是否被如实的包含在bc链的对应历史区块的总账树tx_merkle中,完成自身具体交易的存在性证明;另一方面验证对应历史区块中的整体交易数据是否满足公式(2)和公式(3)的数值关系,即在先前总账树从交易叶节点回溯到根节点tx_merkle_root的过程中,以及该区块分户账树从储户叶节点回溯到根节点head_pc_merkle_root的过程中,查验sumb是否恒定为总余额tb,总账树根节点的suma*是否等于该区块头中“交易总额取模suma*”的值,分户账树根节点的suma**是否等于suma*的两倍值模m。
从上述查验过程不难看出,大量分散的个体储户在对自身交易信息和账户数据进行直接查验的同时,通过十字双链对数据存在性、完整性和数值关系的交叉验证,间接实现了对银行整体交易信息和账务数据的审计,从而大大降低了银行篡改数据、做假账的可能,提升了银行的公信力。
需要说明的是,储户在进行交易查询前,需要先进行数据同步,包括更新bc链的块头链和自身的分户账链pc,即下载自上次更新以来系统新增的区块头数据和自身分户账链pc新的的哈希链节点。注意,数据同步时需要对更新数据的正确性进行验证,即依据先前存储的数据逐步计算新数据的延续性,看是否能够顺利推导出bc链的块头链的最新“块头哈希值”和自身pc的最新head_pc。
实施例2
本实施例提供一种应用实施例1的数字银行的总分双链的弱中心化可信数据管理方法的数字银行的总分双链的弱中心化可信数据管理系统,如图6所示,包括:通过网络连接的客户端和服务器;
所述客户端,包括:客户端存储模块和请求模块;
所述客户端存储模块,用于存储bc链的块头链和自身的分户账链;
所述请求模块,用于根据向所述服务器发送查验请求;
所述服务器,包括:中心存储模块和账户管理模块;
所述中心存储模块,用于存储完整的交易流水、账户数据、bc链以及每位储户的分户账链数据;
所述账户管理模块,用于根据所述客户端的请求模块发送的查验请求,返回对应区块的默克尔路径和系统整体交易数据;
所述客户端,通过接收对应区块的默克尔路径和系统整体交易数据,进行块头验证和交易验证。
进一步地,所述客户端和服务器均设置有各自的私钥和公钥,并通过数字签名来进行身份认证。
所属领域的技术人员可以清楚地了解到,为描述的方便和简沽,上述描述的数字银行的总分双链的弱中心化可信数据管理系统中,所述数字银行的总分双链的弱中心化可信数据管理系统及其功能模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。