毛湘科 李 超,2 郝瀠婷 張桂剛,4 蔚 欣 張 健 邢春曉,2,3
(1.清華大學信息國家研究中心 北京 100084)(2.清華大學計算機系 北京 100084)(3.清華大學互聯(lián)網(wǎng)產(chǎn)業(yè)研究院 北京 100084)(4.中國科學院自動化研究所 北京 100190)
區(qū)塊鏈技術的發(fā)展源自于中本聰設計的基于P2P 的電子貨幣[1],其最成功的應用就是比特幣。經(jīng)過十余年的發(fā)展,區(qū)塊鏈已經(jīng)從開始的數(shù)字貨幣領域遍及到金融科技[2]、物聯(lián)網(wǎng)[3]、供應鏈[4]、醫(yī)療健康[5]等多個領域。特別是以太坊[6]的出現(xiàn),在區(qū)塊鏈上實現(xiàn)的智能合約技術擴大了區(qū)塊鏈的應用范圍。目前,區(qū)塊鏈在應用中除了數(shù)字貨幣領域,最主要的用途就是利用其不可篡改性來作為存證。但是區(qū)塊鏈自帶的交易屬性因為缺乏對區(qū)塊鏈上的用戶和交易進行有效的監(jiān)管而導致其不能夠被廣泛的使用。為了使區(qū)塊鏈技術更好地服務于可信交易,對區(qū)塊鏈進行監(jiān)管是必不可少的。
區(qū)塊鏈匿名性和去中心化的特點,給其在金融、政府服務和支付結(jié)算等領域的推廣帶來了巨大的阻力。有許多的公鏈的設計甚至朝著躲避監(jiān)管的方向發(fā)展,使得洗錢、黑市交易、違法交易等轉(zhuǎn)移到了區(qū)塊鏈上,為相關政府部門在監(jiān)管和案情偵破上帶來了困擾。因此,若想?yún)^(qū)塊鏈能夠更好地被更多的行業(yè)接受認可,能夠?qū)^(qū)塊鏈上所進行的交易進行監(jiān)管,提供高可信的服務是必須的。
金融行業(yè)對可信交易的要求是最高級別的。由國際清算銀行支付結(jié)算體系委員會(CPSS)和國際證監(jiān)會組織(IOSCO)為防止金融危機所提出的Principles of Financial Market Infrastructure(PFMI),其作為通用原則,能夠適用于每個國家的金融系統(tǒng)。在PFMI 中所提出準入管理和透明度,其強調(diào)了監(jiān)管的重要性[7]。目前按照PFMI 的各項原則對現(xiàn)有的區(qū)塊鏈系統(tǒng)進行了評估,發(fā)現(xiàn)大多數(shù)區(qū)塊鏈的設計違背了PFMI原則。實現(xiàn)對區(qū)塊鏈系統(tǒng)交易有效的監(jiān)管是使得交易可信的保障,一旦脫離了監(jiān)管,必然會產(chǎn)生各種各樣的問題,以及在發(fā)現(xiàn)問題時,難以迅速的采取補救措施。
本文在已有區(qū)塊鏈技術的基礎上,設計一個帶有監(jiān)管功能和支持回滾操作的區(qū)塊鏈系統(tǒng)。所設計的區(qū)塊鏈系統(tǒng)從事前、事中和事后三個不同的階段來實現(xiàn)對區(qū)塊鏈上交易的監(jiān)管。事前監(jiān)管主要的目的是對參與交易的用戶的身份和交易業(yè)務的范圍進行控制,根據(jù)不同的交易業(yè)務內(nèi)容,設置不同的參與標準。事中監(jiān)管,主要是能夠及時地發(fā)現(xiàn)交易中的惡意交易和存在問題的交易,同時,設置了取消交易和回滾機制,對于不滿足條件而未完成的交易,能夠及時終止交易,減少損失。事后監(jiān)管,主要是針對已經(jīng)發(fā)生了的交易,提供了數(shù)據(jù)查詢和數(shù)據(jù)分析的功能,方便監(jiān)管部門能夠?qū)λ械慕灰走M行監(jiān)管,對違反法律法規(guī)的交易,能夠追究參與者的法律責任,追回損失。最后,本文以數(shù)據(jù)資產(chǎn)交易為例子對設計的區(qū)塊鏈系統(tǒng)的交易流程進行了詳細的描述和分析。
自2009 年以來,區(qū)塊鏈技術一直作為一種新興技術廣泛地受到人們的關注。已經(jīng)有很多研究者從共識算法[8~9]、架構(gòu)[10~11]和具體應用[12~15]等多方面對區(qū)塊鏈進行了研究。本文設計的區(qū)塊鏈系統(tǒng)主要涉及到可信交易、監(jiān)管和查詢等方面,因此我們將從這三方面對本文相關的研究工作進行闡述。
區(qū)塊鏈的出現(xiàn)對傳統(tǒng)的金融行業(yè)產(chǎn)生了顛覆式的變化。區(qū)塊鏈作為賬本,防篡改的特性確保了存儲在賬本中的交易信息的可靠性,解決了分布式去中心化環(huán)境下用戶之間的信任問題。但是許多區(qū)塊鏈的設計都在采用匿名機制[1,5]、混合幣設計[16~17]和零知識證明[18]等方法增加區(qū)塊鏈的隱私性,但是增加隱私性的同時,也給區(qū)塊鏈上的交易的監(jiān)管造成了較大的困難。許多不法分子利用基于區(qū)塊鏈設計的虛擬貨幣從事洗錢、槍支、毒品等非法交易,試圖利用區(qū)塊鏈提供的私密性來規(guī)避監(jiān)管。顯然,這樣的設計也成了區(qū)塊鏈技術難以在金融行業(yè)、政府機構(gòu)和支付行業(yè)被廣泛使用的原因。
越來越的研究工作在研究區(qū)塊鏈時強調(diào)監(jiān)管的重要性。主要包括兩方面的研究,一是利用區(qū)塊鏈透明和防篡的特性進行監(jiān)管應用的開發(fā),另一個對區(qū)塊鏈上記錄的交易進行監(jiān)管?;趨^(qū)塊鏈實現(xiàn)監(jiān)管在奢侈品溯源、金融行業(yè)和醫(yī)療健康等領域被廣泛研究。在文獻[19]中,他們從供應鏈溯源、和軌跡追蹤兩個方面將區(qū)塊鏈在奢侈品行業(yè)的應用進行了調(diào)研,凸顯了區(qū)塊鏈的存證和監(jiān)管意義。在文獻[20]中,他們設計了雙層區(qū)塊鏈來監(jiān)管疫苗的生產(chǎn)記錄和信息,提升了對疫苗生產(chǎn)的時空效率。在文獻[21]中,他們設計了一種兼顧隱私保護和監(jiān)管的區(qū)塊鏈架構(gòu)來對醫(yī)療數(shù)據(jù)的真實性進行監(jiān)管和共享。對于區(qū)塊鏈上已經(jīng)存儲的交易數(shù)據(jù),有一些工作采用了數(shù)據(jù)挖掘和機器學習等方法對交易數(shù)據(jù)進行分析。在文獻[22~23]中,他們采用機器學習方法來檢測比特幣中的洗錢行為,發(fā)現(xiàn)非法的交易模式。在文獻[24]中,他們提出了采用基于圖神經(jīng)網(wǎng)絡的方法來對比特幣的交易網(wǎng)絡進行分析,并對非法的地址進行識別。
區(qū)塊鏈上存儲的交易數(shù)據(jù)是全過程留痕,因此對交易數(shù)據(jù)的監(jiān)管離不開對賬本數(shù)據(jù)的查詢。常見的區(qū)快鏈提供了簡單的查詢功能,但是,這些查詢功能并不能夠滿足監(jiān)管的日益復雜的查詢需求。文獻[25]針對具有依賴關系的交易數(shù)據(jù),提出了一種基于內(nèi)置有向無環(huán)圖數(shù)據(jù)結(jié)構(gòu)進行細粒度數(shù)據(jù)溯源查詢的算法。文獻[26~27]設計支持語義和豐富查詢類型的SEBDB,并且設計了鏈上和鏈下相結(jié)合的數(shù)據(jù)查詢算法。文獻[28]設計了一種面向輕節(jié)點的可驗證多維聚集查詢算法。文獻[29~30]設計了vChain來解決區(qū)塊鏈數(shù)據(jù)庫中數(shù)據(jù)查詢完整性和范圍查詢的問題。
但是,監(jiān)管不能只注重于某個方面,應當從多個方面進行監(jiān)管,因此本文綜合考慮,從事前、事中和事后三個階段考慮設計了新的區(qū)塊鏈系統(tǒng)來實現(xiàn)可信交易。
根據(jù)現(xiàn)有區(qū)塊鏈設計難以從多個層面實現(xiàn)監(jiān)管的問題,本文從事前、事中和事后三個層次滿足監(jiān)管的需求。所設計的區(qū)塊鏈系統(tǒng)的總體架構(gòu)如圖1 所示。所設計的架構(gòu)一共包括了四個不同的層次。
圖1 設計的區(qū)塊鏈的架構(gòu)
1)在基礎層中,主要包括了Sha256,橢圓加密等加密算法,P2P 網(wǎng)絡,鏈式結(jié)構(gòu)等實現(xiàn)區(qū)塊鏈功能所必需的構(gòu)建,該層可以根據(jù)業(yè)務的需求進行擴展,能夠與現(xiàn)有的區(qū)塊鏈技術進行良好的融合。
2)在事前監(jiān)管層主要實現(xiàn)了對參與用戶和可開展的業(yè)務范圍的管理。該層根據(jù)不同的業(yè)務需求設置了準入機制,能夠在交易執(zhí)行前減少惡意參與者加入?yún)^(qū)塊鏈網(wǎng)絡進行交易。
3)事中監(jiān)管主要是對已發(fā)起但是還未記錄到賬本的交易進行監(jiān)管。該層提供了發(fā)起交易、撤回交易和回滾交易等功能,能夠確保在交易未完成前,發(fā)現(xiàn)錯誤的交易或者惡意交易時,能夠及時地中止交易,并且將交易撤回和回滾等。
4)事后監(jiān)管層實現(xiàn)了對已經(jīng)記錄在賬本的交易的監(jiān)管。該層提供了查詢驗證、數(shù)據(jù)溯源和交易分析的功能。其能夠?qū)τ涗浽谫~本中交易進行分析監(jiān)管,方便有權(quán)限的用戶對已記錄的交易對真實性進行查詢驗證。
對于基礎層,現(xiàn)有的技術實現(xiàn)已經(jīng)比較成熟,在本文中對其所涉及的具體的實現(xiàn)不再贅述。因此,本文主要在于對于事前、事中和事后三個層次的功能和實現(xiàn)做具體的說明。
事前監(jiān)管主要通過系統(tǒng)設計的賬戶鏈來完成對參與用戶和用戶權(quán)限的監(jiān)管。在事前監(jiān)管層提供了認證、業(yè)務管理和權(quán)限管理等功能。認證包括了用戶注冊和身份認證。用戶注冊要求所有參與區(qū)塊鏈系統(tǒng)的用戶必須是實名認證的,且在注冊時對每個用戶的角色和能夠從事的業(yè)務范圍都給出了明確規(guī)定,所有用戶信息必須存儲至賬戶鏈中,后續(xù)有關用戶信息和權(quán)限的變更記錄也必須存儲在賬戶鏈中。身份認證是指用戶在區(qū)塊鏈系統(tǒng)內(nèi)執(zhí)行操作時,必須與賬戶鏈中所查詢到該用戶的擁有的權(quán)限相符合才能進行相應的操作。業(yè)務管理規(guī)定了該區(qū)塊鏈系統(tǒng)能夠進行交易的業(yè)務范圍。進行不符合業(yè)務規(guī)定交易的用戶將被鎖定,不能繼續(xù)執(zhí)行任何操作。為減少人為的干預,業(yè)務管理采用智能合約的方式進行實現(xiàn)。權(quán)限管理主要對用戶所擁有的權(quán)限進行管理,在賬戶鏈中將存儲所有的授權(quán)記錄。通過事前監(jiān)管,能夠極大地減少惡意用戶的加入,從而減少異常交易發(fā)生的可能,從參與者和開展業(yè)務層面極大地提升區(qū)塊鏈系統(tǒng)內(nèi)交易的可信性。
事中監(jiān)管通過系統(tǒng)設計的臨時鏈和交易鏈進行實現(xiàn)。臨時鏈用于暫時存儲交易,交易鏈用于永久存儲交易,存儲在臨時鏈上交易可以被取消和撤回。所有用戶發(fā)起的交易都必須先存儲在臨時鏈上,將臨時鏈上的交易存儲至交易鏈中需要符合以下兩種情況。
1)經(jīng)系統(tǒng)對交易檢驗通過,并且交易雙方對交易確認無誤后,其適用于快速交易場景;
2)經(jīng)系統(tǒng)對交易檢驗通過,超過預先設定的時間后。
對于情況1)和2),寫入交易鏈的前提是通過系統(tǒng)對交易內(nèi)容和交易模式的檢驗。系統(tǒng)檢驗在系統(tǒng)初期交易數(shù)量較少時,可以通過專業(yè)人員或眾包技術對交易內(nèi)容進行審核。隨著交易數(shù)量的增加,可以借助機器學習技術進行交易檢驗模型的訓練。
臨時鏈上的交易不能夠存儲至交易鏈上的情況有以下幾種:
1)用戶自己發(fā)現(xiàn)交易錯誤,在規(guī)定時間內(nèi)將交易取消。
2)交易未能通過系統(tǒng)檢驗,且經(jīng)審核后仍不能夠通過。
3)交易雙方未能就交易內(nèi)容達成一致,取消交易。
為防止用戶不停地取消發(fā)起的交易行為而導致交易多次失敗情況的發(fā)生,系統(tǒng)設置了規(guī)定時間內(nèi)取消交易的次數(shù),如果超過了取消次數(shù),系統(tǒng)將限制該用戶的操作權(quán)限。
臨時鏈的設計給了交易雙方緩沖時間,減少了錯誤交易的發(fā)生,同時也為系統(tǒng)能夠提前發(fā)現(xiàn)異常交易提供了時間。
事后監(jiān)管主要通過查詢鏈進行實現(xiàn)。查詢鏈記錄了系統(tǒng)內(nèi)的所有用戶在交易鏈上執(zhí)行查詢訪問的記錄。在事后監(jiān)管層主要實現(xiàn)了交易查詢、數(shù)據(jù)溯源和交易分析功能。交易查詢主要提供了交易驗證、范圍查詢、聯(lián)合查詢等方法,滿足用戶多方面的需求。為了提高查詢的效率,根據(jù)交易內(nèi)容所包含的屬性,采用了類似于關系數(shù)據(jù)庫的表結(jié)構(gòu)對交易內(nèi)容進行重構(gòu),從而也使得設計的區(qū)塊鏈系統(tǒng)支持類SQL 的查詢語言。數(shù)據(jù)溯源適用于具有依賴關系的交易數(shù)據(jù),其能夠確保任意給定的交易來源的可信性。但是,區(qū)塊鏈屬于鏈式結(jié)構(gòu),當鏈上存儲的交易數(shù)量較大時,溯源查詢的效率將極為低下。設計的系統(tǒng)采用圖模型對交易之間的依賴關系進行建模,從而將鏈上的遍歷溯源轉(zhuǎn)換為在圖上的廣度優(yōu)先搜索,提升了數(shù)據(jù)溯源的效率。交易分析主要是對已經(jīng)記錄的交易數(shù)據(jù)進行分析,提供了社區(qū)發(fā)現(xiàn)、異常檢測、交易模式識別等方法,同時也提供了可視化分析的工具,方便監(jiān)管部門能夠及時地對區(qū)塊鏈上發(fā)生的交易進行直觀快速的了解。雖然記錄在交易鏈上的交易是不可更改的,但是通過事后監(jiān)管發(fā)現(xiàn)的異常交易能夠協(xié)助監(jiān)管部門對交易雙方進行后續(xù)追責,從而挽回損失。
在事前、事中和事后監(jiān)管中功能的實現(xiàn)過程中,設計的區(qū)塊鏈系本著盡可能減少人工參與的原則,盡最大可能到使用智能合約來進行功能的實現(xiàn)。
信息化技術的普及使得各行業(yè)都儲存了大量的業(yè)務數(shù)據(jù),伴隨著數(shù)據(jù)挖掘、機器學習和人工智能技術的發(fā)展,這些業(yè)務數(shù)據(jù)已經(jīng)成為了一種最重要的資源。但是,數(shù)據(jù)在各行業(yè)間的流動性極低。為了提高數(shù)據(jù)的流動性,在不泄漏個人隱私的情況下進行數(shù)據(jù)的共享交易能夠極大地挖掘數(shù)據(jù)的潛在價值。在本節(jié)中,我們將以數(shù)據(jù)資產(chǎn)的交易為例,對所設計的系統(tǒng)執(zhí)行交易的流程更進一步地說明。
在進行數(shù)據(jù)交易中主要包括數(shù)據(jù)所有者、數(shù)據(jù)賣方、數(shù)據(jù)買方三種角色。
1)數(shù)據(jù)所有者是數(shù)據(jù)的所有人,其可以自愿將數(shù)據(jù)出售或者授權(quán)給數(shù)據(jù)賣方進行共享交易。
2)數(shù)據(jù)賣方對數(shù)據(jù)進行收集和整理,然后將整理好的數(shù)據(jù)進行共享交易。
3)數(shù)據(jù)買方對數(shù)據(jù)賣方所共享的數(shù)據(jù)進行購買。
賣方和買方在在設計的區(qū)塊鏈系統(tǒng)中進行交易的過程如下所示。
1)數(shù)據(jù)買方和賣方向系統(tǒng)提供身份證明材料,并進行注冊,將用戶的信息寫入到賬戶鏈中。
2)數(shù)據(jù)賣方發(fā)布數(shù)據(jù)共享的智能合約,在合約中對所共享數(shù)據(jù)的內(nèi)容進行詳細描述,并且在合約中設定數(shù)據(jù)的價格。
3)數(shù)據(jù)賣方可以根據(jù)自己的需求,在系統(tǒng)內(nèi)購買自己需要的數(shù)據(jù),初步校驗數(shù)據(jù)真?zhèn)?,如果為真,支付金額至臨時鏈中,如果為假,可以執(zhí)行舉報操作。
4)賣方獲取訪問權(quán)限,可以對數(shù)據(jù)進行訪問。校驗數(shù)據(jù)與描述是否相符,不相符的話,可以凍結(jié)該交易。相符,確認交易,交易上傳至交易鏈中。
5)在凍結(jié)交易后,關閉數(shù)據(jù)的訪問權(quán)限。
6)數(shù)據(jù)賣方認為數(shù)據(jù)描述與數(shù)據(jù)確實相符,屬于數(shù)據(jù)買房惡意取消交易,可以申請仲裁。如果仲裁結(jié)果確實為相符合,則將臨時鏈上凍結(jié)的交易寫入交易鏈中,如果不符合,取消交易,并且終止該合約。
作為數(shù)據(jù)所有者,其可以通過系統(tǒng)提供的查詢接口,對其所有數(shù)據(jù)的購買者的信息、使用情況等進行查詢追蹤。一旦發(fā)現(xiàn)違規(guī)的使用情況,可以提起申訴,以確保其所有的數(shù)據(jù)的使用是在權(quán)限范圍允許內(nèi)進行的。
區(qū)塊鏈因其防篡改和匿名性的優(yōu)點而被頻繁使用,但它也對如何對其進行監(jiān)管提出了挑戰(zhàn)。一個值得信賴的監(jiān)管區(qū)塊鏈設計系統(tǒng)不僅需要合理的監(jiān)管體系,還需要允許交易回滾和同步交易分析的特性。本文構(gòu)建的區(qū)塊鏈系統(tǒng)滿足了事前、事中、事后三個層次的監(jiān)管要求。主動監(jiān)管主要是通過系統(tǒng)設計的賬戶鏈來完成對參與用戶和用戶權(quán)限的監(jiān)管。事中監(jiān)管主要通過系統(tǒng)設計的臨時鏈和交易鏈實現(xiàn)。事后監(jiān)管主要通過查詢鏈實現(xiàn)。但是,由于區(qū)塊鏈上存儲的數(shù)據(jù)是公開的,在如何在監(jiān)管數(shù)據(jù)的同時保護數(shù)據(jù)隱私,是未來需要研究的方向。