范雨晴,王 迪,林鴻杰,陳 娥?,何 嘯,朱 巖
1) 北京科技大學(xué)計(jì)算機(jī)與通信工程學(xué)院,北京 100083 2) 浙江大學(xué)控制科學(xué)與工程學(xué)院,杭州 310027
智能合約(Smart contract,SC)是一類(lèi)部署在區(qū)塊鏈上并在滿(mǎn)足預(yù)定條件時(shí)可自動(dòng)執(zhí)行并存證的計(jì)算機(jī)程序,可用以實(shí)現(xiàn)價(jià)值交換等應(yīng)用,已成為新一代區(qū)塊鏈的核心技術(shù)之一[1]. 作為智能合約在現(xiàn)實(shí)世界的對(duì)應(yīng)物,合同是民事主體之間設(shè)立、變更、終止民事法律關(guān)系的協(xié)議,是維護(hù)市場(chǎng)經(jīng)濟(jì)秩序和保障當(dāng)事人合法權(quán)益的重要手段. 智能合約可以通過(guò)代碼來(lái)表現(xiàn)、確認(rèn)和促進(jìn)合同條款的自動(dòng)執(zhí)行[2],難以產(chǎn)生歧義[3],但自然語(yǔ)言的含義可能會(huì)在某些內(nèi)涵之間來(lái)回波動(dòng)[4],將不可避免地面臨解釋問(wèn)題[5]. 因此,如何準(zhǔn)確體現(xiàn)原始法律合同的意思表示是值得探討的問(wèn)題.
對(duì)于上述問(wèn)題,學(xué)者已經(jīng)做了大量的研究工作. 趙精武與丁海俊[6]提出法律合約轉(zhuǎn)換為智能合約需建立符合法律要求的本體庫(kù)、形式化建模、對(duì)法律本體和語(yǔ)義進(jìn)行驗(yàn)證和修正,周學(xué)峰與趙梓皓[7]認(rèn)為實(shí)現(xiàn)法律代碼化需要把法律合同文本的內(nèi)在邏輯通過(guò)人為或計(jì)算機(jī)推理,再將其轉(zhuǎn)換為計(jì)算機(jī)語(yǔ)言程序代碼. 陳吉棟[8]進(jìn)一步從“要約-承諾”角度證明了智能合約是一種書(shū)面法律行為,劉琴等[9]從計(jì)算機(jī)科學(xué)角度分析了法律合約與智能合約的一致性. 以上工作為支持法律要素提取的合同元模型提供了設(shè)計(jì)思路. 除了上述智能合約語(yǔ)義理解和法律信息規(guī)范化提取工作之外,國(guó)內(nèi)外近年來(lái)也開(kāi)展了有關(guān)現(xiàn)實(shí)合同轉(zhuǎn)換智能合約的應(yīng)用研究項(xiàng)目,其中Accord Project[10]項(xiàng)目,OpenLaw 項(xiàng)目[11]均采用合同標(biāo)記的形式,但該標(biāo)記不涉及語(yǔ)義,且無(wú)法表示合同文本的整體架構(gòu),加之自然語(yǔ)言與程序代碼間缺少過(guò)渡,導(dǎo)致合同模板和智能合約代碼的意思表達(dá)是否一致存在爭(zhēng)議. 文獻(xiàn)[12-14]通過(guò)設(shè)計(jì)面向領(lǐng)域語(yǔ)言(Domain specific language,DSL)簡(jiǎn)化智能合約的開(kāi)發(fā),提高了代碼可讀性,其中,智能法律合約(Smart legal contract,SLC)作為現(xiàn)實(shí)合同和智能合約語(yǔ)言之間的橋梁,對(duì)法律領(lǐng)域的行業(yè)應(yīng)用推進(jìn)具有重大意義. 然而,目前的轉(zhuǎn)化過(guò)程依然缺乏有效方法建立智能法律合約和法律合同之間的語(yǔ)義對(duì)應(yīng)關(guān)系,導(dǎo)致現(xiàn)實(shí)合同到智能合約的轉(zhuǎn)化框架無(wú)法發(fā)揮應(yīng)有的作用.
基于此,本文采用面向合同文本的置標(biāo)語(yǔ)言實(shí)現(xiàn)了法律合同到智能合約程序之間的語(yǔ)義轉(zhuǎn)換.置標(biāo)語(yǔ)言是一種將文本以及文本相關(guān)信息結(jié)合起來(lái),展現(xiàn)出關(guān)于文檔結(jié)構(gòu)、特征、詞匯意義及意思表示、以及數(shù)據(jù)處理細(xì)節(jié)的計(jì)算機(jī)可處理文字編碼. 合同文本作為一種符合法律的文檔,盡管具有法律效力,但由于合同文本所使用的自然語(yǔ)言客觀(guān)上存在著表達(dá)上二義性,易于引起不同法律主體理解上的歧義性,而采用合同文本置標(biāo)的方式,有利于法律界人士對(duì)合同語(yǔ)義進(jìn)行解釋、實(shí)現(xiàn)規(guī)范性的二義性消除和語(yǔ)義表示的優(yōu)勢(shì).
本文通過(guò)設(shè)計(jì)合同文本置標(biāo)語(yǔ)言CTML,以此建立一種將法律合同文本中內(nèi)容和意思表示進(jìn)行規(guī)范化的方法. 該語(yǔ)言定義如下:
定義1(合同文本置標(biāo)語(yǔ)言)合同文本置標(biāo)語(yǔ)言是一種創(chuàng)建法律合同或?qū)Ψ珊贤M(jìn)行意思表示的規(guī)范性計(jì)算機(jī)處理語(yǔ)言. CTML 能夠?qū)ξ臋n中語(yǔ)法、結(jié)構(gòu)、詞匯的內(nèi)容進(jìn)行標(biāo)注,便于更加準(zhǔn)確和一致性地提取法律合同文本.
本文的研究目標(biāo)為設(shè)計(jì)合同文本置標(biāo)語(yǔ)言語(yǔ)法規(guī)范,建立智能法律合約和法律合同之間的語(yǔ)義關(guān)系. 該目標(biāo)可進(jìn)一步被細(xì)分為法律合同意思的準(zhǔn)確表示和法律合同意思表示的計(jì)算機(jī)理解兩個(gè)階段. 對(duì)此,本文針對(duì)上述兩大階段提出解決方案:
(1)法律合同意思的準(zhǔn)確表示:通過(guò)搭建法律元素元模型,設(shè)計(jì)標(biāo)記語(yǔ)言,實(shí)現(xiàn)對(duì)文本內(nèi)容中法律元素信息的判斷與定位,提取文本中法律元素;
(2)法律合同意思表示的計(jì)算機(jī)理解:定義法律元素的數(shù)據(jù)處理方法和映射表,生成智能法律合約代碼,將法律元素由標(biāo)記合同形式過(guò)渡到智能法律合約形式.
由此,本文完成合同文本置標(biāo)語(yǔ)言設(shè)計(jì)并提出面向法律文本合同的智能法律合約系統(tǒng)架構(gòu),建立合同到代碼的可信鏈條,簡(jiǎn)化智能法律合約的編寫(xiě)過(guò)程,促進(jìn)協(xié)作式智能法律合約開(kāi)發(fā).
CTML 系統(tǒng)框架如圖1 所示,CTML 支持從文本合同規(guī)范化生成智能合約代碼,其流程如下:
圖1 面向法律文本合同的智能合約生成和執(zhí)行方法Fig.1 Smart contract generation and execution method for legal contracts
(1)支持基于文本合同的智能合約開(kāi)發(fā)與部署,步驟包括:
①文本合同采用CTML 標(biāo)注后生成CTML 合同和交換標(biāo)記數(shù)據(jù)表(Exchange markup datasheet,EMD);
②通過(guò)CTML 到SLCL 的詞匯映射和轉(zhuǎn)化規(guī)則生成SLC 程序;
③SLC 程序經(jīng)編譯后與EMD 鏈接生成智能合約可執(zhí)行代碼;
④智能合約代碼部署至智能合約平臺(tái),實(shí)現(xiàn)合約部署.
(2)CTML 合同、EMD、SLC 程序整合至合約服務(wù)器,有利于合同相關(guān)方與合約服務(wù)器間的實(shí)時(shí)交互及合約服務(wù)器與智能合約平臺(tái)間的通信,實(shí)現(xiàn)合同協(xié)商、訂立與執(zhí)行.
EMD 是指以鍵-值對(duì)形式描述 CTML 合同中數(shù)源標(biāo)記的數(shù)據(jù)表,用于對(duì)客戶(hù)操作數(shù)源標(biāo)記的交互過(guò)程進(jìn)行確認(rèn)、特指或限制. 上述CTML 系統(tǒng)能夠?qū)崿F(xiàn)法律一致性和消除二義性的依據(jù)在于:
①架構(gòu)上,CTML 標(biāo)注現(xiàn)實(shí)合同形成CTML標(biāo)注合同,并通過(guò)CTML 到SLCL 的轉(zhuǎn)化規(guī)則自動(dòng)生成智能法律合約,通過(guò)文獻(xiàn)[15]所述的智能法律合約語(yǔ)言的可執(zhí)行合約轉(zhuǎn)換方法生成相同意義的智能合約,建立完整轉(zhuǎn)化鏈條,保持合同模塊一致.
②分析上,CTML 標(biāo)注合同通過(guò)窮舉搜索分析生成唯一推導(dǎo)樹(shù)(語(yǔ)法分析樹(shù)),根據(jù)該推導(dǎo)樹(shù)映射規(guī)則生成的智能法律合約具有唯一性.
CTML 的語(yǔ)法規(guī)則使用Xtext 實(shí)現(xiàn). Xtext 基于擴(kuò)展巴科斯范式規(guī)則(EBNF,Extended Backus-Naur form),是用于開(kāi)發(fā)領(lǐng)域?qū)S谜Z(yǔ)言DSL 的開(kāi)源軟件框架[16-18]. 選用Xtext 作為CTML 語(yǔ)言實(shí)現(xiàn)的工具,是因?yàn)樵摲椒ň哂幸韵聝?yōu)點(diǎn):
(1)Xtext 能夠生成該語(yǔ)言模型對(duì)應(yīng)的抽象語(yǔ)法樹(shù)(Abstract syntax tree,AST)的類(lèi)模型[19],該語(yǔ)法樹(shù)可以有效辨析實(shí)例的元素層次結(jié)構(gòu),利于實(shí)例的架構(gòu)分析;
(2)Xtext 的“Validation Package”模塊[20]可以指定特定領(lǐng)域語(yǔ)言的驗(yàn)證規(guī)則,實(shí)現(xiàn)對(duì)領(lǐng)域語(yǔ)言的約束;并為文本具體語(yǔ)法提供自動(dòng)補(bǔ)全、語(yǔ)法著色、重命名重構(gòu)、大綱視圖和代碼格式,以正確縮進(jìn)文檔.
(3)Xtext 的“Code Generation”模塊用于實(shí)現(xiàn)元模型之間的實(shí)體映射,可將當(dāng)前領(lǐng)域的本體實(shí)例轉(zhuǎn)化為可執(zhí)行的語(yǔ)義相同的其他本體示例,該部分將在后文中進(jìn)行進(jìn)一步討論;
(4)Xtext 支 持 語(yǔ) 言 服 務(wù) 器 協(xié) 議[21](Language server protocol,LSP),該協(xié)議是一種開(kāi)放的、基于JSON-RPC 的協(xié)議,將服務(wù)器和開(kāi)發(fā)工具的通信進(jìn)行協(xié)議標(biāo)準(zhǔn)化,從而支持面向領(lǐng)域語(yǔ)言在多種平臺(tái)使用,提高語(yǔ)言的擴(kuò)展能力和使用范圍.
CTML 整體架構(gòu)細(xì)分為文檔類(lèi)型說(shuō)明、文檔頭和文檔主體三大部分,如圖2 所示.
圖2 CTML 語(yǔ)法整體結(jié)構(gòu)圖Fig.2 Overall structure of the CTML syntax
文檔類(lèi)型說(shuō)明:用于聲明文件類(lèi)型(DOCTYPE),在文檔的序列化形式中,它表現(xiàn)為符合特定語(yǔ)法的簡(jiǎn)短標(biāo)記字符串. 此處僅將該聲明用于模式選擇使用.
文檔頭:用于聲明CTML 文檔必要信息,如聲明合同文本語(yǔ)言語(yǔ)種.
文檔主體:即文檔主要內(nèi)容,在原有合同的基礎(chǔ)上用CTML 標(biāo)記進(jìn)行標(biāo)識(shí),故主體部分包括原合同文本(Text)和標(biāo)記. 標(biāo)記依據(jù)功能需求又劃分為語(yǔ)義標(biāo)記和數(shù)源標(biāo)記.
語(yǔ)義標(biāo)記(SemanticExpression),用于指示現(xiàn)實(shí)法律合同中的法律元素和意思表示,通過(guò)語(yǔ)義標(biāo)記為智能法律合約提供法律依據(jù);語(yǔ)義標(biāo)記的層級(jí)劃分如圖3 所示. 根據(jù)《民法典》相關(guān)內(nèi)容,結(jié)合先前在智能合約的規(guī)范化表示的相關(guān)工作[22-23]實(shí)現(xiàn)文本合同的抽象表示.
圖3 CTML 語(yǔ)義模型層級(jí)結(jié)構(gòu)Fig.3 Layer structure of the CTML semantic model
數(shù)源標(biāo)記(MetadataExpression),用于標(biāo)記合同模板或仍未將全部?jī)?nèi)容填寫(xiě)完整的合同時(shí),對(duì)待填寫(xiě)部分進(jìn)行指示與定位.
CTML 適用于“嵌套結(jié)構(gòu)”和“通用符號(hào)”兩項(xiàng)通用規(guī)則,為定義CTML 語(yǔ)法提供理解性支持.
嵌套結(jié)構(gòu)是指由要素標(biāo)識(shí)、屬性、成分構(gòu)成的標(biāo)識(shí)或名稱(chēng)通過(guò)層級(jí)關(guān)系連接符“.”加以標(biāo)識(shí)的元素間包含關(guān)系. 需要注意的是,由于合同文本存在無(wú)序性,一般不具備清晰的架構(gòu),存在法律要素和法律要素相關(guān)法律屬性異位的問(wèn)題,故語(yǔ)法規(guī)則允許法律屬性通過(guò)層級(jí)關(guān)系連接符“.”指出對(duì)應(yīng)要素標(biāo)識(shí),使用該標(biāo)注形式時(shí)允許在標(biāo)注層面與法律要素同級(jí)存在.
依據(jù)第三章的合同元模型進(jìn)行語(yǔ)法設(shè)計(jì),元模型中的每個(gè)元素均有對(duì)應(yīng)的一到多條語(yǔ)法規(guī)則.語(yǔ)言設(shè)計(jì)所采用符號(hào)及說(shuō)明如表1 所示.
表1 CTML 通用符號(hào)及說(shuō)明Table 1 Common symbols and descriptions in the CTML
語(yǔ)義標(biāo)記使用嵌套結(jié)構(gòu)的文法進(jìn)行法律合同的語(yǔ)義信息標(biāo)注,其語(yǔ)義的提取與頂層框架的制定標(biāo)準(zhǔn)以《民法典》的相關(guān)條款為主要參考,以相關(guān)文獻(xiàn)[24-27]的規(guī)則模型和要素提取結(jié)果為輔助參考來(lái)完成,形成具備層級(jí)結(jié)構(gòu)且信息邏輯清晰的“合同范例”,進(jìn)而轉(zhuǎn)化為智能法律合約程序與通用性智能合約程序及代碼.
語(yǔ)義標(biāo)記中的標(biāo)記信息置于雙尖括號(hào)內(nèi)部,并將前后部語(yǔ)義標(biāo)記置于被標(biāo)注文本外側(cè),即<<標(biāo)記信息>>文本<標(biāo)記信息>>,其中標(biāo)記信息指文本中提取得到的需要標(biāo)注的法律信息,且該法律信息可用于后續(xù)代碼的解析轉(zhuǎn)化. 語(yǔ)義標(biāo)記定義如下:
定義2(語(yǔ)義標(biāo)記)語(yǔ)義標(biāo)記用于對(duì)文檔中法律構(gòu)成要素、法律屬性、法律成分和域進(jìn)行標(biāo)注,格式如下:
其中,factor、property、component、field 分別為法律要素、屬性、成分、域的保留字,parameterList 表示參數(shù)列表,text 表示被標(biāo)注文本.
此處語(yǔ)義標(biāo)記定義的是此類(lèi)標(biāo)記的普遍格式,不直接進(jìn)行文本標(biāo)注,而是以此標(biāo)記格式為基礎(chǔ),進(jìn)一步定義了法律要素標(biāo)注(Law factor mark ,LFM)、法律屬性標(biāo)注(Law property mark, LPM)、法律成分標(biāo)注(Law component mark, LCM)以及輔助性標(biāo)注的方法,其中輔助性標(biāo)注包括域標(biāo)注(Field mark, FM),這些定義的標(biāo)記才會(huì)被用于具體文本的標(biāo)注過(guò)程. 且在使用這四類(lèi)標(biāo)注時(shí),采用層級(jí)標(biāo)注方法. 層級(jí)標(biāo)注結(jié)構(gòu)依據(jù)合同文本信息間的“包含關(guān)系”將文本分成不同的層次,從而使得用戶(hù)可以依照“從大到小”、“從粗到細(xì)”的順序?qū)ξ谋具M(jìn)行逐層細(xì)化. 詳細(xì)的標(biāo)注方法和語(yǔ)法定義可見(jiàn)表2 中的語(yǔ)義標(biāo)記部分.
數(shù)源指合同中待協(xié)商內(nèi)容,其標(biāo)記稱(chēng)為數(shù)源標(biāo)記,僅作為占位存在. 數(shù)源標(biāo)記用于標(biāo)記合同模板或仍未將全部?jī)?nèi)容填寫(xiě)完整的合同時(shí),對(duì)待填寫(xiě)部分進(jìn)行指示與定位.
數(shù)源標(biāo)記標(biāo)注合同中尚未明確的文本元素(被稱(chēng)為交互數(shù)據(jù)exchangedData),數(shù)源標(biāo)記所對(duì)應(yīng)的文本常是文檔中基本且不可分割的詞匯,用于合約當(dāng)事人對(duì)合同內(nèi)容進(jìn)行宣稱(chēng)、填入或選擇,標(biāo)記者根據(jù)合同交互要求可以在文檔中任何地方使用數(shù)源標(biāo)記. 數(shù)源標(biāo)記定義如下:
定義3(數(shù)源標(biāo)記)所述數(shù)源標(biāo)記采用如下格式:
其中,factorID 表示交互數(shù)據(jù)所屬層次中最外層的要素標(biāo)識(shí);exchangedDataID 表示該交互數(shù)據(jù)的唯一標(biāo)識(shí);option 表示交互數(shù)據(jù)的選擇方式,可包括單選singleOption、多選multiOption、外部輸入import、觸發(fā)trigger、分配allocate 等,用集合option-Set 表示,即:
其中,value 表示合同文本在此處的備選數(shù)據(jù)或取值;type 表示交互數(shù)據(jù)的類(lèi)型,可分為數(shù)據(jù)類(lèi)型dataType 和權(quán)屬類(lèi)型rightType;外部輸入import 表示可接收用戶(hù)傳入數(shù)據(jù)、觸發(fā)trigger 表示可接收外部事件、分配allocate 表示可接收用戶(hù)定義的復(fù)雜類(lèi)型的數(shù)據(jù).
通過(guò)CTML 規(guī)定的語(yǔ)義標(biāo)記和數(shù)源標(biāo)記劃分合同文本,由語(yǔ)義標(biāo)記表示法律合同的語(yǔ)義信息并形成“合同范例”,借助標(biāo)記語(yǔ)言編輯器生成抽象語(yǔ)法樹(shù),實(shí)現(xiàn)對(duì)合同整體框架的提??;數(shù)源標(biāo)記定位待標(biāo)注信息,并提取信息構(gòu)成交換標(biāo)記數(shù)據(jù)表EMD,從而實(shí)現(xiàn)代碼與數(shù)據(jù)的分離,便于智能合約的通用開(kāi)發(fā)與個(gè)性化應(yīng)用、以及計(jì)算機(jī)高效處理與樣式個(gè)性化顯示.
CTML 語(yǔ)言目前只是一種標(biāo)記語(yǔ)言,其執(zhí)行需要完成CTML 到智能法律合約語(yǔ)言的映射. 映射是通過(guò)模型轉(zhuǎn)換提供的,即將CTML 元模型實(shí)體映射到現(xiàn)有智能法律合約的元模型實(shí)體中,得到具有定義良好、可理解且可執(zhí)行的智能法律合約.
本研究選用智能法律合約語(yǔ)言SPESC (Specification language for smart contracts)作為代碼生成的目標(biāo)語(yǔ)言. 該語(yǔ)言作為一種高級(jí)智能合約語(yǔ)言,是介于現(xiàn)實(shí)法律合同和智能合約程序之間的一種語(yǔ)言,通過(guò)易讀且規(guī)范化的語(yǔ)法,幫助不同領(lǐng)域人員進(jìn)行溝通,從而實(shí)現(xiàn)法律合同與網(wǎng)絡(luò)空間的程序代碼相銜接[12]. 它可以保證智能法律合約既有現(xiàn)實(shí)合同的法律特征和易理解性,又有計(jì)算機(jī)程序代碼的規(guī)范性,促進(jìn)了計(jì)算機(jī)、法律等專(zhuān)業(yè)人員的跨領(lǐng)域協(xié)作,打破了智能合約與非程序人員之間的領(lǐng)域壁壘,能更好地滿(mǎn)足法律合同的自動(dòng)化、形式化轉(zhuǎn)化[22]. SPESC 語(yǔ)言語(yǔ)法定義如圖4 所示,其合同框架是以當(dāng)事人、標(biāo)的、域?qū)傩?、附加信息、條款、訂立簽名的順序進(jìn)行合同規(guī)范的. 上述模型在CTML 中均能找到對(duì)應(yīng)的要素與之對(duì)應(yīng),故在設(shè)計(jì)代碼生成器時(shí),應(yīng)以要素及其相關(guān)信息為單位,依照要素類(lèi)型順序進(jìn)行映射,并將映射結(jié)果寫(xiě)入生成的SPESC 文檔中.
圖4 SPESC 的Contract 語(yǔ)法Fig.4 Contract syntax for SPESC
CTML 代碼生成器的工作流程簡(jiǎn)單描述如下:
(1)預(yù)處理,提前提取域標(biāo)記和非嵌套屬性集,對(duì)AST 進(jìn)行變換;
(2)根據(jù)AST 遞歸到特定類(lèi)型要素實(shí)體,并根據(jù)該實(shí)體篩選信息,包括預(yù)處理時(shí)的域和屬性,及該實(shí)體的嵌套實(shí)體元素;
(3)依據(jù)映射關(guān)系生成對(duì)應(yīng)要素實(shí)體字段;
(4)遍歷要素實(shí)體所含信息,依據(jù)映射關(guān)系生成對(duì)應(yīng)屬性、成分或域字段,轉(zhuǎn)到步驟(2).
后文將進(jìn)一步介紹步驟(1)和(3)中預(yù)處理和映射的處理方式.
預(yù)處理的必要性在于:解析器傳入抽象語(yǔ)法生成樹(shù)AST 時(shí),該生成樹(shù)為實(shí)例文檔中的實(shí)體語(yǔ)義模型,但并沒(méi)有按照法律合同元素的層級(jí)關(guān)系進(jìn)行排列,故需要對(duì)生成樹(shù)上法律合同元素進(jìn)行整合與再排序. 實(shí)體AST 和法律合同層次模型實(shí)體的差別主要體現(xiàn)在:(1)域標(biāo)記實(shí)體可以存在于任意地方;(2)非嵌套形式的屬性實(shí)體在A(yíng)ST 中與要素實(shí)體同屬在根節(jié)點(diǎn). 故需要提前分類(lèi)提取AST 中的所有域標(biāo)記和非嵌套形式的屬性實(shí)體,以保證后續(xù)映射時(shí)要素信息完整.
3.1.1 域標(biāo)記
域標(biāo)記預(yù)處理指從標(biāo)注好的合同文本中提取顯示指定歸屬的域標(biāo)記. 在實(shí)現(xiàn)域標(biāo)記的預(yù)處理提取時(shí),可以利用EMF(Eclipse modeling framework)元模型層(EcoreUtil2)提供的函數(shù)getAllContents-OfType()[17],該函數(shù)可通過(guò)指定AST 根節(jié)點(diǎn)和Xtext轉(zhuǎn)化后元素的java 類(lèi),提取樹(shù)中所有該類(lèi)型的元素實(shí)體.
由于嵌套方式存在的域標(biāo)記本身就可以作為要素的實(shí)體信息被獲取,故需要去除不通過(guò)層級(jí)關(guān)系連接符“·”指定上級(jí)要素和屬性的域標(biāo)記,以免重復(fù)提取. 預(yù)處理偽代碼如圖5 所示.
圖5 域標(biāo)記預(yù)處理算法Fig.5 Algorithm for field preprocessing
3.1.2 非嵌套形式屬性
非嵌套形式的屬性實(shí)體可以直接通過(guò)AST 根節(jié)點(diǎn)獲取屬性實(shí)體. 由于屬性Property 為抽象類(lèi),故需要進(jìn)一步細(xì)化屬性類(lèi)型,提取不同屬性類(lèi)的數(shù)組.
CTML 代碼生成器的工作步驟(3)包括以下兩部分內(nèi)容:①依據(jù)映射關(guān)系生成對(duì)應(yīng)要素實(shí)體字段;②遍歷要素實(shí)體所含信息,依據(jù)映射關(guān)系生成對(duì)應(yīng)屬性、成分或域?qū)嶓w字段. 現(xiàn)舉例對(duì)該步驟流程進(jìn)行說(shuō)明:
對(duì)被標(biāo)注文本中出現(xiàn)的所述簡(jiǎn)單要素對(duì)應(yīng)的要素標(biāo)識(shí)factorID 和特征attribute,依據(jù)轉(zhuǎn)化關(guān)系中的元素映射關(guān)系,將要素標(biāo)識(shí)factorID 和特征attribute 寫(xiě)回到智能法律合約SPESC 代碼中,再將映射后智能法律合約語(yǔ)SPESC 代碼添加到智能法律合約程序中,從而完成以要素標(biāo)識(shí)factorID 為名稱(chēng)的要素對(duì)象建立;以標(biāo)題title 轉(zhuǎn)換處理為例,標(biāo)題要素對(duì)應(yīng)智能法律合約SPESC 語(yǔ)言中標(biāo)題語(yǔ)法如下:
其中,提取標(biāo)注中的標(biāo)題標(biāo)識(shí)titleID 和特征serial-Number 對(duì)應(yīng)特征值value,分別作為智能法律合約語(yǔ)言SLCL 的標(biāo)題語(yǔ)法中對(duì)應(yīng)的合約標(biāo)題Cname和合約序號(hào)Chash,即生成智能法律合約代碼為“contracttitleID (:serialNumbervalue)?”.
下面對(duì)CTML 代碼生成器的工作步驟(4)進(jìn)行映射過(guò)程說(shuō)明:以域信息為例,域field 信息轉(zhuǎn)化處理是指提取域標(biāo)記中的信息,并依據(jù)智能法律合約語(yǔ)言SLCL 語(yǔ)法(field::= attribute : (constant |type))進(jìn)行詞匯映射,并將映射后語(yǔ)法作為智能法律合約代碼. 其中,提取標(biāo)注中的域標(biāo)識(shí)fieldID 作為上述語(yǔ)法中的attribute,取值value 或類(lèi)型type作為上述語(yǔ)法中的constant 或type,所提取的要素標(biāo)識(shí)factorID 及屬性類(lèi)別propertySet 用于指定該屬性域在智能法律合約中歸屬的要素或?qū)傩? 其中,含有屬性域的要素包括標(biāo)題title、當(dāng)事人party或group、附加信息addition 和資產(chǎn)asset.
在現(xiàn)實(shí)合約層,《民法典》整理了生活中常見(jiàn)的法律文本合同,包含買(mǎi)賣(mài)合同、租賃合同、贈(zèng)與合同等大類(lèi)合同. 根據(jù)《民法典》第七百六十一條“保理合同是應(yīng)收賬款債權(quán)人將現(xiàn)有的或者將有的應(yīng)收賬款轉(zhuǎn)讓給保理人,保理人提供資金融通、應(yīng)收賬款管理或者催收、應(yīng)收賬款債務(wù)人付款擔(dān)保等服務(wù)的合同”,其文本元素包括合約名稱(chēng)、當(dāng)事人、標(biāo)的聲明、條款,能夠完整表述CTML 不同層次標(biāo)注要求. 考慮到目前合同文本置標(biāo)語(yǔ)言的研究尚處于初期階段,且智能合約主要應(yīng)用于經(jīng)濟(jì)交易的場(chǎng)景,智能法律合約也大多基于該類(lèi)應(yīng)用場(chǎng)景進(jìn)行設(shè)計(jì),故本節(jié)將主要圍繞有名合同中的保理合同演示CTML 的語(yǔ)義提取和代碼生成的實(shí)際效果,合同來(lái)源于行業(yè)協(xié)會(huì)(如中國(guó)服務(wù)貿(mào)易協(xié)會(huì))推薦的商業(yè)合同樣例節(jié)選.
保理合同內(nèi)容可見(jiàn)圖6 左半部分,對(duì)該合同文本進(jìn)行模塊分析,包括合同標(biāo)題、當(dāng)事人、附加信息、資產(chǎn)、條款、合同訂立六大模塊. 使用層級(jí)標(biāo)注方法對(duì)范例語(yǔ)義部分進(jìn)行逐層標(biāo)注. 在標(biāo)記語(yǔ)義過(guò)程中,可對(duì)合同中待協(xié)商的數(shù)據(jù)進(jìn)行數(shù)源信息標(biāo)記,以便生成交互式數(shù)據(jù)表(Exchange markup datasheet,EMD).
圖6 CTML 標(biāo)注后的保理合同F(xiàn)ig.6 Factoring contract marked by the CTML
數(shù)源標(biāo)記標(biāo)注過(guò)程包含以下步驟:
(1)用戶(hù)確定交互數(shù)據(jù)在文本中的位置,并指定該交互數(shù)據(jù)所屬類(lèi)型type;
(2)用戶(hù)設(shè)置交互數(shù)據(jù)標(biāo)識(shí)exchangedDataID,并指定交互數(shù)據(jù)所屬要素的要素標(biāo)識(shí)factorID;
(3)根據(jù)交互數(shù)據(jù)所屬類(lèi)型type 提示用戶(hù)選擇、確認(rèn)和設(shè)定該交互數(shù)據(jù)exchangedData 的選擇方式option,供選擇的選擇方式包括單選single-Option、多選multiOption、外部輸入import、觸發(fā)trigger 和分配allocate;
(4)將上述用戶(hù)指定的交互數(shù)據(jù)標(biāo)識(shí)exchanged-DataID、交互數(shù)據(jù)所屬類(lèi)型type、選擇方式option 按照數(shù)源標(biāo)記metadataExpression 填入到用戶(hù)指定位置或替代所選需標(biāo)注交互數(shù)據(jù)所在的文本.
依照CTML 語(yǔ)法規(guī)則與標(biāo)注方法完成對(duì)保理合同范例的標(biāo)注,結(jié)果如圖6 右半部分所示.
CTML 文檔經(jīng)代碼生成器映射后自動(dòng)生成的SPESC 代碼結(jié)果如圖7 所示,合同與智能法律合約映射情況如圖8 所示. 從結(jié)果上看,將使用合同文本置標(biāo)語(yǔ)言標(biāo)注的現(xiàn)實(shí)合同通過(guò)代碼生成器自動(dòng)轉(zhuǎn)化為智能法律合約SPESC 后,合同內(nèi)容提取依據(jù)清晰、轉(zhuǎn)化規(guī)范,同時(shí)法律合同元素排列方式更具有條理性.
圖7 CTML 標(biāo)注合同轉(zhuǎn)化為SPESC 代碼Fig.7 SPESC code converted by the CTML
圖8 CTML 標(biāo)注合同轉(zhuǎn)化為SPESC 代碼. (a) 當(dāng)事人; (b)附加信息; (c)資產(chǎn); (d)合約條款Fig.8 SPESC code converted by the CTML: (a) parties; (b) additions; (c) assets; (d) contract terms
此外,本研究基于資產(chǎn)證券化ABS 和供應(yīng)鏈融資兩個(gè)應(yīng)用場(chǎng)景,分別標(biāo)注了對(duì)應(yīng)場(chǎng)景中的多份商業(yè)保理合同與保兌倉(cāng)融資合同. 通過(guò)多個(gè)合約組合對(duì)場(chǎng)景下復(fù)雜業(yè)務(wù)流程加以標(biāo)注,驗(yàn)證了方案的可行性,標(biāo)注結(jié)果如表3 所示.
表3 兩種應(yīng)用場(chǎng)景下CTML 標(biāo)注結(jié)果Table 3 CTML annotation results in two scenarios
同時(shí),本研究通過(guò)建立線(xiàn)上智能法律合約范例庫(kù),集成了合同文本高亮顯示、CTML 輔助標(biāo)注、語(yǔ)法解析器自動(dòng)判斷、顯示修改提示等功能.其中,“CTML 輔助標(biāo)注”簡(jiǎn)化了標(biāo)記學(xué)習(xí)成本,以填空的形式輸入相關(guān)CTML 標(biāo)記信息,半自動(dòng)地完成了對(duì)合同法律信息的標(biāo)注,標(biāo)注信息隨后通過(guò)代碼生成器自動(dòng)轉(zhuǎn)換成對(duì)應(yīng)的智能法律合約.
本文通過(guò)提出合同文本置標(biāo)語(yǔ)言CTML,建立一種將法律合同文本中內(nèi)容和意思表示進(jìn)行規(guī)范化的方法,允許法律人士通過(guò)對(duì)文檔中語(yǔ)法、結(jié)構(gòu)、詞匯的內(nèi)容進(jìn)行標(biāo)注,使其他人員更加準(zhǔn)確和一致性地理解法律合同文本. 同時(shí),CTML 加入了待輸入定位的思想,通過(guò)實(shí)現(xiàn)合同模型化提高生產(chǎn)效率. 此外,本文還提出了一種基于CTML 的智能法律合約生成方法. 對(duì)于一個(gè)給定的采用CTML標(biāo)注的法律合同,通過(guò)合同文本置標(biāo)語(yǔ)言CTML到智能法律合約語(yǔ)言的詞匯映射和轉(zhuǎn)化規(guī)則,利用該文檔中標(biāo)注的層級(jí)標(biāo)記信息生成智能法律合約程序,幫助使用者進(jìn)行合約編寫(xiě),做到智能法律合約的編寫(xiě)有據(jù)可依.
智能合約之智能的法律含義在于合同的成立、生效與執(zhí)行同步. CTML 作為語(yǔ)法規(guī)范的標(biāo)記語(yǔ)言,實(shí)現(xiàn)了現(xiàn)實(shí)合同與智能(法律)合約之間的鏈接:一方面通過(guò)在合同中對(duì)語(yǔ)義元素進(jìn)行標(biāo)注,依此確定與提取法律元素;另一方面通過(guò)轉(zhuǎn)換規(guī)則實(shí)現(xiàn)由法律文本合同到智能法律合約生成的規(guī)范化流程;同時(shí),智能法律合約生成后CTML 可以在現(xiàn)實(shí)合同中進(jìn)行用戶(hù)輸入標(biāo)識(shí),通過(guò)編譯器提取實(shí)例信息,結(jié)合交換標(biāo)記數(shù)據(jù)表EMD 為智能合約提供輸入,輔助完成合約的協(xié)商與訂立,提高智能法律合約和合同的可復(fù)用性.
CTML 依然存在待解決的問(wèn)題,包括:如何在技術(shù)上使智能合約適應(yīng)不同業(yè)務(wù)與應(yīng)用場(chǎng)景,如何支持區(qū)塊鏈節(jié)點(diǎn)的榮譽(yù)、激勵(lì)等實(shí)現(xiàn)機(jī)制,如何在司法階段用智能合約實(shí)現(xiàn)自動(dòng)執(zhí)行與缺席審判等. 這些問(wèn)題的解決都需要圍繞條款的形式一一表達(dá),將在今后工作中予以關(guān)注并努力解決,從而將CTML 和智能(法律)合約技術(shù)用于司法實(shí)踐,促進(jìn)法律與科技深度融合.