郭倩等:基于要约-承诺的智能法律合约订立方法与实现 5 (©)执行层利用链上数据判断是否满足合约条 合约中表述的权利义务关系,则选择进行交易 款,若满足则自动执行合约 通过该方式也可反映出不同缔约主体间的合 (3)区块链:为智能合约提供了一个强有力的 意,自合约成立后,双方当事人均受该意思表示 底层介质2,用于记录合约的代码、执行的中间状 约束 态及执行结果.当前智能合约平台已经能够屏蔽 4智能合约订立流程合规化方案 区块链中的很多技术细节,使得区块链中的各种 复杂(哈希、P2P、共识机制、激励机制)机制为智 类似于传统纸质合同的签订方式,智能合约 能合约生命周期中的数据存证提供保障, 采取电子化形式进行要约-承诺认定,双方当事人 上述框架中甲、乙双方事先并未达成合意,编 签署数字签名后即视为缔约双方对智能合约代码 程人员直接通过智能法律合约语言编写合约范 所表示条款的认可,合约生效.智能合约订立流程 本后,智能合约程序被自动部署至智能合约平台, 如图3所示,包括智能合约从建立、部署、签名和 双方当事人从平台调取查看合约内容,如同意此 存证四个阶段的处理. Smart contract generation Storage structure of contract in blockchain Smart contract A Smart contract B Accompanying transaction (smart legal contract) (smart contract) Address Generation Smart Smart Contract B Contract A Conversion contract contract content Time(null) Sign (null) content A B Sign(executor) Time (null) Sign (null) Manual participation Deployment and signature (negotiation and acceptance) Blockchain Block Block > Block N-1 W+1 Query and access Query and access Signature Serial address Address Smart contract Signatures: Party I Party II Aand B Time(Party I Sign(Party I) Time(Party II Sign(Party II Time(Party I) Time(Party II) Sign (Party I) Sign(Party II) Time/Status Browsing content in blockchain Storage structure of signed contract in blockchain 图3智能合约订立数据流程图 Fig.3 Data flow diagram of smart contract conclusion 4.1智能合约建立 相比,虽然合同内容的载体不同,但这并不影响缔 智能合约建立阶段是指编程人员撰写智能法 约双方的合意呈现.其次,将智能合约A通过包含 律合约,经一定转化规则生成计算机可执行程序0. 一定转化规则的合约翻译器转化为智能合约程 具体如下:编程人员将缔约双方所描述的权利义 序,即智能合约B.例如,文献17]提出了一种从 务关系采用智能法律合约语言(如SPESC语言) 智能法律合约语言SPESC转化到以太坊智能合约 撰写成智能法律合约,即智能合约A.智能法律合 语言Solidity的转化规则,该转化规则的制定使得 约是对传统纸质合同的代码化后的结果,将自然 转化后的智能合约B具有规范的逻辑表达和函数 语言描述的合同条款用智能法律合约语言表述 结构,避免了同一份智能合约A经不同编程人员 后,可使合同条款在意思表示上更加精准简洁,无 转化后的不确定性 二义性别经翻译后的智能法律合约与纸质合同 智能法律合约(智能合约A)到智能合约(智能
(c)执行层利用链上数据判断是否满足合约条 款,若满足则自动执行合约. (3)区块链:为智能合约提供了一个强有力的 底层介质[28] ,用于记录合约的代码、执行的中间状 态及执行结果. 当前智能合约平台已经能够屏蔽 区块链中的很多技术细节,使得区块链中的各种 复杂(哈希、P2P、共识机制、激励机制)机制为智 能合约生命周期中的数据存证提供保障[29] . 上述框架中甲、乙双方事先并未达成合意,编 程人员直接通过智能法律合约语言编写合约范 本后,智能合约程序被自动部署至智能合约平台, 双方当事人从平台调取查看合约内容,如同意此 合约中表述的权利义务关系,则选择进行交易. 通过该方式也可反映出不同缔约主体间的合 意,自合约成立后,双方当事人均受该意思表示 约束. 4 智能合约订立流程合规化方案 类似于传统纸质合同的签订方式,智能合约 采取电子化形式进行要约–承诺认定,双方当事人 签署数字签名后即视为缔约双方对智能合约代码 所表示条款的认可,合约生效. 智能合约订立流程 如图 3 所示,包括智能合约从建立、部署、签名和 存证四个阶段的处理. Contract A content Smart contract A (smart legal contract) Smart contract B (smart contract) Storage structure of contract in blockchain Conversion Generation Signature Sign (executor) Manual participation and signature Contract B content Smart contract generation Block N−1 Block N Block N+1 … Blockchain Deployment (negotiation and acceptance) Query and access Browsing content in blockchain Storage structure of signed contract in blockchain Smart contract Aand B Serial : address Time/Status Signatures: Time(PartyⅠ)/Sign(PartyⅠ) Time(PartyⅡ)/Sign(PartyⅡ) Smart contract A Smart contract B Query and access Address Time (PartyⅠ) Time (PartyⅡ) PartyⅠ PartyⅡ Sign (PartyⅠ) Sign (PartyⅡ) Address Time (null) Time (null) Sign (null) Sign (null) Accompanying transaction 图 3 智能合约订立数据流程图 Fig.3 Data flow diagram of smart contract conclusion 4.1 智能合约建立 智能合约建立阶段是指编程人员撰写智能法 律合约,经一定转化规则生成计算机可执行程序[30] . 具体如下:编程人员将缔约双方所描述的权利义 务关系采用智能法律合约语言(如 SPESC 语言[12] ) 撰写成智能法律合约,即智能合约 A. 智能法律合 约是对传统纸质合同的代码化后的结果,将自然 语言描述的合同条款用智能法律合约语言表述 后,可使合同条款在意思表示上更加精准简洁,无 二义性[31] . 经翻译后的智能法律合约与纸质合同 相比,虽然合同内容的载体不同,但这并不影响缔 约双方的合意呈现. 其次,将智能合约 A 通过包含 一定转化规则的合约翻译器转化为智能合约程 序,即智能合约 B. 例如,文献 [17] 提出了一种从 智能法律合约语言 SPESC 转化到以太坊智能合约 语言 Solidity 的转化规则,该转化规则的制定使得 转化后的智能合约 B 具有规范的逻辑表达和函数 结构,避免了同一份智能合约 A 经不同编程人员 转化后的不确定性. 智能法律合约(智能合约 A)到智能合约(智能 郭 倩等: 基于要约–承诺的智能法律合约订立方法与实现 · 5 ·
工程科学学报,第44卷,第X期 合约B)转化过程通常应满足以下要求: 表1伴随交易的交易结构 (1)证智能法律合约与转化后的智能合约具 Table 1 Structure of accompanying transaction 有相同的意思表示,具备相同的法律效力: Notation Description (2)采用自动转化方式,转化在逻辑上是一种 contractAddress Deployment address of contract 映射,保证了转化结果无二义性,原因在于所涉及 latestCodelD Transaction ID of latest contract code 的转化规则是确定的,从而使智能法律合约被转 vin ContractInput 化后的结果是相同的: latestExecutelD Transaction ID of latest contract status (3)如果无法完成全部智能法律合约的自动 address Contract address 转化,则允许人工参与.不同的编程人员对同一条 method Contract interface 款的解读和代码实现可能是不同的,但代码的执 contractData Contract status 行结果必须是一致的. listSign Signature list 在人工转化过程中,编程人员或法人必须对 vout]ContractOutout signature Signature of current executor 转化后的智能合约进行签名,并承担所编写代码 signdate Signature date of the current 引发问题的法律责任.如当事人对转化后的合同 signer 条款有争议,应根据《民法典》第466条第1款规 (I)在输入(vin)字段中添加了ContractInput字 定:“合同文本采用两种以上文字订立并约定具 段,该字段包含:系统自动部署智能合约可执行代 有同等效力的,对各文本使用的词句推定具有相 码后获得的合约地址contractAddress、最新合约代 同含义.各文本使用的词句不一致的,应当根据合 码的交易标识latestCodeID、最新合约执行状态的 同的相关条款、性质、目的以及诚信原则等予以 交易标识lastestExecuteID、当前执行合约的账户地 解释”,确定争议条款的意思表示.总之,上述过 址address、当前所触发的合约接口method; 程无论是自动转化或是需人工参与,都必须保证 (2)在输出(vout)字段中添加了ContractOutput 智能合约A和转化后的智能合约B具备相同的意 字段,该字段包含:智能法律合约中的法律要素 思表示 属性信息contractData、合约签名列表listSign、 4.2智能合约部署 当前缔约方签名signature、当前缔约方签名时间 智能合约部署是指编程人员将智能合约A与 signdate. 智能合约B整合后部署至区块链智能合约平台的 4.3智能合约订立 过程0按照“要约-承诺”制度,合约部署后同意 智能合约订立是指能够使合约合法成立的过 该合约的当事人才能进入合约订立阶段,因此,在 程.基于区块链的智能合约平台,要约人和受要约 智能合约部署过程中不仅涉及智能合约存证与可 人需遵循相关法律要求的“要约-承诺”制度,使合 执行代码上链,还要为其后的智能合约订立预留 约订立流程合法合规化. 接口. 基于区块链的智能合约平台为缔约双方提供 为使区块链交易结构符合智能合约的订立要 合约范本库,双方可根据自身需求对合约范本进 求,需要将已部署智能合约中的部分信息(如 行选择.为使合约订立过程中的要约-承诺阶段能 4.2节智能法律合约中的法律要素属性)分离出来 够满足现行法律对要约-承诺的认定,合约范本必 并以交易形式独立进行存储,这种新的交易形式 须为当事人提供书面化交互接口.在“订”阶段,合 被称为伴随交易,它通常包含以下两类信息: 约中任何需由当事人确定的信息,都必须由当事 (1)智能合约范本中尚未确定并待当事人商 人经协商后主动填入,在“立”阶段,对合约的签名 议后确认的合约意思表示,比如,承诺生效时间、 动作,必须保证由要约人受要约人主动激活.因 标的价格、标的物编号、付款方式等: 此,在合约订立交互接口中必须包含当事人主动 (2)当事人订立合约中“立”阶段的智能合约 注册为要约人/受要约人的接口(registPublish)及当 署名信息,比如,要约人和受要约人的信息、签署 事人主动对合约发起签名的接口(toSign) 时间、数字签名等 区块链以伴随交易的形式对合约订立过程中 表1给出了一个伴随交易的示例结构.它是 的交互数据进行存证.要约人(PartyI)阅读,理解 在比特币的交易结构上添加新交易字段加以构 并同意合约中所有表述,则通过主动触发方式激 造,具体如下: 活合约范本中的签名交互接口,进而调用已部署
合约 B)转化过程通常应满足以下要求: (1)证智能法律合约与转化后的智能合约具 有相同的意思表示,具备相同的法律效力[32] ; (2)采用自动转化方式,转化在逻辑上是一种 映射,保证了转化结果无二义性,原因在于所涉及 的转化规则是确定的,从而使智能法律合约被转 化后的结果是相同的; (3)如果无法完成全部智能法律合约的自动 转化,则允许人工参与. 不同的编程人员对同一条 款的解读和代码实现可能是不同的,但代码的执 行结果必须是一致的. 在人工转化过程中,编程人员或法人必须对 转化后的智能合约进行签名,并承担所编写代码 引发问题的法律责任. 如当事人对转化后的合同 条款有争议,应根据《民法典》第 466 条第 1 款规 定: “合同文本采用两种以上文字订立并约定具 有同等效力的,对各文本使用的词句推定具有相 同含义. 各文本使用的词句不一致的,应当根据合 同的相关条款、性质、目的以及诚信原则等予以 解释”. 确定争议条款的意思表示. 总之,上述过 程无论是自动转化或是需人工参与,都必须保证 智能合约 A 和转化后的智能合约 B 具备相同的意 思表示. 4.2 智能合约部署 智能合约部署是指编程人员将智能合约 A 与 智能合约 B 整合后部署至区块链智能合约平台的 过程[30] . 按照“要约–承诺”制度,合约部署后同意 该合约的当事人才能进入合约订立阶段,因此,在 智能合约部署过程中不仅涉及智能合约存证与可 执行代码上链,还要为其后的智能合约订立预留 接口. 为使区块链交易结构符合智能合约的订立要 求 ,需要将已部署智能合约中的部分信息 ( 如 4.2 节智能法律合约中的法律要素属性)分离出来 并以交易形式独立进行存储,这种新的交易形式 被称为伴随交易,它通常包含以下两类信息: (1)智能合约范本中尚未确定并待当事人商 议后确认的合约意思表示,比如,承诺生效时间、 标的价格、标的物编号、付款方式等; (2)当事人订立合约中“立”阶段的智能合约 署名信息,比如,要约人和受要约人的信息、签署 时间、数字签名等. 表 1 给出了一个伴随交易的示例结构. 它是 在比特币的交易结构上添加新交易字段加以构 造,具体如下: 表 1 伴随交易的交易结构 Table 1 Structure of accompanying transaction Notation Description vin[] ContractInput contractAddress Deployment address of contract latestCodeID Transaction ID of latest contract code latestExecuteID Transaction ID of latest contract status address Contract address method Contract interface vout[] ContractOutout contractData Contract status listSign Signature list signature Signature of current executor signdate Signature date of the current signer (1)在输入(vin)字段中添加了 ContractInput 字 段,该字段包含:系统自动部署智能合约可执行代 码后获得的合约地址 contractAddress、最新合约代 码的交易标识 latestCodeID、最新合约执行状态的 交易标识 lastestExecuteID、当前执行合约的账户地 址 address、当前所触发的合约接口 method; (2)在输出(vout)字段中添加了 ContractOutput 字段,该字段包含:智能法律合约中的法律要素 属 性 信 息 contractData、 合 约 签 名 列 表 listSign、 当前缔约方签名 signature、当前缔约方签名时间 signdate. 4.3 智能合约订立 智能合约订立是指能够使合约合法成立的过 程. 基于区块链的智能合约平台,要约人和受要约 人需遵循相关法律要求的“要约–承诺”制度,使合 约订立流程合法合规化. 基于区块链的智能合约平台为缔约双方提供 合约范本库,双方可根据自身需求对合约范本进 行选择. 为使合约订立过程中的要约–承诺阶段能 够满足现行法律对要约–承诺的认定,合约范本必 须为当事人提供书面化交互接口. 在“订”阶段,合 约中任何需由当事人确定的信息,都必须由当事 人经协商后主动填入. 在“立”阶段,对合约的签名 动作,必须保证由要约人/受要约人主动激活. 因 此,在合约订立交互接口中必须包含当事人主动 注册为要约人/受要约人的接口(registPublish)及当 事人主动对合约发起签名的接口(toSign). 区块链以伴随交易的形式对合约订立过程中 的交互数据进行存证. 要约人(PartyI)阅读,理解 并同意合约中所有表述,则通过主动触发方式激 活合约范本中的签名交互接口,进而调用已部署 · 6 · 工程科学学报,第 44 卷,第 X 期