周硙


摘 ?要:電子支付、電子商務、互聯網廣告、大數據交易等業務,都是由多個主體參與的持續性業務。對賬系統是此類業務開展中的重要一環,它保證了各參與方數據一致。區塊鏈技術集成了分布式公共賬本及智能合約技術,且本身具有不可偽造、不可篡改的特性,可以滿足對賬系統的需求。本文討論了基于區塊鏈技術的對賬系統,并給出了依托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-),男,博士,博士后在站.研究領域:大數據及區塊鏈.