Abstract:
Ethereum blockchain is popular blockchain between developers and financial related
organizations. Ethereum allows to transfer cryptocurrency between two users on Ethereum
blockchain as Bitcoin blockchain allows. After the release of Bitcoin Blockchain the finance
related organizations used it and the demand more features in it because Bitcoin blockchain only
allows you to transfer cryptocurrency. After seeing the increase interest of financial companies
Ethereum blockchain release with more features, smart contract is one of them. Smart contract on
Ethereum blockchain is an independent identity. Once smart contract will be uploaded on
blockchain it will never be changeable. If any error, bug or failure arise after successful
deployment you have to write a new smart contract which can cost you extra money which you can
pay on deployment time. Smart contracts are written in high level programming language Solidity.
Smart contracts are self-executable but they will run when an external application or system with
inputs can call their any function. To overcome the issue of smart contract failure, we propose a
model-based testing for Ethereum smart contracts. We extract model-based information to identify
various aspects of smart-contracts to develop test cases and we then consider code-based
information to execute test cases. We also provide test coverage criteria considering for smart
contract interaction we write test cases for our system under test (SUT). It is pertinent to note that
our proposed technique is equally useful to testing smart contracts in distributed systems in
general.