李 鵬,牛保寧,趙羽龍
(太原理工大學 信息與計算機學院,山西 晉中 030600)
私募機構通過探索項目、成立私募基金、吸引投資人、促成項目成功、實現資產增值,來獲取收益。一方面,私募基金把項目信息和投資人信息看作核心資產,在其價值得不到體現的情況下,不愿意與其它機構共享。另一方面,項目的探索和投資人的資質認證需要投入高昂的成本,對于規(guī)模大的項目,單個機構無法支撐,需要多個彼此信任的機構投資人共同推動。這兩個因素促使私募基金有共享項目信息和投資人信息的意愿。因此,在保證信息價值實現的前提下,實現信息的共享,是困擾私募基金行業(yè)發(fā)展的一個痛點。
利用區(qū)塊鏈及其衍生技術存儲公平性和防篡改的特性有望解決私募基金行業(yè)痛點。本文為解決私募基金信息共享現存痛點基于以太坊、智能合約、星際文件系統和加密等技術提出以下解決思路:
(1)私募機構、投資人、監(jiān)管方之間搭建以太坊聯盟鏈,為業(yè)務數據構建實體。數據在企業(yè)端加密使用區(qū)塊鏈和IPFS存儲和傳遞,將聯盟鏈區(qū)塊摘要信息定期備份至以太坊公有鏈,提升安全性和降低直接采用公有鏈系統的運行成本,有利于數據的驗證和虛假數據的溯源;
(2)結合私募基金業(yè)務,機構間通過智能合約對接,定制化激勵方案,利用加密數字貨幣和貢獻度作為后期共享交易的獎勵和籌碼,實現信息的資產化,促進信息的流通性。
自2009年區(qū)塊鏈[1]誕生以來,隨之衍生出各類具有對等存儲、自主分布式管理特性的存儲技術,被廣泛地應用到身份管理和隱私管理等領域。以太坊[2,3](Ethereum),作為區(qū)塊鏈2.0首個可編程的分布式應用(DApp)平臺,以太坊虛擬機(ethereum virtual machine,EVM)和智能合約的引入為DApp的開發(fā)提供了便利。星際文件系統[4,5](interplanetary file system,IPFS)是典型的去中心化、點對點的分布式文件系統,將不同的計算機采用統一的文件系統構建成高吞吐量、高可用、基于內容尋址的集群,解決了區(qū)塊鏈上存儲大數據成本高的問題。
目前針對信息的共享方案與區(qū)塊鏈等技術相結合在經過探索和研究后已經取得了一些成果。任延輝、劉煒等[6,7]使用以太坊構建私有的去中心化的醫(yī)療數據訪問與權限管理系統,實現了病人對自身醫(yī)療數據的使用權,自主對醫(yī)療數據共享,該系統將所有的醫(yī)療數據采用中心化方式存儲,僅將權限記錄寫入合約,導致系統過度依賴中心化存儲,并未有效避免源數據的安全風險。Wang等[8]基于公有IPFS、公有鏈以太坊和智能合約等技術實現了分布式存儲系統和共享方案,雖然保證了數據的安全性,但增加了存儲成本和共享成本以及降低的數據的隱私性。譚海波等[9]通過公有鏈、聯盟鏈、智能合約、非對稱加密和IPFS等技術實現了數字檔案的保護、驗證和恢復,該方案相比于其它信息共享模型明顯具備一定的優(yōu)勢,在數據可靠安全共享的前提下,降低了系統的維護成本,但由于缺少激勵方案使檔案機構的共享主動性下降,造成聯盟鏈的穩(wěn)定運行受到阻礙。以上研究均為私募基金區(qū)塊信息共享方案提供了可借鑒的思路和方案,對以上方案實例比較見表1。
表1 信息存儲技術方案對比
此外,當前區(qū)塊鏈技術在私募基金領域的研究較為豐富。周凱[10]指出私募基金行業(yè)信息不對稱性、流通性匱乏的痛點,分析區(qū)塊鏈技術應用于私募基金行業(yè)的應用性和可行性。王向輝等[11]為解決私募基金電子合同易被篡改的問題,提出了利用區(qū)塊鏈將不同階段的合同以及簽名散列碼存儲和分發(fā),并實現了三方合同的全程電子化監(jiān)管和防丟失、可追溯的功能。
私募基金行業(yè)為實現數據安全存儲也取得實質性的突破和落地的應用方案。肖風等[12]將區(qū)塊鏈存證技術運用于信托管理,對重要數字資產直接通過哈希處理生成唯一不可逆推的特征值并上鏈,用于原始數據正確性校驗。但是原始數據仍然采用中心化存儲,無法保證數據的安全,同時將數據存放在公有鏈增加了運行和維護的成本。馬小峰等[13]認為金融行業(yè)由于信息不對稱導致的信任問題可借助區(qū)塊鏈技術得到有效解決,給出了一個基于聯盟鏈的金融平臺架構設計方案,設計業(yè)務鏈和數字資產鏈彼此隔離的兩條鏈。但該方案對原始數據并未采用加密處理和有效的聯盟節(jié)點數量導致方案仍然存在安全性和穩(wěn)定性等隱患。
區(qū)塊鏈用于解決私募行業(yè)信息封閉和內容可信性等問題成為主要趨勢,但由于私募行業(yè)基于供需模型[14],共享必然會引發(fā)資金流失或者收益降低等問題,比如:項目信息共享造成其它投資方搶占市場、投資人信息共享造成投資人流失。對于目前的很多研究成果,存儲方式和共享渠道已不再是難點,但很多研究并未深入探討私募行業(yè)如何從根源上解決原始數據的安全問題和提出共享激勵方案。
本文設計的私募基金區(qū)塊鏈信息共享方案,主要通過智能合約實現身份認證、信息定向共享,激勵機制提升共享積極性,數字簽名技術和IPFS解決安全存儲問題。在實現信息共享的同時較大程度上保證了信息的隱私性和安全性,并降低存儲成本。本章節(jié)主要介紹方案整體架構和運行機制、合約架構和共享方案的具體業(yè)務邏輯等。
本文主要研究如何利用區(qū)塊鏈以及衍生技術完成共享方案的設計和應用,為此,本文首先設計了私募基金區(qū)塊鏈信息共享方案的體系架構。如圖1所示,該方案體系架構自下而上主要分為4部分:以太坊和IPFS構建的數據存儲層、智能合約和Web3 J組合中間件、對外提供的系統服務層、私募機構聯盟。
圖1 方案體系架構
私募基金行業(yè)對系統的需求決定了系統的使用者,主要包含了各私募機構的基金管理人、投資人、監(jiān)管人員;數據存儲層主要由以太坊聯盟鏈、公有鏈、私有IPFS和加密服務接口構成:私募機構以太坊節(jié)點和IPFS節(jié)點分別通過約定共享genesis.json和swarm.key在完成身份校驗后加入聯盟,將聯盟鏈區(qū)塊摘要信息根據動態(tài)調整周期寫入以PoW作為共識機制的公有鏈,所有信息公平對等的存儲到各機構的聯盟節(jié)點中,實現信息的安全存儲;中間件主要由智能合約和Web3J組合而成,通過分析實際業(yè)務(機構認證、共享流程、基金去向和收益等)構建符合實體模型的智能合約,永久上鏈,利用Web3J實現后端業(yè)務和智能合約數據的讀寫,為系統服務層提供基礎鏈上信息交互功能;系統服務層使用分布式應用(DApp)架構,對外提供RESTful接口,接口內部調用由中間件提供的合約交互功能,并結合業(yè)務進一步封裝實現對外數據讀寫的接口;機構聯盟提供主要權威節(jié)點,為聯盟提供服務并接受由系統服務層的權限認證、項目和投資人信息讀寫、共享、校驗等服務。
傳統的區(qū)塊鏈由于結構特性導致存儲和查詢效率低,并不適合存放文件類型的數據,所以該系統的文件存儲采用IPFS私有集群存儲方案。為保證原始文件的隱私性和安全性,采用硬件加密方式由硬件加密服務器對文件加密后存儲至IPFS,然后將索引追加至聯盟鏈所運行的智能合約作為文件檢索的依據。同時,在以太坊聯盟節(jié)點中設置定時任務,將聯盟區(qū)塊摘要信息定期寫入公有鏈。
系統運行機制如圖2所示,整個系統的運行設備包括:IPFS服務器、以太坊聯盟節(jié)點、公有鏈節(jié)點、原始數據服務器(內網)、硬件加密服務器、Web服務器。
圖2 私募機構設備架構及運行機制
寫入請求到達Web服務器時,工作流程如下:
(1)由Web服務器對寫入字段和文件進行校驗,驗證通過進入步驟(2),當驗證失敗直接返回錯誤信息;
(2)將原始數據上傳至原始數據服務器,根據文件數量通過硬件服務器生成新的公私鑰列表和生成原始文件哈希列表;
(3)分別使用私鑰對文件數據加密,并同步上傳至IPFS服務器,并映射至硬件加密服務器;
(4)將加密文件列表(原始文件哈希、加密文件摘要信息、IPFS地址)整合為JSON再次加密上傳至IPFS,將最終JSON的IPFS地址寫入以太坊聯盟鏈;
(5)若聯盟鏈節(jié)點區(qū)塊符合周期,將區(qū)塊摘要信息寫入批量寫入公有鏈。
讀取請求到達Web服務器時,工作流程如下:
(1)由Web服務器對請求進行校驗,驗證通過執(zhí)行步驟(2),反之,返回錯誤信息;
(2)將通過以太坊節(jié)點獲取JSON加密文件JSON的IPFS地址;
(3)通過IPFS地址向硬件服務器請求公鑰并進行文件解密;
(4)依次對原始文件哈希與解密文件哈希進行比對,若文件哈希一致,則證明文件未被篡改并返回文件預覽地址,反正,進入步驟(5);
(5)驗證聯盟鏈區(qū)塊摘要信息和公有鏈區(qū)塊備份是否一致,若一致,將文件錯誤信息返回,反之,則返回區(qū)塊信息錯誤。
所有私募機構可選擇性搭建自身的應用服務器,為了防止聯盟節(jié)點數量過少而產生數據安全問題,建議私募機構成員搭建自身聯盟鏈節(jié)點,降低數據篡改風險。
該方案所使用的設計思路主要基于以太坊是一個擁有智能合約的公共區(qū)塊鏈平臺,提供去中心化的以太虛擬機處理點對點合約,可靈活的使用常規(guī)模式進行DApp的開發(fā),通過對業(yè)務抽象化,設計存儲模型和符合業(yè)務邏輯的智能合約構成方案的底層架構,整個合約框架分為引用合約和信息存儲合約,引用合約采用保存信息存儲合約地址的方式,防止系統運行過程中身份丟失、信息泄漏和功能替換等問題出現時增加合約部署難度和成本。整個合約架構設計如圖3所示,主要包含的智能合約以及功能如下:
(1)投票管理合約(vote manage contract,VMC),全局共享的合約,提供了投票功能,記錄了所有的投票記錄。當聯盟機構申請加入聯盟,生成永久聯盟身份信息和可變狀態(tài)量(VOTING,FINISHED,FAILED)記入VMC,當投票狀態(tài)轉變?yōu)镕inished時,代表成功加入聯盟,通過系統提供的身份驗證IDC接口完成設備和運行環(huán)境的自動化部署。
(2)機構成員管理智能合約(institution member manage contract,IMMC),全局共享變量,存放了所有合格機構的信息和身份標識。每個成員機構在成功通過投票并加入聯盟時,會自動創(chuàng)建相關的管理合約(Manage Contract)以及相應的下級子合約:存儲合約(Store Contract)和共享合約(Share Contract)。
(3)基金項目、文件、投資人管理合約(Project、File、Investor Manage Contract,PMC/FMC/IRMC)屬于每個機構成員的專屬合約,用于將數據在安全隔離存儲時可提供共享服務,采用所有數據自我治理的方式進行授權訪問,只有訪問者通過身份的確認或者管理員確認授權之后才能對相關成員子合約中的數據進行訪問和更新操作。
圖3 系統合約架構
(4)項目、文件、投資人信息存儲子合約(Project、File、Investor Store Contract,PSTC、FSTC、IRSTC)和項目、文件、投資人共享合約(Project、File、Investor Share Contract,PSAC、FSAC、IRSAC)主要用于記錄業(yè)務邏輯所需要的項目信息、文件數據、合格投資人的認證信息,整個方案所提供的共享信息,均來源于這些底層合約。由于數據的隱私性和重要性,為保證數據的安全性,所有的數據都被二次加密存儲,只有在被授權的情況下才可以獲取到合約數據,然后將數據解密讀取。即使在IPFS中獲取到加密之后的數據,在沒有獲得公鑰的情況下仍無法讀取到原始數據。
(5)功能合約(function contract,FC)主要提供身份校驗和共享功能,操作用戶通過身份校驗后可對自身合約數據共享,避免文件依賴關系出現錯誤,導致數據的泄漏。
對于整個聯盟平臺,系統并非全部對外開放,部分功能需要在獲取數字身份的認證之后才能訪問。項目初始團隊維護私募基金管理系統網絡,并由創(chuàng)始團隊啟動初期節(jié)點,初始節(jié)點構成最早的管理委員會,后續(xù)聯盟成員可以由管理委員會和已加入機構共同通過投票決定,機構在獲取數字身份時需要經過以下流程。
私募機構將基金交由基金管理人負責,通過系統客戶端提供的“基金管理人認證登記表”,如圖4所示,主要使用外部接口api/apply/add/alliance錄入信息存儲至VMC,若已經在其它機構備案成功,可直接填寫認證鏈接,系統隨機抽取奇數位初始成員和已備案機構成員作為投票人,并建立新的投票請求;然后生成密鑰對,將申請機構信息加密寫入IPFS,并以二維碼方式返回給申請機構用于結果查詢;管理委員會對申請機構進行審批投票,通過調用由SDK封裝接口api/voting/to/{IM-ID}進行投票,投票信息經過該機構的私鑰加密后通過web請求進行信息的傳輸,由解密接口api/decrypted/json/vote解密,如果解析正確將追加至投票管理合約,半數以上同意則激活ADD_INSTITUTION_EVENT事件,管理人的投票信息狀態(tài)由VOTING更新為FINISHED,為申請機構生成聯盟內部賬戶和相關成員合約以及子合約,并自動化部署至聯盟鏈。
圖4 基金管理人認證登記表
機構的認證成功意味著該機構擁有投資人認證功能,投資人可通過方案提供的用戶界面“合格投資人審批登記表”完成認證等功能,如圖5所示。
圖5 合格投資人審批登記表
私募機構對項目信息的存儲和保護主要以大量的文檔信息為主,所有的數據使用對等存儲,為避免其它節(jié)點的數據被隨意讀取,造成信息泄漏,所有數據將通過加密流程存儲至IPFS,然后將IPFS地址寫入聯盟鏈智能合約,以達到存儲和保護目的;將聯盟鏈區(qū)塊摘要信息同步至公鏈,進而實現驗證的功能?;鸸芾砣嗽趧?chuàng)建項目或者對項目信息進行維護時候,必然需要對依賴的文檔進行操作,操作的文檔信息將被批量整理為JSON對象統一存至IPFS,并將JSON加密存入IPFS返回地址,并寫入合約形成映射關系,圖6為具體信息加密存儲的具體流程。
圖6 項目的存儲和保護
方案為私募基金管理人錄入的項目信息提供在聯盟內部的共享功能,其它私募基金管理人或投資者在被授權后可對感興趣項目的詳細信息以及報告文檔等內容查看?;痦椖啃畔⒂芍悄芎霞s、IPFS、結合多種加密方式和共享接口之間的調用通過網絡傳輸實現在聯盟內部和認證投資人之間的共享和交易。具體定向共享業(yè)務主要分為兩部分:發(fā)送共享和接受共享。詳細共享方案流程如圖7所示。
圖7 項目共享流程
發(fā)送共享:基金管理人在通過身份認證后,使用接口api/project/shareTo通過傳入機構ID和項目ID等參數,將共享記錄追加至該機構的項目共享合約,涉及的相關文件使用接口api/file/shareTo將項目文件的共享記錄追加至文件共享合約,然后通過加密服務service/send/key將共享文件的公鑰列表使用對方的公鑰加密之后發(fā)送,由對方決定是否存入本機構密鑰庫。
接受共享:其它機構的基金管理人在收到共享時,可直接通過項目ID和文件ID進行獲取相應的加密信息,然后利用自己的私鑰進行解密,通過接口api/decrypted/file將json文件解密,然后解析獲得完整的文件列表如下內容,通過api/json/analysis/files將文件逐個解析進行預覽。
整個網絡設置貢獻度機制作為激勵措施。包括基金發(fā)行、LP導入、盡調報告上傳、節(jié)點記賬等增加生態(tài)豐富度的行為都將獲得一定程度的貢獻度,貢獻度可以理解為該網絡的Token。貢獻度的規(guī)則可由網絡管理委員會設定,如單次記賬獲得的貢獻度數值、發(fā)行產品獲得的貢獻度數值。舉例:單個機構賬戶貢獻度=基金規(guī)模/萬元+盡調報告份數*100+記賬次數*0.1。
貢獻度使用途徑包括但不限于:①項目路演消耗貢獻度,將來可以作為Token交易;②購買其它私募基金管理人的盡調報告,以便更加全面的了解項目本身情況,可以使用貢獻度購買;③開源社區(qū)話語權,根據貢獻度投票技術發(fā)展路徑;④某些特殊功能或權限使用;⑤設置貢獻度排名列表,使得該私募基金管理人能夠被優(yōu)先瀏覽到;⑥后續(xù)可以不斷增加貢獻度使用場景,提升貢獻度價值。
正文本系統基于以太坊網絡搭建,智能合約使用Solidity編寫,通過Truffle框架自動化部署。初始測試環(huán)境為部署1臺公有以太坊節(jié)點作為快照節(jié)點,3臺由Go-enhereum作為客戶端的定制化以太坊私有集群,采用Geth搭建節(jié)點用于區(qū)塊數據的同步和校驗,由以上3臺機器構成初始管理委員會。之后分別部署IPFS,通過共享swarm.key搭建IPFS文件存儲系統,其中每個節(jié)點服務器同時具備輕節(jié)點和全節(jié)點的服務功能,其中每臺主機的硬件環(huán)境為單核2.5 GHZ CPU,4 GB內存,1 TB硬盤。用戶只需安裝客戶端連接聯盟鏈中任一節(jié)點即可完成環(huán)境搭建。
實驗針對私募基金區(qū)塊鏈信息共享方案從系統的運行維護成本、性能效率、可擴展性、安全性和可靠性等方面進行測試,主要測試方案所提供的功能是否可滿足需求。測試所需數據和用例由前期隨機生成,利用腳本實現自動化測試,調用系統提供的用戶接口以及對響應值、響應時間和系統性能等指標進行分析。
(1)加密功能驗證
文件加密存儲功能是該系統的基本功能,本次測試內容為基金管理人對項目文件上傳后,從系統后臺獲取整個加密流程中涉及的原始文件列表、原始文件哈希列表、加密文件列表、加密文件列表JSON等數據。并通過測試接口對數據進行比對是否一致,測試內容和結果見表2。經過算法比對,文件加密功能與預期設想一致,項目文件加密存儲滿足需求規(guī)定。
表2 業(yè)務文件驗證對比
(2)定向共享功能測試
實驗根據需求為依據,核實項目定向功能是否與需求一致?;鸸芾砣藢㈨椖堪l(fā)起共享,并批量選擇共享接收人,除被選擇共享接收人之外,其它基金管理人和投資人無權查閱項目任何信息,如圖8所示,共享接收人具備該項目涉及的所有文件驗證權限,經過對實際功能的操作以及操作結果分析,共享功能滿足設定需求。并且項目所有者可以獲得共享獎勵貢獻度,占比為融資的0.01%,可用于主動獲取其它機構項目信息。
圖8 共享項目業(yè)務實現
(1)限定條件下交易平均響應時間
根據ETH 2.0白皮書中介紹,區(qū)塊打包消耗的Gastx和數據的比特長度呈正相關。假設N0、N1代表交易中比特位為0和1的位數;Gtx、Gbit0、Gbit1分別代表調用合約執(zhí)行消耗的Gas、寫入數據0和1需要消耗的Gas;Ntx代表交易s的數量。每筆交易需要消耗的Gas記為GasperTx計算方式如式(1),估算區(qū)塊打包所需消耗的Gas見式(2)。所以在實驗中可通過限制GasLimit來控制區(qū)塊打包的交易數量
GasperTx=(Gtx+Gbit0×N0+Gbit1×N1)
(1)
GasLimit=GasperTx×Ntx
(2)
已部署的合約采用相同的數據結構和字段,交易類型大致可分為認證交易、投票交易、修改共享信息交易等,同類型交易的數據大小基本一致,可認為提交同一類型的交易所消耗的Gas基本一致。
該部分實驗主要對用戶提交寫入請求后智能合約對提交數據交易打包的響應時間。在實際的使用中,傳統私募基金平臺每秒寫入請求數量在200左右,考慮到本身的業(yè)務場景與實際需求,將難度值統一降低,我們以用戶每秒提交200筆交易作為基數,通過系統提供的api/test/txBatchSubmit接口統一提交,獲得不同響應時間進行分析。在測試過程中,分別對節(jié)點數量、區(qū)塊大小(限制區(qū)塊)進行限制的情況下獲取交易平均響應時間。
在實驗過程中,將聯盟鏈區(qū)塊的Gas限制為1 000 000(單個區(qū)塊分別打包認證交易,投票交易,修改、共享交易的數量為7、47、50)作為前提。對圖9分析,相同配置節(jié)點的加入,對于同類型的交易平均響應時間呈現緩緩上升的狀態(tài)。部分數據點出現異?,F象,分析該現象產生的原因是PoW中隨機數過大。對圖10分析,將節(jié)點限制為5,通過擴大區(qū)塊提升每次打包的交易數,每次提交增加100筆交易,同類型的交易并沒有隨著區(qū)塊大小的增加而降低交易響應時間,而是交易響應時間緩慢增長,但最終趨于平緩狀態(tài),造成該現象的原因是區(qū)塊大小的增加,PoW難度提升,區(qū)塊同步時間的增加。
圖9 不同網絡規(guī)模下交易平均響應時間
圖10 不同GasLimit下的交易平均響應時間
經過多次的實驗和對數據的分析對比,總體交易的平均響應時間在0.3 s~1.8 s,對于正常交易來說,等待時間可被用戶接受。在不影響用戶體驗度的情況下,適當降低難度值,提升區(qū)塊大小,可明顯提高系統的吞吐量。
(2)成員節(jié)點故障可用性測試
該部分實驗主要測試聯盟集群中部分節(jié)點損壞時系統的可用性。整體系統正常運行的過程中,由于網絡的中斷或服務器本身的硬件問題,部分節(jié)點出現異常,造成節(jié)點數量下降,可能對數據的安全性和系統的可用性造成影響。實驗在故障節(jié)點中通過MetaMask輕量級錢包提供的JSON-RPC接口連接至聯盟鏈,模擬提交不同類型的交易和鏈上數據的查詢交易,通過對比無故障節(jié)點情況下和故障節(jié)點情況下的交易平均響應時間對系統可用性進行測試對比,見表3。
表3 節(jié)點故障對系統可用性影響
本文中所提出私募基金區(qū)塊鏈信息共享方案,主要利用智能合約、非對稱加密技術和公有鏈的結合使數據的安全性得以保障,同時將大文件存儲于IPFS文件系統集群,降低了鏈上存儲數據的成本。實質是利用信息化的手段,對私募行業(yè)的業(yè)務數據進行“數字化管理”,實現了數據的定向共享和數據的安全保護,有效消除信息封閉、減少整個行業(yè)的重復勞動(比如合格投資者審核、項目信息分析),提高私募機構驗證客戶信息以及監(jiān)管效率,降低運營成本,通過激勵方案提升了系統用戶的積極性。在系統可用性方面,基本可以達到用戶的需求。目前該方案中提出的系統平臺仍然在開發(fā)和完善階段。在今后的工作中將進一步完善智能合約的清算功能,并通過改進聯盟鏈中的共識機制提升系統的業(yè)務處理效率,增加吞吐量,提升在大規(guī)模高并發(fā)下的交易處理效率,逐步向公募基金系統需求方向發(fā)展。