“区块链智能合约形式化表达”的版本间的差异
| (未显示同一用户的27个中间版本) | |||
| 第1行: | 第1行: | ||
| + | <div style="text-align:center "><font size=6>'''团 体 标 准'''</font></div> | ||
| + | |||
| + | <div style="text-align:right "><font size=5>T/CIE 095-2020</font></div> | ||
| + | ---- | ||
| + | <br> | ||
| + | ::<font size=5>区块链智能合约形式化表达</font> | ||
| + | |||
| + | ::<font size=5>Formal Expression of Blockchain Smart Contract</font> | ||
| + | |||
| + | <br> | ||
| + | ::{| | ||
| + | |style="width:50%"|发布日期: | ||
| + | || 2020-12-21 | ||
| + | |- | ||
| + | |style="width:50%"|实施日期: | ||
| + | || 2021-01-01 | ||
| + | |- | ||
| + | |style="width:50%"|发布机构: | ||
| + | ||中国电子学会 | ||
| + | |} | ||
| + | <br> | ||
| + | ::<font size=4>'''中国电子学会'''</font> | ||
| + | <br> | ||
__NOEDITSECTION__ | __NOEDITSECTION__ | ||
| + | |||
前言 | 前言 | ||
本文件按照GB/T 1.1-2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定起草。 | 本文件按照GB/T 1.1-2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定起草。 | ||
| 第14行: | 第38行: | ||
本文件通过提供一种适用法律合同的智能合约框架及语法规则,使所开发的智能法律合约成为一种介于现实法律合同与智能合约之间的过渡性法律文档。如图1所示,现实法律合同以自然语言为载体,可翻译成由智能法律合约语言撰写的智能法律合约,进而转化为由智能合约语言编写的智能合约。 | 本文件通过提供一种适用法律合同的智能合约框架及语法规则,使所开发的智能法律合约成为一种介于现实法律合同与智能合约之间的过渡性法律文档。如图1所示,现实法律合同以自然语言为载体,可翻译成由智能法律合约语言撰写的智能法律合约,进而转化为由智能合约语言编写的智能合约。 | ||
| − | [[文件: | + | [[文件:图一.png|居中|无框|700x700像素]] |
智能法律合约以程序代码表达合同条款,将现实法律合同与网络空间的程序代码相衔接,保证智能法律合约既有现实合同的法律特征和易理解性,又有计算机程序代码的规范性,促进计算机、法律等专业人员的跨领域协作。在区块链可确权基础上,智能法律合约将物理世界资产,如房子、健康数据和版权等表达为数字资产,并与可编程数字法币相结合,使其在区块链网络上自由使用和流通,推动数字经济快速健康发展。 | 智能法律合约以程序代码表达合同条款,将现实法律合同与网络空间的程序代码相衔接,保证智能法律合约既有现实合同的法律特征和易理解性,又有计算机程序代码的规范性,促进计算机、法律等专业人员的跨领域协作。在区块链可确权基础上,智能法律合约将物理世界资产,如房子、健康数据和版权等表达为数字资产,并与可编程数字法币相结合,使其在区块链网络上自由使用和流通,推动数字经济快速健康发展。 | ||
| 第111行: | 第135行: | ||
=== <div style="background:#E3E3E3; color:#000; padding-top: 15px; height:40px; padding-left:15px "> (3.2) 关键词</div> === | === <div style="background:#E3E3E3; color:#000; padding-top: 15px; height:40px; padding-left:15px "> (3.2) 关键词</div> === | ||
本文件中所用关键词及其对应的含义如表1所示。 | 本文件中所用关键词及其对应的含义如表1所示。 | ||
| − | [[文件: | + | [[文件:表一.png|居中|无框|668x668像素]] |
== <div style="background:#E3E3E3; color:#000; padding-top: 15px; height:40px; padding-left:15px "> (4) 表示形式</div> == | == <div style="background:#E3E3E3; color:#000; padding-top: 15px; height:40px; padding-left:15px "> (4) 表示形式</div> == | ||
| 第139行: | 第163行: | ||
|style="" align="lift" valign="top"|'''执行阶段''': 在满足预定条件时由区块链节点调取并运行相关代码,修改合约状态并写回区块链存证,直至合约终止。 | |style="" align="lift" valign="top"|'''执行阶段''': 在满足预定条件时由区块链节点调取并运行相关代码,修改合约状态并写回区块链存证,直至合约终止。 | ||
|} | |} | ||
| − | [[文件: | + | [[文件:图二.png|居中|无框|793x793像素]] |
== <div style="background:#E3E3E3; color:#000; padding-top: 15px; height:40px; padding-left:15px "> (5) 构成要素</div> == | == <div style="background:#E3E3E3; color:#000; padding-top: 15px; height:40px; padding-left:15px "> (5) 构成要素</div> == | ||
智能法律合约可涵盖当事人信息、标的、数量、质量、价款或者报酬、履行期限和方式、违约责任、解决争议的方法等内容。智能法律合约框架内的构成要素宜包括合约名称、当事人描述、标的、合约条款、附加信息、合约订立等,其中,合约条款可包括一般条款、违约条款、仲裁条款等。智能法律合约编写过程中可涉及权利和义务、资产操作、表达式、时间表示等语法规范。上述要素之间关系如图3所示。 | 智能法律合约可涵盖当事人信息、标的、数量、质量、价款或者报酬、履行期限和方式、违约责任、解决争议的方法等内容。智能法律合约框架内的构成要素宜包括合约名称、当事人描述、标的、合约条款、附加信息、合约订立等,其中,合约条款可包括一般条款、违约条款、仲裁条款等。智能法律合约编写过程中可涉及权利和义务、资产操作、表达式、时间表示等语法规范。上述要素之间关系如图3所示。 | ||
| − | [[文件: | + | [[文件:图三.png|居中|无框|600x600像素]] |
== <div style="background:#E3E3E3; color:#000; padding-top: 15px; height:40px; padding-left:15px "> (6) 要素的表述</div> == | == <div style="background:#E3E3E3; color:#000; padding-top: 15px; height:40px; padding-left:15px "> (6) 要素的表述</div> == | ||
| 第682行: | 第706行: | ||
</div> | </div> | ||
{| align="center" | {| align="center" | ||
| − | | | + | |'''{ Signature of party''' Pname (当事人签字): |
| − | |- | + | |- |
| − | |- | + | | { |
| − | |- | + | |- |
| − | |- | + | | printedName(打印名):String, |
| − | |- | + | |- |
| − | |- | + | | signature(法定代表人签字): String, |
| + | |- | ||
| + | | date(签订日期): Date | ||
| + | |- | ||
| + | | },+ | ||
| + | |- | ||
| + | |'''}''' | ||
|} | |} | ||
<div style="border:1px solid #000"> | <div style="border:1px solid #000"> | ||
| 第1,023行: | 第1,053行: | ||
[4] 中华人民共和国电子签名法 | [4] 中华人民共和国电子签名法 | ||
| − | [[ | + | [[category:标准]] |
2021年3月21日 (日) 07:03的最新版本
- 区块链智能合约形式化表达
- Formal Expression of Blockchain Smart Contract
发布日期: 2020-12-21 实施日期: 2021-01-01 发布机构: 中国电子学会
- 中国电子学会
前言
本文件按照GB/T 1.1-2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定起草。
本文件由北京科技大学提出。
本文件由中国电子学会区块链分会技术归口。
本文件起草单位:北京科技大学,北京大学,北京市经济和信息化局,北京市社会公信建设促进会,天津蛟图信息科技有限责任公司,北京航空航天大学,中化能源股份有限公司,北京文章无忧信息科技有限公司,贝壳找房(北京)科技有限公司,京东数字科技集团。
本文件主要起草人:朱岩、秦博涵、何啸、王迪、孙贻滋、郭倩、宋伟静、王晟典、洪京一、姚前、蒋国庆、李冀宁、刘国伟、伊然、冯荣权、张韬、胡凯、徐双泉、韩心慧、英伟、甘国华。
引言
区块链是采用密码手段保障、只可追加、链式结构组织的分布式账本系统。智能合约允许开发者利用编程语言在区块链上编写自动执行程序,实现价值交换等应用并存证。随着数字经济的发展,区块链智能合约的规范化需求日益强烈,然而现有智能合约面临专业性强、可读性差、生产效率低等实际问题,现实法律合同到可执行程序代码之间的高效转化难以实现。这既影响了行业应用与计算机及法律界人士的跨领域合作,也阻碍了智能合约的法律化进程。
本文件通过提供一种适用法律合同的智能合约框架及语法规则,使所开发的智能法律合约成为一种介于现实法律合同与智能合约之间的过渡性法律文档。如图1所示,现实法律合同以自然语言为载体,可翻译成由智能法律合约语言撰写的智能法律合约,进而转化为由智能合约语言编写的智能合约。
智能法律合约以程序代码表达合同条款,将现实法律合同与网络空间的程序代码相衔接,保证智能法律合约既有现实合同的法律特征和易理解性,又有计算机程序代码的规范性,促进计算机、法律等专业人员的跨领域协作。在区块链可确权基础上,智能法律合约将物理世界资产,如房子、健康数据和版权等表达为数字资产,并与可编程数字法币相结合,使其在区块链网络上自由使用和流通,推动数字经济快速健康发展。
本文件的发布机构提请注意,声明符合本文件时,可能涉及到第6章与智能法律合约语法相关的专利的使用。
本文件的发布机构对于该专利的真实性、有效性和范围无任何立场。
该专利持有人已向本文件的发布机构承诺,他愿意同任何申请人在合理且无歧视的条款和条件下,就专利授权许可进行谈判。该专利持有人的声明已在本文件的发布机构备案。相关信息可以通过以下联系方式获得:
专利:202010381549.5 一种法律合约的智能可执行合约构造与执行方法和系统
专利持有人姓名:北京科技大学
地址:北京市海淀区学院路30号
请注意除上述专利外,本文件的某些内容仍可能涉及专利。本文件的发布机构不承担识别专利的责任。
(1) 范围
本文件规定了智能合约语言的结构和语法,界定了有关术语和定义。
注:本文提供的智能法律合约示例及智能合约示例,见附录A。
本文件适用于通用智能合约设计、开发和使用,也可为区块链厂商和用户构建智能合约平台参考。
(2) 术语和定义
下列术语和定义适用于本文件。
(2.1) 智能合约 smart contract
部署在区块链上、在满足预定条件时可自动执行并存证的计算机程序。
(2.2) 符合法律的智能合约 smart contract complying with law
一种含有合同构成要素、涵盖合同缔约方依据要约和承诺达成履行约定的计算机程序。
注:在不引起混淆的情况下,本文件中简称为“智能法律合约”。
(2.3) 智能合约语言 smart contract language
用于定义智能合约、包含词汇和语法规则的形式化表达规范。
(2.4) 符合法律的智能合约语言 smart contract language complying with law
可实现符合法律的智能合约的编程语言。
注:在不引起混淆的情况下,本文件中简称为“智能法律合约语言”。
(2.5) 智能合约平台 smart contract platform
支持智能合约可执行程序开发、生成、部署、运行、验证的信息网络系统。
(2.6) 账户 account
具有一定的格式和结构,用于描述当事人、操作和反映标的等智能法律合约要素的增减变化情况及结果的载体。
(2.6.1)用户账户 party account
当事人所拥有账户。
(2.6.2)合约账户 contract account
智能法律合约在智能合约平台上所拥有账户。
(3) 符号和关键词
(3.1) 符号
下面符号适用于本文件:
@@ 中文意思表示的前缀 ::= 表示定义,即“被定义为” ? 前置关键词任选 | 同级元素的“或”关系 { } ( ) 可供选择的语句集合 . 语句结束符 + 零条或多条语句 // 注释符 '',"" 字符串类型 0x 十六进制数的前缀 , 空格 同级元素的并列与分割
(3.2) 关键词
本文件中所用关键词及其对应的含义如表1所示。
(4) 表示形式
(4.1)
智能法律合约属于数据电文。当事人订立智能法律合约,采取要约、承诺方式。
(4.2)
智能法律合约遵循《中华人民共和国民法典》《中华人民共和国电子签名法》及有关法律法规相关条文,具有与现实法律合同相同的法律效力,智能法律合约和现实法律合同使用的词句推定具有相同含义,两者使用的词句不一致时,应根据合同的相关条款、性质、目的以及诚信原则等予以解释。
(4.3)
智能法律合约可转化为数据电文表示的可执行程序,经智能法律合约签订后,在智能合约平台自动执行并存证。
(4.4)
智能法律合约可根据应用场景采用中文、英文或中英文混合形式编写。
(4.5)
智能法律合约生命周期包括如下三个阶段。
| a) | 生成阶段: 当事人达成合意后撰写智能法律合约,经翻译形成计算机可执行程序; |
| b) | 订立阶段: 将智能法律合约与计算机可执行程序整合后部署至区块链,由当事人各自调取并签名确认后写回区块链存证,订立后的智能合约可随时被调取查用,签订流程应参照图2中示例(参见附录B); |
| c) | 执行阶段: 在满足预定条件时由区块链节点调取并运行相关代码,修改合约状态并写回区块链存证,直至合约终止。 |
(5) 构成要素
智能法律合约可涵盖当事人信息、标的、数量、质量、价款或者报酬、履行期限和方式、违约责任、解决争议的方法等内容。智能法律合约框架内的构成要素宜包括合约名称、当事人描述、标的、合约条款、附加信息、合约订立等,其中,合约条款可包括一般条款、违约条款、仲裁条款等。智能法律合约编写过程中可涉及权利和义务、资产操作、表达式、时间表示等语法规范。上述要素之间关系如图3所示。
(6) 要素的表述
(6.1) 合约框架
智能法律合约由合约名称及合约内容构成。合约内容通常包括:当事人描述、资产描述、合约条款、附加信息、合约订立。
(6.2) 合约名称
合约名称可由合约标题和合约序号构成。语法如下:
注:合约序号是指智能法律合约经哈希运算所求取的唯一性编号。
示例:
@@买卖合同:0x827198…ab193
contract purchase : serial number 0x827198…ab193
(6.3) 当事人描述
当事人描述可包含当事人的名称、姓名、住所、账号等当事人所拥有的属性及属性值,可采用当事人身份认证等技术措施保证其身份唯一性。语法如下:
其中,属性域用于描述当事人所拥有的属性及属性值,由使用冒号分割的二元组表示,左部为属性名称,右部为属性值,表示如下:
注:属性值可分为常量或变量类型,当属性值为变量类型时,其初始值为空。 实体属性值的引用使用Entity:: attribute形式表达,其结果为该属性的值。
示例1:
@@当事人信息:卖家,登记信息包括:当事人账号:0x7c84e8…2934;姓名:张三。
party Seller { account: 0x7c84e8…2934 name: ‘Zhang San’ }
注:当事人账号指该当事人在区块链中所拥有的用户账户地址。
示例2:
@@群组当事人信息:竞标人,登记信息包括:当事人账号。
party group Voters{ account: Integer }
注:群组当事人可表示为动态加入的当事人列表。
(6.4) 标的
合约标的指当事人权利和义务共同指向的对象,一般分为物、行为、智力成果等,在智能法律合约中用资产加以表示,在区块链中应存在该资产的描述。语法如下:
注:资产的定义应包含资产的名称、资产的属性及资产的权属。
info用以描述该资产拥有的属性及属性值。right用于明确资产的权属,通常包括:所有权(ownershipRight)、使用权(useRight)、占有权(possessRight)、收益权(usufructRight)、处分权(disposeRight),可作为类型使用,用户可根据实际需要自行添加权属。
示例1:
@@资产:房屋,属性信息包括:产权编号:0x71a2f8…78d93;面积:50;用途:商业;价格:货币资产;权属信息包括:收益权、使用权。
asset House{
- info {sn : 0x71a2f8…78d93 area : 50 usage : “business” price : Money}
- right {houseBenefitRight : usufructRight houseUse : useRight}
}
注:usufructRight与useRight类型用于记录权属信息;Money用于表示货币资产。
资产表达式用于条款中资产的调用,定义如下:
注:Aname为智能法律合约中声明的资产。right是指对该资产定义时声明的权利,如果无权属说明,则默认为所有权。
示例2:
@@20元。
$ 20 RMB
注:系统中预定义的货币资产包括:人民币(RMB)、美元(USD)等。
示例3:
@@在智能法律合约中声明房屋资产。
$ House
示例4:
@@本金的120%。
$ 120% * principal
注:本金为Money类型的资产。
示例5:
@@在智能法律合约中声明资产House的50%所有权。
$ 50% ownershipRight of House
(6.5) 合约条款
合约条款包括一般条款、违约条款、仲裁条款等类型。
(6.5.1) 一般条款
一般条款包含条款名称、条款当事人、当事人权利和义务(必须、可以或禁止履行的行为)、条款执行条件、资产转移以及条款执行后应满足的后置条件。语法如下:
@@条款名:当事人 (必须|可以|禁止) 行为(属性域+)
(执行所需的前置条件)?
(伴随的资产操作+)?
(执行后需满足的后置条件)?
GeneralTerms ::= term Tname: Pname (must|can|cannot) action(field+)
(when preCondition)?
- (while transactions+)?
- (where postCondition)?.
注:条款声称某当事人在何种前置条件下必须、可以或禁止采取何种行为,同时伴随着何种资产操作,完成后应满足何种后置条件。其中,行为是对其后属性列表的操作,它由智能合约平台的程序实现。具体包括:
- ——preCondition由表示前置条件的表达式构成,在条款执行前进行检测,如果满足前置条件,则可执行条款;如果不满足,不能执行条款。
- ——transactions表示条款执行过程中伴随的资产操作。
- ——postCondition由表示后置条件的表达式构成,在条款执行完后进行检测,如果满足后置条件,则本条款执行成功;如果不满足,则执行失败。
示例:
@@条款1:竞拍者可在竞拍开始后出价竞拍,向合约账户转入大于当前最高价的资金,出价最高者为得主。
term no1: bidder can bid()
- when after bidBegin
- while deposit value > highestPrice
- where winner = this bidder.
(6.5.2) 违约条款
违约条款是指双方约定的当事人不履行智能法律合约中规定的义务或履行义务不符合约定时,应承担的法律责任。即在指定条款的后置条件未得到满足且此违约条件的前置条件得以满足时,当事人必须或可以执行违约处理,可伴随相应的资产转移,执行后应满足违约条款的后置条件。
@@违约条款 条款名 (针对 条款名+)?:当事人 (必须|可以) 违约处理(属性域+)
(执行所需的前置条件)?
(伴随的资产操作+)?
(执行后需满足的后置条件)?
BreachTerms ::= breach term Bname (against Tname+)? : Pname (must|can) action(field+)
(when preCondition)?
- (while transactions+)?
- (where postCondition)?.
注:违约条款通常可规定违约者必须执行的动作或受害者可以执行的动作。
示例:
@@如果买家在预定了购买房屋之后,房屋主人把房屋租出去了,那么房屋主人应该赔偿买家违约金。
breach term no6 against no4 : houseOwner must compensate()
- when houseOwner did lend after buyer did order
- while transfer default to buyer.
(6.5.3) 仲裁条款
智能法律合约中以仲裁条款形式规定解决争议的方法,具体争议可由自然语言陈述,并可指定仲裁机构,语法如下:
@@(所声明之争议)?由某仲裁机构进行裁决。
ArbitrationTerms ::= arbitration term : (The statement of any controversy)?
administered by institution : instName.
注:可选择区块链网络中具有司法管辖权的节点作为仲裁机构。
示例:
@@凡因本智能法律合约引起的或与其有关的一切劳动争议,均由北京劳动仲裁委员会按照仲裁规则进行裁决。
arbitration term : Any labor controversy or claim arising out of or relating to this contract, or the breach thereof, shall be settled by arbitration administered by institution : Beijing Labor Arbitration Commission.
(6.6) 权利和义务
(6.6.1) 权利
权利限制应使用关键词can,用于在满足前置条件时当事人可执行该条款或不执行。
示例:
@@条款2:投票者可在主席发表提案后开始投票。
term no2: voter can vote (target)
- when after chairPerson did propose.
注:投票属于权利,投票者可行使自己的权利为提案投票,或不必行使自己的权利,放弃投票。
(6.6.2) 义务
义务限制包括应当限制与禁止限制。
——应当限制应使用关键词must,用于在满足前置条件时当事人必须执行该条款。
示例1:
@@条款3:借贷者需要在借贷后两年内归还借款。
term no3: borrower must return (loan)
- when within 2 year after borrower did lend.
注:归还属于义务,当事人需要在规定期限内履行自己的义务。
——禁止限制应使用关键词cannot,用于在满足前置条件时当事人不能执行该条款。
示例2:
@@条款4:房屋所有者在买家预定后,不能再把房屋租出去。
term no4: houseOwner cannot rent ()
- when after buyer did order.
某一禁止条款可设置多种限制方式,既可按执行条件进行限制,也可直接对执行结果进行限制,
示例3:
对于“投票者不可给自己投票”,如果直接投票给候选人,有如下两种表述方式:
@@条款5_1:如果选举人的投票对象是自己(执行条件),选举人不能执行投票。
term no5_1: voter cannot elect (target)
- when target = this voter.
@@条款5_2:如果选举人投票结果是使自己选票加一(执行结果),选举人不能投票。
term no5_2: voter cannot elect (target)
- where this voter :: candidate = this voter :: origin candidate + 1.
注:对条款5_1,如果投票者将选票给代理人,再由代理人投给投票者,这种行为将被许可;而用条款5_2直接对执行结果进行限制则可避免上述行为。
(6.7) 资产操作
资产操作是指智能法律合约执行过程中对资产的不同操作方式,通常用来实现标的物在不同账户之间的转移,资产操作包含以下三类。
(6.7.1) 存入
当事人主动由其用户账户向合约账户存入资产,作为条款的执行条件使用,可直接指定存入的资产或根据价值关系进行限制,后者在关系满足时才能转移指定的资产,语法如下:
@@存入(满足某种价值关系的)? 资产描述。
Deposits ::= deposit (value RelationOperator)? AssetExpression
示例1:
@@存入大于当前最高价的金额。
deposit value > highestPrice
注:在竞拍条款中要求存入金额大于目前最高价才能执行竞拍操作,其中highestPrice表示当前最高价,为货币类型(Money)资产。
示例2:
@@存入大于10元的金额。
deposit value > $10 RMB
(6.7.2) 取回
当事人执行条款过程中从合约账户中取回一定资产,语法如下:
@@取回 指定资产。
Withdraws ::= withdraw AssetExpression
示例:
@@取回本金和利息(资产表达式中数额*(1+息率))。
withdraw principal * (1+rate)
注:在执行取款条款时,可取回本金和利息。
(6.7.3) 转移
当事人执行条款过程中从当前合约账户向其他当事人转移一定资产,语法如下:
@@转移指定资产到某当事人。
Transfers ::= transfer AssetExpression to target
示例1:
@@向卖家转移保证金。
transfer welfare to seller
注:welfare是买家事先存入的保证金,为Money类型,在买方确认收货时,会将事先存入合约账户的保证金转给卖家。
条款可有多条资产操作语句。
示例2:
@@条款6:借贷者可抵押自己的房子,将房屋的所有权存入合约账户,同时取出约定好的资金。
term no6: borrower can mortgage ()
- while deposit $House and withdraw HousePrice
(6.8) 表达式符号
智能法律合约中采用表达式规范合约内容,其中条款条件表达式结果为布尔值。表达式中使用的符号包括:
——逻辑符号,包括:and、or、not、implies;
——关系符号,包括:>、>=、<、<=、=、!=、belongsTo;
——算术符号,包括:+、−、∗、/、%;
——常量符号,包括:数字、字符串、true、false;
——时间符号,包括:month、day、year、hour、minute、second、now;
——类型符号,包括:String、Money、Date、Integer、Float、Boolean、Right、Time。
(6.9) 时间表示
时间表示由时间点表达式和时间段表达式构成。
(6.9.1) 时间点表达式
时间点表达式分为四种:时间变量、时间常量、全局查询、动作完成时间查询。
——时间变量是指日期(Date)类型的变量。
——时间常量是指固定时间的值,比如2019年11月18日。
——全局查询是指获取与智能法律合约运行相关的时间数值,如获取区块链智能合约生效时间(effective_date)、获取当前时间(now),由智能合约平台提供。
——动作完成时间查询指当事人完成某项动作的时间,语法如下:
@@动作完成时间查询:(任意|存在|当前)?当事人执行某动作的时间。
ActionEnforcedTimeQuery ::= (all|some|this)? party did action
- 注:根据当事人为个体或群体情况,可将时间查询分为如下两种情况:
- ——当事人为个体时,不必添加冠词all、some、this。
示例1:
@@买家支付完成的时刻。
buyer did pay
- ——当事人为群体时,可通过添加冠词all、some、this查询特定时间。
- 冠词all:表示群体当事人中最后一个完成某动作的时间,若存在任意个体未完成,则查询结果为未完成。
示例2:
@@所有投票者投票完成的时刻。
all voter did vote
- 冠词some:表示群体当事人最近一个完成某动作的时间,若群体中无个体完成动作,则查询结果为未完成。
示例3:
@@竞标者群体中最近一个完成拍卖动作的时刻。
some bidder did bid
- 冠词this:表示当前条款执行人若属于该群体,则查询结果为该个体的完成时间。
示例4:
@@本人投票完成的时刻。
this voter did vote
(6.9.2) 时间段表达式
时间段分为时间变量和时间常量两类。
——时间变量是指时间类型(Time)的变量;
——时间常量是指固定长度的时间,如1天、2小时等。
时间段表达式定义如下:
@@(目标时间)?(是|否)在基础时间点(之前|之后)
TimePredicate ::= (targetTime)? (is | isn’t) (before | after) baseTime
注:targetTime和baseTime都是时间点,如果没有设定目标时间点,则默认与当前时间进行比较。
示例1:
@@本人投过票之后且所有人投票完成之前。
(after this voter did vote) and (before all voter did vote)
示例2:
@@本人投票完成时刻是在有效期之后。
this voter did vote is after effective_date
边界时间段表达式定义如下:
@@边界时间点(之前|之后)一段时间(内)?
BoundedTimePredicate ::= (within)? boundary (before|after) baseTime
注:boundary为时间段,baseTime为时间点。
示例3:
@@在拍卖结束前的三天内。
within 3 day before auctionEnd
示例4:
@@在拍卖结束前的三天以前。
3 day before auctionEnd
(6.10) 附加信息
附加信息给出智能法律合约所需的其它补充条件的定义,包括:合约属性、合约标的、当事人签名、保证人信息及签名、附加条款、程序变量、数据结构定义等,可置于智能法律合约任何位置,语法如下:
@@ (属性域 +)或(附加信息 附加信息名 { 属性域 + })
Additions ::= field + | ( addition Dname { field + } )
注:附加信息引用采用 (Cname:: ) ? attribute或 Dname:: attribute的形式。
示例:
@@最高拍卖金额和拍卖停止时间。
highestPrice : Money
biddingStopTime : Date
(6.11) 合约订立
@@合约订立 : (所有当事人的约定)?
- Signs ::= Contract conclusion : ( The statement of all parties.)?
| { Signature of party Pname (当事人签字): |
| { |
| printedName(打印名):String, |
| signature(法定代表人签字): String, |
| date(签订日期): Date |
| },+ |
| } |
示例:
@@合约订立:本智能法律合约当事人不得以任何形式修改本合约,除非以书面形式并经双方签字。本合约及其附件构成合约双方的完整协议。本合约对当事各方及其继承人、受让人均具有约束力。通过签署本协议,各方同意上述条款。双方各收到一份本协议,并负责维护其条款。双方同意将本合约转化为智能合约平台上的计算机程序,并同意该程序及其执行具有相同法律效力。
Contract conclusion: This contract may not be modified in any manner unless in writing and signed by both parties. This document and any attachments hereto constitute the entire agreement between the parties. This Contract shall be binding upon the parties, their successors and assigns. By signing this agreement, all parties agree to the terms as described above. Each of parties will receive one copy of this agreement, and will be responsible for upholding its terms. Both parties agree with conversion from this contract to computer programs on smart contract platform, and approve that the programs’ implementation has the same legal effect.
Signature of party auctioneer(拍卖人签字):
{
- printedNam(打印名)e: Yao San,
- signature(法定代表人签字): 0x2319…8DE393,
- date(签订日期): 2020/7/12
}
附录A(资料性)智能法律合约示例及智能合约示例
A.1 智能法律合约示例1
示例:一种网络竞买合同对应的智能法律合约。
1 <font size=2>
2 @@网络竞买合同协议书
3 contract SimpleAuction{
4 @@甲方信息:拍卖人,登记信息包括:用户账户信息:0x712379218…C4E80。
5 party auctioneer{
6 account : 0x712379218…C4E80
7 }
8
9 @@乙方信息:竞买人,属于群体,登记信息包括:用户账户信息: [0x93A8BCD…793968, 0x48BD38… 92AC93];账户曾出价累计值:货币资产。
10 party group bidders{
11 account : [0x93A8BCD…793968, 0x48BD38…92AC93]
12 amount : Money
13 }
14
15 @@当前最高价、最高出价的竞拍者、竞拍结束时间。
16 highestPrice : Money
17 highestBidder : bidders
18 biddingStopTime : Date
19
20 @@标的物:竞拍货品,拍卖人需要提供拍卖物的物品名称、数量等相关信息。
21 asset good{
22 info{
23 name : Name //物品名称
24 quantity : Integer //物品数量
25 price : Money //价格
26 package : String //运送包装
27 }
28 }
29 @@条款1:拍卖人可发起竞拍,在动作执行后,当前最高价应为拍卖人输入的底价,结束时间为当前时间加上输入的竞拍持续时间。
30 term no1 : auctioneer can StartBidding(reservePrice : Money, auctionDuration : Date)
31 when before auctioneer did StartBidding
32 where highestPrice = reservePrice and biddingStopTime = auctionDuration + now.
33
34 @@条款2:竞买人可在拍卖人发起竞拍后至竞拍结束前进行出价,如果出价大于目前所给最高价格,则出价成功。
35 term no2 : bidders can Bid
36 when after auctioneer did StartBidding and before biddingStopTime
37 while deposit value > highestPrice
38 where highestPrice = value and highestBidder = this bidder and this bidder::amount = this bidder:: origin amount + value.
39
40 @@条款3_1:若竞买人不是最高出价者,且当前合约账户中存有其押金,竞买人可取回无效押金,此后该竞买人押金清零。
41 term no3_1 : bidders can WithdrawOverbidMoney
42 when this bidder::amount > 0 and this bidder isn't highestBidder
43 while withdraw this bidder::amount
44 where this bidder::amount = 0.
45
46 @@条款3_2:若竞买人是当前最高出价者,且当前合约账户中存有其之前的失败押金,竞买人可取回无效押金,并登记成为当前竞拍最高价。
47 term no3_2 : bidders can WithdrawOverbidMoney
48 when this bidder::amount > highestPrice and this bidder is highestBidder
49 while withdraw this bidder::amount - highestPrice
50 where this bidder::amount = highestPrice.
51
52 @@条款4:拍卖人可在竞拍时间结束后,收取拍卖成交款。
53 term no4 : auctioneer can StopBidding
54 when after biddingStopTime and before auctioneer did StopBidding
55 while withdraw highestPrice.
56
57 @@仲裁条款:凡因本智能法律合约引起的或与其有关的一切争议,均由北京互联网法院管辖。
58 Arbitration term : Any controversy or claim arising out of or relating to this contract, or the breach thereof, shall be settled by arbitration administered by institution : BeijingIneternetCourt.
59
60 @@合约订立:本智能法律合约当事人不得以任何形式修改本合约,除非以书面形式并经双方签字。本合约及其附件构成合约双方的完整协议。通过签署本协议,各方同意上述条款。双方各收到一份本协议,并负责维护其条款。双方同意将本合约转化为智能合约平台上的计算机程序,并同意该程序及其执行具有相同法律效力。
61 Contract conclusion: This contract may not be modified in any manner unless in writing and signed by both parties. This document and any attachments hereto constitute the entire agreement between the parties. This Contract shall be binding upon the parties, their successors and assigns. By signing this agreement, all parties agree to the terms as described above. Each of parties will receive one copy of this agreement, and will be responsible for upholding its terms. Both parties agree with conversion from this contract to computer programs on smart contract platform, and approve that the programs’ implementation has the same legal effect.
62
63 Signature of party auctioneer(拍卖人签字):
64 { printedName(打印名):Yao San,
65 signature(法定代表人签字): 0x23198de…393,
66 date(签订日期): 2020/7/12
67 }
68 Signature of party bidders(竞拍人签字):
69 { printedName(打印名):柳湾,
70 signature(法定代表人签字): 0x877238…201,
71 date(签订日期): 2020/7/12
72 }
73 { printedName(打印名):秦源,
74 signature(法定代表人签字): 0x9340593…495,
75 date(签订日期): 2020/7/12
76 }
77 }
78 </font>
A.2 智能法律合约示例2
示例:一种房屋租赁合同对应的智能法律合约。
1 <font size=2>
2 @@房屋租赁合同协议书
3 contract HouseLease{
4 @@甲方信息:出租人,登记信息包括:用户账户信息:0x82384a68…90e72。
5 party Landlord{
6 account : 0x82384a68…90e72
7 }
8
9 @@乙方信息:承租人,登记信息包括:用户账户信息:0x9845a6b…73c4e。
10 party Tenant{
11 account : 0x9845a6b…73c4e
12 }
13
14 @@合约属性:出租人押金、承租人押金、房屋租金、总租金、合约起始时间、合约终止时间、支付租金的时间、租金支付周期。
15 addition infos {
16 renterBail:Money
17 renantBail:Money
18 rental:Money
19 totalRental:Money
20 startLeasingTime:Date
21 endLeasingTime:Date
22 payDate:Date
23 payDuration:Date
24 }
25
26 @@标的物:房屋,出租人应提供产权号、地址、面积、用途、价格等信息。
27 asset House{
28 info{ /*房屋的具体信息*/
29 ownershipNumber: Integer
30 location: Address
31 area: Integer
32 usage: String
33 price: Money
34 }
35 right{ /*所有者可对该资产行使的4种权利*/
36 houseUseright : useRight
37 houseUsufruct : usufructRight
38 dispositionRight: Right
39 ossessionRight: Right
40 }
41 }
42
43 @@条款1:出租人可通过交纳出租人押金来注册房屋信息。
44 term term1: Landlord can registerHouse
45 while deposit infos::renterBail.
46 @@条款2:承租人可在出租人注册房屋之后,通过交纳承租人押金来确认租赁,动作执行之后要求自动记录当前时间为合约的开始时间、且计算截止时间并设置合约执行有效期和承租人支付租金的时间。
47 term term2: Tenant can confirmLease
48 when after Landlord did registerHouse
49 while deposit infos::tenantBail
50 where infos::startLeasingTime = now and infos::endLeasingTime = endLeasingDuration+now
51 and infos::payDate = payDuration+now and infos::payDuration = payDuration.
52 @@条款3:承租人确认承租7天内,出租人必须将房屋使用权转移给承租人。
53 term term3: Landlord must transferHouse
54 when within 7 day after Tenant did confirmLease
55 while deposit $ houseUseright of house.
56 @@条款4:在承租人确认承租后,在规定的支付租金日期之前,承租人必须支付租金。
57 term term4: Tenant must payRent
58 when before infos :: payDate and after Landlord did transferHouse
59 while deposit infos ::rental.
60 @@条款5:租赁合约到期后且承租人检查房租之前,承租人应归还房屋,即将房屋使用权转回出租人。
61 term term5: Tenant must returnHouse
62 when after infos :: endLeasingTime and before Landlord did checkHouse
63 while transfer $ houseUseright of house to Landlord.
64 @@条款6:出租人在承租人确认归还房屋后可对房屋进行检查。
65 term term6: Landlord can checkHouse
66 when after Tenant did returnHouse.
67 @@条款7:出租人在检查房屋之后的15天内,可收取全部租金,即取出租金。
68 term term7: Landlord can collectRent
69 when within 15 day after Landlord did checkHouse
70 while withdraw infos::rental.
71 @@条款8_1:在检查房屋之后的15天内,出租人可取出出租人押金。
72 term term8: Landlord can collectBail
73 when within 15 day after Landlord did checkHouse
74 while withdraw infos :: renterBail.
75 @@条款8_2:在检查房屋之后的15天内,承租人可取出承租人押金。
76 term term9: Tenant can collectBail
77 when 15 day after Landlord did checkHouse
78 while withdraw infos :: tenantBail.
79
80 @@仲裁条款:凡因本智能法律合约引起的或与其有关的一切争议,均由北京互联网法院管辖。
81 Arbitration term : Any controversy or claim arising out of or relating to this contract, or the breach thereof, shall be settled by arbitration administered by institution : BeijingIneternetCourt.
82
83 @@合约订立:本智能法律合约当事人不得以任何形式修改本合约,除非以书面形式并经双方签字。本合约及其附件构成合约双方的完整协议。通过签署本协议,各方同意上述条款。双方各收到一份本协议,并负责维护其条款。双方同意将本合约转化为智能合约平台上的计算机程序,并同意该程序及其实施具有相同法律效力。
84 Contract conclusion: This contract may not be modified in any manner unless in writing and signed by both parties. This document and any attachments hereto constitute the entire agreement between the parties. This Contract shall be binding upon the parties, their successors and assigns. By signing this agreement, all parties agree to the terms as described above. Each of parties will receive one copy of this agreement, and will be responsible for upholding its terms. Both parties agree with conversion from this contract to computer programs on smart contract platform, and approve that the programs’ implementation has the same legal effect.
85 Signature of party Landlord(出租人签字):
86 { printedName(打印名):Mike Micheal,
87 signature(法定代表人签字): 0x9045f7a…80d4,
88 date(签订日期): 2020/8/20
89 }
90
91 Signature of party Tenant(承租人人签字):
92 { printedName(打印名):姜爽,
93 signature(法定代表人签字): 0x46b9d3e…a983,
94 date(签订日期): 2020/8/20
95 }
96 }
97 </font>
A.3 智能合约示例
示例:A.1中智能法律合约示例对应Solidity语言编写的智能合约。
1 <font size=2>
2 pragma solidity >=0.5.0 <0.6.0;
3
4 import "./bidders.sol";
5 import "./auctioneer.sol";
6
7 contract SimpleAuction {
8
9 biddersT bidders;
10 auctioneerT auctioneer;
11
12 uint highestPrice;
13 address highestBidder;
14 uint biddingStopTime;
15
16
17 constructor() public{
18 bidders = new biddersT();
19 auctioneer = new auctioneerT();
20 auctioneer.regist(msg.sender);
21 auctioneer.name = "Yao San";
22 auctioneer.signature = "0x23198de…393";
23 auctioneer.signDate = 2020/7/12;
24 bidders.add("柳湾","0x877238…201",2020/7/12);
25 bidders.add("秦源", "0x9340593…495", 2020/7/12);
26 }
27
28 modifier onlybidders{
29 require(bidders.contains(msg.sender));
30 _;
31 }
32
33 modifier onlyauctioneer{
34 require(auctioneer.getAddress() == msg.sender);
35 _;
36 }
37
38 function StartBidding(uint reservePrice, uint auctionDuration) onlyauctioneer() public {
39 //RECORD
40 auctioneer.StartBiddingDone();
41 //USER CODE HERE
42 highestPrice = reservePrice;
43 biddingStopTime = auctionDuration + now;
44 //CHECK
45 assert(highestPrice == reservePrice && biddingStopTime == auctionDuration + now);
46 }
47
48 function Bid() public payable {
49 if(!bidders.contains(msg.sender))
50 bidders.add(msg.sender);
51 //REQUIRE
52 require(now > auctioneer.StartBiddingTime() && now < biddingStopTime);
53 require(msg.value > highestPrice);
54 uint this_bidder_Ori_amount = bidders.getamount(msg.sender);
55 //USER CODE HERE
56 highestPrice = msg.value;
57 highestBidder = msg.sender;
58 bidders.setamount(msg.sender,bidders.getamount(msg.sender) + msg.value);
59 //CHECK
60 assert(highestPrice == msg.value && highestBidder == msg.sender &&
61 bidders.getamount(msg.sender) == this_bidder_Ori_amount + msg.value);
62 }
63
64 function WithdrawOverbidMoney() onlybidders() public payable {
65 //REQUIRE
66 if(msg.sender != highestBidder && bidders.getamount(msg.sender) > 0){
67 //USER CODE HERE
68 msg.sender.transfer(bidders.getamount(msg.sender));
69 bidders.setamount(msg.sender, 0);
70 //CHECK
71 assert(bidders.getamount(msg.sender) == 0);
72 }
73 //REQUIRE
74 else if(msg.sender == highestBidder && bidders.getamount(msg.sender) > highestPrice) {
75 //USER CODE HERE
76 msg.sender.transfer(bidders.getamount(msg.sender) - highestPrice);
77 bidders.setamount(msg.sender, highestPrice);
78 //CHECK
79 assert(bidders.getamount(msg.sender) == highestPrice);
80 }
81 else{
82 revert();
83 }
84 }
85
86 function CollectPayment() onlyauctioneer() public payable {
87 //REQUIRE
88 require(now > biddingStopTime && now < auctioneer.CollectPaymentTime());
89 //RECORD
90 auctioneer.CollectPaymentDone();
91 //USER CODE HERE
92 msg.sender.transfer(highestPrice);
93 }
94 }
95 </font>
附录B(资料性)智能法律合约签订过程
智能法律合约签订流程可包括智能法律合约到生成、部署、签名和存证等处理。在智能法律合约经当事人协商撰写完成后,通过翻译器转化为可执行的计算机程序,进而部署到智能合约平台中并由当事人签名确认。签订后的智能合约可随时被查阅与审查。
智能法律合约存储形式既包含智能法律合约、演化形态、用户定义信息,也包含智能法律合约自身的基本属性与状态信息,如合约地址Address、签名信息Sign、时间戳Time等。
图2中智能合约签订示意图具体描述如下:
| a) | 使用本文件语言编写智能法律合约A时,A中所有缺省属性值为空; |
| b) | 由A生成可执行区块链智能合约B时,如需人工操作,操作者应进行签名; |
| c) | 在部署B时,生成Address作为B的唯一编号;部署成功后,当事人,如PartyI,加入Time(PartyI)记录签名时间,并对A和B进行签名得到Sign(PartyI); |
| d) | 当事人完成签名后,任何时间可通过调取查用将合约属性填充回智能合约A,生成可浏览的合约内容。 |
参考文献
[1] GB/T 35285-2017 信息安全技术 公钥基础设施 基于数字证书的可靠电子签名生成及验证技术要求
[2] YD/T 3204-2016 网络电子身份标识eID体系架构
[3] 中华人民共和国民法典
[4] 中华人民共和国电子签名法