基于Fabric 超级账本的证券结算系统设计

2020-07-04 08:53孙伟
科学技术创新 2020年18期
关键词:背书哈希账本

孙伟

(上海弘缠文化传播有限公司,上海201101)

1 Fabric 超级账本概述

众所周知,第一个区块链应用是比特币,它是一种点对点的电子现金系统,提供一个可信的网络完成比特币发行、转账、支付。第二个区块链应用是以太坊,它增加了智能合约,支持以编程方式创建分布式应用程序。这两个区块链一般称为公链,公共无许可区块链,是对所有人开放的公共网络,任何参与者都可以加入网络并在其中进行匿名交易。

然而无许可区块链的匿名性不能满足金融企业KYC(Know Your Customer)和AML(Anti Money Laundering)需求,金融参与者必须是可识别的,网络参与者必须获得许可,同时保证交易数据的保密性,交易高吞吐量性能和交易确认的低延迟性。Hyperledger Fabric 就是为企业使用而设计的区块链。它有以下一些差异化的功能:首先,它是一个许可区块链,只有获得许可的节点才能加入网络,并且参与者的身份都是实名可识别的;其次,它提供可编程链码,即编写智能合约实现业务逻辑,智能合约使用标准编程语言,无需学习专门的编程语言,降低开发门槛;最后,它提供通道体系结构和私有数据功能来实现机密性。在通道中,Fabric 网络上的参与者建立了一个子网,每个成员都可以查看特定的一组交易,只有那些加入通道的节点才能访问智能合约(链码)和交易数据,从而保留了两者的隐私和机密性。

2 Fabric 架构

BTC,ETH 通过矿工挖矿完成交易记账。当网络收到交易后,每一个节点开始进行求解哈希计算,一旦某一节点完成计算即向网络发送区块,各节点验证计算结果,验证通过后将该区块加入自身区块链副本中,同时放弃之前构建相同高度区块的计算。整个过程采用请求执行(order execute)架构,即网络中的所有节点同时进行哈希计算和独立校验,虽然这种方式确保了网络中矿工无法欺诈,但在一段时间内所有节点都在对同一交易进行计算验证,降低了系统吞吐量。一般BTC 区块链大约10分钟出一个区块,ETH 区块链大约15 秒出一个区块,显然这样的处理性能无法满足证券结算的需求。

Fabric 引入了一种新的架构, 我们称之为execute-order-validate。它通过将事务流分为三个步骤来解决订单执行模型所面临的弹性,灵活性,可伸缩性,性能和机密性挑战:

(1)模拟执行交易并检查其正确性和为其背书;

(2)通过(可插入)共识协议排序交易;

(3)根据特定于应用程序的背书策略验证交易,然后提交账本更新。

首先,Client C 向网络通道背书节点peer1、peer2 和peer3发送交易请求,各背书节点验证交易,确认内容为交易请求格式正确,确认不是重复交易、确认交易签名、确认Client C 有权限发起模拟交易;

其次,交易请求确认通过后,调用链码进行模拟交易,模拟交易完成后并不更新账本,而是把模拟交易结果及背书节点签名返回给Client C;

再次,Client C 收到三个背书节点模拟交易结果及签名后,验证比较三个结果是否一致,验证是否满足背书策略,如果验证通过,那么Client C 发送交易信息到ordering service,ordering service 对各通道发来的请求进行排序,同时创建区块,把交易打包进区块。接着,ordering service 把已打包交易的区块发送给通道中所有peer,各peer 对区块中的交易验证是否满足背书策略,如满足标记为“验证通过”,如不满足标记为“验证不通过”;

最后,每个peer 把区块加入通道链,同时把区块中验证通过的交易执行结果更新到账本数据库。完成更新后,发送更新结果通知给Client C。

3 证券结算系统

证券市场每日交易结束后,需对买卖双方应收应付的证券和价款进行核定计算,完成证券由卖方向买方的转移和相对应的资金由买方向卖方的转移。目前证券市场采用集中式结算系统,每日结算机构根据交易数据计算买方和卖方的变动股数,买方和卖方资金交收金额,发送给证券公司,证券公司根据这些数据进行股份结算和资金结算,确认更新股民账户持有股票股份和资金账户余额。最终结算结果的正确性和准确性依赖结算结构和证券公司,如数据在传输过程中存在问题,就会导致结算结果问题,结算数据的存储基于中心化关系型数据库方式存在被恶意修改的风险。同时结算机构把结算数据传输给证券公司,证券公司进行结算,效率较低。

4 基于Fabric 的证券结算系统设计

利用Fabric 实现结算安全和高效,确保结算数据不可篡改,同时缩短结算时间。证券交易结算流程如下:

图1 基于Fabric 超级账本证券结算系统架构

(1)交易所Fabric 应用程序在交易时段定时把已成交数据提交录入Fabric 网络,即应用程序发送给交易所peer、结算机构peer、证券机构peer,各peer 根据背书策略模拟交易,然后返回结果给应用程序;

(2)交易所应用程序收集返回结果,并确认是否满足背书策略;

(3)交易所应用程序提交Order 排序交易;

(4)Order 根据背书策略验证交易,然后提交账本更新;

(5)每日交易结束后,结算机构和证券公司从账本查询当日所有已确认成交,来更新客户持仓和进行资金划拨。

图1 描述了Fabric 超级账本证券结算系统架构。首先在Fabric 网络上创建一个通道,为接入通道的交易所、结算机构和证券机构创建分配CA 证书,再用CA 创建身份识别和MSP 会员服务提供。最后创建peer 和ordering service,完成Fabric 环境的部署搭建。各机构通过开发的应用程序连接到Fabric 网络通道,通过持有的CA 证书完成身份验证。在成功连接到网络通道后,就可以开始进行交易。

图2 账本结构

图2 描述了Ledger 账本结构,账本L 由状态W 和区块链B组成。状态W 保存业务对象的唯一值,W 一般为key,value 形式,key 可以是股东账号,value 可以是证券代码和股票数。

图3 区块链结构

图3 描述了区块链B 的结构,图中B 表示区块链,B0 为区块链B 第一个区块,后面依次为B1,B2,B3 三个区块,B1 区块数据D1 中包含T1,T2,T3,T4 四笔交易信息,B2 区块数据D2中包含T5,T6,T7,T1…T7 可以是股票成交记录。

图4 区块结构

图4 为B2 区块结构,H2 分为当前块哈希CH2 和前一块哈希PH1,CH2 为D2 数据的哈希加密,PH1 为前一区块的哈希,通过PH1 串联起每个区块,通过CH2 保证D2 数据存入区块后无法篡改。

5 结论

通过利用Fabric 超级账本区块链,减少了结算数据处理和传输的时间,保证了结算数据唯一性和正确性,避免一些人为错误等造成数据的不准确性,最终确保已结算数据不可篡改并可日后追溯。

猜你喜欢
背书哈希账本
背书是写作的基本功
基于特征选择的局部敏感哈希位选择算法
哈希值处理 功能全面更易用
背书
文件哈希值处理一条龙
数说:重庆70年“账本”展示
丢失的红色账本
大树爷爷的账本
巧用哈希数值传递文件
背书连续性若干问题探析