An empirical analysis of source code metrics and smart contract resource consumption

A smart contract (SC) is a programme stored in the Ethereum blockchain by a contract‐creation transaction. SC developers deploy an instance of the SC and attempt to execute it in exchange for a fee, paid in Ethereum coins (Ether). If the computation needed for their execution turns out to be larger than the effort proposed by the developer (i.e., the gasLimit), their client instantiation will not be completed successfully.

[1]  Massimo Bartoletti,et al.  Financial Cryptography and Data Security , 2017, Lecture Notes in Computer Science.

[2]  Danny Ho,et al.  An Empirical Validation of Object-Oriented Design Metrics for Fault Prediction , 2008 .

[3]  Sherali Zeadally,et al.  A survey on privacy protection in blockchain system , 2019, J. Netw. Comput. Appl..

[4]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[5]  RadjenovićDanijel,et al.  Software fault prediction metrics , 2013 .

[6]  Stéphane Ducasse,et al.  SmartAnvil: Open-Source Tool Suite for Smart Contract Analysis , 2019 .

[7]  A. Aloysius,et al.  Coupling Complexity Metric: A Cognitive Approach , 2012 .

[8]  Sergei Tikhomirov,et al.  SmartCheck: Static Analysis of Ethereum Smart Contracts , 2018, 2018 IEEE/ACM 1st International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB).

[9]  Marco Tulio Valente,et al.  On the Popularity of GitHub Applications: A Preliminary Note , 2015, ArXiv.

[10]  Douglas C. Schmidt,et al.  Metrics for assessing blockchain-based healthcare decentralized apps , 2017, 2017 IEEE 19th International Conference on e-Health Networking, Applications and Services (Healthcom).

[11]  James M. Bieman,et al.  Software Metrics: A Rigorous and Practical Approach, Third Edition , 2014 .

[12]  Michele Marchesi,et al.  Smart contracts software metrics: A first study , 2018, PloS one.

[13]  Prateek Saxena,et al.  Making Smart Contracts Smarter , 2016, IACR Cryptol. ePrint Arch..

[14]  Lionel C. Briand,et al.  A Unified Framework for Coupling Measurement in Object-Oriented Systems , 1999, IEEE Trans. Software Eng..

[15]  Yannis Smaragdakis,et al.  MadMax: surviving out-of-gas conditions in Ethereum smart contracts , 2018, Proc. ACM Program. Lang..

[16]  Raed Shatnawi,et al.  The effectiveness of software metrics in identifying error-prone classes in post-release software evolution process , 2008, J. Syst. Softw..

[17]  Massimo Ragnedda,et al.  Blockchain and Web 3.0 , 2019 .

[18]  Shari Lawrence Pfleeger,et al.  Software Metrics : A Rigorous and Practical Approach , 1998 .

[19]  Daniela E. Damian,et al.  The promises and perils of mining GitHub , 2009, MSR 2014.

[20]  Hudson Silva Borges,et al.  How Do Developers Promote Open Source Projects? , 2019, Computer.

[21]  Sallie M. Henry,et al.  Object-oriented metrics that predict maintainability , 1993, J. Syst. Softw..

[22]  Daniel Burkhardt,et al.  Distributed Ledger , 2018, 2018 IEEE International Conference on Engineering, Technology and Innovation (ICE/ITMC).

[23]  Chris Dannen,et al.  Introducing Ethereum and Solidity , 2017 .

[24]  Aron Laszka,et al.  Designing Secure Ethereum Smart Contracts: A Finite State Machine Based Approach , 2017, Financial Cryptography.

[25]  Péter Hegedűs,et al.  Towards Analyzing the Complexity Landscape of Solidity Based Ethereum Smart Contracts , 2018, 2018 IEEE/ACM 1st International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB).

[26]  Arvinder Kaur,et al.  Empirical analysis for investigating the effect of object-oriented metrics on fault proneness: a replicated case study , 2009 .

[27]  Emin Gün Sirer,et al.  Bitcoin-NG: A Scalable Blockchain Protocol , 2015, NSDI.

[28]  Valentin Wüstholz,et al.  Harvey: a greybox fuzzer for smart contracts , 2019, ESEC/SIGSOFT FSE.

[29]  Tom Mens,et al.  A Graph-Based Metamodel for Object-Oriented Software Metrics , 2002, Electron. Notes Theor. Comput. Sci..

[30]  John A. Hamilton,et al.  GitHub: factors influencing project activity levels , 2017 .

[31]  Georgy Yuryev What can explain the performance of Initial Coin Offerings , 2018 .

[32]  Priya Ranganathan,et al.  Common pitfalls in statistical analysis: The use of correlation techniques , 2016, Perspectives in clinical research.

[33]  Zhong Chen,et al.  ReGuard: Finding Reentrancy Bugs in Smart Contracts , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion).

[34]  Gabriele Bavota,et al.  An experimental investigation on the innate relationship between quality and refactoring , 2015, J. Syst. Softw..

[35]  Fábio Petrillo,et al.  Software Architecture Metrics: a literature review , 2019, ArXiv.

[36]  Michele Lanza,et al.  An extensive comparison of bug prediction approaches , 2010, 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010).

[37]  Haoran Wu,et al.  Mutation Testing for Ethereum Smart Contract , 2019, ArXiv.

[38]  Gabriele Bavota,et al.  On the Impact of Refactoring Operations on Code Naturalness , 2019, 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[39]  Massimo Bartoletti,et al.  A Survey of Attacks on Ethereum Smart Contracts (SoK) , 2017, POST.

[40]  A. Schmietendorf,et al.  Resource Metrics for Service-Oriented Infrastructures , 2007 .

[41]  Ye Liu,et al.  ContractFuzzer: Fuzzing Smart Contracts for Vulnerability Detection , 2018, 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[42]  Liming Zhu,et al.  Applying Design Patterns in Smart Contracts - A Case Study on a Blockchain-Based Traceability Application , 2018, ICBC.

[43]  Clemente Izurieta,et al.  Effects of the number of developers on code quality in open source software: a case study , 2010, ESEM '10.

[44]  Emilia Mendes,et al.  Comprehension of object-oriented software cohesion: the empirical quagmire , 2002, Proceedings 10th International Workshop on Program Comprehension.

[45]  Sujata Khatri,et al.  EVALUATING THE IMPACT OF DIFFERENT TYPES OF INHERITANCE ON THE OBJECT ORIENTED , 2011 .

[46]  Richard Torkar,et al.  Software fault prediction metrics: A systematic literature review , 2013, Inf. Softw. Technol..

[47]  Denys Poshyvanyk,et al.  The conceptual cohesion of classes , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[48]  Douglas C. Schmidt,et al.  Applying Software Patterns to Address Interoperability in Blockchain-based Healthcare Apps , 2017, ArXiv.

[49]  Uwe Zdun,et al.  Smart contracts: security patterns in the ethereum ecosystem and solidity , 2018, 2018 International Workshop on Blockchain Oriented Software Engineering (IWBOSE).

[50]  Javam C. Machado,et al.  The prediction of faulty classes using object-oriented design metrics , 2001, J. Syst. Softw..

[51]  Pornsiri Muenchaisri,et al.  Predicting Faulty Classes Using Design Metrics with Discriminant Analysis , 2003, Software Engineering Research and Practice.

[52]  Kevin Crowston,et al.  Defining Open Source Software Project Success , 2003, ICIS.

[53]  Fahim Arif,et al.  Analysis of object oriented complexity and testability using object oriented design metrics , 2010, NSEC '10.

[54]  Jason Teutsch,et al.  Demystifying Incentives in the Consensus Computer , 2015, CCS.

[55]  Navroop K. Sahdev,et al.  How Value is Created in Tokenized Assets , 2018 .

[56]  Barbara Kitchenham,et al.  What's up with software metrics? - A preliminary mapping study , 2010, J. Syst. Softw..

[57]  Mohammad Alshayeb,et al.  A Classification of Refactoring Methods Based on Software Quality Attributes , 2011 .

[58]  Dimosthenis Kyriazis,et al.  A Real-time Service Oriented Infrastructure , 2010 .

[59]  Dietmar Pfahl,et al.  Using Dynamic and Contextual Features to Predict Issue Lifetime in GitHub Projects , 2016, 2016 IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR).

[60]  Satoshi Nakamoto Bitcoin : A Peer-to-Peer Electronic Cash System , 2009 .

[61]  Christof Ebert,et al.  Cyclomatic Complexity , 2016, IEEE Software.

[62]  Ioannis Stamelos,et al.  Towards Open Source Software System Architecture Recovery Using Design Metrics , 2011, 2011 15th Panhellenic Conference on Informatics.

[63]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

[64]  E. C. Cagli Explosive behavior in the prices of Bitcoin and altcoins , 2019, Finance Research Letters.

[65]  Andy P. Field,et al.  Discovering Statistics Using Ibm Spss Statistics , 2017 .

[66]  Robert Feldt,et al.  Validity Threats in Empirical Software Engineering Research - An Initial Survey , 2010, SEKE.

[67]  Liguo Yu,et al.  Understanding component co-evolution with a study on Linux , 2007, Empirical Software Engineering.

[68]  Bram Vandenbogaerde,et al.  A graph-based framework for analysing the design of smart contracts , 2019, ESEC/SIGSOFT FSE.

[69]  Robert M. Hierons,et al.  Smart contracts vulnerabilities: a call for blockchain software engineering? , 2018, 2018 International Workshop on Blockchain Oriented Software Engineering (IWBOSE).

[70]  Krishnendu Chatterjee,et al.  Quantitative Analysis of Smart Contracts , 2018, ESOP.

[71]  Hubert Ritzdorf,et al.  On the Security and Performance of Proof of Work Blockchains , 2016, IACR Cryptol. ePrint Arch..

[72]  Volker Gruhn,et al.  Engineering Software Architectures of Blockchain-Oriented Applications , 2018, 2018 IEEE International Conference on Software Architecture Companion (ICSA-C).

[73]  Khaled Salah,et al.  Blockchain for AI: Review and Open Research Challenges , 2019, IEEE Access.

[74]  K. K. Aggarwal,et al.  Empirical analysis for investigating the effect of object-oriented metrics on fault proneness: a replicated case study , 2009, Softw. Process. Improv. Pract..

[75]  Judith A. McLaughlin Understanding Statistics in the Behavioral Sciences , 2002 .

[76]  Prateek Saxena,et al.  Exploiting the laws of order in smart contracts , 2018, ISSTA.

[77]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[78]  Marco Aurélio Gerosa,et al.  On the Interplay between Structural and Logical Dependencies in Open-Source Software , 2011, 2011 25th Brazilian Symposium on Software Engineering.

[79]  Andrea Pinna,et al.  Blockchain-Oriented Software Engineering: Challenges and New Directions , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C).

[80]  Marko Vukolic,et al.  Hyperledger fabric: a distributed operating system for permissioned blockchains , 2018, EuroSys.

[81]  Philipp G. Sandner,et al.  Comparison of Ethereum, Hyperledger Fabric and Corda , 2017 .

[82]  Chris Dannen,et al.  Introducing Ethereum and Solidity: Foundations of Cryptocurrency and Blockchain Programming for Beginners , 2017 .

[83]  Rabe Abdalkareem,et al.  Why do developers use trivial packages? an empirical case study on npm , 2017, ESEC/SIGSOFT FSE.

[84]  Barbara A. Kitchenham,et al.  Coupling measures and change ripples in C++ application software , 2000, J. Syst. Softw..

[85]  Uwe Zdun,et al.  Design Patterns for Smart Contracts in the Ethereum Ecosystem , 2018, 2018 IEEE International Conference on Internet of Things (iThings) and IEEE Green Computing and Communications (GreenCom) and IEEE Cyber, Physical and Social Computing (CPSCom) and IEEE Smart Data (SmartData).

[86]  Alexander Serebrenik,et al.  A Data Set for Social Diversity Studies of GitHub Teams , 2015, 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories.