李廣橋,喬運華,周文坤,班玉榮,張應剛
(1.北京機械工業自動化研究所,北京 100120;2.北京機械工業自動化研究所有限公司,北京 100120;3.中國機械科學研究總院集團有限公司,北京 100044)
傳統的合同管理采用手工管理的形式,審批簽訂過程也需要人員攜帶合同給相應的上級以及合同方;信息化合同管理系統采用了高度集中的管理方式來管理合同數據,以此來改變傳統企業信息分布離散化的狀況,提高合同信息查詢的效率,也避免過多的提取和翻閱原合同文檔。信息化合同管理系統還具有根據合同要素快速生成合同模板、直接線上發起內部審批流程等優勢。
合同管理系統在業務上是多方參與的,但是不管是傳統的還是信息化后的合同管理系統在系統層面上仍然是獨立操作。故存在以下幾個問題:
1)合同在錄入的過程也缺少合同方的監管與參與,無法建立起信任。
2)合同方如果需要審閱核查并簽訂合同內容,仍然是人員攜帶紙質版合同給合同方。
3)有效且合法的仍然是紙質合同。紙質合同容易丟失,被篡改,不宜長期保存。
區塊鏈是一個眾多技術集合而成的新興技術體——分布式賬本,具有去中心化、數據難篡改,可追溯等特點。對解決跨機構信任問題,增加數據的安全性和可靠性有著天然的優勢。結合區塊鏈的合同管理系統,能夠真正實現業務和系統操作上的多方參與,即解決了信任問題,又可以促進機構之間更好的協同;同時完全數字化的合同,也更安全,易保存。
1)合同紙質化,合同與相關文件封存到一個檔案袋里。
2)合同易丟失、風化。
3)合同內容依靠線下集中討論商議,合同變更則需要再次集中討論商議。
4)合同審批流程:依靠人員攜帶文件尋找相應審批人簽審。
5)合同的有效性、合法性:依靠參與各方的手寫簽名以及相關部門的印章來校驗。
1)合同信息化成多個要素組成的數據集。
2)合同數據存在被篡改的風險。
3)合同的錄入、審批由單機構實行。
4)合同的有效性、合法性:依靠參與各方的手寫簽名以及相關部門的印章來校驗。
5)系統的只用于單機構對已簽訂的合同進行審批管理或者生成未簽訂的合同。
6)合同簽訂仍然是依靠紙質版來簽訂。
信息化合同管理系統的主要業務流程如圖1所示:

圖1
根據文獻[1~6]的分析,區塊鏈有以下主要的特點:
1)去中心化:區塊鏈數據由組成區塊鏈網絡的所有節點共同維護,每個節點都有著鏈上數據的全集。
2)數據安全可靠:區塊鏈網絡上的節點會通過達到共識保證數據的一致性。共識機制取決于該區塊鏈系統使用的共識算法。例如:比特幣的pow共識,通過投入算力解決數學難提來達成共識,攻擊者必須投入超過全網節點51%的算力,才能篡改結果;實用拜占庭共識,狀態機副本復制算法,具有拜占庭容錯即滿足n=3*f+1的條件下(n為全節點數,f為作惡或者故障節點)能保證數據的安全性和活性。
3)數據公開可追溯且唯一:數據鏈上的數據是公開可見的,用戶通過鏈上交易的地址,可以追溯并查閱交易信息;區塊鏈通過在數據結構加入時間戳來保證其唯一性。
4)匿名性、不可逆性:節點之間作信息交互時,只會涉及到交易用戶的公鑰地址信息,節點的信息并不會出現,故節點在區塊鏈上具有匿名性;用戶一旦發起鏈上交易,交易記錄會被存到每個區塊上,不可逆性主要就是指交易的痕跡是不可抹滅的。
從區塊鏈本身的特點來看,區塊鏈適用于多方參與的交易、開放可追溯和安全可靠數據的共享等應用場景。而合同管理恰恰是一個多方參與擬定的過程,并且合同信息對參與各方開放,區塊鏈技術的融入,有利于進一步的提高合同數據的易保存性、可塑性、可靠性和安全性。例如:利用區塊鏈去中心化的特點,可以有效解決多方擬定合同時,因各方信息不對稱而導致的信任問題;利用鏈上數據安全可靠的特點,可以保證合同信息的安全性(篡改合同信息難度大)、可靠性(合法性、有效性可進行鏈上驗證);利用鏈上數據公開可追溯以及不可逆性的特點,各方可以有效跟蹤合同,監督從擬定到生效整個周期等。
合同管理系統從業務上滿足多方參與的條件;合同擬定到簽署的過程需要參與方公開一定的數據,且要求數據盡可能的客觀真實,數據校驗依賴第三方;參與各方都希望能把控過程避免暗箱;只有參與的公司或者機構能看到合同信息,即要求信息對內公開,對外保密。綜上所述,滿足區塊鏈的適用場景,結合了區塊鏈的合同管理系統應該具有以下特點:
1)合同數字化,可以是由合同要素組成的數據集,也可以是一個合同文件或者合同圖片。數字合同具有易保存、好維護以及查詢驗證方便等特點。
2)部分去中心化,多方協同。合同擬定、合同審批到合同的監控維護,從業務和系統操作上都是一個多方參與的過程。多方協同,簡化了合同擬定和簽審流程,效率得到了有效的提高。
3)合同數據更安全可靠。每一份合同數據在鏈上都會有相應且唯一的電子憑證。存于鏈上的電子憑證,由鏈上節點共同維護,在滿足拜占庭容錯的前提下,篡改數據十分困難,進一步保證了數據的安全性。
4)合同可追溯。只要業務操作觸發了鏈上的交易,交易的數據就會存到區塊中。
5)合同數據內部公開,對外部保密。即只有加入了該業務群組的節點(節點歸屬機構,同機構可能有多個節點)才能看到業務數據。例如:采購合同群組的合同數據只有加入了該群組的節點才能看到公開的采購數據。同樣不在同一個鏈上的節點是看不到該業務數據的。
3.1.1 Fisco bcos區塊鏈底層開源平臺介紹
FISCO BCOS是一個開源工作組研發的區塊鏈底層技術平臺。這個開源工作組是由眾多金融類機構以及科技企業(“金鏈盟”)組建的。旨在大力推動中國在區塊鏈領域的發展,加速區塊鏈技術在各行各業的應用落地,努力研發自主可控的區塊鏈技術[7]。
3.1.2 Fisco bcos區塊鏈的特征
根據文獻[7]的分析Fisco bcos區塊鏈有以下特征:
1)高性能
FISCO BCOS通過交易并行模型和c++編寫合約的預編譯框架大幅提升了系統的效率和鏈上區塊的處理速度。
FISCO BCOS還支持多群組架構。傳統的區塊鏈是一條鏈一個賬本。與傳統鏈不同的是,多群組架構是一條鏈維護多個賬本,一個群組相當于一個邏輯鏈(區分物理鏈和邏輯鏈的區別),對應一個賬本。群組劃分是按節點劃分,只有加入到這個群組的節點才有這個區塊的數據,所以群組中的區塊數據是物理上隔離的,一筆交易只能發往一個群組。物理上單鏈(區塊鏈網絡),邏輯上多賬本。每個群組獨立運行各自的共識算法,不同群組可使用不同的共識算法(同時支持PBFT、Raft等多種共識)。
2)高安全
FISCO BCOS從4個維度來維護數據的高度安全。
(1)節點層面,利用節點準入機制、ca黑名機制及時剔除作惡節點。
(2)外部用戶的權限,通過分布式存儲權限來控制。
(3)節點允許對本地數據進行加密保護,防止數據被遷移,如若被遷移,節點失效,數據永久加密。
(4)支持多種類加密算法和簽名算法。
3)高可用
FISCO BCOS各屬性支持全局配置,同時支持多種環境下的部署。
4)易用性
提供了鏈上各種操作的接口,以及各種主流編程語言(例如Java、python、go)的sdk。
3.1.3 WeIdentity基于區塊鏈的實體身份標識及可信數據交換解決方案
WeIdentity秉承多中心、開源開放、隱私保護、可移植性、互操作性和可擴展性的設計理念,給予實體一個數字身份,區塊鏈提供這個數字身份的安全性和可靠性,同時保證實體對象之間數據交換、訪問授權的安全。WeIdentity作為鏈接多個垂直行業領域的分布式商業基礎設施,以及解決跨機構的信任問題上,具有很大的潛力[8]。
3.2.1 系統架構
區塊鏈合同管理系統的架構如圖2,主要分為5層:

圖2 區塊鏈合同管理系統的架構
1)合同數據來源
合同的類型有很多,在協同制造業中,主要分為采購合同、銷售合同等等,故根據數據源的不同,相應的合同模板也不同。得益于Fisco bcos的多群組架構,可以根據合同的業務類型劃分群組。有效的把將不同業務的數據隔離,既便于維護,又能防止數據污染。
2)應用層
主要包括合同錄入、合同變更、合同審批和合同作廢等核心業務操作。合同錄入,主要是合同要素數據的錄入比如:合同內容、合同類型、有效時間等;合同變更,主要是合同要素的變更;合同審批,包括定義審批人和發起審批流程等操作;合同作廢主要是取消合同有效性。
3)接口服務層
主要包括單簽服務、溯源服務、多簽服務和合同管理等為應用層造作服務的接口。單簽服務主要是針對一級審批流程的接口服務;多簽服務針對多級審批(多方參與)的接口服務;溯源服務是根據合同號提供對該合同從擬定到生效過程的信息追蹤服務;合同管理,主要有合同的查詢、錄入、變更和失效以及審批流程發起等業務接口服務。
4)鏈數據交互層
主要智能合約包括模板合約集、憑證合約集,以及WeIdentity、Fisco bcos提供的Java sdk。這一層主要是weidentity的智能合約集包括WeIdContract、CptController、Evidence等重要合約,通過weidentity提供的sdk來觸發。
5)區塊鏈層
主要負責區塊鏈網絡的搭建部署和管理。管理主要包括交易審計、節點管理、合約管理、私鑰管理以及系統權限的管理。Webase中間件提供了區塊鏈可視化的管理平臺以及接口,大大的降低區塊鏈的維護和監控的難度。
(1)交易審計,記錄著鏈上的交易信息、異常信息和異常合約。
(2)節點管理,管理著節點的信息,允許修改節點的類型、增加節點前置。
(3)合約管理,管理著智能合約,包括開發、部署和交易等等。
(4)私鑰管理,管理鏈上用戶的導入導出。
3.2.2 基于WeIdentity sdk下的多簽算法流程圖
基于WeIdentity的底層實現多方簽名的流程描述:
1)公司A、B、C臨時組成一個組織union。
2)為公司A、B、C以及組織union分別創建對應weid。
3)創建并注冊憑證模板(根據實際需要)。
4)為公司A、B、C根據同一個模板生成3份憑證(用戶交互的時候相當于簽名的過程)。
5)最后用組織union的私鑰對3份憑證組成的List數據進行簽名返回一個最終的憑證。(用戶看到的應該是憑證的hash)。
6)用戶用的是組織的數據來驗證最終生成的合同憑證是否有效。

圖3 多簽算法流程圖
3.2.3 基于WeIdentity和Fisco bcos sdk下的溯源算法流程圖
溯源算法流程描述:
前提:建立合同與鏈上交易的關聯關系并存到數據庫中方便提取。
1)根據合同去數據查詢相關的鏈上交易信息返回交易hash組成的List。
2)通過fisco bcos提供的sdk,獲取交易信息和交易回執。
3)解析交易信息和交易回執,并獲取交易類型,交易發起者和時間戳等重要信息。
4)將3)中獲取的信息組合一個數據集合。
5)所有交易的數據集按交易的時間戳先后排序,按照時間順序的發展,可以看到一份數字合同生命周期的經歷的所有鏈上操作。
3.2.4 跨機構業務協同流程
合同從制定開始就不再是單方參與,而是是多方參與,例如公司A、B、C先商議合同內容,隨機選舉一個公司進行合同錄入,假設為公司A,則有公司A通過合同系統客戶端根據原商議內容,錄入了一份合同,并向公司B、C發送審核流程,合同數據存在鏈上,通過區塊鏈網絡對節點的數據通步,公司B、C節點通過本地的系統客戶端,很快能查看到合同信息,若同意則雙方線上對合同數據進行簽名存證。若不同意,可以駁回再商議,或者更新合同信息并反向發送審核流程如圖5所示,合同數字憑證生成之后,各個公司可以通過系統的校驗服務來校驗合同的有效性、合法性,也可以通過追溯服務,去看合同的過往改動如圖6所示。注意:

圖4 溯源算法流程圖

圖5 跨機構業務協同流程

圖6 合同追溯、校驗服務
1)合同更新后,重新上鏈(相當于創建了新的合同模板代替原來的),區塊鏈上的節點數據同步,所有參與者都能從鏈上查詢到更新后的合同,最后合同更改方重新發起合同審批流程,所有參與者對新的合同進行簽審。
2)官方機構的作用,即使是數字合同,也不能夠脫離法律的約束和監管。所以整個區塊鏈網絡一定會需要一個或多個受到國家認可的機構加入作為共識節點,官方機構根據合同內容來判斷合同的合法性,一旦簽名,意味著合同具備了法律效應。
本文通過對傳統、信息化合同管理系統特點的分析,結合了區塊鏈技術的特點以及適用場景,展開了區塊鏈技術的合同協同管理系統的設計研究,以解決當下合同管理系統無法跨機構協同、建立各方的信任關系,以及合同數據易遭篡改、不同種類合同數據相互污染等問題。目前合同協同管理系統的進展情況,利用weIdentity和fisco bcos提供的sdk,實現核心業務算法(多簽、溯源),其余的鏈上操作服務由fisco bcos提供的接口做支撐;在這些基礎上提出了合同管理系統的跨機構進行合同擬定、更新、審批以及作廢的協同流程。但是目前的系統設計仍存在以下主要問題:
1)大量的業務邏輯都放到了鏈上進行,會導致區塊數量漲速快,長此以往,對內存的消耗增加,進而導致系統的性能下降。
2)多方參與去維護一份電子合同,業務流程中必然會存在并發問題。
3)系統涉及了大量的權限分配問題,包括節點準入機制、鏈上用戶和合同系統用戶權限等等,如何管理權限需要進一步的思考設計。
后續工作將進一步研究區塊鏈技術以及合同管理的業務模型,通過技術的深入、優化原有合同管理的業務模型或者引入新的合同管理模型,來優化系統性能以及用戶體驗,合同協同系統才能離實際落地更近一步。