郭 倩,朱 巖?,殷紅建,陳 娥,王 迪,劉國(guó)偉
1) 北京科技大學(xué)計(jì)算機(jī)與通信工程學(xué)院,北京 100083 2) 北京市經(jīng)濟(jì)和信息化局,北京 100744
隨著數(shù)字經(jīng)濟(jì)時(shí)代的到來,以區(qū)塊鏈為基礎(chǔ)的智能合約(Smart contract)[1-2]正成為構(gòu)建“價(jià)值互聯(lián)網(wǎng)”的顛覆性技術(shù).伴隨區(qū)塊鏈技術(shù)[3]的不斷演化,智能合約不僅是區(qū)塊鏈上滿足預(yù)定條件時(shí)自動(dòng)執(zhí)行的計(jì)算機(jī)代碼,而且也演化出支持智能合約可執(zhí)行程序開發(fā)、生成、部署、運(yùn)行、驗(yàn)證的信息系統(tǒng)[4],這使得區(qū)塊鏈應(yīng)用開發(fā)日益完善、產(chǎn)業(yè)應(yīng)用日益廣泛.
盡管智能合約具有將法律合同以程序代碼形式加以自動(dòng)執(zhí)行的能力[5],但就智能合約本身而言,它仍然采用常規(guī)計(jì)算機(jī)語(yǔ)言編寫,與傳統(tǒng)的程序代碼并無(wú)差異,因此在可讀性、易理解、法律效力等方面仍有別于法律合同.據(jù)此,智能法律合約(Smart legal contract)[6]被提出,它是一種含有合同構(gòu)成要素、涵蓋合同締約方依據(jù)要約和承諾達(dá)成履行約定的計(jì)算機(jī)程序,兼具法律合同和計(jì)算機(jī)程序的特征,為代碼法律化提供了基礎(chǔ).
智能法律合約依據(jù)法律規(guī)定在形式上能夠以程序代碼表達(dá)法律合同條款[7],保證了它既具有現(xiàn)實(shí)合同的法律特征和易理解性,又有計(jì)算機(jī)程序的規(guī)范性,有助于解決智能合約的合法合規(guī)問題.按照我國(guó)現(xiàn)行法律規(guī)定,法律合同的訂立過程也應(yīng)遵守特定的法律原則,特別是訂立過程的“要約-承諾”制度.然而,目前在學(xué)術(shù)和實(shí)踐中都缺乏以計(jì)算機(jī)程序?yàn)閷?duì)象的訂立過程合規(guī)性研究,無(wú)法通過技術(shù)手段使智能法律合約的訂立過程符合現(xiàn)行法律規(guī)定,進(jìn)而保證合約合法生效.
針對(duì)上述智能法律合約訂立過程中缺乏技術(shù)手段來保證其合規(guī)性的問題,本文從合同訂立的相關(guān)法律規(guī)定入手,規(guī)范了智能合約訂立流程,擴(kuò)充了智能法律合約語(yǔ)言使之滿足合約訂立過程中的“要約-承諾”制度,并設(shè)計(jì)三種區(qū)塊鏈交易結(jié)構(gòu)支持訂立過程中交互數(shù)據(jù)的存證.具體工作如下:
(1)通過引入合約范本化思想,提出了一種規(guī)范化的智能合約訂立流程,該流程包含智能合約的建立、部署、訂立和存證四個(gè)階段,并詳細(xì)給出智能合約訂立的數(shù)據(jù)流程,保證了智能合約滿足我國(guó)現(xiàn)行法律對(duì)書面合同成立條件的規(guī)定;
(2)在合約范本中提出了針對(duì)要素屬性信息和行為屬性信息兩種類型的書面化交互接口,用于滿足合約“訂”和“立”兩個(gè)階段的數(shù)據(jù)交互,并通過銷售合約實(shí)例給出了當(dāng)事人注冊(cè)與簽名動(dòng)作的行為處理算法,驗(yàn)證了上述交互接口設(shè)計(jì)實(shí)施合約訂立過程的有效性;
(3)在智能法律合約語(yǔ)言SPESC 中引入了合約訂立相關(guān)語(yǔ)法,該語(yǔ)法包含當(dāng)事人宣稱和當(dāng)事人簽名兩部分,用于締約雙方以意思表示的形式對(duì)要約和承諾過程中的事項(xiàng)進(jìn)行表述,并可記錄合約成立的當(dāng)事人信息、簽名和簽名時(shí)間,保證智能法律合約能以書面合同樣式體現(xiàn)“要約-承諾”制度.
本文以銷售合同為實(shí)例對(duì)上述智能合約訂立方法予以驗(yàn)證.首先,給出了采用SPESC 語(yǔ)言所撰寫的銷售合約范本,并按照所提出的智能合約訂立流程,實(shí)現(xiàn)了該合約從協(xié)商、注冊(cè)、簽名到執(zhí)行的全流程;其次,設(shè)計(jì)了三種伴隨交易結(jié)構(gòu)用于當(dāng)事人注冊(cè)、簽名、條款執(zhí)行中所有交互數(shù)據(jù)的區(qū)塊鏈存證;最后,以上述實(shí)例為基礎(chǔ),從訂立過程的要約認(rèn)定、承諾認(rèn)定、存證合法性三方面辨析了所提出的智能法律合約訂立方案的合規(guī)性.
近幾年智能合約法律化問題得到了廣泛關(guān)注,不少學(xué)者從智能合約本身是否符合現(xiàn)行法律法規(guī)以及如何對(duì)智能合約進(jìn)行規(guī)范使其轉(zhuǎn)化為現(xiàn)行法律法規(guī)所認(rèn)可的形式兩個(gè)方面進(jìn)行了智能合約法律化研究.
一方面,一些學(xué)者采用“直覺邏輯”研究智能合約本身所具有的合同屬性,例如,2018 年Kasprzyk等[8]通過分析智能合約能否真實(shí)表達(dá)締約雙方的意圖,來界定智能合約的法律效力.2019 年郭少飛[9]從合同效力,修改與履行,違約及救濟(jì)三方面深入剖析智能合約的合同法適用性.同年,陳吉棟[10]通過討論智能合約是否具有法律合同的要約-承諾構(gòu)造來判斷智能合約能否成為法律合同.上述研究基本認(rèn)定了智能合約的合同法適用性.
另一方面,一些學(xué)者則采用“構(gòu)造邏輯”研究智能合約法律化問題,希望通過對(duì)現(xiàn)有智能合約技術(shù)予以改進(jìn)或規(guī)范化,使其轉(zhuǎn)化為現(xiàn)行法律法規(guī)所認(rèn)可的形式.現(xiàn)有研究大致可分為如下三個(gè)方面:
首先,從規(guī)范程序設(shè)計(jì)與平臺(tái)構(gòu)建角度,為解決非計(jì)算機(jī)人員難以理解智能合約內(nèi)容的問題,高級(jí)智能合約語(yǔ)言被提出,它是介于自然語(yǔ)言與智能合約語(yǔ)言間的一種語(yǔ)言.2016 年Farmer 和Hu[11]提出了一種具有精確語(yǔ)義的形式語(yǔ)言FCL,通過該語(yǔ)言編寫的智能法律合約由一組包含定義、協(xié)議和規(guī)則的組件構(gòu)成.2018 年He 等[12]提出了一種智能合約規(guī)范化語(yǔ)言SPESC,它可以將現(xiàn)實(shí)合同采用類自然語(yǔ)言的形式編寫為智能法律合約.同年,Regnath 和Steinhorst[13]提出了SmaCoNat 語(yǔ)言,創(chuàng)建了從自然語(yǔ)言到程序語(yǔ)義的映射.
其次,為使智能法律合約自動(dòng)轉(zhuǎn)化成與其意思表達(dá)一致的智能合約代碼,2017 年Mavridou 和Laszka[14]提出了一種FSolidM 語(yǔ)義框架,用于將高級(jí)智能合約設(shè)計(jì)為有限狀態(tài)機(jī)FSM 模型,使其自動(dòng)生成以太坊Solidity 合約.2018 年Choudhury等[15]提出了一種根據(jù)特定領(lǐng)域的本體和語(yǔ)義規(guī)則自動(dòng)生成智能合約代碼的框架;2020 年Zupan 等[16]提出了一種基于Petri 網(wǎng)生成智能合約的框架;同年,Zhu 等[17]提出了一種將高級(jí)智能合約語(yǔ)言SPESC自動(dòng)轉(zhuǎn)化為智能合約語(yǔ)言Solidity 的轉(zhuǎn)化規(guī)則.
最后,從合約模板生成智能合約代碼角度,為使智能法律合約具備與現(xiàn)實(shí)合同同等的法律效力,2016 至2018 年間,Clack 等[18-20]通過探索智能合約的語(yǔ)義框架,并基于現(xiàn)實(shí)合同設(shè)計(jì)了具備法律效力的合約模板,同時(shí)使用操作參數(shù)建立了高級(jí)智能合約與智能合約間的聯(lián)系.Account 和OpenLaw項(xiàng)目開發(fā)了一種使用特殊標(biāo)記語(yǔ)言的合約模板庫(kù),將現(xiàn)實(shí)合同轉(zhuǎn)化為對(duì)應(yīng)的智能法律合約[21].
上述研究表明智能合約正朝著跨領(lǐng)域合作、標(biāo)準(zhǔn)統(tǒng)一、法律化的方向不斷發(fā)展.
法律上,法律合同訂立是指締約當(dāng)事人相互為意思表示并達(dá)成合意而成立了合同.合同的訂立是合同雙方動(dòng)態(tài)行為和靜態(tài)協(xié)議的統(tǒng)一,它既包括締約各方在達(dá)成協(xié)議之前接觸和洽談的整個(gè)動(dòng)態(tài)的過程,也包括雙方達(dá)成合意、確定合同的主要條款或者合同的條款之后所形成的協(xié)議[22].也就是說,合同訂立分為“訂”和“立”兩個(gè)階段在,前者強(qiáng)調(diào)締約雙方在達(dá)成合意之前不斷接觸、協(xié)商的整個(gè)動(dòng)態(tài)過程,包括要約,要約邀請(qǐng)等;后者強(qiáng)調(diào)締約雙方協(xié)商的結(jié)果,表示雙方當(dāng)事人對(duì)合同條款已經(jīng)達(dá)成合意.由此可見,“訂”是“立”的過程,“立”是“訂”的結(jié)果.
合同訂立采用要約-承諾制度.要約是一方當(dāng)事人以締結(jié)合同為目的,向?qū)Ψ疆?dāng)事人提出合同條件,希望對(duì)方當(dāng)事人接受的意思表示.發(fā)出要約的一方稱為要約人,接受要約的一方稱為受要約人.承諾是受要約人按照所指定的方式,對(duì)要約的內(nèi)容表示同意的一種意思表示.采用“要約-承諾”制度優(yōu)點(diǎn)是使合同成立過程清晰,易于判斷;也有助于分清合同訂立過程中雙方的權(quán)利義務(wù)與責(zé)任.
我國(guó)《電子簽名法》第2 條規(guī)定:“本法所稱數(shù)據(jù)電文,是指以電子、光學(xué)、磁或者類似手段生成、發(fā)送、接收或者存儲(chǔ)的信息”.
智能合約采用計(jì)算機(jī)代碼的形式表達(dá)合約條款,它通過電子化方式被發(fā)送至區(qū)塊鏈網(wǎng)絡(luò),并被網(wǎng)絡(luò)中所有節(jié)點(diǎn)接收和存儲(chǔ)[23],符合我國(guó)《電子簽名法》的規(guī)定,應(yīng)被認(rèn)定為數(shù)據(jù)電文.
其次,智能合約以區(qū)塊鏈為依托平臺(tái)[24],當(dāng)事人可通過電子數(shù)據(jù)交換形式從區(qū)塊鏈上隨時(shí)調(diào)取查看合約內(nèi)容,并能以屏幕顯示或打印形式,有形地表現(xiàn)所載內(nèi)容,根據(jù)我國(guó)《民法典》第469 條規(guī)定:“當(dāng)事人訂立合同,可以采用書面形式、口頭形式或者其他形式.書面形式是合同書、信件、電報(bào)、電傳、傳真等可以有形地表現(xiàn)所載內(nèi)容的形式.以電子數(shù)據(jù)交換、電子郵件等方式能夠有形地表現(xiàn)所載內(nèi)容,并可以隨時(shí)調(diào)取查用的數(shù)據(jù)電文,視為書面形式”,因此屬于數(shù)據(jù)電文的智能合約是書面形式,其歸屬圖如圖1 所示.因此,屬于書面形式的智能合約在訂立方面應(yīng)符合《民法典》中的相關(guān)規(guī)定.其中,《民法典》第471 條規(guī)定:“當(dāng)事人訂立合同,可以采取要約、承諾方式或其他方式”,為符合上述規(guī)定,本文的智能合約訂立過程采用亦要約-承諾方式.注意:未加說明的情況下,合同是指法律上的傳統(tǒng)合同,合約是指智能(法律)合約的縮寫,泛指具有合同性質(zhì)的代碼化程序.
圖1 智能合約歸屬圖Fig.1 Venn diagram of a smart contract
締約雙方約定采用智能合約的形式訂立合同,則合約訂立應(yīng)符合《民法典》等現(xiàn)行法律法規(guī)要求的成立規(guī)則.針對(duì)這一現(xiàn)實(shí)需求,本文將對(duì)基于區(qū)塊鏈的智能合約系統(tǒng)進(jìn)行合約訂立設(shè)計(jì),使得合約訂立過程遵循現(xiàn)行法律規(guī)定,使區(qū)塊鏈智能合約能夠成為一種具有法律效力或法律意義的文書.
依據(jù)上述目標(biāo),本文對(duì)合約訂立設(shè)計(jì)過程提出以下要求:
(1)訂立流程合法化:從法律上規(guī)范化智能合約訂立流程;
(2)意思表示真實(shí)性:在要約-承諾階段,要約人和受要約人通過明示方式作出其意思表示;
(3)合同生效規(guī)范化:明確要約、承諾生效時(shí)間;
(4)合同存證合法化:對(duì)訂立過程中的合約原件及數(shù)據(jù)進(jìn)行合法存證.
智能法律合約是對(duì)同一類紙質(zhì)合同經(jīng)模板化后的電子化表示,也被稱為合約示范文本(簡(jiǎn)稱范本Pattern 或模板Template).合約范本是一類合約實(shí)例的抽象化[25],它包含格式條款和法律構(gòu)成要素的屬性,其中每個(gè)要素屬性都有其唯一標(biāo)識(shí)和類型約束.這里,屬性值在合約模板中事先不必賦值,但經(jīng)雙方當(dāng)事人協(xié)商、合約訂立后需被確定.合約范本也符合《民法典》第470 條:“當(dāng)事人可以參照各類合同的示范文本訂立合同”的規(guī)定.
智能法律合約中條款屬于格式條款.《民法典》第496 條指出“格式條款是當(dāng)事人為了重復(fù)使用而預(yù)先擬定,并在訂立合同時(shí)未與對(duì)方協(xié)商的條款”.為了便于采用計(jì)算機(jī)處理合約中的格式條款,通常采用高級(jí)智能合約語(yǔ)言對(duì)其描述形成合約范本.此外,根據(jù)不同應(yīng)用場(chǎng)景的實(shí)際需求,智能法律合約作為合約范本要為當(dāng)事人提供書面化交互接口(見第5.3 節(jié)),通過交互過程確定上述要素屬性的取值,這一過程也被稱為合約范本的實(shí)例化過程,所得結(jié)果被稱為合約實(shí)例(Instance).
基于區(qū)塊鏈的智能合約系統(tǒng),本文進(jìn)行“要約-承諾”制度的合約訂立流程設(shè)計(jì)如圖2 所示.該訂立框架包含如下實(shí)體:
圖2 智能合約訂立框架Fig.2 Framework of smart contract conclusion
(1)甲方、乙方及編程人員:假定合同由甲乙雙方當(dāng)事人訂立,他們均為具有相應(yīng)民事權(quán)利能力和民事行為能力的人[26].編程人員遵照商業(yè)規(guī)則采用智能合約語(yǔ)言撰寫合約,并將其部署至智能合約平臺(tái).甲方通過平臺(tái)調(diào)取查看合約后,如同意合約中條款表述則主動(dòng)觸發(fā)簽名機(jī)制,以明示方式作出其意思表示,明確表明甲方已閱讀、理解并同意本合約中的所有條款.乙方同樣獲取從智能合約平臺(tái)返回的作為甲方“要約”的合約,若也同意合約中的權(quán)利義務(wù)關(guān)系,則也主動(dòng)觸發(fā)簽名機(jī)制,以明示方式作出承諾,合約成立.
(2)智能合約平臺(tái):是一種支持智能合約可執(zhí)行程序部署、簽名、運(yùn)行、驗(yàn)證的信息網(wǎng)絡(luò)系統(tǒng).包含合約層、編譯層和執(zhí)行層[27],其中:
(a)合約層為編程人員提供智能合約編程語(yǔ)言、合約模板及與區(qū)塊鏈交互的API 接口;
(b)編譯層將智能合約代碼編譯為虛擬機(jī)執(zhí)行的字節(jié)碼;
(c)執(zhí)行層利用鏈上數(shù)據(jù)判斷是否滿足合約條款,若滿足則自動(dòng)執(zhí)行合約.
(3)區(qū)塊鏈:為智能合約提供了一個(gè)強(qiáng)有力的底層介質(zhì)[28],用于記錄合約的代碼、執(zhí)行的中間狀態(tài)及執(zhí)行結(jié)果.當(dāng)前智能合約平臺(tái)已經(jīng)能夠屏蔽區(qū)塊鏈中的很多技術(shù)細(xì)節(jié),使得區(qū)塊鏈中的各種復(fù)雜(哈希、P2P、共識(shí)機(jī)制、激勵(lì)機(jī)制)機(jī)制為智能合約生命周期中的數(shù)據(jù)存證提供保障[29].
上述框架中甲、乙雙方事先并未達(dá)成合意,編程人員直接通過智能法律合約語(yǔ)言編寫合約范本后,智能合約程序被自動(dòng)部署至智能合約平臺(tái),雙方當(dāng)事人從平臺(tái)調(diào)取查看合約內(nèi)容,如同意此合約中表述的權(quán)利義務(wù)關(guān)系,則選擇進(jìn)行交易.通過該方式也可反映出不同締約主體間的合意,自合約成立后,雙方當(dāng)事人均受該意思表示約束.
類似于傳統(tǒng)紙質(zhì)合同的簽訂方式,智能合約采取電子化形式進(jìn)行要約-承諾認(rèn)定,雙方當(dāng)事人簽署數(shù)字簽名后即視為締約雙方對(duì)智能合約代碼所表示條款的認(rèn)可,合約生效.智能合約訂立流程如圖3 所示,包括智能合約從建立、部署、簽名和存證四個(gè)階段的處理.
圖3 智能合約訂立數(shù)據(jù)流程圖Fig.3 Data flow diagram of smart contract conclusion
智能合約建立階段是指編程人員撰寫智能法律合約,經(jīng)一定轉(zhuǎn)化規(guī)則生成計(jì)算機(jī)可執(zhí)行程序[30].具體如下:編程人員將締約雙方所描述的權(quán)利義務(wù)關(guān)系采用智能法律合約語(yǔ)言(如SPESC 語(yǔ)言[12])撰寫成智能法律合約,即智能合約A.智能法律合約是對(duì)傳統(tǒng)紙質(zhì)合同的代碼化后的結(jié)果,將自然語(yǔ)言描述的合同條款用智能法律合約語(yǔ)言表述后,可使合同條款在意思表示上更加精準(zhǔn)簡(jiǎn)潔,無(wú)二義性[31].經(jīng)翻譯后的智能法律合約與紙質(zhì)合同相比,雖然合同內(nèi)容的載體不同,但這并不影響締約雙方的合意呈現(xiàn).其次,將智能合約A 通過包含一定轉(zhuǎn)化規(guī)則的合約翻譯器轉(zhuǎn)化為智能合約程序,即智能合約B.例如,文獻(xiàn)[17]提出了一種從智能法律合約語(yǔ)言SPESC 轉(zhuǎn)化到以太坊智能合約語(yǔ)言Solidity 的轉(zhuǎn)化規(guī)則,該轉(zhuǎn)化規(guī)則的制定使得轉(zhuǎn)化后的智能合約B 具有規(guī)范的邏輯表達(dá)和函數(shù)結(jié)構(gòu),避免了同一份智能合約A 經(jīng)不同編程人員轉(zhuǎn)化后的不確定性.
智能法律合約(智能合約A)到智能合約(智能合約B)轉(zhuǎn)化過程通常應(yīng)滿足以下要求:
(1)證智能法律合約與轉(zhuǎn)化后的智能合約具有相同的意思表示,具備相同的法律效力[32];
(2)采用自動(dòng)轉(zhuǎn)化方式,轉(zhuǎn)化在邏輯上是一種映射,保證了轉(zhuǎn)化結(jié)果無(wú)二義性,原因在于所涉及的轉(zhuǎn)化規(guī)則是確定的,從而使智能法律合約被轉(zhuǎn)化后的結(jié)果是相同的;
(3)如果無(wú)法完成全部智能法律合約的自動(dòng)轉(zhuǎn)化,則允許人工參與.不同的編程人員對(duì)同一條款的解讀和代碼實(shí)現(xiàn)可能是不同的,但代碼的執(zhí)行結(jié)果必須是一致的.
在人工轉(zhuǎn)化過程中,編程人員或法人必須對(duì)轉(zhuǎn)化后的智能合約進(jìn)行簽名,并承擔(dān)所編寫代碼引發(fā)問題的法律責(zé)任.如當(dāng)事人對(duì)轉(zhuǎn)化后的合同條款有爭(zhēng)議,應(yīng)根據(jù)《民法典》第466 條第1 款規(guī)定:“合同文本采用兩種以上文字訂立并約定具有同等效力的,對(duì)各文本使用的詞句推定具有相同含義.各文本使用的詞句不一致的,應(yīng)當(dāng)根據(jù)合同的相關(guān)條款、性質(zhì)、目的以及誠(chéng)信原則等予以解釋”.確定爭(zhēng)議條款的意思表示.總之,上述過程無(wú)論是自動(dòng)轉(zhuǎn)化或是需人工參與,都必須保證智能合約A 和轉(zhuǎn)化后的智能合約B 具備相同的意思表示.
智能合約部署是指編程人員將智能合約A 與智能合約B 整合后部署至區(qū)塊鏈智能合約平臺(tái)的過程[30].按照“要約-承諾”制度,合約部署后同意該合約的當(dāng)事人才能進(jìn)入合約訂立階段,因此,在智能合約部署過程中不僅涉及智能合約存證與可執(zhí)行代碼上鏈,還要為其后的智能合約訂立預(yù)留接口.
為使區(qū)塊鏈交易結(jié)構(gòu)符合智能合約的訂立要求,需要將已部署智能合約中的部分信息(如4.2 節(jié)智能法律合約中的法律要素屬性)分離出來并以交易形式獨(dú)立進(jìn)行存儲(chǔ),這種新的交易形式被稱為伴隨交易,它通常包含以下兩類信息:
(1)智能合約范本中尚未確定并待當(dāng)事人商議后確認(rèn)的合約意思表示,比如,承諾生效時(shí)間、標(biāo)的價(jià)格、標(biāo)的物編號(hào)、付款方式等;
(2)當(dāng)事人訂立合約中“立”階段的智能合約署名信息,比如,要約人和受要約人的信息、簽署時(shí)間、數(shù)字簽名等.
表1 給出了一個(gè)伴隨交易的示例結(jié)構(gòu).它是在比特幣的交易結(jié)構(gòu)上添加新交易字段加以構(gòu)造,具體如下:
表1 伴隨交易的交易結(jié)構(gòu)Table 1 Structure of accompanying transaction
(1)在輸入(vin)字段中添加了ContractInput 字段,該字段包含:系統(tǒng)自動(dòng)部署智能合約可執(zhí)行代碼后獲得的合約地址contractAddress、最新合約代碼的交易標(biāo)識(shí)latestCodeID、最新合約執(zhí)行狀態(tài)的交易標(biāo)識(shí)lastestExecuteID、當(dāng)前執(zhí)行合約的賬戶地址address、當(dāng)前所觸發(fā)的合約接口method;
(2)在輸出(vout)字段中添加了ContractOutput字段,該字段包含:智能法律合約中的法律要素屬性信息contractData、合約簽名列表listSign、當(dāng)前締約方簽名signature、當(dāng)前締約方簽名時(shí)間signdate.
智能合約訂立是指能夠使合約合法成立的過程.基于區(qū)塊鏈的智能合約平臺(tái),要約人和受要約人需遵循相關(guān)法律要求的“要約-承諾”制度,使合約訂立流程合法合規(guī)化.
基于區(qū)塊鏈的智能合約平臺(tái)為締約雙方提供合約范本庫(kù),雙方可根據(jù)自身需求對(duì)合約范本進(jìn)行選擇.為使合約訂立過程中的要約-承諾階段能夠滿足現(xiàn)行法律對(duì)要約-承諾的認(rèn)定,合約范本必須為當(dāng)事人提供書面化交互接口.在“訂”階段,合約中任何需由當(dāng)事人確定的信息,都必須由當(dāng)事人經(jīng)協(xié)商后主動(dòng)填入.在“立”階段,對(duì)合約的簽名動(dòng)作,必須保證由要約人/受要約人主動(dòng)激活.因此,在合約訂立交互接口中必須包含當(dāng)事人主動(dòng)注冊(cè)為要約人/受要約人的接口(registPublish)及當(dāng)事人主動(dòng)對(duì)合約發(fā)起簽名的接口(toSign).
區(qū)塊鏈以伴隨交易的形式對(duì)合約訂立過程中的交互數(shù)據(jù)進(jìn)行存證.要約人(PartyI)閱讀,理解并同意合約中所有表述,則通過主動(dòng)觸發(fā)方式激活合約范本中的簽名交互接口,進(jìn)而調(diào)用已部署的智能合約可執(zhí)行算法予以處理,處理完畢后將簽名時(shí)間Time(PartyI)和簽名Sign(PartyI)以伴隨交易的形式存儲(chǔ)于區(qū)塊鏈,并將處理結(jié)果填充回合約范本,供相關(guān)人員查看.
要約生效后,要約過程中的所有數(shù)據(jù)都被存儲(chǔ)于區(qū)塊鏈,任何時(shí)候相關(guān)人員都可請(qǐng)求查看合約內(nèi)容.受要約人(PartyII)若同意此要約,則主動(dòng)觸發(fā)合約交互接口進(jìn)行簽名,待已部署的智能合約可執(zhí)行算法處理完畢后,將簽名時(shí)間Time(PartyII)和簽名Sign(PartyII)同樣以伴隨交易的形式存儲(chǔ)于區(qū)塊鏈,并將處理結(jié)果填充回合約范本以供查看.
締約雙方經(jīng)智能合約訂立階段后,合約生效.預(yù)先被存在鏈上的智能合約代碼被當(dāng)事人觸發(fā),通過網(wǎng)絡(luò)中多節(jié)點(diǎn)共識(shí)后,按照合約中表述的條款自動(dòng)執(zhí)行.智能合約從一個(gè)狀態(tài)轉(zhuǎn)變成另一個(gè)狀態(tài),基于區(qū)塊鏈的智能合約平臺(tái)將合約代碼、合約執(zhí)行的中間狀態(tài)Status、執(zhí)行結(jié)果以伴隨交易的形式存儲(chǔ)至區(qū)塊鏈.該過程可對(duì)合約訂立及合約執(zhí)行中合約狀態(tài)的改變進(jìn)行存證[30],其中區(qū)塊鏈一方面保證這些數(shù)據(jù)不被篡改,另一方面通過每個(gè)節(jié)點(diǎn)以相同的輸入執(zhí)行智能合約來驗(yàn)證運(yùn)行結(jié)果的正確性.
締約雙方及相關(guān)人員可通過交易id 隨時(shí)請(qǐng)求調(diào)取查看合約的代碼、執(zhí)行狀態(tài)以及執(zhí)行結(jié)果.智能合約平臺(tái)將智能法律合約和鏈上存儲(chǔ)的交互數(shù)據(jù)進(jìn)行整合,并以書面化形式予以呈現(xiàn).
總之,上述智能合約訂立方案遵循“要約-承諾”制度,能夠符合現(xiàn)行法律法規(guī)規(guī)范,從而保證智能合約依法成立與法律效力.
第4 節(jié)已從建立、部署、訂立和存證四個(gè)階段規(guī)范了智能合約訂立流程.此后我們將對(duì)該流程中的訂立階段進(jìn)行詳細(xì)設(shè)計(jì),使該階段滿足相關(guān)法律規(guī)定的“要約-承諾”制度,保證合約合法成立.
智能法律合約作為法律合同轉(zhuǎn)化為智能合約程序的過渡形式[33],也需要遵循我國(guó)相關(guān)法律法規(guī)對(duì)合約訂立的要求.同時(shí),考慮到智能法律合約語(yǔ)言是編寫智能法律合約的原則和依據(jù),因而首先需要在智能法律合約語(yǔ)言設(shè)計(jì)中滿足合約訂立的法律要求.為了達(dá)到這一目的,本節(jié)將首先以SPESC 語(yǔ)言為例介紹智能法律合約,繼而在其中加入合約訂立相關(guān)語(yǔ)法并加以示例.
智能法律合約語(yǔ)言是一種面向法律合同領(lǐng)域的編程語(yǔ)言,屬于領(lǐng)域特定語(yǔ)言DSL 的一種,其特征就是符合現(xiàn)行法律規(guī)范.文獻(xiàn)[12]提出的智能合約規(guī)范化語(yǔ)言SPESC 就是這類語(yǔ)言的一種.采用該語(yǔ)言所撰寫的智能法律合約有利于不同領(lǐng)域(法律、計(jì)算機(jī)及相關(guān)應(yīng)用領(lǐng)域)人員協(xié)同設(shè)計(jì)和開發(fā)智能合約,是一種更加高級(jí)的智能合約語(yǔ)言形式.
表2 展示了SPESC 的智能法律合約語(yǔ)法規(guī)則.依據(jù)《民法典》第470 條規(guī)定,智能法律合約涵蓋的合同內(nèi)容包括:當(dāng)事人信息、標(biāo)的、數(shù)量、質(zhì)量、價(jià)款或者報(bào)酬、履行期限和方式、違約責(zé)任、解決爭(zhēng)議的方法等方面,因此,SPESC 語(yǔ)言編寫的智能法律合約由合約框架(Contract)、合約名稱(Title)、當(dāng)事人描述(Parties)、標(biāo)的(Assets)、資產(chǎn)表達(dá)式(AssetExpressions)、合約條款(Terms)、附加信息(Additions)等法律構(gòu)成要素組成.
表2 以SPESC 為例的智能法律合約語(yǔ)法模型Table 2 Grammar model of smart legal contract based on SPESC
標(biāo)的是指當(dāng)事人權(quán)利和義務(wù)共同指向的對(duì)象,以資產(chǎn)加以表示.資產(chǎn)表達(dá)式則是智能合約語(yǔ)言中條款調(diào)用資產(chǎn)的形式,通常涉及的資產(chǎn)操作包括存入(Deposits)、取回(Withdraws)、轉(zhuǎn)移(Transfers)三類.文獻(xiàn)[34]對(duì)各種類型標(biāo)的物(實(shí)物資產(chǎn)、虛擬資產(chǎn)、貨幣資產(chǎn)等)及其操作進(jìn)行了全面闡述.
合同的主體是合同的各項(xiàng)條款,也是確定當(dāng)事人權(quán)利和義務(wù)的根據(jù).在SPESC 語(yǔ)言中,條款包括一般條款(GeneralTerms)、違約條款(BreachTerms)、仲裁條款(ArbitrationTerms)三種類型.文獻(xiàn)[17]中將合約名稱、當(dāng)事人描述、合同條款及附加信息進(jìn)行了詳細(xì)介紹,并給出了由SPESC 撰寫合約轉(zhuǎn)化為智能合約程序的方法.然而,上述工作都不涉及合約訂立過程,也沒有在語(yǔ)言中支持合約訂立相關(guān)語(yǔ)法.
在現(xiàn)行法律法規(guī)中合同訂立法律構(gòu)成要件基礎(chǔ)上,本文對(duì)智能法律合約語(yǔ)言進(jìn)行了擴(kuò)充并引入了合約訂立(Contract conclusions)相關(guān)語(yǔ)法.首先,鑒于要約、承諾是合同成立的基本規(guī)則,因此合約訂立語(yǔ)法需體現(xiàn)要約和承諾兩個(gè)階段;其次,訂立過程必須確認(rèn)當(dāng)事人的姓名或者名稱和住所;此外,《民法典》第490 條規(guī)定了采用合同書形式訂立合同的,自當(dāng)事人均簽名時(shí)合同成立,因此,智能法律合約必須支持當(dāng)事人以數(shù)字簽名形式對(duì)合約進(jìn)行簽名.
鑒于以上三點(diǎn)要求,參照現(xiàn)有書面合同樣式,合約訂立需包括兩個(gè)部分:
(1)當(dāng)事人宣稱(statement):用于雙方當(dāng)事人以意思表示的形式對(duì)要約與承諾過程中事項(xiàng)進(jìn)行表述;
(2)當(dāng)事人簽名(signature):用于記錄合約成立的時(shí)間、地點(diǎn)、當(dāng)事人及簽名等信息,包括:打印名(printed-Name)、法定代表人簽字(signature)、以及簽訂日期(date)等.
根據(jù)上述兩部分的描述,智能法律合約中合約訂立語(yǔ)法如下:
其中,?表示前面部分為可選內(nèi)容,Pname 為當(dāng)事人描述中定義的當(dāng)事人名稱(見表2 中定義).在當(dāng)事人宣稱部分可用自然語(yǔ)言對(duì)要約和承諾過程進(jìn)行描述,例如:
(1)除非以書面形式并經(jīng)雙方簽署,否則本合約不得以任何方式修改.
(2)通過數(shù)字簽名,表明締約雙方都已經(jīng)閱讀、理解并同意本合同中的所有條款和法規(guī)等.
(3)雙方當(dāng)事人同意智能法律合約及其轉(zhuǎn)化的智能合約,與現(xiàn)實(shí)法律合同具有同等的法律地位.在3)中對(duì)智能法律合約及所轉(zhuǎn)化智能合約的法律效力進(jìn)行肯定.
在上述智能法律合約語(yǔ)言中添加訂立語(yǔ)法后,我們給出了一個(gè)由智能法律合約語(yǔ)言所撰寫的打印機(jī)銷售合約范本,如圖4 所示.該法律合約范本包含以下四方面內(nèi)容:
圖4 PESC 編寫的打印機(jī)銷售合約示范文本Fig.4 Pattern of a printer sales contract written by SPESC
(1)當(dāng)事人信息(party):打印機(jī)銷售合約范本包含賣方(Seller)和買方(Buyer).其中,Seller 中account 屬性用于記錄賣方的賬戶地址,同時(shí)聲明了賣方可以執(zhí)行的兩個(gè)動(dòng)作:交付打印機(jī)(deliver)和選擇支付方式(collectPayment);Buyer 中account屬性用于記錄買方的賬戶地址以及聲明了買方可以執(zhí)行的兩個(gè)動(dòng)作:預(yù)定打印機(jī)(order)和確認(rèn)收貨(confirmReceive).
(2)標(biāo)的信息(asset):作為標(biāo)的的打印機(jī)定義包含string 類型的name 屬性和貨幣類型的value屬性.
(3)條款(term):打印機(jī)銷售合約范本中包含4 條條款,條款No1 和條款No3 定義了買方(Buyer)有權(quán)觸發(fā)動(dòng)作預(yù)定打印機(jī)(order)和確認(rèn)收貨(confirmReceive),條款No2 和條款No4 定義了賣方(Seller)有權(quán)觸發(fā)動(dòng)作交付打印機(jī)(deliver)和選擇支付方式(collectPayment).
(4)合約訂立(Contract conclusion):合約范本的當(dāng)事人宣稱部分包含了此類紙質(zhì)合同所必需聲明的意思表示;雙方簽名部分包括兩個(gè)string 類型的printed-Name 屬性和signature 屬性,及一個(gè)Date 類型的date 屬性.在圖4 合約實(shí)例中,方框表示部分為當(dāng)事人提供書面化交互接口.以上述打印機(jī)銷售合約范本為例,智能法律合約中方框所表示的兩種類型的信息如下:
(a)要素屬性信息:經(jīng)雙方當(dāng)事人協(xié)商或由一方當(dāng)事人填入后確定的信息.語(yǔ)法為“type:屬性類型”,type 是此處需填入的類型標(biāo)志符.如打印機(jī)銷售合約范本中,打印機(jī)定義的name 屬性為“type:string”,表示該屬性須由賣方(Seller)填入的打印機(jī)型號(hào),并且該屬性值為string;
(b)行為屬性信息:由當(dāng)事人主動(dòng)觸發(fā)動(dòng)作后確定的信息.語(yǔ)法為“action:動(dòng)作名”,action 為動(dòng)作標(biāo)志符.如打印機(jī)銷售合約范本中,賣方(Seller)所定義的account 屬性信息為“action:registPublish”,表示該屬性是賣方(Seller)在主動(dòng)觸發(fā)動(dòng)作registPublish 時(shí)被填入的賣方賬戶地址(account).簽名時(shí),賣方(Seller)和買方(Buyer)主動(dòng)觸發(fā)動(dòng)作toSign,將各自的打印名(printed-Name),簽名(signature)和簽名時(shí)間(date)填入.registPublish 動(dòng)作和toSign 動(dòng)作的詳細(xì)分析見7.2 節(jié).
上述打印機(jī)銷售合約范本被定義完成后,雙方當(dāng)事人通過協(xié)商確定范本中的要素屬性值(包括雙方簽名)完成合約訂立,并發(fā)送給區(qū)塊鏈對(duì)要素屬性值進(jìn)行存證.任何時(shí)候相關(guān)方都可查看訂立后合同,并由智能法律合約平臺(tái)在合約范本中添加區(qū)塊鏈存證的要素屬性值生成該合約實(shí)例(即訂立后合同).
在5.3 節(jié)智能法律合約語(yǔ)言編寫的銷售合約范本基礎(chǔ)上,本節(jié)將給出該范本的合約訂立方案.遵照合約訂立“要約-承諾”的法律制度,銷售合約通常將賣方Seller 作為要約人,買方Buyer 作為受要約人,因此,要約過程可視為賣方簽署合約并向買方提供合同文本表明締結(jié)合同的請(qǐng)求,承諾過程則視為買方接受請(qǐng)求并簽署合約的行為.
銷售合約訂立流程如圖5 所示,詳細(xì)步驟如下:
圖5 銷售合約的訂立流程圖Fig.5 Flowchart of sales contract conclusion
(1)將合約部署至基于區(qū)塊鏈的智能合約平臺(tái),生成簽名列表并以交易形式存儲(chǔ)于區(qū)塊鏈;
(2)執(zhí)行方觸發(fā)動(dòng)作registPublish,從區(qū)塊鏈上下載簽名列表,判斷執(zhí)行方身份?
(a)如果是要約人,則完成要約人注冊(cè)并將其加入簽名列表;要約人觸發(fā)動(dòng)作toSign,執(zhí)行要約人簽名,并轉(zhuǎn)至步驟(4);
(b)如果不屬于要約人,則轉(zhuǎn)為步驟(3);
(3)判斷當(dāng)前執(zhí)行方是否為受要約人且要約人已簽名?
(a)如果是受要約人,則完成受要約人注冊(cè)并將其加入簽名列表;受要約人觸發(fā)動(dòng)作toSign,執(zhí)行受要約人簽名,并轉(zhuǎn)至步驟(4);
(b)如果不是受要約人,則轉(zhuǎn)為步驟(2);
(4)填充簽名信息至簽名列表,并將更新后的簽名列表發(fā)布至區(qū)塊鏈;
(5)判斷締約雙方是否均已簽名?
(a)如果均已簽名,進(jìn)入合約執(zhí)行階段,程序結(jié)束;
(b)否則轉(zhuǎn)至步驟2;
在上述流程中必須保證要約人先對(duì)合約內(nèi)容進(jìn)行確認(rèn)并簽名,受要約人才被允許進(jìn)行確認(rèn)并簽名.在具體實(shí)施中,要約人和受要約人都將通過動(dòng)作觸發(fā)的方式激活圖5 中方框內(nèi)的行為屬性,進(jìn)而觸發(fā)已部署的智能合約算法(registPublish 和toSign)予以處理,并將結(jié)果填充回方框內(nèi)供締約雙方查看.
締約方觸發(fā)動(dòng)作registPublish,完成注冊(cè)并加入簽名列表,注冊(cè)流程如算法1 所示.該算法需輸入當(dāng)前締約方賬戶地址address、系統(tǒng)自動(dòng)部署智能合約可執(zhí)行代碼后獲得的合約地址contractAddress 和一個(gè)布爾類型的bOfferor(表示動(dòng)作registPulish 是否由要約方觸發(fā)).輸出listSign數(shù)組,用來存儲(chǔ)PartiesSigns 簽名方類對(duì)象,該對(duì)象表示合約訂立語(yǔ)法的簽名部分,包括三個(gè)基本屬性:簽名方地址、對(duì)應(yīng)簽名和簽名時(shí)間.其中,算法中的判斷條件signUser==NULL 是防止締約方重復(fù)注冊(cè)簽名列表.在合約中,可以對(duì)簽名方進(jìn)行添加操作,簽名方賬戶地址作為當(dāng)事人的唯一標(biāo)識(shí).
算法1 registPublish
締約方觸發(fā)動(dòng)作toSign,進(jìn)行簽名,完成合約訂立,訂立流程如算法2 所示.該算法需輸入當(dāng)前執(zhí)行方賬戶地址address,合約地址contractAddress和一個(gè)布爾類型的bOfferor(表示動(dòng)作toSign 是否由要約方觸發(fā)).輸出是一個(gè)布爾類型的flag,表示當(dāng)前動(dòng)作是否執(zhí)行成功.其中,該算法的第一層判斷條件signUser!=NULL 是驗(yàn)證觸發(fā)動(dòng)作的執(zhí)行方是否存在于簽名列表;第二層判斷條件signUser.get Signature()是防止二次簽名,bOfferor==bCheckOfferor是保證觸發(fā)動(dòng)作的執(zhí)行方與簽名列表中的簽名方是同一個(gè)人;第三層判斷條件bOfferor==true 是判斷當(dāng)前觸發(fā)動(dòng)作的執(zhí)行方是否是要約人,如果bOfferor 取值為true,表明當(dāng)前執(zhí)行方是要約方,則直接調(diào)用signMessage 函數(shù)進(jìn)行簽名,否則執(zhí)行判斷條件listSign.getOfferorSignature() !=null 判斷要約人是否已簽名,如果已簽名,則受要約人直接調(diào)用signMessage 函數(shù)進(jìn)行簽名.signMessage 函數(shù)采用的是橢圓曲線數(shù)學(xué)簽名算法ECDSA-secp256k1.
算法2 toSign
在上述合約訂立過程中區(qū)塊鏈負(fù)責(zé)對(duì)交互數(shù)據(jù)進(jìn)行存證,這些存證應(yīng)符合我國(guó)現(xiàn)行法律的存證要求,同時(shí),區(qū)塊鏈不可修改的特性也保證了存證的真實(shí)性[35].根據(jù)合約訂立過程,我們不難發(fā)現(xiàn)一個(gè)合約實(shí)例由其對(duì)應(yīng)的范本及交互信息共同生成,這就保證了同一個(gè)合約范本能夠支持大量的合約實(shí)例.為了符合上述合約訂立的存證要求,本節(jié)將以7.1 節(jié)銷售合約的訂立過程為實(shí)例,對(duì)所涉及的區(qū)塊鏈存證方案進(jìn)行設(shè)計(jì),并通過實(shí)驗(yàn)案例加以驗(yàn)證.
實(shí)驗(yàn)采用基于Bitcoin 架構(gòu)的區(qū)塊鏈系統(tǒng).該系統(tǒng)以JSON 格式的伴隨交易(Transaction)(見表1)為數(shù)據(jù)結(jié)構(gòu)進(jìn)行數(shù)據(jù)存儲(chǔ),其中JSON 是一種采用“鍵值對(duì)”形式存儲(chǔ)數(shù)據(jù),并支持?jǐn)?shù)組([…]表示)和集合({…}表示)兩種結(jié)構(gòu).下面將基于JSON 格式對(duì)智能合約執(zhí)行流程所涉及的交易結(jié)構(gòu)進(jìn)行介紹:
(1)注冊(cè)合約的交易結(jié)構(gòu):圖6 為買方Buyer觸發(fā)動(dòng)作registPublish 的注冊(cè)交易結(jié)構(gòu),包含輸入字段和輸出字段.輸入字段有method、params 等.其中,method 是本次觸發(fā)合約的動(dòng)作名,params 為參數(shù)數(shù)組,第一個(gè)參數(shù)是買方Buyer 的賬戶地址,第二個(gè)參數(shù)是合約地址.輸出字段有l(wèi)istSign,txid.其中l(wèi)istSign 為更新后的簽名方列表;txid 表示此次注冊(cè)合約的交易id,通過該字段可恢復(fù)此次合約狀態(tài).該觸發(fā)動(dòng)作被已部署的智能合約算法registPublish 處理完畢后,將買方Buyer 賬戶地址填充回買方Buyer 的account 屬性方框內(nèi),供締約雙方查看.
圖6 買方Buyer 注冊(cè)合約交易結(jié)構(gòu)圖Fig.6 Transaction datagram of a buyer registration contract
(2)訂立合約的交易結(jié)構(gòu):締約方通過觸發(fā)動(dòng)作registPublish 后將其加入到listSign 簽名列表中,等待合約簽名.圖7 為買方Buyer 有權(quán)觸發(fā)簽名后的訂立交易結(jié)構(gòu).輸入字段與上述注冊(cè)交易的輸入字段一致.輸出字段包含的4 個(gè)屬性:userResult用于提示簽名方是否簽名成功;listSign 為簽名完成后更新的簽名列表;signature 為當(dāng)前執(zhí)行方簽名;signdate 為簽名時(shí)間;txid 為此次合約訂立的交易id,通過該id 可恢復(fù)此次合約狀態(tài).該簽名觸發(fā)動(dòng)作被已部署的智能合約算法toSign 處理完畢后,將簽名siganture 和簽名時(shí)間signdate 填充回買方Buyer 的合約訂立簽名部分.
圖7 買方Buyer 簽名交易結(jié)構(gòu)圖Fig.7 Transaction datagram of a buyer signature contract
(3)執(zhí)行合約的交易結(jié)構(gòu):以銷售合約中條款No1 執(zhí)行為例,圖8 為買方Buyer 觸發(fā)動(dòng)作預(yù)定打印機(jī)order 的執(zhí)行合約交易結(jié)構(gòu),包含輸入字段和輸出字段.其中,輸入字段中method 為本次觸發(fā)的合約動(dòng)作名;params 為合約參數(shù)數(shù)組,第一個(gè)參數(shù)為買方Buyer 的賬戶地址,第二個(gè)參數(shù)為合約地址,第三個(gè)參數(shù)為買方Buyer 所傳入的預(yù)定金額.輸出字段中userResult 為預(yù)定提示信息,txid 為此次執(zhí)行合約的交易id.
圖8 買方Buyer 訂購(gòu)交易結(jié)構(gòu)圖Fig.8 Transaction datagram of a buyer purchase contract
上述交易結(jié)構(gòu)的設(shè)計(jì)使得合約注冊(cè),訂立和執(zhí)行三個(gè)階段的交互數(shù)據(jù)都被存證,締約雙方及相關(guān)人員可通過交易id 隨時(shí)請(qǐng)求調(diào)取查看合約內(nèi)容.基于區(qū)塊鏈的智能合約平臺(tái)將智能法律合約和鏈上存儲(chǔ)的交互數(shù)據(jù)進(jìn)行整合,并以書面化形式予以呈現(xiàn).圖9 是5.3 節(jié)銷售合約范本與鏈上交互數(shù)據(jù)整合后的合約實(shí)例書面化呈現(xiàn).
圖9 被填充后的打印機(jī)銷售合約示范文本Fig.9 Filled pattern of a printer sale contract
本節(jié)將對(duì)第6 節(jié)智能法律合約訂立方案的合規(guī)性進(jìn)行辨析,從而論證所提方案能夠滿足我國(guó)現(xiàn)行法律的規(guī)定,由該方案處理的智能合約具有法律效力.
辨析1:本文合約訂立過程中的要約階段滿足現(xiàn)行法律對(duì)要約的認(rèn)定.
《民法典》第472 條規(guī)定:“要約是希望與他人訂立合同的意思表示,該意思表示應(yīng)當(dāng)符合下列條件:內(nèi)容具體確定;表明經(jīng)受要約人承諾,要約人即受該意思表示約束”.據(jù)此,智能法律合約訂立中的要約階段需滿足以下要求:
(1)合約內(nèi)容具體確定.
智能法律合約作為法律合同轉(zhuǎn)化為智能合約程序的過渡形式,同樣以數(shù)字代碼的形式呈現(xiàn).如5.3 節(jié)所示,從SPESC 撰寫的打印機(jī)銷售合約范本中可得出如下事實(shí):首先,SPESC 語(yǔ)言作為計(jì)算機(jī)語(yǔ)言具有明確形式化、無(wú)二義性語(yǔ)法,滿足《民法典》規(guī)定合同內(nèi)容顯式定義的要求;其次,該合約范本中條款包含了權(quán)利義務(wù)關(guān)系的聲明,進(jìn)一步使要約人的意思表示內(nèi)容具體確定;此外,該合約范本中訂立語(yǔ)法不僅包含了由締約雙方不斷協(xié)商后所約定的意思表示,也包含了當(dāng)事人姓名、簽名、合約成立時(shí)間等信息.因此,由智能法律合約語(yǔ)言所撰寫的智能法律合約其內(nèi)容具體且確定.
(2)要約人受該意思表示約束.
智能法律合約作為合約范本,為當(dāng)事人提供了書面化交互接口,如5.3 節(jié)的銷售合約范本.合約內(nèi)容以書面化形式供締約雙方閱讀,雙方通過不斷協(xié)商確定法律合約中要素屬性信息的值,并通過動(dòng)作激活行為屬性,進(jìn)而觸發(fā)智能合約可執(zhí)行代碼予以處理.上述一切的交互形式都是締約雙方在閱讀,理解并同意合約中所有條款的情況下主動(dòng)發(fā)起的.
合約范本訂立語(yǔ)法中包含當(dāng)事人宣稱部分.該部分是締約雙方對(duì)要約和承諾過程中的事項(xiàng)進(jìn)行不斷協(xié)商后的表述,因此,這部分是用戶主觀的意思表示,如5.3 節(jié)銷售合約范本的訂立宣稱部分包含如下約定:“雙方當(dāng)事人同意高級(jí)智能法律合約及其轉(zhuǎn)化的可執(zhí)行程序,與現(xiàn)實(shí)法律合同具有同等的法律地位”.即表示締約雙方肯定了智能法律合約的法律地位,愿意同紙質(zhì)合同一樣受其約束.
《民法典》第140 條第1 款規(guī)定:“行為人可以明示或者默示作出意思表示”,在本文訂立語(yǔ)法的當(dāng)事人簽名部分,要約人通過明示方式作出其意思表示,如主動(dòng)觸發(fā)上述行為屬性信息,明確表明要約人已經(jīng)同意本合約中的所有內(nèi)容.在5.3 節(jié)銷售合約范本訂立部分,賣方Seller 如同意該合約則主動(dòng)觸發(fā)動(dòng)作toSign,對(duì)合約簽名,生成簽名signature及簽名時(shí)間signdate.
因此,智能法律合約經(jīng)受要約人承諾后,要約人必受該合約內(nèi)容的意思表示約束.
(3)要約生效時(shí)間.
《民法典》第137 條第2 款規(guī)定:“當(dāng)事人對(duì)采用數(shù)據(jù)電文形式的意思表示的生效時(shí)間另有約定的,按照其約定”.區(qū)塊鏈負(fù)責(zé)對(duì)合約訂立過程中的交互數(shù)據(jù)進(jìn)行存證,要約人可查看合約內(nèi)容,如希望與他人締結(jié)合同,并已同意合約內(nèi)容,則主動(dòng)觸發(fā)動(dòng)作toSign 予以簽名,即要約,因此可將要約生效時(shí)間約定為要約人簽名時(shí)間.如第5.3 節(jié)銷售合約范本中訂立合約部分,賣方Seller 主動(dòng)觸發(fā)動(dòng)作toSign,通過被已部署的智能合約算法toSign 處理完畢后,將簽名siganture 和簽名時(shí)間signdate 填充回賣方Seller 的合約訂立簽名部分,此時(shí)要約生效,該簽名時(shí)間為要約生效時(shí)間.
辨析2:本文合約訂立過程中的承諾階段滿足現(xiàn)行法律對(duì)承諾的認(rèn)定.
《民法典》第479 條規(guī)定:“承諾是受要約人同意要約的意思表示”.據(jù)此,智能法律合約訂立中的承諾階段需滿足以下要求:
(1)受要約人意思表示.
如同上述要約認(rèn)定第2 點(diǎn)分析,合約內(nèi)容以書面化形式供締約雙方查看,法律合約范本中所有的要素屬性信息(包括簽名部分)都是受要約人主動(dòng)觸發(fā)的.同時(shí),受要約人也通過明示方式作出意思表示,明確表明受要約人已經(jīng)閱讀、理解并同意本合約中的所有條款.如第5.3 節(jié)銷售合約范本中訂立合約部分,買方Buyer 主動(dòng)觸發(fā)動(dòng)作toSign,被已部署的智能合約算法toSign 處理完畢后,將簽名siganture 和簽名時(shí)間signdate 填充回買方Buyer 的合約訂立簽名部分,即買方Buyer 對(duì)該合約承諾,從而證實(shí)受要約人接受該意思表示.
(2)承諾生效時(shí)間.
《民法典》第484 條規(guī)定:“以通知方式作出的承諾,生效的時(shí)間適用本法第137 條的規(guī)定”.在本文的訂立流程中,要約生效后將要約過程中的交互數(shù)據(jù)發(fā)布至區(qū)塊鏈,受要約人可查看合約內(nèi)容及交互數(shù)據(jù),若同意此要約,則觸發(fā)動(dòng)作toSign予以簽名,此時(shí)表示受要約人已接受要約內(nèi)容,即承諾,因此可將受要約人對(duì)其進(jìn)行簽名的時(shí)間視為承諾時(shí)間.另?yè)?jù)《民法典》第483 條規(guī)定:“承諾生效時(shí)合同成立”,可知在銷售合約范本中當(dāng)買方Buyer 對(duì)其進(jìn)行承諾后,合約成立.
辨析3:本文合約訂立過程中對(duì)于合約原件及交互數(shù)據(jù)保存形式滿足現(xiàn)行法律要求.
《電子簽名法》第5 條規(guī)定:“符合下列條件的數(shù)據(jù)電文,視為滿足法律、法規(guī)規(guī)定的原件形式要求:能夠有效地表現(xiàn)所載內(nèi)容并可供隨時(shí)調(diào)取查用;能夠可靠地保證自最終形成時(shí)起,內(nèi)容保持完整、未被更改”.合約訂立是一個(gè)交互的過程,區(qū)塊鏈負(fù)責(zé)為交互過程中的數(shù)據(jù)進(jìn)行存證.因此,本文合約訂立過程需滿足以下要求:
(1)隨時(shí)調(diào)取查用.
一個(gè)合約實(shí)例由其對(duì)應(yīng)的范本及交互信息共同生成,為滿足合約訂立過程中對(duì)交互數(shù)據(jù)存證的需求,在第8 節(jié)我們?cè)O(shè)計(jì)了智能合約執(zhí)行流程中所涉及的三種交易結(jié)構(gòu),將當(dāng)事人注冊(cè)、簽名及運(yùn)行合約的全流程存儲(chǔ)于區(qū)塊鏈,區(qū)塊鏈的公開透明性使得任何時(shí)候智能法律合約范本都可從中獲取到交互數(shù)據(jù)對(duì)要素屬性值進(jìn)行填充,供相關(guān)方調(diào)取查用.
(2)存儲(chǔ)可靠性.
智能法律合約存儲(chǔ)的可靠性取決于區(qū)塊鏈的存儲(chǔ)可靠性.區(qū)塊鏈本身具有防篡改、難刪除和公開透明的特性,合約交易數(shù)據(jù)一經(jīng)全網(wǎng)共識(shí)即被永久的存于鏈上[36].在數(shù)量龐大的節(jié)點(diǎn)中,必須同時(shí)破壞51%的節(jié)點(diǎn),才會(huì)影響整個(gè)系統(tǒng)的運(yùn)行,篡改區(qū)塊數(shù)據(jù),但這僅僅在理論上是可能的.因此,符合上述《電子簽名法》第五條規(guī)定.
(3)形式完整性.
區(qū)塊鏈中數(shù)據(jù)存儲(chǔ)采用JSON 格式,盡管這種格式與書面化的智能法律合約不同,但這并不影響智能法律合約的內(nèi)容,且其可隨時(shí)準(zhǔn)確恢復(fù)到原書面化形式.根據(jù)《電子簽名法》第5 條規(guī)定:“在數(shù)據(jù)電文上增加背書以及數(shù)據(jù)交換、儲(chǔ)存和顯示過程中發(fā)生的形式變化不影響數(shù)據(jù)電文的完整性”.因此,區(qū)塊鏈存證并不影響智能法律合約的形式完整性.
綜上,本文在基于區(qū)塊鏈的智能合約系統(tǒng)上提出的合約訂立方案能夠滿足現(xiàn)行法律法規(guī)對(duì)要約、承諾的認(rèn)定及對(duì)合約原件形式保存的要求.
本文為使智能法律合約訂立過程符合相關(guān)法律所規(guī)定的要約-承諾制度,對(duì)智能法律合約語(yǔ)言進(jìn)行了擴(kuò)充,引入了合約訂立相關(guān)語(yǔ)法和合約范本概念,提出了基于數(shù)字簽名的法律要約和承諾過程及相應(yīng)算法.同時(shí),為了支持上述方案的實(shí)現(xiàn),在區(qū)塊鏈平臺(tái)中設(shè)計(jì)了三種交易結(jié)構(gòu),能夠使合約訂立過程中的交互數(shù)據(jù)存證滿足現(xiàn)行法律存證要求.本文所做工作將有助于為智能法律合約的訂立過程提供法律依據(jù),促進(jìn)我國(guó)智能合約的法律化建設(shè).