ICPC-2022 Self-Supervised Learning of Smart Contract Representations

论文地址:Self-Supervised Learning of Smart Contract Representations

论文实现:https://github.com/SCRepslearner/SmartLearner

SRCL:全局+局部学习,代码增强和自监督

Abstract

为了处理智能合约数据稀少,同质化问题,提出了SRCL自监督学习智能合约表征,通过局部和全局信息自动提取AST结构,然后两个判别器指导transformer编码器学习局部和全局语义特征

Introduction

与其他程序比,智能合约更不能容忍错误,“code is law”,合约一旦发布就不能修改,因为如果有修改或Bug就会导致区块链很多钱的损失

同时,智能合约数据高度同质和冗余,开发者倾向于复制现有代码而不是冒着风险从零开始写,有26%代码块是克隆了14.6次,只有20.8%的代码是原生的

基于增强的代码变体,SRCL有三部分:局部判别器,全局判别器,解码器

主要贡献:

  • 通过三个自监督任务学习智能合约表示
  • 三个操作生成代码变体:类型替换,值替换,对插入
  • 提出了智能合约在克隆检测和克隆聚类的数据集

Approach

avatar

Constructing Structural Sequences

avatar

把每个智能合约转化为两个序列,通过先序遍历得到AST类别序列和AST值序列,没有值就硬填充

Generating Code Variants

维护一个类别词元和值词元的key-value分布M,样本是<T, V>,类别序列和值序列,然后执行类别替换(TR),值替换(VR)和对插入(PI,随机从M中再找一个对插到随机位置)

假设这样可以增加噪音的同时维持原有语义信息

Representation Learning

avatar
Global Discriminator
avatar

全局判别器执行的是真假样本预测任务,是一个分类任务。正样本是原样本和VR,负样本是TR和PI

Local Discriminator

局部判别器执行的是词元替换预测任务,预测词元是否经过增强被替换

Experiment

avatar
avatar
avataravatar