?
?
论文标题:Checking Smart Contracts With Structural Code Embedding 原文链接Checking Smart Contracts With Structural Code Embedding | IEEE Journals & Magazine | IEEE Xplore 说明:在读研究生为方便记忆梳理学习,手敲论文笔记,概括论文的主要思想
背景
智能合约指是一个程序,当满足特定的预定义条件时,可以触发执行任何任务。智能合约越来越多地与区块链一起使用,以实现金融和商业交易的自动化。然而,在许多合约中发现了许多错误和漏洞,因此,非常需要更好地维护智能合约代码并确保其高可靠性。
智能合约中定义的条件和合约的执行应该是可跟踪和不可逆转的,以最大限度地减少对受信任中介的需求。它们还应该尽量减少恶意或意外异常,以确保智能合约暗示的任何商业交易的可信度。
贡献
- 我们提出了一种基于代码嵌入和相似性检查的 Solidity 代码检查新方法,适用于各种目的,例如相似合约代码检测、错误检测和合约验证。
- 我们基于该方法构建了一个 SMARTEMBED 原型,并在从以太坊区块链收集的 22,000 多个 Solidity 合约上对其进行了评估。
- 我们的克隆检测结果表明,我们的工具可以有效地识别出许多克隆率在 90% 左右的重复性 Solidity 代码,并且我们可以比常用的克隆检测工具 Deckard 更准确??地检测到更多的语义克隆。
- 我们的错误检测结果表明,SMARTEMBED 可以基于我们的错误数据库高效准确地识别出 1,000 多个与克隆相关的错误,从而可以有效地检查代码和错误模式变化的智能合约。对于合同验证,我们的方法可以捕获与已知错误相似且误报率低的错误,对克隆或错误的查询非常有效,足以满足实际使用
设计过程和框架
数据处理过程
- 收集代码用解析器解析生成抽象语法树(AST)
- 通过序列化提取AST的令牌流,标记ast中的关键行数和字符
- 移除不相关字符
- 生成嵌入矩阵,Word2vec学习单词的向量表示,这对预测句子中的周围单词很有用。然而,传统的word2vec未能捕捉到单词的形态结构。FastText试图通过将每个单词视为其子词的集合来解决这一问题,子词被认为是单词的n元语法,并且具有快速文本的单词的向量是其组成部分的所有n元语法向量的总和。
- 通过向量空间比较使用相似性检查方法执行克隆检测、错误检测和合同验证。在可能的代码片段对之间执行相似性比较,并且相似性阈值控制代码片段将被视为代码克隆还是与克隆相关的错误。
|