logo好方法网

一种针对智能合约行为的监管方法


技术摘要:
本发明提供一种针对智能合约行为的监管方法,涉及区块链智能合约技术领域。该方法包括部署与执行两个阶段;部署阶段将现实中的监管规则和代监管主体的状态转变为推理形式系统中的数字化监管规则,并存储到数字化监管规则库;在智能合约中,将每一类待监管主体的每一种  全部
背景技术:
自区块链技术作为数字货币的实现技术被提出后,因其去中心化、不可篡改、全局 状态等优良特性,逐步被应用于金融服务、公共服务等各个领域。伴随着服务场景复杂化和 服务灵活性的要求,越来越多的数字资产开始出现,智能合约中的逻辑也变得更加复杂。智 能合约的执行过程中,数字资产的创造、流通、销毁以及对账本数据的修改等行为需要服从 一系列特定场景下的监管规则,才能保证服务的安全性与合法性。对智能合约行为进行监 管,在许多领域都有着极为重要的意义。例如,在金融领域,对于数字资产流通行为的监管 将有助于进行事前反洗钱等监管措施,保证金融服务的合法性,在数据共享领域,通过监管 对链上数据的读写操作,可以有效保障数据安全。 对智能合约行为进行监管,要将现实中制定的监管规则应用于监管智能合约的行 为,需要建立数字化监管规则库,并将监管模块嵌入到区块链智能合约模块,最终完成链 上、事前监管。智能合约的待监管主体即为链上账户的地址,待监管行为即为对于全局账本 的操作。目前最常见的支持加载数字规则并利用数字规则判断主体行为合法性的编程语言 是Datalog。它是一种基于推理的逻辑编程语言,支持基于事实和规则进行自动推理和递归 查询。通过使用Datalog语言,可以完成普通场景下基于简单规则的逻辑推理和查询任务。 但在智能合约行为的监管领域,Datalog存在以下不足:(1)Datalog不能与智能合约进行交 互,不能支持链上、事前、事中的自动化监管。(2)智能合约行为的监管规则是状态相关的, 其状态受到主体历史行为与当前状态的影响,而Datalog难以支持状态相关的动态规则。 (3)Datalog不支持外挂数据库并与数据库进行交互,这使得Datalog难以支持大规模状态 与规则的查询存储和更新。
技术实现要素:
本发明要解决的技术问题是针对上述现有技术的不足,提供一种针对智能合约行 为的监管方法,以支持智能合约执行的自动合规和状态依赖规则的变化,最终完成对智能 合约行为的链上、事前、有状态监管。 为解决上述技术问题,本发明所采取的技术方案是:一种针对智能合约行为的监 管方法,包括部署与执行两个阶段; 所述部署阶段包括以下步骤: 步骤1、将监管规则与主体状态数字化为监管规则,并存储到数字化监管规则库; 将现实中的监管规则和代监管主体的状态转变为推理形式系统中的数字化监管 规则,并存储到数字化监管规则库; 所述推理形式系统选取事实集与规则集R后,基于分离规则进行推理,通过计算推 4 CN 111581047 A 说 明 书 2/6 页 理待查询内容Q是否为规则集R中内定理来判断待查询内容Q是否可以由当前事实集与规则 集推出;如果待查询内容Q可以由当前事实集与规则集推出,即在当前状态下,待查询内容Q 为真;反之,如果待查询内容Q不是规则集R中内定理,则在当前状态下,不能判断待查询内 容Q为真;所述推理形式系统由符号系统、基本语法项和语句构成; 所述推理形式系统的符号系统包括英文字符串,地址串,数字和辅助符号;所述辅 助符号包括点号,问号,感叹号,左箭头,左右括号和数字运算符号; 所述推理形式系统的基本语法项包括元素和谓词;所述元素包括变量与常量,其 中常量由小写字母开头的英文字符串或数字组成,变量由大写字母开头的英文字符串表 示,变量的含义是‘任意常量’;谓词用于描述元素之间的关系,包括一个谓词描述符,一对 括号,一个或多个由逗号分隔的元素;所述谓词描述符为英文字符串,表示元素的性质或关 系;所述谓词还支持带有数学运算符号的形式; 所述推理形式系统包括事实和规则两种语句类型: 事实:事实语句以英文点号结尾,语句中包含一个谓词或者一个元素,将一个谓词 或一个元素声明为一个已有事实,将这个谓词或元素加入到现有事实集中,用来推导和产 生更多的事实; 规则:规则是含有左箭头(<-),并以英文点号结尾的语句,用以表示利用已有事实 生成新事实的方法;规则以左箭头为界分为前后两个部分,前一部分为目标,后一部分为条 件,目标是一个事实,条件则是由用逗号间隔的一个或多个事实构成; 所述数字化监管规则库中存储的全部都是事实语句与规则语句,用于表示某一地 址对应的账户具有的状态和特殊规则,维护所有的规则与事实,对外提供查询接口,用户通 过查询接口,可以获取任何一个特定主体对应的状态,以及任何一个监管标识符所绑定的 监管规则集与状态集; 步骤2、在智能合约中,将每一类待监管主体的每一种待监管操作都与一个监管标 识符绑定;并为每个智能合约监管标识符编写监管脚本;所述监管脚本中的语句为规则、事 实、外部调用或查询语句;在一次智能合约的调用过程中,语言的解释器将提取出智能合约 中的监管标识符,分析其上下文环境,确定待监管的主体与行为,并通过监管引擎执行监管 脚本,取得与该标识符绑定的规则集与状态集,并给出判断结果以完成监管功能。 所述执行阶段包括以下步骤: 步骤S1、读取智能合约内容,获取智能合约中的所有的监管标识符,分析出代监管 主体类型与行为类型;并获取本次调用中的上下文环境,分析出本次调用中的代监管主体 实例与行为实例; 步骤S2、根据部署阶段确定的监管标识符与规则集和事实集的绑定关系,将与监 管标识符相关的规则与事实加载进监管引擎; 所述监管引擎为一种推理执行工具,其通过查询语句判断某一主体的行为是否合 规;所述查询语句以问号结尾,语句中包含一个谓词或元素;所述查询是指利用已有事实和 规则,判断能否推导出待查询事实,利用分离规则进行推导,并根据结果返回True或False; 所述监管引擎以Datalog语言为后端,前端通过字符串正则匹配与替换,将数字化监管规则 库中的规则与事实以及查询语句转化为Datalog引擎执行的语句;Datalog引擎将根据转化 后的规则和事实进行推理,完成查询操作,并返回查询结果; 5 CN 111581047 A 说 明 书 3/6 页 监管引擎的前端还支持外部调用语句;所述外部调用语句以感叹号结尾,语句中 包含一个地址串,该地址串对应于区块链上的相应账户地址,对应某个待监管主体;外部调 用语句将会与数字化监管规则库进行交互,查询与主体对应的账户地址的内容;外部调用 语句将取回地址串对应的数据库单元中含有的所有事实和规则,即该主体当前具有的所有 状态与所有其需要遵循的特殊监管规则,并将他们加入到当前的事实集和规则集中; 步骤S3、监管引擎执行每一个监管标识符对应的监管脚本;监管引擎根据监管标 识符对应的监管脚本中的语句,执行外部调用、事实声明、规则声明和查询操作;在外部调 用时,监管引擎与数字化监管规则库进行交互,获取当前待监管主体的状态和特殊规则组 装出之后执行所需的所有规则集与事实集;在进行事实或规则声明操作时,将相应的事实 与规则加入到现有的规则集与事实集;在进行查询操作时,利用Datalog引擎,在现有的事 实集与规则集的基础上,进行推理演算,并给出查询结果; 步骤S4、监管引擎根据每一个监管标识符对应的监管脚本的查询结果,返回该主 体的行为是否合规,给出监管结果; 步骤S5、给出本次智能合约调用的监管结果;智能合约调用过程中,如果监管引擎 在执行所有监管标识符对应的监管脚本都给出通过的结果,则判断本次智能合约的调用过 程顺利完成,否则,则判断本次智能合约的调用存在违规行为。 采用上述技术方案所产生的有益效果在于:本发明提供的一种针对智能合约行为 的监管方法,该方法支持链上、事前、有状态的监管,同时有模块化、可复用的特性,提高智 能合约行为的监管效率和灵活性,可以满足不同场景下的监管需求。 附图说明 图1为本发明实施例提供的待监管Solidity智能合约的待监管transfer( )函数代 码示意图; 图2为本发明实施例提供的一种针对智能合约行为的监管方法执行阶段的流程 图; 图3为本发明实施例提供的智能合约中由#reg关键词声明的函数标识符对应的监 管脚本代码示意图。
分享到:
收藏