一、文章介绍
二区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神经网络,(老师提出此方面可以深度挖掘一下)师哥最近也在看神经网络方向。发掘准备方向:可以改进神经网络,在搜集此方面有无相关论文,可以和师哥的论文进行结合出创新点。