合约图的规范化
大多数图神经网络在信息传播时都是内在的平等的,忽略了某些节点更重要的作用。而且,不同的合约源代码生成不同的图,从而阻碍了图神经网络的训练。因此,我们提出了一种节点消除过程来实现图的规范化。

节点消除
正如3.1节所介绍的,图中的节点被划分为主要节点Mi,次要节点Si和fallback节点F。我们将每个次要节点移除,但是保留它们和其最近主要节点的特征(应该是指边)

若Si有多个最近的主要节点,则它的特征将传递给所有这些主要节点。fallback节点也将移除,移除方法相似于次要节点。所有的与移除节点相连的边都将保留起来,只不过它们的起始和终止节点都移到了对应的主要节点中。

主要节点的特征
在聚集了移除的邻居节点的特征后,主要节点的特征将会升级。为了区别原始的主要节点和升级后的主要节点,我们将升级后的原主要节点Mi记为Vi。Vi的特征由三个部分组成:
1.自身特征,也就是Mi主要节点的特征
2.内在特征,也就是所有融合到Mi的次要节点的特征,这些次要节点都有从Pj指向Mi的一条路径
3.外在特征,也就是所有融合到Mi的次要节点的特征,这些次要节点都有从Mi指向Qk的一条路径

消息传播神经网络
在本小节,我们首先将GCN扩展成无度数的GCN,然后提出了一种新鲜的时许消息传播网络(tmp)。这两个提出的网络都使用了智能合约的规范化图G作为输入,然后输出标签y等于0或1来表明这个方程是否有某方面的漏洞

DR-GCN
Kipf and Welling, 2017提出了一种利用卷积神经网络来处理图结构数据的方法,突出了一个分层的传播网络利用以下公式:

其中,Ahat是邻接矩阵A加上一个自循环I,Xl则是第l层的特征矩阵,Wl则是可训练的权重矩阵。在这个等式中,对角的节点度数矩阵Dhat是用来标准化Ahat的。我们首先通过A的平方来增加规范图G中的节点连结性,然后我们充分考虑图已经被规范化,然后将Dhat移除,随后我们就可得到:

TMP
我们也提出了一个时序消息转播网络,由消息传播阶段和读出阶段组成。

在传播阶段中,TMP通过按照时序顺序沿着边成功地传播信息。然后,TMP利用读出函数为整图G计算一个标签,这里就汇聚了所有G中节点地最终状态。在符号上,G = {V,E},V由所有主要节点组成,E包含了所有边。若记E = {ei},则ek表示时序为第k个的边。

消息传播阶段
消息沿着边传播,每一个时间一条边。在时间0时候,每个节点Vi的隐藏状态hi0都会被Vi的特征所初始化。在时间k时候,消息流经第k个时序边ek然后对Vek的隐藏状态进行更新,这里的Vek也就是ek的终点。特别地,消息mk是基于hsk计算的,hsk也就是ek的起点的隐藏状态,同时也利用了边的类型tk:

这里的+加圈表示的是串联操作,矩阵Wk和偏差向量b都是网络参数。原始信息xk包括了ek起点的信息hsk和ek本身的信息tk,然后它就被一个Wk和bk的变换转化了。在收到信息后,ek的终点将会更新它的隐藏状态hek通过汇聚输入的信息和其之前的状态,公式如下:

ps:似乎使用了tanh和softmax来激活

读出阶段
在成功地遍历了G中所有边后,TMP通过读出所有节点地最终隐藏状态来为G计算一个标签。将hiT记作第i个节点的最终隐藏状态,我们可以生成最终预测标签:

其中,f是一个映射函数。例如,在一个神经网络中,|V|表示主要节点的个数。然而,我们发现最终隐藏状态hiT和原始状态hi0之间的差别是很有信息量的,它有帮助于漏洞检测任务。因此,我们考虑另一种y的计算方法:

一个圈一个点表示元素乘积和,W,b都是模型学习的参数。

总结
DR-GCN和TMP网络都是为了训练合约漏洞检测。在训练中,一大组由智能合约函数生成的规范化图将喂给网络,同时它们的人工真实标签也会输入给网络。然后,训练模型通过吸收规则图来生成一个漏洞检测的标签。这整个过程都是自动化的。

基于GNN的智能合约漏洞检测(tmp)方法部分翻译(2)相关推荐

  1. 基于GNN的智能合约漏洞检测(tmp)方法部分翻译(1)

    背景 实在是没办法,不翻译印象不深... 我们的方法 为了解决现有工具在智能合约检测方面的不足,我们提出了一种超出传统基于规则的框架的方法.特别地,我们根据程序中的数据流和控制流关系将智能合约源代码提 ...

  2. Oyente:智能合约漏洞检测工具的安装与使用

    写在前面 当你阅读到这篇 博客 时,大概率你已经阅读并尝试过 Oyente 官方安装指导,甚至可能还在其它地方搜过安装教程,如果没有就当我没说... 那为什么在有各种版本的教程的情况下我依旧去写一个新 ...

  3. 区块链论文7(oyente智能合约漏洞检测工具)

    Making Smart Contracts Smarter 文章路径 参考链接1 参考链接2 参考链接3 Abstract: Cryptocurrencies record transactions ...

  4. java调试生命周期,一种基于JAVA的智能合约生命周期的管理方法与流程

    本发明涉及区块链技术,尤其涉及一种基于JAVA的智能合约生命周期的管理方法. 背景技术: 区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交 ...

  5. 这些智能合约漏洞,可能会影响你的账户安全!

    摘要:区块链联盟链智能合约形式化验证揭秘,解释了我们为什么要对区块链上的智能合约进行形式化验证,以及形式化验证的分类和业界针对每种分类所推出的形式化验证工具,最后作者描述了一下目前形式化验证的种种方法 ...

  6. 智能合约自动检测工具『链必验』,如何带你解锁Web3.0世界

    在我们发布[链必验]新版本之后,目前已有大批开发者前来试用,今天,我们还需要详细介绍这款工具. [链必验]智能合约自动检测工具,可用来检测区块链智能合约漏洞.平台针对每个用户模拟了一条单独的测试链,用 ...

  7. oyente—合约漏洞检测工具安装

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 oyente-合约漏洞检测工具安装 前言 一.oyente是什么? 二.安装 1.在docker安装 2.linux安装 1.首先就是 ...

  8. 基于图神经网络的代码漏洞检测方法

    文章结构 1. 引言 1.1 漏洞现状 1.2 漏洞研究传统特点 现有的研究方案大多把源代码转化为文本序列,使用自然语言处理中常用的循环神经网络进行自动化特征提取,但这忽略了代码中由于跳转.循环.判断 ...

  9. 智能合约漏洞攻击事件_智能合约百科全书攻击漏洞

    智能合约漏洞攻击事件 Applications on Ethereum manage financial value, making security absolutely crucial. As a ...

最新文章

  1. 笔记本上的小键盘计算机怎样用,笔记本小键盘怎么开,详细教您笔记本小键盘怎么开启...
  2. python输入字符串转换为公式_python从字符串转换为boolean ?
  3. es6 Module语法
  4. Kettle性能调优汇总
  5. python输入整数_Python中实现输入一个整数的案例
  6. 最优化理论与方法(part4)--秩一校正
  7. 数值传热学陶文铨pdf_西安交大陶文铨当选“2019最美科技工作者”
  8. css动画定义,CSS3中Animation动画的定义和调用
  9. Python中的reshape()
  10. windows2000/xp运行命令全集
  11. 360 回应安全云盘出现交易异常;苹果官网陆续限购 iPhone;GitHub 屏蔽微软工程师的开源项目 | 极客头条...
  12. BOOTP 与 DHCP
  13. 洛谷 [P1387] 最大正方形
  14. Spring Boot集成Spring Data Reids和Spring Session实现Session共享(多个不同的应用共用一个Redis实例)...
  15. 手把手教你自学单片机,三个步骤请做好笔记
  16. KK集团5年估值200亿,新零售还好做吗?
  17. 如何解决 U盘 文件变成.exe文件
  18. 2017届腾讯校园招聘笔试——最后一道编程题
  19. 前端vue点击切换(黑夜/白天模式)主题最新(源码)
  20. cad角度怎么画_软件CAD | 直线amp;构造线

热门文章

  1. 涂鸦蓝牙协议移值(初级)
  2. 橄榄油的美容方法,橄榄油的正确用法
  3. 高德地图左上角或任意位置增加自定义按钮,一刷新按钮消失问题
  4. 路面病害检测-从数据清洗到模型部署的全流程方案
  5. 解决windows 7的网关mac绑定以及与 P2Pover的冲突
  6. CorelDRAW X3 手绘工具
  7. Lync 小技巧-33-BlueStacks安卓模拟器 For Lync 2013
  8. 数据科学与大数据分析之项目6-CNN模型图像分类
  9. 分发下载用什么工具?联想企业网盘已成办公新标配
  10. Ulead Gif Animator 5.1