張建根
河北省財政廳 信息中心,石家莊 050051
隨著中央與地方財政事權和支出責任劃分改革不斷深入,財政轉移支付資金規模逐年加大,中央對一般公共預算安排地方轉移支付支出已占支出總額的65%以上。如何實現對財政轉移支付資金的科學管理、高效運轉、有效監督,給財政信息化建設帶來巨大挑戰,也帶來了難得的機遇。國家信息中心原首席工程師寧家駿就指出[1]:“財政信息化建設在財政管理中始終發揮著基礎性、保障性作用。”“對財政信息化建設而言,深化財稅體制改革既帶來挑戰,更多的是難得的機遇。”
早在2009年,河北省財政廳[2]依托“金財工程”應用支撐平臺的全面實施,建成了財政專項資金即時分析監控系統,建立起財政資金分配、下達、使用的即時監控體系,提高了財政管理和監督工作精細化、高效化、自動化水平。海南省財政廳[3]構建了全省一體化平臺,涵蓋了一級政府從預算編制、預算執行、預算監督到執行分析的一體化的財政業務管理全過程。集中部署既統一了全省財政業務管理模式,也有效緩解了集成財政部門經費短缺和技術人員不足的問題。河南省財政廳[4]自動匯聚省市縣預算執行、財政專戶資金管理和一卡通等財政業務應用系統中財政扶貧資金分配審核撥付的全業務流程數據,構建監控模型,建成功能完善、應用高效扶貧資金動態監控系統,實現對省市縣鄉扶貧資金的分配、下達及支付全流程監控。
然而,隨著各省財政信息化的不斷發展,逐漸形成了地方財政部門“各自搭臺,分頭唱戲”的現象,建成了以地方財政部門為中心的財政信息化系統,導致財政業務數據標準不一致,資金使用數據難以共享的信息壁壘,給對中央轉移支付資金監控帶來了極大的困難。例如林鷺[5]指出財政部在全國范圍內部署開展財政扶貧資金動態監控工作以來。由于數據自動共享難度大,廣西省財政部門的預算指標和分配信息需要手工錄入,這不僅嚴重降低了工作效率,而且無法保證錄入數據的質量。更為嚴重的是,由于監控數據來自于手工錄入,上級財政部門不具備有效手段驗證采集數據的真實性,無法發現下級財政部門弄虛作假,甚至惡意篡改數據的行為,這給財政轉移支付資金運行帶來極大的風險。
區塊鏈技術[6]具有去中心化、防篡改、可追蹤等特性,可以在不可信環境下完成可信交易。正好符合轉移支付資金管理涉及各級財政部門,資金安全必須保障、業務鏈條應追蹤到底等業務需求。因此本文基于區塊鏈技術,提出了一種針對轉移支付資金管理的解決方案。以聯盟鏈為基礎,構建了包含中央、省、市、縣四級行政區劃的財政轉移支付體系,共識機制提高了轉移支付業務辦理效率,通道劃分滿足了轉移支付管理的隱私保護,防篡改特性實現了轉移支付數據的安全保障,可追蹤特性提升了對轉移支付資金的監督審計質量。
區塊鏈可以認為是一整套利用時間戳、非對稱加密、點對點傳輸、共識算法、智能合約、鏈式數據結構、分布式存儲等技術手段重構信任問題的解決方案。其本質上是一種加密的分布式即時賬簿系統。
賬簿系統的所有參與節點通過互聯網相互連接,可以直接通信。任意參與節點都保存賬簿全部信息。賬簿僅允許添加新的交易內容,不允許任何刪除和修改。所有參與節點利用非對稱加密算法保證交易信息傳輸過程中的數據安全,利用共識算法完成新交易內容確認。參與者將交易按照時間先后順序鏈接成一種鏈式數據結構:區塊鏈。任意節點單方面篡改區塊鏈中交易記錄都不影響其他節點保持的賬簿內容,因此這種單方面的篡改是無效的。此外,區塊鏈2.0[7]后任意可編程的交易邏輯都可在區塊鏈系統內在滿足預設條件時自動執行,確保交易規則的公平公正。
因此區塊鏈技術最顯著的內涵在于通過一系列數學算法和信息技術的巧妙組合和應用,確保數據不可篡改,全程可追溯,規則可正確執行,改變社會交易中以第三方機構背書的信任機制,形成一種以嚴格數學算法為保障,高新信息技術為支撐,人人為我背書,我為人人背書的社會信任機制,從而可快速并高效完成資源的公平配置,達到確保所有參與者的目標一致、行為規范的目的。
公有鏈[6-7]允許任意節點匿名加入,是區塊鏈最初的形態。但節點的匿名性和數量無限制性的特性給區塊鏈監管以及區塊鏈交易速度帶來了極大的困難,因此促進了有準入控制機制的私有鏈和聯盟鏈的發展。私有鏈的網絡系統和數據的管理權限、使用權限均歸屬于某個組織或者機構,常用于單一機構的內部管理。聯盟鏈集合了公有鏈的多節點參與特征以及私有鏈的節點準入特征,克服了交易速度,業務隱私、數據監管等方面的障礙,受到了企業界普遍的歡迎。Linux 基金會發起的Hyperledger項目先后提出多個聯盟鏈平臺[8],滿足不同業務場景的需求;金融區塊鏈聯盟提出Corda[9],著力于解決金融行業數據隱私和監管之間的矛盾,反對數據全網廣播,及每個節點擁有全部數據;企業以太坊聯盟[6]推動全球性的標準規范,促進以太坊技術在企業級的應用;微軟提出CCF 框架[10],提出了區塊鏈協議的加速機制,能夠提供更高效易用的聯盟鏈實現方案;我國金鏈盟提出FISCO BCOS[11],旨在整合及協調金融區塊鏈技術研究資源,滿足金融行業高頻交易、安全、合規方面的需求。
在國內,基于以上區塊鏈平臺的應用研究領域非常廣泛。例如:張亮等[12]對傳統房地產供應鏈運用區塊鏈技術思想,提出了基于以太坊智能合約的房地產供應鏈建議。譚海波等[13]將以太坊區塊鏈與全球互聯的分布式文件系統結合,提出一種基于區塊鏈的檔案數據保護與共享方法。禹忠等[14]將超級帳本應用與醫藥溯源場景,不僅提升了溯源數據的房篡改能力,而且將溯源信息延伸至藥品生產、物流及使用等信息。張森等[15]提出了基于超級帳本的冷鏈物流技術方案,提高了冷鏈物流行業的可信性和數據的安全性。劉東偉等[16]針對學位證書存證的教育業務場景,提出了以超級賬本作為底層區塊鏈技術平臺的解決方案,解決了交易吞吐量低以及中心化存儲所具有的單點故障問題。汪允敏等[17]基于區塊鏈技術,提出一套工業互聯網標識解析的安全防護策略,通過對數據權限控制、加密管理、接口安全,來保護互聯網標識數據的安全。
Hyperledger Fabric[18]是當前15 個Hyperledger 項目中最活躍的平臺項目。Hyperledger Fabric 采用模塊化架構,可插拔的身份認證服務、訂單服務、P2P服務、智能合約、數據庫管理系統、認可和驗證策略使其成為可滿足多種行業的通用解決方案。Hyperledger Fabric 允許特定交易的參與者構成通道(Channel),只有通道的成員才能存儲和查看交易數據,滿足了交易的隱私性和機密性。Hyperledger Fabric為網絡節點分配角色,將交易處理和交易排序分開,提高了整個系統的交易吞吐量。Hyperledger Fabric 提出新的“execute-order-validate”架構來完成交易,支持通用編程語言編寫的智能合約。
Hyperledger Fabric 具有高度靈活性、保密性、彈性和擴展性。使其在教育、電信、醫療、供應鏈多個行業具有廣泛的應用,已有包括馬士基、沃爾瑪、聯想、郵儲銀行等大客戶在內的400多個項目(包括可研階段)。我國螞蟻金服、智鏈萬源、點融、知產鏈、醫潔(香港)、華為、旺鏈科技、小米、安妮股份等知名企業已成為Hyperledger Fabric服務提供商。
本文提出的基于區塊鏈技術的財政轉移支付系統,將財政轉移支付業務邏輯與區塊鏈技術深度融合,形成了無中心化組織、運轉高效、信息準確的解決方案。其以Hyperledger Fabric為基礎,整體結構分為三層,包括系統應用層、業務邏輯層和區塊鏈基礎平臺層,如圖1所示。

圖1 系統整體結構Fig.1 Overall system structure
系統應用層是采用Web 相關開發技術實現的用戶交互功能,與業務邏輯層采用HTTPS協議通信,實現用戶的登入/登出、基礎信息設置、轉移支付業務辦理、統計查詢、數據分析等用戶操作功能。業務邏輯層采用Java技術實現轉移支付業務的辦理流程、控制規則等業務邏輯,為系統應用層提供Restful 接口、調用Fabric-Java-SDK 實現轉移支付業務數據上鏈、并提供與其他系統通信的數據交換接口。區塊鏈基礎平臺層采用Hyperledger Fabric,主要提供SDK 接口、成員管理、共識服務、智能合約、通道隔離、P2P 網絡、區塊存儲等。SDK接口提供業務邏輯層的訪問接口,實現業務數據上鏈功能;成員服務控制轉移支付業務參與節點的加入和退出,為參與節點提供身份認證服務;共識服務采用Hyperledger Fabric 提出“execute-order-validate”過程來完成轉移支付業務交易過程,確保各參與節點保存轉移支付業務數據的一致性;智能合約采用JAVA語言編寫轉移支付交易邏輯,保證相關交易邏輯的自動執行;通道隔離將轉移支付業務涉及方組成單一通道,實現數據隔離和隱私保護;P2P 網絡采用Gossip 協議[19]完成交易數據廣播,保證同一通道內所有參與節點保存的交易數據是一致的;區塊存儲采用可以建立索引、具有高效查詢效率的CouchDB數據庫,實現轉移支付業務數據的存儲。
本文主要解決轉移支付項目庫管理和轉移支付批復下達業務的去中心化管理。以中央轉移支付資金為例,其業務管理方包括中央、省、市、縣四級行政區劃,如圖2所示。中央財政設立轉移支付項目,并分批下達至省級財政;省級財政將接收到的中央轉移支付資金細化分解后用于本級部門預算支出或對下級的轉移支付支出,其業務辦理結果接受中央財政的監督;市級財政將接收到的省級轉移支付資金細化分解后用于本級部門預算支出或對下級的轉移支付支出,其業務辦理結果接受中央、省級財政的監督;縣級財政將接收到的市級轉移支付資金細化分解后用于本級部門預算支出,其業務辦理結果接受中央、省級、市級財政的監督;在滿足以上業務特點的情況下,本系統為盡可能地降低系統網絡結構的復雜度,采用單一組織管理方式,將各級次行政區劃映射為組織內的Peer節點。其網絡結構模型,如圖3所示。

圖2 中央轉移支付業務流程圖Fig.2 Flow chart of central transfer payment business

圖3 系統節點架構圖Fig.3 Architecture diagram of system nodes
身份認證節點管理客戶端、中央省市縣等Peer節點、排序節點和系統用戶的注冊和注銷,為其頒發數字身份證書,從而實現節點之間數據傳輸的數字簽名和驗證。只有獲得證書的用戶才可調用Fabric SDK。中央省市縣等Peer節點部署鏈碼,提供背書和記賬功能。系統采用Kafka[20]共識機制,部署Kafka 集群及Zookeeper提升系統崩潰容錯和交易吞吐能力。
為保護各級財政轉移支付業務數據隱私,并實現必要的業務監管,本系統引入Fabric 建立的通道機制,共建立6類通道(圖3中虛線矩形所示)。
(1)中央-省通道:記錄該省轉移支付部門細化項目和批復部門業務數據,由中央節點和某省節點構成,全部節點為背書節點和記賬節點。
(2)中央-各省通道:記錄中央轉移支付項目及中央下達省級業務數據,由中央節點和全部省節點構成,可為提高背書效率,中央節點和隨機選擇的部分省節點為背書節點,全部節點為記帳節點。
(3)中央-省-市通道:記錄該市轉移支付部門細化項目和批復部門業務數據,由中央節點、某省節點和該省轄某市構成,全部節點為背書節點和記賬節點。
(4)中央-省-各市通道:記錄該省轉移支付項目及該省下達市級業務數據,由中央節點、某省節點和該省轄全部市構成,為提高背書效率,省節點和隨機選擇的部分市節點為背書節點,全部節點為記帳節點。
(5)中央-省-市-縣通道:記錄該縣轉移支付部門細化項目和批復部門業務數據,由中央節點、某省節點、該省轄某市和該市轄某縣構成,全部節點為背書節點和記賬節點。
(6)中央-省-市-各縣通道:記錄該市轉移支付項目及該市下達縣級業務數據,由中央節點、某省節點、該省轄某市和該市轄全部縣構成,為提高背書效率,市節點和隨機選擇的部分縣節點為背書節點,全部節點為記帳節點。
圖3 中客戶端提請轉移支付業務辦理申請后,經過圖4 所示共識過程,業務結果才會最終被記入區塊鏈賬本。

圖4 轉移支付業務辦理共識過程Fig.4 Consensus process of transfer payment business
(1)交易提交:客戶端收集轉移支付業務提案相關信息,并將其發送至由背書策略確定的背書節點。
(2)交易背書:各背書節點獨立調用鏈碼執行業務提案,對執行結果簽名后發送回客戶端。客戶端收集背書結果,直到滿足背書策略約定的條件時才會將業務提案標記為有效業務并創建相應的業務交易。
(3)交易排序:排序服務接收客戶端發送的業務交易,將同一通道內業務交易按照時間順序排序,按照約定的區塊最大容量或時間間隔生成區塊并簽名。
(4)交易廣播:排序服務將新生成的區塊廣播至通道內的記賬節點和背書節點。
(5)交易確認:記賬節點和背書節點對新區塊的交易進行背書策略驗證,并按時間順序執行“讀-寫沖突”檢驗。將未通過驗證的交易標記為無效后,記入本地區塊鏈帳本。
Hyperledger Fabric 將智能合約稱為鏈碼(Chaincode)。應用層鏈碼是運行在由背書節點進程中獨立的Docker 容器環境中應用程序,應用層鏈碼之間相互獨立,互不影響。在本系統中,轉移支付項目智能合約用于轉移支付項目的設立、修改、歷史查詢等功能,其主要數據要素如表1 所示。部門細化項目智能合約用于部門細化項目的設立、編輯、歷史查詢等功能,其主要數據要素如表2 所示。轉移支付批復部門智能合約用于轉移支付批復部門的登記、修改、歷史查詢等功能,其主要數據要素如表3 所示。轉移支付下達下級智能合約用于轉移支付下達下級的登記、修改、歷史查詢等功能,其主要數據要素如表4所示。

表1 轉移支付項目主要數據要素Table.1 Main data elements of transfer payment project

表2 部門細化項目主要數據要素Table.2 Main data elements of department detail project

表3 轉移支付批復部門主要數據要素Table.3 Main data elements of transfer payment approval department

表4 轉移支付下達下級主要數據要素Table.4 Main data elements of transfer payment approval subregion
數據存儲采用基于Key-Value存儲結構的CouchDb作為存儲媒介,將ID+時間戳作為key,序列化其他字段后的值作為value。
依據圖3所示網絡環境搭建測試環境,整個測試環境由26臺虛擬機組成,包括1個CA節點,1個中央節點,2個省級節點,4個市級節點(每省設兩市),8個縣級節點(每市設兩縣),3個排序節點,4個Kafka集群節點以及3個Zookeeper節點。虛擬機配置及各軟件版本如表5所示。

表5 測試環境配置信息Table 5 Configuration information of experiment environment
針對財政轉移支付業務,測試用例模擬了中央、省級、市級轉移支付項目各35 項,下達下級業務各40 次;省級、市級、縣級部門細化項目各20 項,批復部門業務各20次。其中中央轉移支付項目和資金下達結果如圖5所示,顯示了該系統的可行性。

圖5 中央轉移支付項目和資金下達結果Fig.5 Results of central transfer payment projects and funds approval
性能測試檢測在不同情況下系統每秒的交易吞吐量(TPS)。根據Androulaki 等[18]研究結果,當區塊大小為2M 時,Hyperledger Fabric 平臺各指標綜合表現最佳,因此該實驗固定區塊大小為2M。具體實驗方法是高并發調用智能合約,統計系統TPS變化。
如圖6 分別顯示中央轉移支付項目(CS1)、中央轉移支付下達(CS2)、市級轉移支付下達(CS3)、縣級批復部門(CS4)4 組實驗,每組實驗重復20 次的實驗結果。可以看出環境因素造成各組實驗統計結果略有差異,系統吞吐量保持在280~370 TPS之間。四類測試場景中,中央轉移支付項目表現出最好交易效率,平均為325 TPS;市級轉移支付下達表現出最差交易效率,平均為317 TPS,這與該業務涉及較多背書節點和記賬節點有關,整體來看本設計達到了較高的TPS。

圖6 交易吞吐量測試結果Fig.6 Testing results of TPS
本設計將區塊鏈技術與財政轉移支付業務深度融合,提出了一種基于區塊鏈技術的財政轉移支付系統方案,重塑了轉移支付業務流程,達成了由一方發起,多方背書的業務新流程,實現了一種業務高效辦理、數據安全可信、監督即時可行的轉移支付新模式。
在未來的工作中,將從以下兩個方面改進提升本設計方案:一是進一步調和數據防篡改能力和數據隱私之間的矛盾。例如,一方面增加中央-省通道節點數據,通過增加背書節點數量提升數據的防篡改能力,另一方面通過背書節點僅保持業務數據哈希值而不保持業務原始數據的方式提升數據隱私性。二是引入國密算法,通過改造Hyperledger Fabric 相關接口,使本方案實現支持國密算法的能力,從而提升整個系統的可控性。