The Challenges of Software Development in a Blockchain Environment
Mahdi H. Miraz - The Chinese University of Hong Kong;
Maaruf Ali - Epoka University
-- With the recent popularity of Blockchain and other Distributed Ledger Technologies (DLT), the blockchain enabled smart contract has attracted tremendous research focus. However, the immutability of the blocks, where the smart contracts are stored, causes conflicts with the traditional Software Development Life Cycle (SDLC) models usually followed by software engineers. Our recent article, “Blockchain Enabled Smart Contract Based Applications: Deficiencies with the Software Development Life Cycle Models,” explores six traditional SDLC models, clearly identifying the conflicts in a table with the application of smart contracts and argues that there is an urgent need to develop new standard model(s) to address the arising issues. The concept of both block immutability and contract is introduced. This is further set in historical context from legacy smart contracts and blockchain enabled smart contracts extending to the difference between “shallow smart contracts” and “deep smart contracts”. We conclude that the traditional SDLC models are unsuitable for blockchain enabled smart contract-based applications.
The concept of smart contract was first put forward in the early 1990s by American computer scientist and lawyer, Nick Szabo, obviously without the application of blockchain (BC) technologies. In fact, blockchain was first introduced by Satoshi Nakamoto in late 2000s as a by-product of the Bitcoin cryptocurrency. This version of the blockchain, also known as blockchain 1.0, was implemented without the capability of smart contract. The integration of both was first seen in blockchain 2.0. This integration of smart contract with blockchain has exponentially accelerated the use of smart contract and application of blockchain beyond cryptocurrencies. However, the inherited features of blockchain-based smart contracts also include the architectural limitations of blockchain.
The fusion of smart contracts with blockchain assumes blockchain’s immutability which provides an extra layer of security. However, immutability of blocks makes it impossible, or at least to some extent difficult, for software engineers to bring any future modification into the application, including fixing bugs or adding future enhancements. Therefore, traditional SDLC models do not fit well with BC-enabled smart contract applications, especially the testing and maintenance cycles. In our paper, we advocate developing new standards and models that give particular attention to blockchain based applications. Our discussion should be read in the context of the practically related discussion of other design trade-offs and legal debates (UK Jurisdiction Taskforce 2019; Schmitz and Rule, 2019; Raskin, 2017) on the acceptability of smart contracts as traditional contracts.
Contract-based application development and platforms which are both smart and blockchain enabled are uniquely complex and thus significantly different from those which do not have any connection with the blockchain. This naturally arises because of the following three atypical characteristics of working with the requirements of blockchain based applications:
1. The immutability of the blocks (of data) being added to the (distributed) ledger;
2. The internal architecture (software and hardware) for achieving the consensus and conducting the verification and validation, i.e. the need for inputs from the peer-to-peer network participants (mining nodes), and
3. The need to use publicly available third-party development platforms, such as Ethereum, which run on a pay per transaction (trigger of the smart contract) model - making verification and testing very expensive.
Therefore, traditional software development life cycle (SDLC) models, especially its testing, verification and validation phases , do not fit well for this purpose. To investigate this further, we have revisited the most popular and widely used SDLCs models, viz. the Waterfall Model, V-Shaped Model, Iterative and Incremental Method, Spiral Method, Big Bang Model and Agile development.
We find that traditional SDLC models are unsuitable, at least to some extent, for blockchain enabled smart contract based applications due to the ledger’s immutability , complexity of coding, distributed ecosystem, and required consensus for transaction verification and validation processes by the participating nodes. We therefore advocate developing new SDLC models, particularly tailor-made for blockchain based applications. The model(s) developed will then need(s) to be thoroughly evaluated by for individual projects, depending on their nature and scale. Development and evaluation of implementations are next steps following the findings of this article.