王方紅 黃文彪
(浙江工業(yè)大學之江學院 浙江 紹興 312030)
區(qū)塊鏈是一組不可變的帶時間戳的數據記錄,由不屬于任何單個實體的計算機集群管理的分布式數據庫[1]。這些塊中的每一個塊都是按時間順序連接成鏈,并使用加密算法來彼此保護并綁定。由于它是一個共享且不可變的分布式數據庫,因此其中的信息對任何參與方都可以看到。各個節(jié)點之間須要相互監(jiān)督、協(xié)同工作,既沒有中心權威節(jié)點導致的權利集中,也能夠避免在去中心化情況下,個別節(jié)點的欺詐行為,從而保證數據的安全。也正因其去中心化、不可篡改、可追溯等屬性,區(qū)塊鏈技術被廣泛應用于相互協(xié)作、打通數據孤島等典型場景,在金融、物流、供應鏈、物聯(lián)網等產生了極大影響[2-3]。
目前國內外都在積極開展關于區(qū)塊鏈網絡的應用和研究,但其在精準扶貧方面的實踐和認識還比較少。在此將設計開發(fā)基于區(qū)塊鏈的金融精準扶貧系統(tǒng),結合區(qū)塊鏈技術的優(yōu)點來解決傳統(tǒng)金融扶貧系統(tǒng)中存在的問題,為“區(qū)塊鏈+精準扶貧”的發(fā)展和推廣打下堅實的基礎,并探索區(qū)塊鏈技術在我國金融精準扶貧領域的應用場景,以期為我國金融扶貧攻堅提供支持[4]。
智能合約是一段可以運行在區(qū)塊鏈平臺的分布式計算機程序代碼[5]。它能夠實現(xiàn)價值的存儲、傳遞、控制和管理,為基于區(qū)塊鏈的應用提供了創(chuàng)新性的解決方案[6]。如果說數據、網絡和共識三個層次作為區(qū)塊鏈底層“虛擬機”分別承擔數據表示、數據傳播和數據驗證功能的話,智能合約則是建立在區(qū)塊鏈虛擬機之上的商業(yè)邏輯和算法,是實現(xiàn)區(qū)塊鏈系統(tǒng)靈活編程和操作數據的基礎[7]。
Hyperchain平臺架構圖如圖1所示。
圖1 Hyperchain平臺架構工作流程
用戶模塊:本系統(tǒng)所涉及到多方協(xié)作參與,相關參與方與所能進行的操作如表1所示。
表1 系統(tǒng)角色和相關功能
權限模塊:該系統(tǒng)需要細粒度的權限控制,平臺管理員負責審核各個機構注冊的管理員,同時分配全量權限,機構內管理員擁有將當前擁有權限再次分配權,如此遞推。
扶貧貸款模塊:經辦網點在頁面上填寫申請信息,上傳相關附件,提交申請,并在頁面上查看小額貸款臺賬列表(列表的數據支持狀態(tài)篩選和分頁瀏覽),點擊單行數據,查看貸款申請詳細信息,并查看當前申請狀態(tài)(如果被拒絕,則顯示狀態(tài)和拒絕理由)??傂辛闶鄄康卿洸榭磁_賬詳情時,進行對該申請的審核,如果拒絕,須要填寫拒絕理由。
扶貧貼息模塊:由經辦網點成功發(fā)起的貼息申請會以貼息人員匯總表的形式呈現(xiàn)給審核機構(總行零售部、脫貧辦、省農業(yè)廳和省財政廳、市財政局)。點擊列表單行,顯示貼息詳細信息和貼息審核流程。
邏輯結構:為了保證扶貧系統(tǒng)中數據的安全性和高效性,本扶貧系統(tǒng)結構主要分為四層,如圖2所示。
圖2 系統(tǒng)結構模型
物理結構:參與人員通過防火墻接入扶貧系統(tǒng)前置負載均衡器訪問應用系統(tǒng),節(jié)點間形成P2P網絡進行節(jié)點間通信,如圖3所示。
圖3 物理架構圖
數據架構:Hyperchain有關于數據架構的設計圖如圖4所示。
圖4 數據架構圖
整個數據架構自底向上可以分為以下幾層:
(1) 最底層的存儲引擎支持海量存儲和數據災備。
(2) 存儲體系保證數據安全存儲和歷史數據歸檔。
(3) 強一致的算法保障數據一致性。
(4) 多角色的節(jié)點備份及部署支持多用戶大并發(fā)和數據實時備份和恢復。
(5) 全方面的參數驗證支持異常數據過濾。
智能合約設計是區(qū)塊鏈系統(tǒng)中非常重要的環(huán)節(jié),須要確定哪些數據上鏈以及合約對外接口,并留下數據埋點,用于后續(xù)合約升級。類比于數據庫,智能合約提供的結構體相當于數據庫表,mapping映射關系相當于外鍵關聯(lián),上鏈的時候,預留extra字段,用于后續(xù)的擴展[8]。
1) mapping設計:類似于Java中的Map,存儲的是鍵值對,表2是本系統(tǒng)合約涉及到的部分mapping。
表2 合約主要的映射關系
當需要雙方關聯(lián)且有數據的時候,我們采用兩重映射,如貼息狀態(tài)到趣鏈用戶地址到貼息人員匯總表主鍵數組映射,mapping(uint=>mapping(address=>uint[]))_loanState2hyperUserAddress2DiscountStaff;即表示該關系類型。
2) 合約方法調用:與合約部署類似,也需要使用公私鑰對交易進行簽名,然后調用相應的json-rpc接口,完成合約方法調用。合約部署和合約方法調用都屬于區(qū)塊鏈平臺上面的一筆交易,需要平臺各節(jié)點達成共識,才算調用成功。合約方法的調用流程如圖5所示。
圖5 合約方法調用流程
對要調用的合約方法名做一次SHA3- 256哈希,取哈希結果的前八個十六進制字符作為methodId。另外,合約方法的入參也需要經過特殊的處理,按照一定的規(guī)則編碼成二進制串,用十六進制表示。methodId和合約方法入參編碼而成的十六進制串組合在一起,就是交易信息中的payload。
3) 合約升級。合約升級分為以下兩種情況:
(1) 不須要修改原先已經定義好的數據結構,包括結構體、數組等,而是在已經定義好的成員變量后面新增成員變量,包括或者不包括修改了合約方法。
(2) 修改了合約數據結構。
不同角色對貸款申請表(或貼息)的每一步審核操作會記錄(操作時間、操作用戶、操作類型、操作結果)在區(qū)塊鏈中,每個用戶都能查看到該筆申請(或貼息)的整個操作流水,并在頁面上給出直觀的體現(xiàn)。
以政府和銀行分別為兩條主線,可對扶貧資金進行可追溯查詢,如圖6所示,根據每筆扶貧款項的上鏈Hash等數據,可以可視化地精準定位每一筆扶貧款項的具體流向。
圖6 資產的追溯流程
不同經辦網點上傳的數據是相互隔離的,上層機構能看到所有的記錄,但是不同經辦網點只能看到自己上傳的數據,無法看到其他網點的數據。
上一級審核未完成前,數據不會到達下一級。當上一級審核結束,數據同步到其他節(jié)點,下一級才有權限讀取。
當脫貧辦貼息審核通過進行確認的同時,相同界面展示多個參與方(省財政廳、省農業(yè)廳)的辦公電腦同時彈出審核通知,兩邊辦公人員同步進行審批。
省農業(yè)廳及省財政廳同時登錄查詢數據,展示數據詳情界面,以及當前審核狀態(tài),所作更改流入區(qū)塊鏈,分發(fā)到其他節(jié)點。
傳統(tǒng)的辦公模式中,每個機構都是獨立不互聯(lián)的,通信通過紙質文件的形式在各個機構之間傳遞。
接入區(qū)塊鏈后,每個機構一個獨立節(jié)點,各個機構只需要在自己的節(jié)點上進行數據的讀取和存儲,節(jié)點之間通過區(qū)塊鏈自動進行數據同步和共識,打破了機構之間的通信屏障,既保證了數據一致性,又得到了數據讀取的高效性。
本項目是基于區(qū)塊鏈的Web應用系統(tǒng),通過智能合約,改進現(xiàn)有流程和處理邏輯,與傳統(tǒng)的Web項目的測試流程不同,需要先進行需求分析、評審,確定需求后,開始做系統(tǒng)設計,包括智能合約設計和業(yè)務流程設計,同時評審測試用例。
基于測試用例的開發(fā)模式,有助于在編寫時的邏輯判斷,以及開發(fā)人員的自測,好的測試用例需要覆蓋各種邊界問題,便于檢測系統(tǒng)可能存在的問題。
圖7為系統(tǒng)部分測試用例的展示,以思維導圖的形式對外提供,方便測試流程和驗收。
圖7 區(qū)塊鏈精準扶貧平臺部分測試用例
合約測試和接口測試之后,須要對系統(tǒng)進行一輪壓測,檢測系統(tǒng)的吞吐量。壓測工具選擇的是jmeter,Apache的一個頂級開源項目,功能很強。下面展示的是錄入交易確認信息接口的壓測數據。應用服務采用4核8 GB配置,區(qū)塊鏈節(jié)點同樣采用4核8 GB配置。壓測時開啟200個線程,持續(xù)時間是2分鐘。圖8是報價信息錄入接口的壓測數據,可以看出,在這種情況下系統(tǒng)的TPS是73.3,吞吐量并不高。
圖8 區(qū)塊鏈精準扶貧平臺部分測試
壓測前,應用服務器內存使用率60.4%,CPU使用率1.1%。區(qū)塊鏈服務器內存使用率60.8%,CPU使用率1.5%。
圖9 壓測前服務器內存、CPU使用情況
壓測時,應用服務器內存使用率61.2%,CPU使用率38.8%。區(qū)塊鏈服務器內存使用率98.4%,CPU使用率47.1%。
圖10 壓測時服務器內存、CPU使用情況
所以,壓測使用的區(qū)塊鏈服務器的內存大小是主要瓶頸,如果使用16 GB大小的內存,壓測的TPS將有一定程度的提高。
將區(qū)塊鏈扶貧系統(tǒng)與同類型系統(tǒng)對比,如表3所示。
表3 區(qū)塊鏈扶貧系統(tǒng)與同類型系統(tǒng)對比
由表3可知,區(qū)塊鏈精準扶貧方式保證金融數據不易被修改、系統(tǒng)流程透明、扶貧用戶隱私難被泄露、扶貧資金全程監(jiān)管、金融服務效能高等。尤其是在對貧困戶的隱私保護上,由于將對每個貧困戶的操作轉為對一個地址的操作,可以有效保證貧困戶隱私不被泄露。
本系統(tǒng)為了解決傳統(tǒng)扶貧系統(tǒng)中存在的數據風險和信息流動問題,創(chuàng)新地采用區(qū)塊鏈作為信息的載體。區(qū)塊鏈是近幾年流行起來的一種分布式數據存儲技術,具有可追溯、防篡改、隱私保護、數據透明且安全性高的特點。通過得到的數據分析結論以及與同類型系統(tǒng)對比,得出了本系統(tǒng)具有效率高、易監(jiān)管、隱私保護強的特點。由于區(qū)塊鏈較高的金融屬性,金融行業(yè)逐步會加大對區(qū)塊鏈技術應用部署的投入,未來會看到區(qū)塊鏈與更多的金融場景結合落地。但區(qū)塊鏈始終只是技術,只有當技術應用到實地場景的時候,才能最大限度地發(fā)揮其價值。