APP下载

基于区块链的对账系统设计与实现

2020-03-23周硙

软件工程 2020年2期
关键词:智能合约区块链

周硙

摘  要:电子支付、电子商务、互联网广告、大数据交易等业务,都是由多个主体参与的持续性业务。对账系统是此类业务开展中的重要一环,它保证了各参与方数据一致。区块链技术集成了分布式公共账本及智能合约技术,且本身具有不可伪造、不可篡改的特性,可以满足对账系统的需求。本文讨论了基于区块链技术的对账系统,并给出了依托Bitcoin和Ethereum公链的具体实现。利用区块链特性,对账系统可以实现去中心化对账。相对于中心化对账,该方案不依赖某单一参与者,没有单点故障;对账结果通过区块链存储,结果可追溯、验真;数据根据授权分别存储于公链及私链,保证了数据隐私。

关键词:区块链;对账系统;智能合约

中图分类号:TP311     文献标识码:A

1   引言(Introduction)

1.1   区块链

区块链源于比特币,是分布式数据存储、P2P传输、共识机制、加密算法等技术的组合应用系统。区块是区块链的基本结构单元。第一个被构建的区块称为创世区块。除了创世区块,其余每个区块包含了前序区块的哈希值。因此可以通过哈希值,确认区块的前后指向关系。所有区块,依照前后指向关系为序相连,构成区块链[1]。

1.2   对账系统

多方交易系统中,因为多种原因可能交易各方的数据会产生差异。因此需要定期将多方的数据进行比对,各方对缺失的数据进行补单,对有差异的数据进行排查纠正,典型对账流程见图1。近期广受关注的区块链技术提供了实现对账系统的新思路[2]。本文以区块链技术为基础,提出了一个多方对账的技术方案。该系统支持多方对账,具有匿名特征,可以实现隐私数据保护。

2   对账系统分析(Analysis of reconciliation system)

对账系统因涉及若干个独立的业务主体,所以需要约定具体的对账流程,并采用可靠的技术方案实现对账流程。对账流程分成三步:(1)确认基准数据,通常是以某一方位基准,各方都从基准方获取初始数据;(2)明细账比对,各方将基准数据与己方数据进行对比,根据对账结果,首先通过自动化脚本处理对账差异,比如对缺失数据进行补单,对于无法自动处理差异要人工处理;(3)各方将处理后的数据相互交换,如果各方结果均一致,则对账结束,否则回到第2步[3]。典型的对账流程如图1所示。

对账业务场景根据对账各方的关系分为中心化对账和去中心化对账。中心化对账,通常有可靠的中心化机构作为对账中心,其本身数据必须高度可靠,其余对账各方以中心机构为基准,找出己方的差错。中心化对账有单点失效的缺点,如果中心机构自身出现技术故障或者数据错误,后续对账将很难顺利完成。去中心化对账可以有效解决单点故障的问题。去中心化对账是若干平等主体,以对等方式进行对账。去中心化对账因为没有中心机构负责,所以自然避免了单点故障,但是因为没有负责的中心机构,所以对账方案必须可以验证数据的来源是否真实,对账方案也必须保证各方已经确认的历史数据不能被篡改[4]。

3   方案设计(Scheme design)

3.1   对账系统需要解决的问题

根据以上分析,对账系统需要解决以下问题:(1)发起对账时,各方需要同步初始的对账数据,并确认开始对账;(2)对账过程中,对账系统可以交换明细账差异,记录各方的数据确认行为;(3)对账结束后,对账系统可以封存各方一致的数据;(4)对账数据本身可能涉及业务细节,对于私有数据,应该仅限对账各方掌握;(5)对账的非私密数据应该实现安全、可靠的电子存证。

3.2   整体设计

整体方案由主链及私链构成。主链向所有人公开,任何人都可以读取主链区块。主链区块只储存对账各参与方、对賬状态及对账私链的创世区块哈希值。主链的每个区块可以分成区块头和数据区两部分。其中,数据区用于存储实际数据,区块头存储了前序区块及数据区的哈希值。对账的私密数据仅存放在私链上。每次对账产生一个私链,私链的数据仅限对账参与方访问,整体方案如图2所示。

私链区块格式同样分成区块头和数据区。所有区块头格式相同,数据区有四种:(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)将数据区和区块头打包成新区块;(6)通过P2P网络,广播给所有节点[6]。比特币主链的区块包含了交易信息,该交易信息的OP_RETURN字段可以用来记录对账私链创世区块的哈希值;同时,比特币支持多重签名账户,多重签名账户首先需要确定哪些私钥可以参与该账户的管理操作,并约定交易生效的最小签名数量。这种方式也称为MofN模式,其中N指管理密钥的个数,M为操作该账户的最小签名数。使用Bitcoin多签名账户时,首先由各方,创建各自的密钥对,然后交换公钥,共同使用各方公钥生成多签名账户。账户管理密钥和最小签名数均等于参与方数量。即必须所有参与方都签名后才能操作账户。

发起对账过程,由发起方准备初始对账数据,并提供下载方式、文件清单及MD5和SHA1需写入私链创世区块。私链创世区块创建成功后,发起方以创世区块哈希创建主链的交易单,并发送给对账各方。各方下载到初始数据后,校验私链创世区块,如果无误依次用己方私钥对交易单进行签名。所有签名齐备后,向Bitcoin主链写入交易单,实现对账启动程序。

关闭对账过程与发起相似。对账各方在私链上达成共识,产生终止区块。取其哈希值,对账各方共同签名,写回Bitcoin主链,从而关闭对账。

4.2   Ethereum主链方案

Ethereum支持智能合约。智能合约(Smart Contract)是以信息化方式传播、验证或执行合同的计算机协议[7]。智能合约可以在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。

Ethereum智能合约由Solidity语言开发,可以实现多签名账户等基本功能。且支持合约状态和合约函数。因此相对于Bitcoin主链方案实现更简单。

每个智能合约的数据中,预设了发起方及对账各方的账户地址,通过mapping结构存储对账信息,核心数据结构如下:

对账各方通过调用合约函数发起对账,并在对账私链完成明细账对账程序,最后通过智能合约函数将私链信息回传到主链,完成对账[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-),男,博士,博士后在站.研究领域:大数据及区块链.

猜你喜欢

智能合约区块链
农产品供应链金融信用体系框架设计
区块链技术在互联网保险行业的应用探讨
保险企业的区块链技术应用方向选择研究
区块链技术在金融领域的应用与前景研究
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
基于区块链技术的数字货币与传统货币辨析
智能合约与金融合约
用“区块链”助推中企走出去