<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Smart Contracts Categorization With Topic Modeling Techniques</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Giacomo Ibba</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marco Ortu</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Roberto Tonelli</string-name>
          <email>roberto.tonellig@unica.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Cagliari, Department of Business School</institution>
          ,
          <addr-line>Cagliari</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Cagliari, Department of Mathematics and Computer Science</institution>
          ,
          <addr-line>Cagliari</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <fpage>64</fpage>
      <lpage>73</lpage>
      <abstract>
        <p>One of the main advantages of the Ethereum blockchain is the possibility of developing smart contracts in a Turing complete environment. These general-purpose programs provide a higher level of security than traditional contracts and reduce other transaction costs associated with the bargaining practice. Developers use smart contracts to build their tokens and set up gambling games, crowdsales, ICO, and many others. Since the number of smart contracts inside the Ethereum blockchain is several million, it is unthinkable to check every program manually to understand its functionality. At the same time, it would be of primary importance to group sets of Smart Contracts according to their purposes and functionalities. One way to group Ethereum's smart contracts is to use topic modeling techniques, taking advantage of the fact that many programs representing a specific topic are similar in the program structure. Starting from a dataset of 130k smart contracts, we built a Latent Dirichlet Allocation (LDA) model to spot the number of topics within our sample. Computing the coherence values for a different number of topics, we found out that the optimal number was 15. As we expected, most programs are tokens, games, crowdfunding platforms, and ICO.</p>
      </abstract>
      <kwd-group>
        <kwd>Blockchain</kwd>
        <kwd>Smart Contract</kwd>
        <kwd>Ethereum</kwd>
        <kwd>LDA</kwd>
        <kwd>Topic Modeling</kwd>
        <kwd>Ponzi Scheme</kwd>
        <kwd>Token</kwd>
        <kwd>ICO</kwd>
        <kwd>Smart Contracts Trends</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Over the past few years, the number of smart contracts deployed and verified in the
Ethereum blockchain increased exponentially [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. They provide a higher level of
security than traditional contracts offer and reduce costs associated with bargaining
practices. Thanks to these particular features, smart contracts are often used for tasks that
include management and transfers of currency. Despite being used in particular for
developing tokens [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], launching ICOs [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and crowdfunding platforms [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], developers
take advantage of Ethereum’s smart contracts to build gambling games, wallets, voting
applications, and many others. Sometimes it is also possible to spot scam contracts
inside the Ethereum chain, particularly the Ponzi Scheme, a pyramidal scheme in which
participants recruit investors with the promise of easy earnings and high-interest rates
relative to the initial investment. The first Ethereum contract appearance dates back to
2015, but developers started to exploit this technology widely in 2017. Since then, the
number of contracts deployed in the blockchain has reached several million, so it is
impossible to manually check each contract deployed since 2017. Given the large number
of programs to scan, it is difficult to understand how many different contracts are stored,
since many developers adopt the practice to deploy many times the same or very similar
contracts, even for testing purposes. One way to analyze such a huge set of smart
contracts is to use unsupervised machine learning techniques. It is essential to report and
classify these programs correctly for many reasons. For example, inside the Ethereum
blockchain it is possible to spot scam contracts. These type of contracts aims to steal
Ether from networks participants, thus it is of fundamental importance to identify and
report scam contracts properly. Another motivation is for statistical purposes since a
massive analysis of smart contracts functionalities is still missing in literature.
Furthermore, keeping track of trends, new categories of application, and statistics on the smart
contracts’ topology leads to a better understanding of the technology in general and in
particular of the potential applications. It is already known that developers widely
exploit contracts to build their tokens and set up secure money transfer programs. Still it is
unknown the number of contracts’ categories, and how many samples per category have
been deployed from 2016-2017 (when smart contracts started to spread) to nowadays.
It would also be interesting to build a taxonomy showing the main types of smart
contracts stored inside the Ethereum blockchain. The taxonomy could show which main
contract types were present at the beginning of Ethereum’s life cycle and the primary
categories now, and the smart contracts trend over the years.
      </p>
      <p>
        Previous works [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] propose a smart contracts taxonomy of five categories.
– Financial: contracts managing, gathering, or distributing money.
– Notary: contracts that certify ownership and provenance of data.
– Game: contracts implementing gambling games and skill games.
– Wallet: contracts that, in general, simplify the interaction with the blockchain.
– Library: contracts implementing general-purpose operations.
      </p>
      <p>
        According to the study, the most used smart contracts in Ethereum are financial,
libraries and games. The study also gives an idea about the the correlation between design
patterns [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and smart contracts categories, but is essentially quite limited.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>STATE OF ART</title>
      <p>
        The overgrowing number of Smart Contracts leads to several problems. First,
retrieving only a specific smart contracts’ category could be complicated. Second, several
contracts could also be scams; spotting them and avoiding their use are primary tasks.
Often developers tend to deploy several versions of the same program in the blockchain
with minor differences. Apart from this, other developers (for experimental and test
purposes) deploy updated versions or copies of existing smart contracts, leading to a
disproportionate number of similar programs. These problems combined have attracted
the attention of many researchers. Indeed several works propose smart contracts
classification techniques. One of the several approaches [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] consists in spotting behavior
patterns by performing a transaction-based analysis. Another exciting approach [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]
combines bi-directional LSTM to capture grammar rules and context information in source
code and Gaussian LDA to generate comment features. Another approach [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] exploits
the bytecode instead of source code to classify contracts. Other works are more specific
in classification; indeed, researchers carried out several projects to classify smart
contracts bugs [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], vulnerabilities [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], and others aiming to spot scam contracts [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
Considering all previous works, we can say that smart contracts classification is a
highinterest task. The problem with previous projects that perform a general classification
over contracts is that only a subset of the sample is analyzed; indeed, it is widespread to
find a dataset composed of a number between 10.000 and 20.000 contracts. Considering
the overall number of contracts within the Ethereum blockchain, we assume that 10.000
programs are insufficient to give us an idea of the actual distribution over smart
contracts’ categories. In particular, the statement is true for those datasets that include only
smart contracts with specific functionality (i.e., money transfer programs) and datasets
including random selections of contracts chosen within a definite and short period (i.e.,
only 2017 or only 2019-2020 programs). Furthermore, some of the proposed models are
specific for a precise type of classification, like spotting Ponzi schemes [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Our
purpose is to find an approach that guarantees us to group smart contracts into categories,
starting from a high number of samples, taking advantage of already existing datasets.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>DATASET</title>
      <p>
        Our dataset is a collection of Solidity smart contracts retrieved from three already
existing datasets. The first dataset is SmartBugs [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], which contains vulnerable smart
contracts. The second dataset from which we collected our contracts is SmartCorpus [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ],
an organized, reasoned, and up-to-date repository where developers and researchers
can efficiently and systematically access Solidity source code and other metadata about
Ethereum smart contracts. The last dataset we exploited is SmartSanctuary [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], an
organized repository containing only Ethereum verified smart contracts. What is
interesting about this dataset is that it includes smart contract sources for various networks,
and it is constantly updated. We will refer to our dataset as SSCB (Smart Sanctuary
Corpus Bugs). Our dataset includes contracts within a time frame ranging from 2017 to
2021, of which the most represented years are 2021, 2018, and 2020. Having a lot of
such recent contracts increased the representativeness of our dataset since 2018, saw an
exponential growth of smart contracts’ usage. Nevertheless, we lack a lot of 2019 and
all the 2015 and 2016 contracts, so we could enrich our sample and its representativity
by adding the programs missed in our dataset. Figure 1 shows the number of samples
for each dataset where we also report the data cleaned from duplicates. Some general
considerations are needed about the dataset; indeed, before proceeding with our topic
modeling, we manually checked about 600 smart contracts to have an idea on which
and how many types of smart contracts we were dealing with. Most of the contracts are
token contracts, including Non-Fungible-Tokens (NFT) and token exchange programs.
Other relevant categories found by manual inspection are Timelock contracts,
Crowdsale, ICOs, and gambling games. We were not able to manually categorize some
contracts, such as ’Hello World’ contracts and others performing nonsense operations.
Another exciting sample includes investment contracts, some of which are Ponzi schemes
that are immediately recognizable [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]
      </p>
    </sec>
    <sec id="sec-4">
      <title>RESEARCH METHODOLOGY</title>
      <p>First of all, we combined the three datasets described in the previous session into one,
building a CSV with only two features: the contract’s address and the source code.
We dropped any possible duplicate from the dataset, and we joined all different source
codes having the same address since being part of the same contract.</p>
      <p>
        Our work aims to categorize our collection of Ethereum smart contracts which include
Solidity source code and comments made by developers. The main idea is that the terms
used to set variable names, function names, struct names, and comments could help to
spot the contract’s purpose. Another interesting observation is that some programs have
a well-defined structure in terms of source code; indeed, many developers recycle the
source code of already deployed contracts to build their programs. For example,
observing tokens, gambling games, investments, and others are pretty much the same looking
at the code and structure, and this feature could help in our analysis. Taking advantage
of these considerations, we decided to use Natural Language Processing (NLP)
techniques to capture all the relevant information from the source code to perform contracts
modeling and categorization. In particular, we used topic modeling [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] techniques and
the Latent Dirichlet Allocation (LDA) model [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] to categorize our samples. In topic
modeling, a task of fundamental importance is the stopwords removal. In the case of
our dataset we are not dealing with human language. Still, we are dealing with code
language, so one aspect to consider is that all language keywords, apart from a few
exceptions, will have the same probability over the categories. Since we have collected
only Solidity contracts, we added to the stopword list all the Solidity language
keywords. We also added assembly terms since it is possible to write assembly code inside
Ethereum smart contracts. Also, we must consider that developers may write smart
contracts in snake-case or camel-case. So, we need to pre-process text in such a way as to
split words separated by underscores and attached words, in which the first word begins
with a lowercase letter, while the following ones with a capital letter. Eventually, we
removed new lines characters and characters with exponent. To find the optimal number
of topics, we computed the topic coherence, which measures the score of a single topic
by measuring the degree of semantic similarity between high-scoring words in the topic.
In particular, we computed the c v measure [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], which is based on a sliding window,
one-set segmentation of the top words, and an indirect confirmation measure that uses
normalized pointwise mutual information (NPMI) and the cosine similarity. These
measurements help distinguish between semantically interpretable topics and topics that are
artifacts of statistical inference. After building our LDA model, we found the optimal
model by computing the coherence values augmenting the number of topics. Figure 2
shows the coherence score for different number of topics. As the graphic shows, the
curve peaks at 15 topics, stabilizes, and after 20 topics, it increases again. If the
coherence score seems to keep increasing, it could be a reasonable choice to pick the model
that gave the highest CV before the curve flattens out or before a major drop.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>RESULTS</title>
      <p>
        After carrying out our analysis with the LDA model, we were able to find 15
different topics inside our dataset of contracts. The taxonomy in Figure 3 shows the
macro-categories and relative sub-categorizations. We detected the following
macrocategories, which almost corresponds to those already detected in literature:
– Financial
– Notary
– Game
– Wallet
– Token
We further expanded this categorization into subcategories. The arrows show which are
the relationships between the macro-categories and the sub-categories. For example,
Bank, Investment, Crowdsale, ICO, and Ponzi scheme are exclusive topics of the
Financial category. Other sub-categories such as Authorization, Termination, and Time
Constraint are not topics belonging to a single class; indeed, we can observe these design
patterns in several contracts categories. A good example is the Time Constraint topic, a
sub-category of the Financial, Wallet, and Game macro-categories. We assigned a
document to a particular category by computing each topic’s percentage contribution and
choosing the topic with the highest percentage. We considered the one proposed in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] to
build our taxonomy, but with some crucial differences and further considerations. Also,
to build the hierarchy of macro and sub-categories, we considered the already delivered
studies about smart contracts design patterns. Furthermore, we added sub-categories
that previous studies did not include but detected in our manual check process of
contracts (i.e., token burning programs, non-fungible tokens, and Ponzi schemes). The first
difference is that we didn’t consider Library contracts as a category. It is pretty
uncommon nowadays to find a smart contract whose only purpose is to contain a library;
indeed, libraries such as ’SafeMath’ or similar are most of the time part of more
sophisticated programs. We considered the Token design pattern as a separate category.
Indeed, developers can follow several patterns to build their token contracts. The most
common pattern is the ’simple token’: these programs contain only a token structure
and few tokens transfer and burn functions. Another interesting pattern is the
NonFungible-Token (NFT) [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] one, which certifies a digital asset as unique and therefore
not interchangeable. Other common patterns for the token category are programs for
exchanging and tokens burning. In this work we assume that all the Token sub-categories
are considered in the same topic. For what concerns the Financial class, we found
several topics of interest: indeed, some programs aim to store and preserve Ether as a bank.
Others are investments oriented programs, and there are also ICO and Crowdfunding
platforms. There are two types for what concerns investment programs: the first ones are
regular investment programs, while the others are Ponzi schemes, which are pyramidal
models, and so only the very first few users to invest their money in these contracts will
have profit. Other unique topics are ’gambling’ and ’ether lock,’ which are Game and
Wallet categories topics. The first pattern concerns gambling games, such as roulettes,
card games, and others. The topic ’ether lock’ instead involves locking and storing Ether
for a certain amount of time; they are different from bank programs because these last
allow users to retrieve their money at any time. Other topics are common to several
categories, like time constraints, used by Financial, Game, and Wallet contracts. Another
unique type is the Notary one, which includes contracts for voting applications and
certification programs. Also, we spotted several contracts that we couldn’t categorize as
’Hello World’ programs and other particular types of contracts.These programs were
assigned with the topic with the lowest contribution percentage and are identified by
incoherent keywords, especially if compared with the other categories.
Regarding the distribution of smart contracts in SSCB, as we expected, most of the
programs belong to Tokens and Financial categories, covering most of 70% of our dataset.
In contrast, the others cover the remaining part of SSCB. Figure 4 summarizes
cateCategory
      </p>
      <p>Topics
Token
Game
Notary</p>
      <p>Regular Token</p>
      <p>NFT</p>
      <p>Token Burn
Token Exchange</p>
      <p>Gambling</p>
      <p>Oracle</p>
      <p>Termination
Time Constraint
Authorization
Certification</p>
      <p>Voting
gories’ distribution. However, the most present type is Token, which alone covers 42.4%
of the dataset.
6</p>
    </sec>
    <sec id="sec-6">
      <title>CONCLUSIONS</title>
      <p>
        In this study, we leveraged Natural Language Techniques to understand intelligent
contracts use cases. Our main contributions are the proposal of a fine-grain taxonomy of
smart contracts and the presentation of insights into sub-categories with respect to
previous similar works. Another contribution is that given the categories, it is possible to
check quickly if a smart contract is a scam, a bank, or another type of contact. The
application of LDA led us to find 15 different categories of SC that enrich those provided
in previous works [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. As future work, we aim to build a complete taxonomy
and going deep with our analysis. In particular, we aim to find the distribution of
every single topic over our dataset, taking advantage of more contracts. Also, we want
to build a temporal taxonomy, showing the topics’ evolution over the years and each
primary trend per year. Another contribution of the work will be creating several small
datasets, each containing smart contracts of a specific topic, for example, a dataset of
Non-Fungible-Tokens only.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. di Angelo,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Salzer</surname>
          </string-name>
          , G.:
          <article-title>Tokens, types, and standards: Identification and utilization in ethereum</article-title>
          .
          <source>In: 2020 IEEE International Conference on Decentralized Applications and Infrastructures (DAPPS)</source>
          . pp.
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          (
          <year>2020</year>
          ). https://doi.org/10.1109/DAPPS49028.
          <year>2020</year>
          .00001
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bartoletti</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pompianu</surname>
            ,
            <given-names>L.:</given-names>
          </string-name>
          <article-title>An empirical analysis of smart contracts: platforms, applications, and design patterns</article-title>
          .
          <source>In: International conference on financial cryptography and data security</source>
          . pp.
          <fpage>494</fpage>
          -
          <lpage>509</lpage>
          . Springer (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Blei</surname>
            ,
            <given-names>D.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ng</surname>
            ,
            <given-names>A.Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jordan</surname>
            ,
            <given-names>M.I.</given-names>
          </string-name>
          :
          <article-title>Latent dirichlet allocation</article-title>
          .
          <source>the Journal of machine Learning research 3</source>
          ,
          <fpage>993</fpage>
          -
          <lpage>1022</lpage>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bracamonte</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Okada</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          :
          <article-title>An exploratory study on the influence of guidelines on crowdfunding projects in the ethereum blockchain platform</article-title>
          . In: Ciampaglia,
          <string-name>
            <given-names>G.L.</given-names>
            ,
            <surname>Mashhadi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Yasseri</surname>
          </string-name>
          , T. (eds.) Social Informatics. pp.
          <fpage>347</fpage>
          -
          <lpage>354</lpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Camino</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Torres</surname>
            ,
            <given-names>C.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>State</surname>
          </string-name>
          , R.:
          <article-title>A data science approach for honeypot detection in ethereum</article-title>
          . CoRR abs/
          <year>1910</year>
          .01449 (
          <year>2019</year>
          ), http://arxiv.org/abs/
          <year>1910</year>
          .01449
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zheng</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ngai</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zheng</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhou</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Exploiting blockchain data to detect smart ponzi schemes on ethereum</article-title>
          .
          <source>IEEE Access PP</source>
          ,
          <fpage>1</fpage>
          -
          <lpage>1</lpage>
          (
          <issue>03</issue>
          <year>2019</year>
          ). https://doi.org/10.1109/ACCESS.
          <year>2019</year>
          .2905769
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Dingman</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferrara</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lynch</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jasinski</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Black</surname>
            ,
            <given-names>P.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Deng</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Classification of smart contract bugs using the nist bugs framework</article-title>
          .
          <source>In: 2019 IEEE 17th International Conference on Software Engineering Research, Management and Applications (SERA)</source>
          . pp.
          <fpage>116</fpage>
          -
          <lpage>123</lpage>
          (
          <year>2019</year>
          ). https://doi.org/10.1109/SERA.
          <year>2019</year>
          .8886793
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Fenu</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marchesi</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marchesi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tonelli</surname>
            ,
            <given-names>R.:</given-names>
          </string-name>
          <article-title>The ico phenomenon and its relationships with ethereum smart contract environment</article-title>
          .
          <source>In: 2018 International Workshop on Blockchain Oriented Software Engineering (IWBOSE)</source>
          . pp.
          <fpage>26</fpage>
          -
          <lpage>32</lpage>
          (
          <year>2018</year>
          ). https://doi.org/10.1109/IWBOSE.
          <year>2018</year>
          .8327568
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Ferreira</given-names>
            <surname>Torres</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Baden</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Norvill</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Jonker</surname>
          </string-name>
          , H.:
          <article-title>Ægis: Smart shielding of smart contracts</article-title>
          .
          <source>In: Proceedings of the 2019 ACM SIGSAC Conference on Computer and Communications Security</source>
          . pp.
          <fpage>2589</fpage>
          -
          <lpage>2591</lpage>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Hu</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhang</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huang</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Niu</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lu</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhou</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Transaction-based classification and detection approach for ethereum smart contract</article-title>
          .
          <source>Information Processing and Management</source>
          <volume>58</volume>
          (
          <issue>2</issue>
          ),
          <volume>102462</volume>
          (
          <year>2021</year>
          ). https://doi.org/https://doi.org/10.1016/j.ipm.
          <year>2020</year>
          .
          <volume>102462</volume>
          , https://www.sciencedirect. com/science/article/pii/S0306457320309547
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Ibba</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pierro</surname>
            ,
            <given-names>G.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Di</surname>
            <given-names>Francesco</given-names>
          </string-name>
          ,
          <string-name>
            <surname>M.:</surname>
          </string-name>
          <article-title>Evaluating machine-learning techniques for detecting smart ponzi schemes</article-title>
          .
          <source>In: 2021 IEEE/ACM 4th International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB)</source>
          . pp.
          <fpage>34</fpage>
          -
          <lpage>40</lpage>
          (
          <year>2021</year>
          ). https://doi.org/10.1109/WETSEB52558.
          <year>2021</year>
          .00012
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Jiang</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chan</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <article-title>Contractfuzzer: Fuzzing smart contracts for vulnerability detection</article-title>
          .
          <source>In: 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)</source>
          . pp.
          <fpage>259</fpage>
          -
          <lpage>269</lpage>
          . IEEE (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Khan</surname>
            ,
            <given-names>S.N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Loukil</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ghedira-Guegan</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Benkhelifa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bani-Hani</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Blockchain smart contracts: Applications, challenges, and future trends. Peer-to-peer Networking</article-title>
          and Applications pp.
          <fpage>1</fpage>
          -
          <lpage>25</lpage>
          (
          <year>2021</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lu</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xu</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhu</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yao</surname>
          </string-name>
          , H.:
          <article-title>Applying design patterns in smart contracts</article-title>
          . In: Chen,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <surname>H.</surname>
          </string-name>
          , Zhang, L.J. (eds.) Blockchain - ICBC
          <year>2018</year>
          . pp.
          <fpage>92</fpage>
          -
          <lpage>106</lpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Ortner</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eskandari</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Smart contract sanctuary https://github.com/tintinweb/ smart-contract-sanctuary
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Pierro</surname>
            ,
            <given-names>G.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tonelli</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marchesi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Smart-corpus: an organized repository of ethereum smart contracts source code and metrics</article-title>
          . arXiv preprint arXiv:
          <year>2011</year>
          .
          <volume>01723</volume>
          (
          <year>2020</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Shi</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xiang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Doss</surname>
            ,
            <given-names>R.R.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yu</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sood</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gao</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>A bytecode-based approach for smart contract classification</article-title>
          .
          <source>arXiv preprint arXiv:2106.15497</source>
          (
          <year>2021</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Syed</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Spruit</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Full-text or abstract? examining topic coherence scores using latent dirichlet allocation</article-title>
          .
          <source>In: 2017 IEEE International Conference on Data Science and Advanced Analytics (DSAA)</source>
          . pp.
          <fpage>165</fpage>
          -
          <lpage>174</lpage>
          (
          <year>2017</year>
          ). https://doi.org/10.1109/DSAA.
          <year>2017</year>
          .61
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Tian</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhao</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guo</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sun</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lv</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Smart contract classification with a bi-lstm based approach</article-title>
          .
          <source>IEEE Access 8</source>
          ,
          <fpage>43806</fpage>
          -
          <lpage>43816</lpage>
          (
          <year>2020</year>
          ). https://doi.org/10.1109/ACCESS.
          <year>2020</year>
          .2977362
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Wallach</surname>
            ,
            <given-names>H.M.:</given-names>
          </string-name>
          <article-title>Topic modeling: Beyond bag-of-words</article-title>
          .
          <source>In: Proceedings of the 23rd International Conference on Machine Learning</source>
          . p.
          <fpage>977</fpage>
          -
          <lpage>984</lpage>
          . ICML '06,
          <string-name>
            <surname>Association</surname>
          </string-name>
          for Computing Machinery, New York, NY, USA (
          <year>2006</year>
          ). https://doi.org/10.1145/1143844.1143967, https://doi.org/10.1145/1143844.1143967
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Non-fungible token (nft): Overview, evaluation, opportunities and challenges</article-title>
          .
          <source>arXiv preprint arXiv:2105.07447</source>
          (
          <year>2021</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22. Wo¨hrer,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Zdun</surname>
          </string-name>
          ,
          <string-name>
            <surname>U.</surname>
          </string-name>
          :
          <article-title>Design patterns for smart contracts in the ethereum ecosystem</article-title>
          .
          <source>In: 2018 IEEE International Conference on Internet of Things (iThings)</source>
          and
          <article-title>IEEE Green Computing and Communications (GreenCom) and</article-title>
          IEEE Cyber,
          <article-title>Physical and Social Computing (CPSCom) and IEEE Smart Data (SmartData)</article-title>
          . pp.
          <fpage>1513</fpage>
          -
          <lpage>1520</lpage>
          (
          <year>2018</year>
          ). https://doi.org/10.1109/Cybermatics.
          <year>2018</year>
          .00255
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Zhang</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xiao</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Luo</surname>
            ,
            <given-names>X.:</given-names>
          </string-name>
          <article-title>A framework and dataset for bugs in ethereum smart contracts</article-title>
          .
          <source>In: 2020 IEEE International Conference on Software Maintenance and Evolution (ICSME)</source>
          . pp.
          <fpage>139</fpage>
          -
          <lpage>150</lpage>
          . IEEE (
          <year>2020</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>