一、文章介绍

二区sci期刊 信息处理与管理

作者:电子科技大学 计算机应用研究所

二、文章问题及本文工作

问题: 智能合约可以简化和加速各种应用的开发,但也带来了一些问题。 例如,利用智能合约进             行欺诈,故意开发漏洞合约破坏公平性,以及大量重复合约浪费性能而没有实际目的。

本文工作:提出了一种基于交易的以太坊智能合约分类和检测方法. 从以太坊收集了超过 10,000 份智能合约,重点关注智能合约和用户产生的数据行为。                                                                      通过分析从交易中识别出四种行为模式,可以用来区分不同类型的合约之间的差异。 然后根据这些构建智能合约的 14 个基本特征。 为了构建实验数据集, 我们提出了一种数据切片算法,用于对收集的智能合约进行切片。 之后,使用LSTM 网络来训练和测试我们的数据集。

三、工作

3.1.搜集数据

两种方式收集合同数据。一种是通过以太坊客户端同步所有历史事务数据。我们使用奇偶校验客户端,并将其设置为跟踪开启模式,以便它可以计算和存储跟踪数据。收集2015年7月30日至2018年2月1日(约500万区块高度)的所有交易数据作为研究对象。                                                             另一种是使用Etherscan提供的API下载智能合约的交易,并以JSON格式存储数据。尽管提供的API声称它只能下载最后10000个事务,但通过修改块范围可以获得合同的所有事务。由于网络滞后,2018年2月1日之后的合同交易采用第二种方法收集。最后整理出以太坊中最常见的六种类型。

3.2余额

不同类型的合约有不同的交易行为。合约的应用目的决定了它的具体行为,这反过来又帮助我们识别合约的类型。

余额是指当时账户中有多少以太币。 余额的变化可以反映不同类型合同的差异。

3.3流入以太币和流出以太币之间的相关性

在某些合约中,Ether 的流入和流出存在固定的相关性。例如:赌博合约。 在赌博合约中,投注的 Ether 与参与者赢得投注时获得的 Ether 之间存在固定比率。 例如,一名赌徒投掷硬币,赌注为 X Ether,获胜者将获得 A 倍的赌注奖金,合约的佣金率为 B%,所有在本合同中赢得投注红利的玩家都会有这个特征:Y = X * A− X * B%。

3.4交易的统计特征

合同中账户的活动也可以反映合同的独特特征,下图显示了庞氏合同的投资频率和投资金额,两个子图分别代表账户投资频率(红色)和投资回报频率(蓝色)。每个小正方形代表一天的统计数据

观察到以下特征:首先,从上面的两个子图可以看出,红色子图中的小方块颜色很浅,但相应的蓝色子图颜色很深,尤其是第一个子图最明显。这表明,账户在合同中投资的时间越早,回报的频率就越高,这明显高于后来参与合同的人。

第二,从图7下面的两个子图来看,前面的大部分小方块在红色子图和蓝色子图中都有颜色。后面的小方块在红色子图中有颜色,而蓝色子图中相应的小方块几乎没有颜色。这表明早期投资账户的回报比例较高,而晚期投资账户几乎没有投资收益。这两点都与庞氏骗局现象一致。

图8是一个赌博合同。首先,从上面的两个子图中可以看出,红色子图中的大多数小方块的颜色阴影与蓝色子图中的小方块的颜色阴影大致相同。但是,也有一些情况下,红色的子图有较深的小方块,而相应的蓝色的子图有较浅的小方块。这说明用户投资和回报的频率基本上是成比例的,也就是说,如果你下注更多,获得回报的概率会更高。

3.5特征(feature)

根据我们发现的智能合约的四种行为模式,显然基于交易的分析确实能够反映不同应用类型合约的特征。 但是,单一特征并不能完全准确地判断合同的类别,因此需要结合多种行为特征来提高判断的准确性。

构建14个基本特征

3.6算法

将合同的14个特征作为时间序列数据。因此,每个智能合约实际上可以被视为一个二维矩阵。一行用于表示上述14个特征,即总共有14行。每列代表每个时间间隔。由于每个合约的创建时间不同,生成事务的数量、时间和频率也不同,即每个矩阵的列数不同

算法伪代码如下:

将智能合约处理成许多时间序列切片,

每个切片都是合约数据的一部分,可以被视为合约特征行为的映射。图10显示了数据集生成和模型训练的流程。首先,将每种类型的合同分别作为输入数据,并通过数据切片算法处理该类型中的每种合同。然后,从所有合同生成的(x,nMax,14)最终合并为一个(x,nMax,14)。重复上述过程,直到所有类型都已处理完毕。最后,我们可以获得包含用于训练模型和实验的类型标签的数据集((X,nMax,14),label)

然后,将((X,nMax,14),label)数据集中的每种类型按7:3的比例分为训练数据集和测试数据集,并从训练数据集中留出20%作为验证数据集。

四、实验

使用 Precision(P)、Recall(R) 和 F1 - score(F1)来评估模型,在此介绍实验1

实验参数设置如下:T=24(小时),nMin=64,nMax=128,m=10,batch size = 64,epoch=2000。T表示时间步长,nMin表示最小数据长度,nMax表示最大数据长度,m表示m个时间步长。而批大小(batch size)是在训练LSTM网络时的批大小。epoch是一个超参数,它定义了学习算法将在整个训练数据集中工作的次数。每组实验重复10次。平均值(m)和标准偏差(std)的结果在表中的m(+/-std)的形式进行汇总。

上述的图展示了一种合约与其他不同类型合约的区别,说明从合约交易中提取的特征可以刻画不同类型合约的行为模式。 以表 2 为例,Game 类合约相对于其他类型合约的 Precision 在 0.902-0.955 之间,这意味着 90% 以上的 Game 类合约可以通过特征与其他类型进行区分。 召回率介于 0.909 和 0.967 之间,这意味着超过 90% 的游戏类型合约被正确识别为游戏类型。 F1-score在0.906-0.972之间,说明我们模型的分类效果很好。 我们使用所有这 14 个特征来进行我们的实验,结果表明它们能够真实地反映不同类型合约的特征。 但我们也发现,如果有些合约的交易量太少,会影响实验结果的准确性。 这种方法可以扩展到异常检测、恶意合约检测和未知智能合约识别。

五、总结

文中实质性总结较少。对于自身可以借鉴的地方

1.图片一定要具有规范性

2.本文背景特别新(在区块链的背景下)对于智能合约来分类,提出的解决方案也比较新颖,运用到了lstm神经网络,(老师提出此方面可以深度挖掘一下)师哥最近也在看神经网络方向。发掘准备方向:可以改进神经网络,在搜集此方面有无相关论文,可以和师哥的论文进行结合出创新点。

【论文笔记】基于交易的以太坊智能合约分类检测方法相关推荐

  1. 基于mcat开发以太坊智能合约

    mcat是一个基于Golang实现的以太坊智能合约开发脚手架,它可以帮助你快速开发.调试以及部署智能合约,同时mact提供一个通过合约交易参数计算调用字节码的功能,可以帮助开发者不受语言限制,无论是J ...

  2. 链乔教育在线|智能合约学习——以太坊智能合约学习笔记(四)

    链乔教育在线|智能合约学习--以太坊智能合约学习笔记(四) 本笔记记录的是使用matemask钱包连接以太坊私链,并编写一个基本的提币智能合约部署到以太坊私链上,进行调用. 一.浏览器安装metama ...

  3. 区块链开发入门:基于以太坊智能合约构建 ICO DApp

    写给前端开发者的第一本区块链开发入门指南,通过从 0 到 1 实战开发一个 ICO DApp 项目(基于 V 神的 DAICO 设计思想),深入掌握区块链及以太坊技术. 为什么要选择区块链开发? 未来 ...

  4. 基于以太坊智能合约开发

    1.学习solidity语言.官网学习网址,https://solidity-cn.readthedocs.io/zh/develop/introduction-to-smart-contracts. ...

  5. 以太坊 智能合约 简介

    以太坊是一个分布式的计算平台.它会生成一个名为Ether的加密货币.程序员可以在以太坊区块链上写下"智能合约",这些以太坊智能合约会根据代码自动执行. 以太坊是什么? 以太坊经常与 ...

  6. 论文笔记:使用区块链和智能合约打击深度假冒视频

    摘要 随着人工智能(AI)和深度学习技术的兴起,近年来虚假数字内容激增.假镜头.假图像.假音频和假视频(被称为深度假冒,Deepfake)可能是一种危险的现象,有可能改变真相,并通过伪造事实来侵蚀信任 ...

  7. 以太坊智能合约Demo

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战demo示例快速入门,用demo例 ...

  8. 以太坊智能合约开发第二篇:理解以太坊相关概念

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 很多人都说比特币是区块链1.0,以太坊是区块链2.0.在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太 ...

  9. truffle (ETH以太坊智能合约集成开发工具) 入门教程

    truffle (ETH以太坊智能合约集成开发工具) 入门教程 前言 在你了解区块链开发之前,你有必要了解区块链的一些基础知识,什么是DApp,DApp与传统app的区别, 什么是以太坊,以太坊中的智 ...

  10. 教程 | 以太坊智能合约编程之菜鸟教程

    教程 | 以太坊智能合约编程之菜鸟教程 译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队.如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下 ...

最新文章

  1. 一位老哥写文怒刚 Redis 作者
  2. Css2.0+Css3.0+jQuery手册 chm
  3. kali linux 2.0配置更新源后apt-get update 报错
  4. 4、Java Swing JLable:标签组件
  5. UBuntu安裝使用PIP
  6. 浏览器崩溃_如何在浏览器不崩溃的情况下过滤200万行数据?
  7. 华为matebook和linux版本区别,华为MateBook14Linux版本开箱评测 | 从来没有让我们失望!...
  8. Visual Studio设置代码注释(包括作者版本信息)
  9. 全球及中国细胞和基因治疗用融化设备行业发展模式及未来前景分析报告2022-2028年
  10. 科学家发现程序员秃头新原因,毛囊干细胞竟会悄悄逃走
  11. 直播系统解决方案-搭建你自己的直播平台
  12. @media 的使用规范
  13. 2021软件评测师真题
  14. 如何选择漏电保护器规格型号_漏电保护器型号规格_漏电保护器的选用及注意事项...
  15. carsim2019.1下载安装包
  16. 029_《编程高手箴言》
  17. 点到直线的距离,垂足,对称点,两点所成的直线方程
  18. IP 地址与整数之间的互相转换详解
  19. 转云风的博客——无欲则刚
  20. 数据结构c语言版朱站立第五版答案,西安交大朱站立《数据结构——使用C语言》头文件...

热门文章

  1. 树莓派学习笔记(5):成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)...
  2. SCDM学习笔记(6)
  3. 黑马程序员—一张帖看完黑马所有学科、班级就业薪资贴
  4. 一名优秀的数据分析师应该具备这10项关键技能
  5. 六种用JavaScript检测出当前浏览器是否是无头浏览器( selenium headless browser)
  6. 高等数学---平面束方程理解
  7. 黄帝81难经11-20难
  8. 两个方法教你彻底解决win10系统更新补丁安装失败的问题
  9. 如何远程访问办公室电脑(过年工作不打烊),亲测有效稳定
  10. Verilog编写FSM有限状态机来检测序列11011,则输出1;可对序列进行重复检测