沈 斌,焦玉良,何洪濤,陳業青
武漢工程大學電氣信息學院,湖北 武漢 430205
政府采購融資,是指以政府采購作為平臺幫助中小企業融資,政府采購項目中標、成交的中小企業供應商[1-3],以中標、成交通知書和政府采購合同作為憑據向銀行貸款,銀行向通過授信審查的供應商提供資金支持,解決在政府采購履行合同過程中的資金困難[4-5]。中小企業普遍資產規模小、有效抵押物少、抗經營風險能力相對薄弱,其融資難問題一直十分突出[6-7]。近年來,財政部相繼出臺了《政府采購支持中小企業發展暫行辦法》《關于開展政府采購信用擔保試點工作的通知》等政策措施[8-9],工信部、人民銀行等相關部門也紛紛出臺支持中小企業融資的政策措施,多策并舉解決中小企業融資難問題[10-12]。
融資業務中,信用可靠性是極為關鍵的問題,人行中征平臺的接入部分保證了企業(包括自然人)征信的可靠性,但政府采購預算、中標金額、合同實際金額、企業抵押物(包括應收賬款、不動產權證、債權等)等信息源自多個部門的多個系統,大量數據需要從線上落地、人工處理后再到線上,信息處理鏈條較長、中途存在數據被惡意篡改的風險,銀行和財政如果無法及時發現,將導致巨大的金融風險[13]。如果采用通常的方法進行核實查證,又會出現交易周期長、審核環節多、融資成本高等問題,不符合中央及監管部門的政策性要求[14-15]。在這種融資模式中,每個參與方都有自己的賬本,在交易發生時各自更改;協同各方會導致額外的工作即中介等附加成本[16-17]。業務交易中,“合同”重復分散在各個參與方,造成整體業務流程的低有效性;整個業務網絡依賴于1 個或幾個中心系統,整個商務網絡十分脆弱[18-19]。
針對此問題,引入區塊鏈的供應鏈技術,使用分布式賬本,使參與方節點各自持有相同的賬本,在業務發生時,通過工作量證明(proof of work,POW)共識算法確定記賬節點,該節點將生成的區塊數據進行廣播,由各參與節點驗證后進行記賬。保障流程中的區塊鏈分布式數據存儲和存證,可提了高供應鏈金融過程中數據的真實性。
系統分為2 個模塊:后臺管理模塊和交易記賬模塊。系統結構圖如圖1 所示。

圖1 系統結構圖Fig.1 System structure diagram
后臺管理模塊采用SpringBoot+SpringSecurity+Mybatis + Layui 搭建,系統采用MVC 模式構架,實現前后端分離。圖2 為政府采購融資平臺系統后臺頁面,系統支持用戶管理、角色管理、供應商信息管理、中標信息查詢、合同信息推送、合同支付申請、合同融資信息查詢以及模塊查詢。

圖2 系統后臺頁面Fig.2 System background page
交易記賬模塊采用SpringBoot+WebSocket+P2P 搭建分布式賬本,引入哈希算法、數字簽名、工作量證明、排序機制以及智能合約實現業務背書,實現全局狀態數據庫的更新到達共同記賬的目的,每筆業務交易(實際上還包括政府采購合同、融資合同簽署、政府采購黑名單信息、合同履行評價報告等)擁有不可篡改性,使系統的可維護性、安全性、重用性和可拓展性都大大的得到提高。超級賬本支持多賬本,每個正本數據是分開儲存的。每個賬本擁有自己的LevelID,確保賬本的唯一性,交易數據通過channel 機制實現不同業務交易數據的隔離,保證了交易數據的安全性和一致性,數據通過公私密鑰加密,保障各節點數據隱私。系統保障財政、融資企業、銀行三方節點業務數據、以及中標公告、采購合同、融資合同、抵押信息等信息真實可信,使融資業務安全高效,能及早發現避免融資風險、法律風險和虛開增值稅發票風險。
每一個區塊block 基本信息單元做如下描述:
(1)Index:區塊的索引值,一般從0 開始。
(2)TimeStamp:時間戳,創建區塊的時間,決定區塊的順序。
(3)Hash:數字指紋,唯一標識數據的值,有固定長度,系統采用SHA-256加密算法,長度為64位。加密數據的微小改動會導致Hash 值的巨大變動,由于其不可逆特性保障了數據的安全。
(4)Previous Hash:前置Hash,前一個區塊的Hash 值,通過Hash 值的銜接將每個單獨的區塊串聯為一個交易區塊鏈。創世區塊的前置Hash 為0。
(5)Data:存儲交易數據。Hash 值依賴Data數據產生,改變Data 中的數據新生成的Hash 值也會改變,導致從該區塊后的所有區塊將無法通過其余節點校驗而級聯失效,也就導致了該節點記賬失效,保障了區塊中的數據的不可篡改。
(6)Nonce:有效散列數。節點通過“挖礦”尋找一個數值N,N滿足N+ Index + PreviousHash +Timestamp + Data 經加密算法生成的新的Hash 值滿足規定條件。這個N就是“礦”值,最先計算出該值的節點將獲取該次交易的記賬權。N值有“難計算、易驗證”的特性。
區塊中一般會設置Hash 的計算難度,規定滿足某一特定條件的Hash 才會被其他節點承認從而記賬。一般用設置“前導0”(Hash 散列的前n位為0 就稱前導0 為n,n<64)個數的方式來設置“挖礦”難度,前導0 個數越多,挖礦難度越大,那么要強行篡改區塊記錄的難度就越大。節點生成的Hash 值只有滿足系統預先設置的前導0 個數才能算一個有效Hash,被其他節點驗證承認。
圖3是將政府采購融資平臺數據庫的供應商信息和融資業務數據后臺業務邏輯利用區塊鏈技術進行改造,利用分布式數據存儲、加密算法、工作量證明以及排序機制等技術的基礎上,對融資過程所涉及到的各個環節、各個企業的各類信息進行收集與存儲,銀行對企業征信信息驗證以及共識算法使得眾多數據信息能夠不易篡改,也有助于企業融資。

圖3 區塊鏈設計結構圖Fig.3 Blockchain design structure diagram
1.3.1 供應商信息區塊
(1)供應商身份信息
當供應商通過平臺注冊時,系統首先會根據供應商提供的信息核查供應商信息,校驗通過后,供應商身份信息封裝在區塊的Data 中,相關字段如表1 所示。

表1 供應商身份信息Tab.1 Supplier identity information
(2)供應商歷史違規信息
銀行節點和業務會計可通過供應商表現對供應商進行評價,如有違規會影響供應商信用等級,違規信息和評價信息也會封裝在區塊中。主要的字段如表2 所示。

表2 供應商違規信息Tab. 2 Supplier violation information
1.3.2 融資業務區塊
(1)中標公告信息
企業通過政府渠道采購招標后會生成中標信息,中標信息會在區塊中存證。在區塊中的存儲參數包含信息如表3 所示。

表3 中標公告信息Tab.3 Bid winning announcement information
(2)融資成交單信息
融資成功會生成融資成交單,成交單會在區塊中存證,成交單信息包含的參數如表4 所示。

表4 融資成交單信息Tab.4 Financing transaction order information
對于政府采購融資平臺的供應商身份、供應商歷史違規、采購計劃、中標公告、合同和融資成交單等重要信息進行存儲在每個區塊中,將這些數據定義為交易信息tradeData,同時系統給定一個難度值D。當對數據進行區塊存儲時,需要尋找滿足條件的隨機數值Nonce,使得通過哈希計算得到區塊的哈希值blockHash 低于目標難度值D,Pow 共識算法表述為:
blockHash=Hash(tradeData,Nonce)<<D
由于哈希算法的輸入敏感和抗碰撞性,供應商和系統用戶對數據進行寫入節點時需要不斷的調整隨機數值Nonce,通過這種計算資源的方式達到寫入節點數據的工作量證明(身份驗證)。寫入數據稱為“工作者”,驗證節點信息稱為“驗證者”,其中,工作者需要進行一定難度的哈希計算得到一個結果,而驗證者通過簡單的計算就可以判斷工作者是否做了對應難度的計算,從而達到了數據的不可篡改性和該機制有效的抵御了分布式系統中的女巫攻擊問題。
業務數據將會封裝在區塊中,通過SHA-256算法生成滿足前導0 條件的Hash 散列值和隨機數Nonce 值。Nonce 值挖取采用POW 工作證明機制,通過大量的迭代計算得出工作量證明值。圖4為創建節點的算法流程,通過判斷nextHash 值是否滿足前導0 條件進行“挖礦”產生節點信息。

圖4 節點算法流程圖Fig.4 Node algorithm flowchart
計算出滿足條件的Hash 散列值后,系統調用背書策略驗證,判斷生成的Hash 值是否正確,生成新的交易區塊,當新生成的滿足條件:①區塊索引大于最新區塊索引;②業務交易流水號不重復時,通過廣播機制實現區塊上鏈賬本更新。特定的業務會觸發智能合約機制,強制執行特殊操作。
節點永遠認為最長鏈才是有效的區塊鏈并將此鏈作為主鏈,區塊上鏈必須滿足最長鏈機制。當有兩個節點同時計算出工作量證明值并同時將生成的區塊向全網廣播時,兩個區塊都作為鏈的延伸,會導致區塊鏈分叉,分叉后,繼續記賬會產生鏈條競爭子鏈。競爭子鏈中誰的工作量更多,誰就能成為新的主鏈,另外一條鏈會作為備用鏈存儲。備用鏈和主鏈會因為后續業務改變工作量而交換。節點中的最長鏈會替換短鏈。圖5 為系統背書流程圖,當所有的節點達成共識并更新分布式共享賬本。

圖5 系統背書流程圖Fig.5 System endorsement flow chart
系統運行在Windows 環境下,JDK 版本使用Java1.8,政采融資平臺系統運行端口為8080,Socket 端口為8081,數據庫使用Mysql5.7 版本,數據區塊的信息以JSON 格式前后臺交互,并存儲在分布式數據庫中,系統通過外網訪問。在對供應商信息和融資業務數據加入區塊鏈技術進行改造后,數據庫中供應商身份信息、供應商歷史違規信息、采購計劃信息、中標公告信息、合同信息、融資成交單信息等,使用哈希算法和數字簽名對數據加密,將數據存儲在分布式賬本上,利用工作量證明機制防止信息被篡改,通過P2P 廣播新增區塊信息至每個節點保證信息同步。在企業中標政府采購項目后,利用人行的中征平臺企業征信報告和存儲在區塊鏈的以往信息,各大銀行可以放心對企業貸款,簡化了中小企業融資流程、降低了融資難度和成本。
圖6為后臺廣播新增供應商區塊信息,添加新的區塊信息后,系統后臺會向各個節點廣播新區塊信息。

圖6 廣播新增供應商區塊信息Fig.6 Broadcasting new supplier block information
系統運行后對供應商信息進行上鏈測試,各節點分別生成3 個不同的賬本信息。生成的供應商信息鏈區塊數據包括時間、前置Hash、塊Hash和Nonce。
通過對改造前后系統供應商歷史違規比較,在較長時間使用下,利用區塊鏈技術的政府采購融資平臺大大降低了供應商違規次數,側面說明了數據的不可篡改和安全性,圖7 表示改造前后系統供應商歷史違規比較結果。

圖7 供應商違規次數比較Fig.7 Quantitative comparison of suppliers violations

表5 供應商信息鏈Tab.5 Chain of suppliers information
就融資業務而言,對比了區塊鏈改造前后系統采購計劃因信息不一致而遭駁回的數量(見圖8)??梢钥吹接捎诹鬓D中的數據一旦被篡改即被發現,不再需要等到流程終末期,因此供應商違規判定的總量明顯減少、相應的業務流程回退(作廢)次數也隨之降低,由此顯著提升了融資業務辦理效率。

圖8 采購計劃被駁回次數比較Fig.8 Quantitative comparison of purchase plan rejections
本文對中小企業傳統融資方式進行改進,提出以區塊鏈技術為依托的政府采購融資平臺,交易參與者基于共識機制來保證交易數據是共同驗證,交易數據不可篡改、可溯源,滿足了財政、采購辦和供應商業務需求以及政府監管和審計。系統魯棒性良好,支持高并發。
在政府采購環節中為企業做了數據依托,緩解了中小微企業融資難和信息不對稱等問題。研究了聯盟鏈在融資平臺的應用,并且加密算法僅僅使用了Hash 算法,后續將研究在公有鏈上對信息的存儲加密,使用更加安全的加密算法,保證除了在融資平臺上的企業征信數據的局部共享外,在其他系統也可以保證信息的安全性和準確性。