◆陸昉
(天津海關(guān) 天津 300041)
跨境貿(mào)易業(yè)務(wù)涵蓋了國(guó)內(nèi)外的生產(chǎn)商、貿(mào)易商、物流商、金融機(jī)構(gòu)、政府監(jiān)管部門等眾多的參與方,涉及物流鏈、資金鏈、數(shù)據(jù)鏈的跨境管理,是區(qū)塊鏈智能合約的重要應(yīng)用領(lǐng)域。在跨境貿(mào)易領(lǐng)域,智能合約的自動(dòng)化執(zhí)行會(huì)推動(dòng)各參與方業(yè)務(wù)數(shù)據(jù)的協(xié)同共享,實(shí)現(xiàn)參與方物權(quán)、資金的跨境轉(zhuǎn)移交付,因此智能合約的安全管理尤為重要。這就需要我們從智能合約構(gòu)建應(yīng)用的全生命周期開展安全管控的研究,形成智能合約應(yīng)用的安全規(guī)范,為跨境貿(mào)易區(qū)塊鏈健康有序發(fā)展奠定安全管理的基石。
“智能合約”(Smart contract)不是一個(gè)新的概念,這個(gè)術(shù)語(yǔ)至少可以追溯到1995 年,是由跨領(lǐng)域的法律學(xué)者尼克·薩博(Nick Szabo)提出來(lái)的。他將智能合約定義為“是一套以數(shù)字形式定義的承諾(commitment),包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議?!北举|(zhì)上來(lái)說(shuō),智能合約是一段程序,它以計(jì)算機(jī)指令的方式實(shí)現(xiàn)了傳統(tǒng)合約的自動(dòng)化處理。智能合約的工作理論遲遲沒有實(shí)現(xiàn),一個(gè)重要原因是因?yàn)槿狈δ軌蛑С挚删幊毯霞s的數(shù)字系統(tǒng)和技術(shù)。直到2008年區(qū)塊鏈技術(shù)的出現(xiàn)解決了該問題,區(qū)塊鏈技術(shù)不僅可以支持可編程合約,而且具有去中心化、不可篡改、過程透明、可追溯等特點(diǎn),完美的契合于智能合約的需求,因此隨著區(qū)塊鏈技術(shù)應(yīng)用的日益普及,智能合約備受關(guān)注。
智能合約是一段無(wú)須中介、可自我驗(yàn)證、自動(dòng)執(zhí)行的計(jì)算機(jī)程序。在部署智能合約之前,與合約相關(guān)的所有條款的邏輯流程就已經(jīng)通過代碼被制定好了,智能合約通常具有一個(gè)用戶接口(interface),以供用戶與已制定的合約進(jìn)行交互,這些交互行為都會(huì)嚴(yán)格遵守此前制定的邏輯[1]。與傳統(tǒng)的合約相比,區(qū)塊鏈智能合約具有以下特點(diǎn)與優(yōu)勢(shì):
(1)去中心化權(quán)威:智能合約不需要中心化的權(quán)威來(lái)仲裁合約是否按規(guī)定執(zhí)行,合約的監(jiān)督和仲裁都由計(jì)算機(jī)來(lái)完成,最大限度地減少對(duì)第三方的依賴。
(2)不可篡改:在智能合約部署之后,合約的所有內(nèi)容都將無(wú)法修改,合約中的任何一方都不能干預(yù)合約的執(zhí)行,最大限度地減少惡意和偶然的異常,避免人為干預(yù)的風(fēng)險(xiǎn)。
(3)更經(jīng)濟(jì)高效:由于智能合約的執(zhí)行不需要第三方權(quán)威或中心化代理服務(wù)的參與,因此能夠在任何時(shí)候響應(yīng)用戶的請(qǐng)求,大大提升了交易進(jìn)行的效率;其去人為干預(yù)的特點(diǎn),也能夠大大減少合約履行、裁決和強(qiáng)制執(zhí)行所產(chǎn)生的人力成本。
智能合約與傳統(tǒng)編程在信息使用和商業(yè)安全方面存在很大不同。在跨境貿(mào)易領(lǐng)域主要體現(xiàn)在如下方面:
(1)智能合約在跨境貿(mào)易領(lǐng)域承擔(dān)了主要的商業(yè)邏輯,其商業(yè)邏輯執(zhí)行于包括跨境貿(mào)易企業(yè)、金融機(jī)構(gòu)以及政府監(jiān)管部門在內(nèi)的核心應(yīng)用場(chǎng)景,無(wú)論是商業(yè)機(jī)密性還是數(shù)據(jù)安全性對(duì)企業(yè)、金融機(jī)構(gòu)以及政府部門的重要性都不言而喻,任何泄露數(shù)據(jù)風(fēng)險(xiǎn)以及智能合約本身安全的風(fēng)險(xiǎn)都會(huì)破壞整個(gè)聯(lián)盟鏈運(yùn)行的基礎(chǔ)。
(2)智能合約在聯(lián)盟鏈上的部署是有共識(shí)的,達(dá)成一致的??缇迟Q(mào)易中的智能合約必須在合約設(shè)計(jì)過程中、編碼實(shí)現(xiàn)過程中把容錯(cuò)與異常終止邏輯設(shè)計(jì)和實(shí)現(xiàn)到合約中,并且跨境貿(mào)易在智能合約存在安全漏洞的處理機(jī)制也需要由聯(lián)盟各參與方通過聯(lián)盟約定方式進(jìn)行補(bǔ)充處理,以免造成商業(yè)層面或者更大的政府層面的安全風(fēng)險(xiǎn)。
(3)需要建立智能合約的安全編程模式。需要智能合約的安全的編程規(guī)范,進(jìn)一步在隱私保護(hù)、審計(jì)和留痕上去消除各類安全隱患。
隨著跨境貿(mào)易聯(lián)盟鏈參與方的增多和業(yè)務(wù)鏈條的加長(zhǎng),由于商業(yè)利益或者政策驅(qū)動(dòng)有可能會(huì)出現(xiàn)參與方或節(jié)點(diǎn)的惡意行為,在智能合約層對(duì)開放性部署的智能合約進(jìn)行商業(yè)隱私數(shù)據(jù)的竊取、合約篡改等不當(dāng)攻擊。另外智能合約代碼目前尚不成熟,智能合約在實(shí)際應(yīng)用過程中難以避免會(huì)出現(xiàn)各類安全漏洞。因此跨境貿(mào)易聯(lián)盟鏈會(huì)對(duì)智能合約部署應(yīng)用的安全提出更高的要求。
在智能合約設(shè)計(jì)時(shí)要考慮:
(1)智能合約必須規(guī)劃設(shè)計(jì)參與者可接觸的是完整信息、還是部分信息,或者無(wú)法訪問信息。這些權(quán)限必須在智能合約中通過代碼注明。
(2)跨境貿(mào)易區(qū)塊鏈中若智能合約邏輯中需要有監(jiān)管者參與,那么監(jiān)管者訪問數(shù)據(jù)的權(quán)限限定以及范圍也需要在智能合約中實(shí)現(xiàn)。
(3)隱私數(shù)據(jù)的可訪問范圍性質(zhì)是靜態(tài)還是動(dòng)態(tài)的,如何在智能合約中引入加密參數(shù),對(duì)新參與者的數(shù)據(jù)訪問和共享機(jī)制進(jìn)行設(shè)計(jì)。
(1)智能合約的動(dòng)態(tài)特性引起的審計(jì)分析挑戰(zhàn)
智能合約的動(dòng)態(tài)特性有很多,如調(diào)用了非確定的系統(tǒng)函數(shù)、調(diào)用了外部系統(tǒng)非確定性的數(shù)據(jù)來(lái)源、動(dòng)態(tài)調(diào)用(運(yùn)行時(shí)決定執(zhí)行目標(biāo))。設(shè)計(jì)智能合約時(shí)盡量避免使用其動(dòng)態(tài)特性,否則一旦破壞了系統(tǒng)的一致性,那么會(huì)增加定位問題的難度,在這種情況下難以判斷故障的根本原因。
(2)停機(jī)問題與資源控制的挑戰(zhàn)
智能合約必須是可終止的合約,否則會(huì)無(wú)限占用時(shí)間和資源。停機(jī)問題(halting problem)[3]是邏輯數(shù)學(xué)中可計(jì)算性理論的一個(gè)問題。通俗地說(shuō),停機(jī)問題就是判斷任意程序是否能在有限的時(shí)間之內(nèi)結(jié)束運(yùn)行的問題。區(qū)塊鏈上的智能合約必須是可終止的,否則將會(huì)消耗無(wú)限的時(shí)間和資源。停機(jī)問題是不好預(yù)判的,我們無(wú)法在不運(yùn)行一個(gè)程序的情況下,提前判定該程序是否會(huì)停機(jī)。因此,在審計(jì)時(shí),審計(jì)者和安全專家必須判斷區(qū)塊鏈的設(shè)計(jì)者是否考慮到智能合約可能會(huì)進(jìn)入死循環(huán),并對(duì)可能已經(jīng)進(jìn)入死循環(huán)的合約采用資源控制的方式來(lái)結(jié)束智能合約。對(duì)于停機(jī)問題與資源控制所面臨的挑戰(zhàn),需要智能合約審計(jì)者去判斷是否采用了合適的處理策略。
(1)以客戶為中心,簡(jiǎn)化智能合約的設(shè)計(jì)
簡(jiǎn)化智能合約的復(fù)雜度,可以提升安全性。我們要以客戶為中心,通過協(xié)調(diào)業(yè)務(wù)和安全的關(guān)系,盡量簡(jiǎn)化智能合約的復(fù)雜度,將復(fù)雜的合約拆成多個(gè)簡(jiǎn)單的合約,減少?gòu)?fù)雜性造成的風(fēng)險(xiǎn)控制障礙。
(2)安全策略透明化、簡(jiǎn)單化、便于擴(kuò)展
智能合約在安全策略上需要減少人工處理量,通過減少人工處理安全風(fēng)險(xiǎn)需耗費(fèi)的時(shí)間,來(lái)匹配可快速擴(kuò)展的業(yè)務(wù),以達(dá)到解決安全問題的目標(biāo)。將安全策略透明化、簡(jiǎn)單化,發(fā)展自動(dòng)化工具,進(jìn)行自動(dòng)化的風(fēng)險(xiǎn)決策判斷,以便所有跨境貿(mào)易區(qū)塊鏈參與方都能夠快速實(shí)施安全策略,并持續(xù)改進(jìn)安全策略。
(3)嚴(yán)格執(zhí)行智能合約代碼審查
智能合約如同現(xiàn)實(shí)生活中的賬本合同一樣,需要經(jīng)過多次、嚴(yán)格的代碼審查,包括業(yè)務(wù)流程審查、代碼動(dòng)態(tài)運(yùn)行審查、測(cè)試流程審查、安全性審查、專家評(píng)審等。對(duì)于復(fù)雜且涉及較大資金的智能合約要盡可能的進(jìn)行更加嚴(yán)格的代碼審查工作,通過多種方式驗(yàn)證智能合約的正確性。
(4)形成可參考的標(biāo)準(zhǔn)規(guī)范
跨境貿(mào)易區(qū)塊鏈聯(lián)盟需要為區(qū)塊鏈各參與方提供一個(gè)可參考的智能合約安全標(biāo)準(zhǔn)規(guī)范,幫助智能合約的編寫者、應(yīng)用方、管理者開展智能合約安全管控。
(1)智能合約規(guī)劃設(shè)計(jì)階段
智能合約設(shè)計(jì)人員和安全人員對(duì)需求和安全風(fēng)險(xiǎn)進(jìn)行溝通確認(rèn),使用建模語(yǔ)言對(duì)智能合約進(jìn)行建模,建模需與智能合約各參與方進(jìn)行反復(fù)溝通確認(rèn),完成初步設(shè)計(jì)階段。
(2)智能合約代碼編寫階段
智能合約代碼編寫階段,需要有專業(yè)的智能合約編寫人員參考智能合約安全規(guī)范進(jìn)行編寫,使用智能合約審計(jì)工具進(jìn)行漏洞分析,進(jìn)行初步的審計(jì)。
(3)智能合約代碼審計(jì)階段
智能合約發(fā)布前進(jìn)行一次完整的代碼審計(jì),并保證經(jīng)完整審計(jì)的代碼是用戶最終使用的智能合約版本。
(4)智能合約業(yè)務(wù)測(cè)試階段
智能合約測(cè)試人員將智能合約在測(cè)試鏈上部署,并完成智能合約的測(cè)試,如邊界測(cè)試、漏洞攻擊、業(yè)務(wù)邏輯測(cè)試,測(cè)試人員需與業(yè)務(wù)和安全專家對(duì)測(cè)試邊界進(jìn)行設(shè)定,給出測(cè)試結(jié)果和安全分析結(jié)果,由審計(jì)專家和安全專家給出一份審計(jì)報(bào)告。
(5)安全測(cè)試和審計(jì)報(bào)告發(fā)給智能合約參與方
報(bào)告內(nèi)容包括漏洞攻擊測(cè)試情況,合約存在的直接和潛在的漏洞細(xì)節(jié),合約產(chǎn)生漏洞后如何響應(yīng)、停止、更換。在智能合約代碼層面報(bào)告也可給出此智能合約的通用性,即合約的場(chǎng)景可復(fù)用性,給出此智能合約是否可被其他智能合約所調(diào)用。開發(fā)團(tuán)隊(duì)?wèi)?yīng)對(duì)審計(jì)報(bào)告中提到的“關(guān)鍵”或“重要”評(píng)級(jí)的漏洞予以修復(fù),并將修復(fù)情況報(bào)送智能合約各參與方。智能合約各參與方對(duì)合約審計(jì)報(bào)告以及漏洞修復(fù)情況達(dá)成共識(shí)予以認(rèn)可后,智能合約完成開發(fā)具備發(fā)布條件。
(1)智能合約需規(guī)范所有權(quán)
在跨境貿(mào)易鏈領(lǐng)域,智能合約需規(guī)范所有權(quán),通過數(shù)字證書方式,明確當(dāng)前智能合約的所有權(quán)。通過規(guī)范明確標(biāo)記函數(shù)和狀態(tài)變量的可見性,如函數(shù)和狀態(tài)變量的可訪問控制權(quán)限,明確誰(shuí)可以調(diào)用執(zhí)行該合約、以及誰(shuí)可以訪問智能合約中的變量。
(2)智能合約外部調(diào)用規(guī)范
在跨境貿(mào)易領(lǐng)域中,不可避免某些智能合約會(huì)使用外部調(diào)用,所有的外部調(diào)用需要可信任可依賴的數(shù)據(jù)源。外部調(diào)用規(guī)范,應(yīng)盡可能謹(jǐn)慎,每個(gè)外部調(diào)用都應(yīng)設(shè)定為潛在安全風(fēng)險(xiǎn)。在智能合約設(shè)計(jì)時(shí),需要設(shè)計(jì)外部調(diào)用源的安全風(fēng)險(xiǎn)級(jí)別,外部調(diào)用源產(chǎn)生結(jié)果數(shù)據(jù)后,安全風(fēng)險(xiǎn)級(jí)別數(shù)據(jù)信息應(yīng)設(shè)定到產(chǎn)生的結(jié)果中,以便審計(jì)和留痕時(shí)使用。
處理外部調(diào)用錯(cuò)誤,盡量確保能檢查返回值,如采用正則匹配或者模式驗(yàn)證方式,來(lái)處理調(diào)用失敗的返回值,在合約代碼上應(yīng)考慮每種調(diào)用失敗可能性的處理方式。
調(diào)用規(guī)范約定不能用外部調(diào)用返回值作控制流的判斷邏輯。由于外部調(diào)用的結(jié)果不確定以及不安全性,在關(guān)鍵的判斷邏輯上不應(yīng)采用外部調(diào)用函數(shù)的結(jié)果做邏輯判斷值,避免產(chǎn)生類似雙重攻擊風(fēng)險(xiǎn)。
對(duì)依賴外部調(diào)用資源的智能合約的輸入、輸出都要有留痕、審計(jì)等操作設(shè)計(jì),如果是與金融相關(guān)場(chǎng)景,智能合約的應(yīng)用層需提供回滾和補(bǔ)償機(jī)制,來(lái)保證調(diào)用異常漏洞不會(huì)影響聯(lián)盟鏈的正常運(yùn)轉(zhuǎn)。
跨境貿(mào)易區(qū)塊鏈在智能合約層需要對(duì)可重入攻擊的資源做嚴(yán)格的訪問控制,確保智能合約有可重入限制,以此來(lái)避免此類漏洞安全問題。
(3)標(biāo)記不可信合約和快速失敗原則的規(guī)范
在智能合約代碼層面上,命名函數(shù)等標(biāo)識(shí)需滿足合約編碼的規(guī)范性,當(dāng)與外部合約進(jìn)行交互時(shí),在代碼層面上,需要在變量、方法和合約接口上進(jìn)行命名規(guī)范,對(duì)審計(jì)不確定的外部合約以及外部依賴,需要采用如"untrust"字串進(jìn)行標(biāo)識(shí)[5],明確標(biāo)識(shí)與這些數(shù)據(jù)或智能合約交互時(shí)有潛在的安全風(fēng)險(xiǎn)。
快速失敗原則[4]是指在智能合約的核心邏輯在執(zhí)行前,需要檢查合約的輸入數(shù)據(jù),若數(shù)據(jù)不滿足智能合約校驗(yàn)規(guī)則,需快速返回失敗結(jié)果,避免在智能合約的執(zhí)行過程中產(chǎn)生異常??焖偈≡瓌t可以減少智能合約的執(zhí)行時(shí)間,避免未知異常產(chǎn)生的堆棧溢出風(fēng)險(xiǎn)。設(shè)計(jì)時(shí)應(yīng)考慮數(shù)據(jù)檢驗(yàn)失敗后,是否需要使用一個(gè)默認(rèn)值,使合約繼續(xù)執(zhí)行;或者盡快捕獲失敗的執(zhí)行(區(qū)塊鏈腳本語(yǔ)言一般通過try,catch 語(yǔ)法機(jī)制,快讀定位捕獲失敗原因),避免不穩(wěn)定不一致的狀態(tài)影響其他狀態(tài)和其他調(diào)用者。
(4)智能合約調(diào)用順序規(guī)范
智能合約可能存在調(diào)用多個(gè)函數(shù)、多個(gè)智能合約的情況,此種情況可能存在依賴順序問題。應(yīng)當(dāng)先完成函數(shù)內(nèi)部工作,再調(diào)用外部函數(shù)。
另外,部分智能合約通過鎖機(jī)制(腳本語(yǔ)言的語(yǔ)法,互斥鎖可以鎖定某一代碼塊,通過鎖來(lái)保護(hù)資源的訪問權(quán)限),去解決多智能合約依賴調(diào)用問題。
(5)智能合約交易順序規(guī)范
智能合約執(zhí)行過程中處理交易可能會(huì)隨著不同的交易順序而產(chǎn)生截然不同的狀態(tài),不同的交易狀態(tài)導(dǎo)致不同的輸出結(jié)果。這種智能合約問題被稱為交易順序依賴合約,惡意的參與方可故意改變智能合約的執(zhí)行順序、操縱智能合約的合法性。因此跨境貿(mào)易區(qū)塊鏈智能合約在設(shè)計(jì)時(shí),要嚴(yán)格設(shè)計(jì)和驗(yàn)證交易順序的確定性。
(6)時(shí)間戳校驗(yàn)規(guī)范
智能合約若依賴當(dāng)前區(qū)塊的時(shí)間戳或者根據(jù)時(shí)間戳來(lái)提供隨機(jī)數(shù),則當(dāng)各網(wǎng)絡(luò)節(jié)點(diǎn)的時(shí)間戳存在偏差時(shí),智能合約的執(zhí)行結(jié)果會(huì)有所差別。攻擊者可以通過操作區(qū)塊鏈節(jié)點(diǎn)的時(shí)間戳,去改變智能合約執(zhí)行結(jié)果,使結(jié)果對(duì)自己有利。因此跨境貿(mào)易區(qū)塊鏈智能合約中若依賴時(shí)間戳,合約層面上需做時(shí)間戳范圍校驗(yàn),需多方在時(shí)間戳的時(shí)間范圍上達(dá)到共識(shí),才可繼續(xù)執(zhí)行依賴此時(shí)間戳的智能合約,否則在智能合約上予以放棄執(zhí)行。
(7)回退、容錯(cuò)和終止編程規(guī)范
智能合約與傳統(tǒng)編程不同,所有的智能合約在設(shè)計(jì)編碼過程中需要將容錯(cuò)和異常終止邏輯寫進(jìn)智能合約里面。
保持智能合約在回退時(shí),盡可能簡(jiǎn)單。需設(shè)計(jì)每個(gè)智能合約的回退功能,回退函數(shù)必須包含記錄回退動(dòng)作的事件。如需要更復(fù)雜的回退功能,需經(jīng)過測(cè)試評(píng)估,避免回退功能過于復(fù)雜。
智能合約代碼設(shè)計(jì)和實(shí)現(xiàn)過程需要考慮邊界條件,對(duì)智能合約運(yùn)行過程中最糟糕情況做好準(zhǔn)備。如果智能合約存在漏洞,規(guī)范恢復(fù)方法和流程,使智能合約盡快安全恢復(fù),在跨境貿(mào)易領(lǐng)域的容錯(cuò)方案為,任何一個(gè)智能合約需要一個(gè)備用方案,備用方案需要滿足智能合約存在漏洞時(shí)的緊急處理。
至于容錯(cuò),可采用停止合約機(jī)制,合約管理者可以采用凍結(jié)方式作為一種應(yīng)急機(jī)制。在停止合約方式下,需采用線下或合約修正方式對(duì)業(yè)務(wù)邏輯進(jìn)行補(bǔ)償。
對(duì)于停止合約,可采用信任方提供揭發(fā)熔斷的機(jī)制或者編程自動(dòng)觸發(fā)停止合約。
(8)升級(jí)或修復(fù)智能合約的規(guī)范
升級(jí)或改進(jìn)合約時(shí),需考慮合約影響的節(jié)點(diǎn),需要考慮如何處理合約數(shù)據(jù),如舊合約與新合約共用相同數(shù)據(jù),在舊合約和新合約并行一段時(shí)間后,關(guān)閉廢止舊合約。
智能合約安全審計(jì)機(jī)制包括代碼安全審計(jì)工具、存證流程及執(zhí)行記錄??缇迟Q(mào)易區(qū)塊鏈智能合約,可采用如超級(jí)賬本Hyperledger Fabric 分布式賬本解決方案。Hyperledger Fabric 智能合約被稱為chaincode,當(dāng)一個(gè)區(qū)塊鏈外部的一個(gè)應(yīng)用程序需要訪問賬本時(shí),就會(huì)調(diào)用chaincode。chaincode 可通過多種不同編程語(yǔ)言實(shí)現(xiàn)。目前支持chaincode 的語(yǔ)言是Go 以及Java。
4.5.1 智能合約的身份管理
智能合約身份管理可以采用一個(gè)中心化的身份管理系統(tǒng),中心化的身份管理系統(tǒng)應(yīng)具有如下功能:
(1)身份認(rèn)證,如LDAP 中注冊(cè)信息;
(2)發(fā)行擔(dān)保證書;
(3)發(fā)行交易證書,保障跨境貿(mào)易區(qū)塊鏈平臺(tái)交易信息的安全性;
(4)證書支持更新和撤銷。
4.5.2 訪問控制
(1)跨境貿(mào)易可分為不同的場(chǎng)景,每個(gè)場(chǎng)景下可有多個(gè)智能合約,不同場(chǎng)景使用通道進(jìn)行隔離,每個(gè)通道只允許一部分已經(jīng)授權(quán)的參與者查看該通道的智能合約代碼以及智能合約交易數(shù)據(jù)。
(2)在通道內(nèi),使用可見性等方式,限制可見性的粒度控制
4.5.3 數(shù)據(jù)隱私
(1)跨境貿(mào)易區(qū)塊鏈智能合約處理的中間數(shù)據(jù)和結(jié)果需要通過加密方式進(jìn)行上鏈存儲(chǔ)。
(2)在鏈上存儲(chǔ)介質(zhì)中的數(shù)據(jù)需要采用國(guó)密算法進(jìn)行加密,來(lái)保證數(shù)據(jù)的安全性。
在跨境貿(mào)易區(qū)塊鏈中,智能合約數(shù)字資產(chǎn)需提供多維度立體的保護(hù)機(jī)制,可參考如下幾點(diǎn):
(1)通過區(qū)塊鏈技術(shù)本身保證數(shù)字資產(chǎn)安全。區(qū)塊鏈本身數(shù)據(jù)加密技術(shù)以及鏈?zhǔn)浇Y(jié)構(gòu),哈希樹等結(jié)構(gòu),保證數(shù)據(jù)的可追溯和不可篡改。
(2)在跨境貿(mào)易區(qū)塊鏈領(lǐng)域通過存證合約的存在,保證數(shù)字資產(chǎn)在發(fā)生爭(zhēng)議時(shí)可取證和可仲裁去解決數(shù)字資產(chǎn)的安全問題。
(3)持續(xù)監(jiān)測(cè)和預(yù)警。數(shù)字資產(chǎn)在區(qū)塊鏈智能合約中運(yùn)行,對(duì)交易行為持續(xù)的監(jiān)控與快速預(yù)警機(jī)制,將保障數(shù)字資產(chǎn)在遭受攻擊或出現(xiàn)漏洞時(shí)盡早發(fā)現(xiàn)避免產(chǎn)生大規(guī)模損失[6]。
(4)智能合約本身的暫停和更新機(jī)制,以及限定范圍等策略,保證數(shù)字資產(chǎn)在出現(xiàn)緊急情況下,能有緊急的方式采取制動(dòng)止損方式。
智能合約執(zhí)行應(yīng)用周期安全機(jī)制包括:
(1)智能合約的初始化和安裝安全機(jī)制。智能合約在編碼完成后,被上傳到跨境貿(mào)易區(qū)塊鏈網(wǎng)絡(luò)上,通過隱私機(jī)制,智能合約同步給智能合約對(duì)應(yīng)的參與者,安裝到相應(yīng)的多個(gè)節(jié)點(diǎn)上。
(2)智能合約會(huì)定期檢查智能合約自動(dòng)執(zhí)行的觸發(fā)事件和觸發(fā)條件,滿足條件的事件將會(huì)推送到待驗(yàn)證的隊(duì)列中
(3)驗(yàn)證節(jié)點(diǎn)對(duì)事件進(jìn)行簽名,確保合約有效性;等大多數(shù)節(jié)點(diǎn)達(dá)成共識(shí)后,智能合約將成功執(zhí)行,并通知用戶
(4)與此同時(shí),存證合約會(huì)異步的記錄智能合約產(chǎn)生的影響,以及地址記錄。
(5)成功執(zhí)行的智能合約將移出區(qū)塊。而未執(zhí)行的智能合約則繼續(xù)等待下一輪處理。
智能合約作為在區(qū)塊鏈上自動(dòng)運(yùn)行的程序,其主要功能是通過區(qū)塊鏈的共識(shí)和同步機(jī)制,加工處理區(qū)塊鏈網(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)上的不同數(shù)據(jù),并將加工處理之后的數(shù)據(jù)或新產(chǎn)生的數(shù)據(jù)寫入?yún)^(qū)塊鏈網(wǎng)絡(luò)。智能合約在具體應(yīng)用場(chǎng)景中提供業(yè)務(wù)服務(wù),會(huì)受到現(xiàn)有法律法規(guī)的制約,也會(huì)面臨法律上的一些挑戰(zhàn)。
例如對(duì)于公開的區(qū)塊鏈服務(wù),國(guó)家網(wǎng)信辦和公安部都在各自的職責(zé)范圍內(nèi)對(duì)違反網(wǎng)絡(luò)信息內(nèi)容安全的行為進(jìn)行重點(diǎn)整治。這就要求了區(qū)塊鏈信息服務(wù)的提供者應(yīng)采取有效的措施,對(duì)上鏈信息的內(nèi)容安全進(jìn)行嚴(yán)格管控。具體來(lái)說(shuō),這就要求智能合約應(yīng)當(dāng)擁有敏感詞過濾的功能,智能合約在向區(qū)塊鏈上新增數(shù)據(jù)時(shí)一旦發(fā)現(xiàn)有敏感詞,既當(dāng)作為上鏈?zhǔn)?lái)處理。
從現(xiàn)有法律的角度來(lái)說(shuō),也不能將“智能合約”完全等同于真正的商業(yè)合同,兩者不具備同等的法律效力。一是智能合約本質(zhì)上是程序代碼,在程序的實(shí)施過程中,可能會(huì)出現(xiàn)人為有意或無(wú)意的偏差、漏洞和錯(cuò)誤,例如驗(yàn)證數(shù)據(jù)時(shí)未考慮數(shù)據(jù)源缺失的異常情況等。二是在智能合約的程序執(zhí)行過程中,并非所有的區(qū)塊鏈技術(shù)都會(huì)將智能合約安裝、升級(jí)、執(zhí)行的審計(jì)記錄,以及智能合約進(jìn)行數(shù)據(jù)處理過程中的日志、痕跡、數(shù)據(jù)狀態(tài)的變更,在系統(tǒng)中進(jìn)行保留。這也對(duì)日后遇到糾紛時(shí)的取證帶來(lái)了麻煩。三是針對(duì)智能合約產(chǎn)生的法律糾紛的管轄及適用法律仍不明確,有關(guān)智能合約的糾紛是否能直接適用中國(guó)的《合同法》,尚未有明確的定論。
首先,對(duì)區(qū)塊鏈上共享、共用的數(shù)據(jù),應(yīng)當(dāng)遵循所有區(qū)塊鏈網(wǎng)絡(luò)主要參與方所在地的商業(yè)和個(gè)人的數(shù)據(jù)隱私保護(hù)法律法規(guī),并滿足跨境數(shù)據(jù)傳輸?shù)暮弦?guī)要求。
其次,運(yùn)行在區(qū)塊鏈網(wǎng)絡(luò)上的智能合約,在遵循相關(guān)法律法規(guī)的框架下,通過程序方式實(shí)現(xiàn)了普通商業(yè)合同中的條款的自動(dòng)化執(zhí)行,并通過了智能合約的安全檢測(cè),留存全面的程序變更和數(shù)據(jù)變更記錄,應(yīng)當(dāng)認(rèn)可其和被其映射的普通商業(yè)合同具備同等的法律效力。
最后,完善解決智能合約糾紛的法律法規(guī)。對(duì)智能合約產(chǎn)生糾紛之后,如何取證、如何解決爭(zhēng)議,應(yīng)當(dāng)制定全面的法律框架、規(guī)定和解釋,這樣將可以有針對(duì)性地加強(qiáng)智能合約的安全審計(jì)、日志留痕等功能。
本文通過聚焦跨境貿(mào)易領(lǐng)域的業(yè)務(wù)場(chǎng)景,以區(qū)塊鏈智能合約相關(guān)技術(shù)為基礎(chǔ),列舉了區(qū)塊鏈智能合約技術(shù)在該領(lǐng)域中的安全挑戰(zhàn),結(jié)合業(yè)務(wù)場(chǎng)景提煉出了覆蓋智能合約全生命周期的安全機(jī)制,為在跨境貿(mào)易領(lǐng)域區(qū)塊鏈智能合約的安全應(yīng)用進(jìn)行了有益的探索和研究。
未來(lái),我們相信隨著區(qū)塊鏈智能合約安全技術(shù)的繼續(xù)發(fā)展、逐漸成熟,配套法律體系的不斷完善,以智能合約為驅(qū)動(dòng)的跨境貿(mào)易將會(huì)更加便捷高效,更加安全可信。
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2021年7期