A Survey on Security Verification of Blockchain Smart Contracts <s> 4) SOFTWARE ENGINEERING TOOLS <s> The Blockchain technology is reshaping finance, economy, money to the extent that its disruptive power is compared to that of the Internet and the Web in their early days. As a result, all the software development revolving around the Blockchain technology is growing at a staggering rate. In this paper, we acknowledge the need for software engineers to devise specialized tools and techniques for blockchain-oriented software development. From current challenges concerning the definition of new professional roles, demanding testing activities and novel tools for software architecture, we take a step forward by proposing new directions on the basis of a curate corpus of blockchain-oriented software repositories, detected by exploiting the information enclosed in the 2016 Moody's Blockchain Report and teh market capitalization of cryptocurrencies. Ensuring effective testing activities, enhancing collaboration in large teams, and facilitating the development of smart contracts all appear as key factors in the future of blockchain-oriented software development. <s> BIB001 </s> A Survey on Security Verification of Blockchain Smart Contracts <s> 4) SOFTWARE ENGINEERING TOOLS <s> Smart Contracts have gained tremendous popularity in the past few years, to the point that billions of US Dollars are currently exchanged every day through such technology. However, since the release of the Frontier network of Ethereum in 2015, there have been many cases in which the execution of Smart Contracts managing Ether coins has led to problems or conflicts. Compared to traditional Software Engineering, a discipline of Smart Contract and Blockchain programming, with standardized best practices that can help solve the mentioned problems and conflicts, is not yet sufficiently developed. Furthermore, Smart Contracts rely on a non-standard software life-cycle, according to which, for instance, delivered applications can hardly be updated or bugs resolved by releasing a new version of the software. In this paper we advocate the need for a discipline of Blockchain Software Engineering, addressing the issues posed by smart contract programming and other applications running on blockchains.We analyse a case of study where a bug discovered in a Smart Contract library, and perhaps "unsafe" programming, allowed an attack on Parity, a wallet application, causing the freezing of about 500K Ethers (about 150M USD, in November 2017). In this study we analyze the source code of Parity and the library, and discuss how recognised best practices could mitigate, if adopted and adapted, such detrimental software misbehavior. We also reflect on the specificity of Smart Contract software development, which makes some of the existing approaches insufficient, and call for the definition of a specific Blockchain Software Engineering. <s> BIB002 </s> A Survey on Security Verification of Blockchain Smart Contracts <s> 4) SOFTWARE ENGINEERING TOOLS <s> In the past few years, cryptocurrencies and blockchain applications has been one of the most rapidly emerging fields of computer science, leading to a strong demand of software applications. Several new projects have been emerging almost daily, with an impetus that was not seen since the days of the dawn of the Internet. However, the need of being timely on the market and the lack of experience in a brand new field led to epic disasters, such as those of DAO in 2016 and of Parity Ethereum wallet in 2017. Also, there have been several hacks successfully performed on cryptocurrency exchanges, the biggest being those of MtGox in 2014 (350 million US$), Bitfinex in 2016 (72 million US$), and Coincheck in 2017 (400 million US$). The application of sound SE practices to Blockchain software development, both for Smart Contract and generic Blockchain software, might be crucial to the success of this new field. Here the issues are the need for specific analysis and design methods, quality control through testing and metrics, security assessment and overall development process. At the same time, Blockchain development offers new opportunities, such as the certification of empirical data used for experiment; the ability to design processes where developers are paid upon completion of their tasks through Blockchain tokens, after acceptance tests performed using Smart Contracts; and more sound techniques enabling pay-per-use software, again using tokens. <s> BIB003
Software engineering tools provide well-accepted standards for the development of smart contracts, which formalized the process of writing the contract. Therefore, introducing the software engineering tools into the blockchain is conducive to the development of correct contracts. Porru et al. BIB001 proposed that designing specialized tools for blockchain-oriented software development and improving the testing activities would greatly facilitate the safe and reliable execution of smart contracts. Destefanis et al. BIB002 analyzed the Parity Wallet hack case, and found that the risks were mainly caused by a negligent programming activity. So they thought the blockchain oriented software engineering was necessary. Marchesi BIB003 listed several hacks successfully performed on blockchain, such as MtGox in 2014 (350 million US$), Bitfinex in 2016 (72 million US$), and Coincheck in 2017 (400 millionUS$). Through analysis, they proposed that the application of software engineering tools to blockchain software development might be crucial to the success of this new field. In short, software engineering tools can standardize the development process of smart contracts, thus developing smart contracts more efficient, and avoiding losses caused by negligence, such as batchoverflow. All the methods mentioned above are useful for writing correct contracts. They regard a smart contract as a simple program and reduce the possible mistakes in the development process by standardizing and analyzing the contracts, which greatly improves the development efficiency of smart contracts.