一种高效阅读智能合约辅助方法与流程

文档序号:19190862发布日期:2019-11-20 02:07阅读:475来源:国知局
一种高效阅读智能合约辅助方法与流程

本发明涉及区块链、智能合约领域,具体涉及一种高效阅读智能合约辅助方法。



背景技术:

1994年,nickszabo从自动售货机的原理中获得灵感,最早提出了“智能合约”概念,并将智能合约定义为“执行合同条款的计算机化交易协议”。与传统合约相比,智能合约效率更高,成本更低。传统合约需要通过“桌面协议”的形式协商与撰写,智能合约可以借助互联网与数字签名技术形成有合约方认证签名的智能合约;传统合约的执行过程由很多的控制协议构成,控制协议包括:记录(表格、账单等)的保存、记录的审核与协商。记录的审核与协商往往需要第三方参与,这不仅容易造成合约方之间的地位不平等,而且需要给予第三方劳务费。智能合约通过密码协议与用户界面的结合保证合约的本身及其执行过程的可观察性、可验证性,减少了控制协议的人工花费与计算成本。因此,智能合约越来越火热。

目前较流行的智能合约平台是以太坊,在该平台上,采用solidity编写的智能合约有超过200万个,而且每天都在不断增加。

由于大多数合约都与金钱相关,熟读合约是非常有必要的。例如购买虚拟货币,衡量虚拟货币的价值不能仅凭阅读白皮书,还要阅读与该虚拟货币相关的智能合约,从源头了解该货币的实际功能。

可是,读懂智能合约比读懂传统合约需要花费更长的时间。因为智能合约与传统合约在表达形式上有极大不同,传统合约使用自然语言表达合约内容,智能合约是利用代码表达合约内容,因此对于非代码编写人员来说,需要花费较长时间才能读懂智能合约。

总的来说,智能合约比传统合约更高效,更省成本,可是存在读懂合约耗时长的问题,迫切需要一个辅助阅读智能合约的工具。

现有的一个方法是solgraph工具,通过可视化智能合约(用solidity语言编写)的函数控制流,来辅助用户阅读。

具体步骤为:该工具先借助solidity语言编译器(solparser),得到用户输入的智能合约的抽象语法树(abstractsyntaxtree,ast),然后遍历抽象语法树,找到所有调用表达式结点及这些结点之间的关系,最后输出一个dot文件,该文件描述这些点和线。如果想生成图像,还需安装graphviz,该工具可以把dot文件转化成图片。

这种方法的缺点在于:

以简化智能合约为目的辅助用户阅读,只能让用户大概了解合约里各个函数之间的调用关系,并不能辅助用户高效阅读合约函数内部的细节。



技术实现要素:

本发明的目的是克服现有方法的不足,提出了一种高效阅读智能合约辅助方法。本发明所要解决的技术问题在于提供了一种智能合约相似度的计算方法,通过向用户推荐已读合约中和将读合约较相似的合约,避免用户花费时间在将读合约中已熟知的部分,解决了原有智能合约阅读辅助工具不能辅助阅读合约函数细节部分的问题。

为了解决上述问题,本发明提出了一种高效阅读智能合约辅助方法,所述方法包括:

用户先输入所有已读合约,预处理已读合约后,分别提取已读合约的标识符和token序列,并把它们存储在数据库中;

用户输入将读合约,预处理将读合约后,提取将读合约的标识符和token序列,分别把将读合约的标识符、token序列与数据库中所有智能合约的标识符、token序列比较,计算出将读合约与所有已读合约的语义相似度和语法相似度;

把语义相似度和语法相似度线性组合成综合相似度,输出综合相似度前十的合约,并分别标记输出合约与将读合约不同的部分,辅助用户高效细读大量的智能合约。

本发明提出的一种高效阅读智能合约辅助方法,通过该方法,可快速找到与已看合约不同的部分,从而节省阅读时间,无论是编程人员还是非编程人员,都能提高细读大量智能合约的效率。另外,编程人员也可借助该工具,快速学习编写智能合约。同类型的功能在实现上会有些许的差异,利用该方法可快速获取差异,从而设计出更安全,功能更全面的智能合约。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1是本发明实施例的高效阅读智能合约辅助方法总体流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本发明实施例的高效阅读智能合约辅助方法总体流程图,如图1所示,该方法包括:

s1,用户先输入所有已读合约,预处理已读合约后,分别提取已读合约的标识符和token序列,并把它们存储在数据库中。

s2,用户输入将读合约,预处理将读合约后,提取将读合约的标识符和token序列,分别把将读合约的标识符、token序列与数据库中所有智能合约的标识符、token序列比较,计算出将读合约与所有已读合约的语义相似度和语法相似度。

s3,把语义相似度和语法相似度线性组合成综合相似度,输出综合相似度前十的合约,并分别标记输出合约与将读合约不同的部分,辅助用户高效细读大量的智能合约。

步骤s1,具体如下:

s1-1:用户输入所有已读合约;

s1-2:预处理已读合约。检查用户输入的已读合约能否通过编译器,若不能通过,则舍弃,否则保留;

s1-3:提取已读合约的标识符,并存储在数据库。标识符提取过程如下:过滤智能合约中的虚词(and,the等);利用正则表达式过滤solidity关键词(event、enum、contract等)除与以太币单位和时间单位有关的关键词(wei、finney、szabo、ether、second、minutes、hours、days、weeks、years);对使用驼峰或下划线规则命名的标识符分词;扩充缩写的标识符;过滤不是单词的字符串。例如,“contractguessthenumber”的提取标识符结果为“guessthenumber”;

s1-4:提取已读合约的token序列,并存储在数据库。token序列提取过程如下:先将智能合约的语法分为44种类型,对于每一行合约,利用“solidity-parser”工具解析出该行对应的抽象语法树(ast)节点,识别出该行包含的语法类型。例如:“require(msg.sender==owner);”对应的token序列为“callexpressionbinaryexpression”。

步骤s2,具体如下:

s2-1:用户输入将读合约;

s2-2:预处理将读合约。检查用户输入的将读合约能否通过编译器,若不能通过,则舍弃,否则保留;

s2-3:提取将读合约的标识符。标识符提取过程如下:过滤智能合约中的虚词(and,the等);利用正则表达式过滤solidity关键词(event、enum、contract等)除与以太币单位和时间单位有关的关键词(wei、finney、szabo、ether、second、minutes、hours、days、weeks、years);对使用驼峰或下划线规则命名的标识符分词;扩充缩写的标识符;过滤不是单词的字符串;

s2-4:分别计算将读合约与所有已读合约的语义相似度。语义相似度计算过程如下:把数据库中所有智能合约的标识符和将读合约的标识符都添加到语料库中,基于该语料库,使用lsi模型建立单词-文档矩阵,计算将读合约与已读合约的的语义向量余弦值,余弦值即语义相似度;

s2-5:提取将读合约的token序列。token序列提取过程如下:先将智能合约的语法分为44种类型,对于每一行合约,利用“solidity-parser”工具解析出该行对应的抽象语法树(ast)节点,识别出该行包含的语法类型;

s2-6:分别计算将读合约与所有已读合约的语法相似度。语法相似度计算过程如下:使用一个矩阵存储两个token序列的对比结果,如果第一个智能合约的第一行与第二个智能合约的第二行token序列一致,则在矩阵的(1,2)填“1”,否则填“0”,其它格同理。填写完毕后,在矩阵中沿着主对角线方向寻找一条最长的公共子序列,语法相似度为最长子序列除以两条token序列较长者;

s2-7:计算将读合约与所有已读合约的综合相似度。根据以下公式计算综合相似度:综合相似度=语义相似度*0.1+语法相似度*0.9。

步骤s3,具体如下:

s3-1:输出综合相似度前十的合约;

s3-2:标记输出合约与将读合约不同的部分。

本发明实施例提出的一种高效阅读智能合约辅助方法,通过该方法,可快速找到与已看合约不同的部分,从而节省阅读时间,无论是编程人员还是非编程人员,都能提高细读大量智能合约的效率。另外,编程人员也可借助该工具,快速学习编写智能合约。同类型的功能在实现上会有些许的差异,利用该方法可快速获取差异,从而设计出更安全,功能更全面的智能合约。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或光盘等。

另外,以上对本发明实施例所提供的一种高效阅读智能合约辅助方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1