1 引用
Pradeepkumar D S, Singi K, Kaulgud V, et al. Evaluating complexity and digitizability of regulations and contracts for a blockchain application design[C]//2018 IEEE/ACM 1st International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB). IEEE, 2018: 25-29.
2 摘要
区块链技术已经成为无需中央节点来验证交易,同时保证信任和安全性的关键解决方案。为了促进区块链技术的广泛使用,我们需要一些机制来判定给定规则的智能合约的数字化水平,以及判定哪种区块链技术最适合已有规则。本文提出了一种建模方法,通过计算规则文档的数字化得分以及推荐合适的区块链开发环境,使得可以自动分析规则文档。本文将根据真实实体、相关条款和可数字化属性,与智能合约组件进行对应。通过一些示例,将进一步探索这个功能并根据推荐的区块链环境来讨论未来智能合约生成的研究方向。
3 技术介绍
区块链技术解决了商业交易中固有的关键问题,比如信任、透明度和问责制。信任——区块链使用密码学来验证参与者之间的信任。透明性——由于分类账是分布式的,交易网络中涉及的所有对等方都可以查看;问责制——由于交易各方都可以查看分布式账本,所以每个人都可以验证交易并达成一致。
区块链开发最关键的部分是通过编写智能合约来定义协议的规则,并且强制执行。我们建立机制将规则文档自动分类为:(1)自动化;(2)半自动化;(3)手动,进一步从给定的规则文档中得出需要使用的区块链底层框架。
规则文档或SLA是由各方之间签署来定义业务协议的级别。我们推导出一种机制将规则的合同条款分为两大类:(1)条件条款和(2)可执行条款。条款分类图如图1所示。
图1 条款分类图
条件条款指参与者必须同意的执行的条款,而可执行条款指在满足指定条件的情况下才执行的条款。
条件条款分为:(a)不可验证条件和(b)可验证条件。
不可验证条款提供了一个启发式的语句或者它需要多个信息来进行验证,因此不能由系统自动进行验证。例如:“借款人声明其向贷款人提供的信息和数据是真实和正确的。”
可验证条款指系统可以直接或间接验证的条件。将可验证性属性分为:(a)自动可验证和(b)人为驱动验证。
自动验证语句表示系统可以自动验证的闭包条件。例如,系统可以根据附表1中定义的规则自动验证下面的语句,“借款人应于每月10日按违约金的原则和刑罚利息一并支付利息。”
人为驱动的验证语句是在触发事件或工作流审批等方面。例如,下面的语句要求贷方在处理借款人之前验证贷款,“贷款人应在本协议签署之日起7天内将贷款支付给借款人。”
可操作条款是指语句或语句的一部分在条件下触发的义务或规则。可操作条款分为:(1)建议和(2)可执行操作。
建议是简单的声明,如果没有来自外部的进一步输入,则不会影响系统。例如,“他应该受到惩罚”没有指定系统可以应用的任何机制或标准。“借款人应按附表1的规定支付利息,如果借款人未能支付利息,贷款人可以发出通知。”
可执行操作表示直接和间接的自动化操作,我们在以下两大类证明了行动的可行性:(a)自动和(b)人为触发。
自动可执行操作是指可以由系统直接触发,无需任何人工帮助。例如,在下面的语句中,系统可以自动获取所有需要的信息。例如:“如果借款人拖欠利息或本金,就会对整个贷款收取24%的额外利息。”
人为触发的可执行操作包含指定人工触发事件的条款,类似于工作流触发器等。例如:“贷款人应在本协议签署之日起7天内将贷款支付给借款人。”
文档的数字化程度有助于理解区块链环境中文档的可靠性。文档分类器包含三个大类:(1)不可数字化语句;(2)半数字化语句;(3)数字化语句,如图2所示。
图2 数字化程度表
数字化复杂度是一种规则文档复杂度的度量。规则文件由多个规则条款构成。规则条款可以用简单句、复合句或复杂语句来写。本文根据以下三个大类分配复杂度得分和概率得分。首先,如果文档包含所有可数字化的语句(即自动可验证和自动执行的语句),那么复杂度将为1,这类语句的概率值是1(即100%自动化是可能的)。其次,如果声明只有一部分可自动化语句,另一部分是人为触发/验证,在合约代码中会有两条路径:一部分代码执行自动区块链,另一部分代码需要人工验证/触发执行评估,复杂度是2,这类语句的概率得分是0.5。最后,如果语句包含不可验证的条件,或者如果语句包含完全人工可验证的条件或人工触发的动作,则复杂度为3,概率得分为0。在形式上,概率得分p(s)可以定义为:
将文档的可数字化复杂度表示为一个有向图,其中节点表示语句,两个节点之间的边表示语句之间连接。数字化复杂度是根据图中边和节点的数量,以及连接组件或出口节点的总数,得出的一个可测量值。简单句的数字化复杂度计算如下图所示:
其中,Ms表示一个简单语句的可数字化复杂度,E表示图的边数,N表示图的节点数,P表示连接组件。在本文中,我们把每个语句看作一个方法或子程序,因此P总是等于1。
一个复合句或者复杂句可以分解成多个简单句。复杂/复合条款以及及文档数字化程度评分可计算如下:
其中n为简单语句个数,p(Ms)为语句数字化复杂度得分的概率得分,Mc为条款数字化复杂度,Md为规则文档数字化复杂度。
图3 数字化工具架构
图3说明了从规则文件开始生成数字化评分的系统流程。“条款简化器”模块使用斯坦福大学的CoreNLP将条款简化为简单句。
下面我们将展示条款处理器算法,说明如何将给定的复杂/复合子句简化为简单语句,以及如何处理可自动或人为驱动的句子的分类。
(1) 从合同文件中提取输入条款。
(2) 通过识别连接词的存在,将句子转化为简单形式:
(a) 如果给定的子句包含“after |although | as | because | before | even though | if | since| though | unless | until | when | whenever | whereas |wherever | while”这样的连接,则为复杂句;转到3。
(b) 如果给定的子句包含“For |And | Nor | But | Or | Yet | So”等连接,则为复合句;转到4。
(c) 如果句子是简单句;转到5
(3) 将句子在连接点进行分块,并做如下操作:
(a) 如果chunk语句包含条件,则将其与前一个chunk关联
(b) 组块句应至少有一个名词和动词与之关联。
(c) 把一大块复杂句子成功地装入一组句子后,转到4。
(4) 将句子在连接点处进行分块,完成以下操作:
(a) 分词句应至少有一个名词和动词与之关联。
(b) 成功地将一大块复合句装入一组句子后,转到第5。
(5) 从句子包中提取每个句子,(子句分类):
(a) 使用Stanford NLP Parser解析句子,提取所有的名词和动词
(b) 如果句子包含动词(VBZ或VBN) -将它们标记为不可验证的句子
(c) 找出情态动词的存在形式,如“Must | Shall | Will | Should | Would | Can | Could | May | Might”。
(i) 如果句子中包含情态动词——将它们标记为人为驱动的句子
(d) 如果同时存在(b)和(c)条件,则将它们标记为“人为可验证的和人为驱动的句子”
(e) 动词(VB)和名词(NNP)的出现会给出一个适当的简单句—将句子标记为自动句。
(6) 从分类句中提取名词、动词和联想。
(7) 形成一个集合,该集合由ClauseID、名词、动词、关联词表示。
我们来计算一下上面这句话的数字化程度。
最后,将给出语句级别的数字化程度,“数字化复杂度分析器”将使用公式(Md)测量文档的数字化程度。
Md表示可数字化的百分比。如果系统有一个预配置的阈值是70%,文档的数字化分数小于系统配置值,因此系统将建议增加条款数字化复杂度分数;如果得分高于阈值,那么它将继续发展。
4 本文主要贡献
本文提出了一种机制去度量规则文档可数字化复杂度并对智能合约语句的可数字化程度进行了识别。我们设计了一种新的数字化复杂度度量方法,通过给出数字化评分和建议最适合的区块链环境,帮助软件开发团队测量模块的可靠性并测量SLA文档中给定规则的测试难度。
致谢
本文由南京大学软件工程系2018硕士生乔力翻译转述
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。