文章编号:2096-1472(2020)-02-47-03
软件工程 SOFTWARE ENGINEERING Vol.23 No.2Feb. 2020
DOI:10.19644/j.cnki.issn2096-1472.2020.02.013
基于区块链的对账系统设计与实现
周 硙
(北京工业大学信息学部,北京 100022)
摘 要:电子支付、电子商务、互联网广告、大数据交易等业务,都是由多个主体参与的持续性业务。对账系统是此类业务开展中的重要一环,它保证了各参与方数据一致。区块链技术集成了分布式公共账本及智能合约技术,且本身具有不可伪造、不可篡改的特性,可以满足对账系统的需求。本文讨论了基于区块链技术的对账系统,并给出了依托Bitcoin和Ethereum公链的具体实现。利用区块链特性,对账系统可以实现去中心化对账。相对于中心化对账,该方案不依赖某单一参与者,没有单点故障;对账结果通过区块链存储,结果可追溯、验真;数据根据授权分别存储于公链及私链,保证了数据隐私。
关键词:区块链;对账系统;智能合约中图分类号:TP311 文献标识码:A
Design and Implementation of the Reconciliation System Based on Blockchain
ZHOU Wei
(Beijing University of Technology,Beijing 100022,China)
Abstract:Electronic payment,e-commerce,Internet advertising,big data transaction and so on are all continuous business with multiple subjects.The reconciliation system is an important part for this kind of business development,which ensures the data consistency of participants.Blockchain technology integrates distributed public accounts and smart contract technology,and it can not be forged or tampered with,which can meet the needs of the reconciliation system.This paper discusses the reconciliation system based on blockchain technology,and gives the concrete realization relying on Bitcoin and Ethereum public blockchain.Decentralized reconciliation can be achieved by using the system constructed with blockchain.Compared with centralized reconciliation,the scheme does not depend on a single participant and has no single point failure.The reconciliation results are stored in block chains,and the results can be traced and checked.Data are stored in public and private chains respectively according to authorization,thus ensuring data privacy.
Keywords:blockchain;reconciliation system;smart contract
1 引言(Introduction)
1.1 区块链
区块链源于比特币,是分布式数据存储、P2P传输、共识机制、加密算法等技术的组合应用系统。区块是区块链的基本结构单元。第一个被构建的区块称为创世区块。除了创世区块,其余每个区块包含了前序区块的哈希值。因此可以通过哈希值,确认区块的前后指向关系。所有区块,依照前后指向关系为序相连,构成区块链[1]。
账流程见图1。近期广受关注的区块链技术提供了实现对账系统的新思路[2]。本文以区块链技术为基础,提出了一个多方对账的技术方案。该系统支持多方对账,具有匿名特征,可以实现隐私数据保护。
2 对账系统分析(Analysis of reconciliation system)
对账系统因涉及若干个独立的业务主体,所以需要约定具体的对账流程,并采用可靠的技术方案实现对账流程。对账流程分成三步:(1)确认基准数据,通常是以某一方位基准,各方都从基准方获取初始数据;(2)明细账比对,各方将基准数据与己方数据进行对比,根据对账结果,首先通过自动化脚本处理对账差异,比如对缺失数据进行补单,对于无法自动处理差异要人工处理;(3)各方将处理后的数据相互交
1.2 对账系统
多方交易系统中,因为多种原因可能交易各方的数据会产生差异。因此需要定期将多方的数据进行比对,各方对缺失的数据进行补单,对有差异的数据进行排查纠正,典型对
48 软件工程 2020年2月换,如果各方结果均一致,则对账结束,否则回到第2步[3]。典型的对账流程如图1所示。
图1 典型对账的流程
Fig.1 Typical reconciliation process
对账业务场景根据对账各方的关系分为中心化对账和去中心化对账。中心化对账,通常有可靠的中心化机构作为对账中心,其本身数据必须高度可靠,其余对账各方以中心机构为基准,找出己方的差错。中心化对账有单点失效的缺点,如果中心机构自身出现技术故障或者数据错误,后续对账将很难顺利完成。去中心化对账可以有效解决单点故障的问题。去中心化对账是若干平等主体,以对等方式进行对账。去中心化对账因为没有中心机构负责,所以自然避免了单点故障,但是因为没有负责的中心机构,所以对账方案必须可以验证数据的来源是否真实,对账方案也必须保证各方已经确认的历史数据不能被篡改[4]
。
3 方案设计(Scheme design)
3.1 对账系统需要解决的问题
根据以上分析,对账系统需要解决以下问题:(1)发起对账时,各方需要同步初始的对账数据,并确认开始对账;(2)对账过程中,对账系统可以交换明细账差异,记录各方的数据确认行为;(3)对账结束后,对账系统可以封存各方一致的数据;(4)对账数据本身可能涉及业务细节,对于私有数据,应该仅限对账各方掌握;(5)对账的非私密数据应该实现安全、可靠的电子存证。
3.2 整体设计
整体方案由主链及私链构成。主链向所有人公开,任何人都可以读取主链区块。主链区块只储存对账各参与方、对账状态及对账私链的创世区块哈希值。主链的每个区块可以分成区块头和数据区两部分。其中,数据区用于存储实际数据,区块头存储了前序区块及数据区的哈希值。对账的私密数据仅存放在私链上。每次对账产生一个私链,私链的数据仅限对账参与方访问,整体方案如图2所示。
图2 基于区块链对账系统的整体方案
Fig.2 Overall scheme of reconciliation system based on blockchain
私链区块格式同样分成区块头和数据区。所有区块头格式相同,数据区有四种:(1)创世区块,包含数据文件的清单及md5和sha1;(2)差异区块,对前序数据文件的增补和修正;(3)确认区块,一种特殊区块,没有数据区,仅用来表示对前序区块的确认;(4)终止区块,一种特殊区块,没有数据区,用来表示所有参与方都对当前数据达成一致,对账结束[5]。
3.3 对账发起
对账通过以下步骤发起:(1)发起方准备对账的初始数据,并提供下载地址;(2)发起方启动私链,构造私链创世区块;(3)各方确认私链创世区块,下载对账初始数据,验证文件完整性及主链相关信息,验证无误后在主链依次签名,确认启动对账。
3.4 私链上的明细账对账程序
对账发起后,其余参与方,轮流获得在私链创建新区块的权利,即记账权。每次获得记账权的一方,可从所有区块中选择与己方数据相同部分最多的区块,以此作为前序区块。如果有多条差异数据同样多的区块,则选择最长的。如果结果仍不唯一,选择创建最早的。确认前序区块后,对缺失数据进行补单,对错误数据进行修正,相应的差异信息写入新区块;如果没有差异,需要向前序方向检查所有区块,如果所有对账各方都确认了没有差异,则创建对账终止区块并进入对账结束流程,否则创建确认区块。
3.5 对账结束流程
对账发起人,用终止区块的哈希构造主链交易单,由各对账方依次签名,并回存到主链中。主链确认后,对账结束。同时私链生命周期结束,各方可以将私链数据长期存档备查。
3.6 区块链方案的优势
因为每个区块都包含了前序区块的哈希值,所以可以用来校验前序区块是否被修改。因为每个区块都存储了前序区块哈希值,可以从当前区块逐块回溯历史区块,此过程中任何对历史区块的篡改都可以被发现,因此区块链具有不可篡改的特性。
区块数据都需要数据产生者,通过非对称算法进行数字签名。并且随机选出的记账节点将会核实签名的真实性。记账数据向全网其他节点广播时,每个节点都会再次校验数字签名的真伪,伪造的数据不会被网络其他节点接受,所以区块上的数据信息具有不可伪造的特性。
4 方案实现(Scheme implementation)
4.1 Bitcoin主链方案
Bitcoin主链是支持比特币的底层区块链。比特币主链从创世区块开始,记账网络按照工作量证明机制,每隔一段时间选出一个节点作为记账节点。记账节点负责对期间发生的
数据进行整理,生成新区快,步骤如下:(1)打包数据到数据区;(2)根据数据区计算哈希;(3)确认前序区块,计算前序区块哈希和数据哈希;(4)构建区块头;(5)将数据区和区块头打
第23卷第2期 49周 硙:基于区块链的对账系统设计与实现包成新区块;(6)通过P2P网络,广播给所有节点[6]。比特币主链的区块包含了交易信息,该交易信息的OP_RETURN字段可以用来记录对账私链创世区块的哈希值;同时,比特币支持多重签名账户,多重签名账户首先需要确定哪些私钥可以参与该账户的管理操作,并约定交易生效的最小签名数量。这种方式也称为MofN模式,其中N指管理密钥的个数,M为操作该账户的最小签名数。使用Bitcoin多签名账户时,首先由各方,创建各自的密钥对,然后交换公钥,共同使用各方公钥生成多签名账户。账户管理密钥和最小签名数均等于参与方数量。即必须所有参与方都签名后才能操作账户。
发起对账过程,由发起方准备初始对账数据,并提供下载方式、文件清单及MD5和SHA1需写入私链创世区块。私链创世区块创建成功后,发起方以创世区块哈希创建主链的交易单,并发送给对账各方。各方下载到初始数据后,校验私链创世区块,如果无误依次用己方私钥对交易单进行签名。所有签名齐备后,向Bitcoin主链写入交易单,实现对账启动程序。
关闭对账过程与发起相似。对账各方在私链上达成共识,产生终止区块。取其哈希值,对账各方共同签名,写回Bitcoin主链,从而关闭对账。
4.2 Ethereum主链方案
Ethereum支持智能合约。智能合约(Smart Contract)是以信息化方式传播、验证或执行合同的计算机协议[7]。智能合约可以在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
Ethereum智能合约由Solidity语言开发,可以实现多签名账户等基本功能。且支持合约状态和合约函数。因此相对于Bitcoin主链方案实现更简单。
每个智能合约的数据中,预设了发起方及对账各方的账户地址,通过mapping结构存储对账信息,核心数据结构如下:
struct Reconciliation{ address startBlockhash; address stopBlockhash; uint8 signatureCount;
mapping (address=>uint8) signatures;}
mapping (uint=>Reconciliation) private reconciliations;
event ReconciliationCreated(address startBlockhash,uint rId);
event ReconciliationStart(uint rId);
智能合约提供对账创建、开始及结束的合约函数,智能合约核心代码如下:
function create(address startBlockhash) isOwner
public{
…
uint rId=rIdx++; Reconciliation memory r; r.startBlockhash=startBlockhash; r.signatureCount=0; reconciliations[rId]=r;
emit ReconciliationCreated(msg.sender,rId);}
对账各方通过调用合约函数发起对账,并在对账私链完成明细账对账程序,最后通过智能合约函数将私链信息回传到主链,完成对账[8]。
5 结论(Conclusion)
对账系统在支付、广告等行业广泛使用,是一种保障业务开展的重要系统。本文将区块链技术与传统对账系统结合,设计了一套去中心化的对账系统。该方案,可以依托于现有区块链技术,不但可以满足传统对账业务的需求,还可以实现多方对账、无中心的分布式对账等需求。通过公链私链的组合使用,明细账内容,仅由对账各方掌握,同时保证了数据安全及数据隐私。
参考文献(References)
[1] Dinh T T A,Liu R,Zhang M,et al.Untangling Blockchain:A Data
Processing View of Blockchain Systems[J].IEEE Transactions on Knowledge & Data Engineering,2017,30(7):1366-1385.[2] Jiang T,Fang H,Wang H.Blockchain-based Internet of Vehicles:
Distributed Network Architecture and Performance Analysis[J].IEEE Internet of Things Journal,2019,6(3):4640-4649.[3] De Montjoye Y A,Radaelli L,Singh V K,et al.Unique in the
shopping mall:On the reidentifiability of credit card metadata[J].Science,2015,347(6221):536-539.
[4] Yang M,Margheri A,Hu R,et al.Differentially Private Data
Sharing in a Cloud Federation with Blockchain[J].IEEE Cloud Computing,2018,5(6):69-79.
[5] Günther Eibl,Engel D.Differential privacy for real smart
metering data[J].Computer Science-Research and Development,2016,32(1-2):173-182.
[6] Nakamoto S.Bitcoin:A peer-to-peer electronic cash system[EB/
OL].http://bitcoin.org/bitcoin.pdf,2008-10-31/2019-10-1.[7] Christidis K,Devetsikiotis M.Blockchains and Smart Contracts
for the Internet of Things[J].IEEE Access,2016(4):2292-2303.[8] 黄小菊,徐文起,章涛,等.基于区块链技术的个人信息管理[J].
软件工程,2018,21(10):34-37.
作者简介:
周 硙(1983-),男,博士,博士后在站.研究领域:大数据及
区块链.
因篇幅问题不能全部显示,请点此查看更多更全内容