Defining smart contract defects on Ethereum

Smart contracts are programs running on a blockchain. They are immutable to change, and hence can not be patched for bugs once deployed. Thus it is critical to ensure they are bug-free and well-designed before deployment. A Contract defect is an error, flaw or fault in a smart contract that causes i...

Full description

Saved in:
Bibliographic Details
Main Authors: CHEN, Jiachi, XIA, Xin, LO, David, GRUNDY, John, LUO, Xiapu, CHEN, Ting
Format: text
Language:English
Published: Institutional Knowledge at Singapore Management University 2022
Subjects:
Online Access:https://ink.library.smu.edu.sg/sis_research/6929
https://ink.library.smu.edu.sg/context/sis_research/article/7932/viewcontent/SmartContractEthereum_av.pdf
Tags: Add Tag
No Tags, Be the first to tag this record!
Institution: Singapore Management University
Language: English
id sg-smu-ink.sis_research-7932
record_format dspace
spelling sg-smu-ink.sis_research-79322022-10-13T03:21:04Z Defining smart contract defects on Ethereum CHEN, Jiachi XIA, Xin LO, David GRUNDY, John LUO, Xiapu CHEN, Ting Smart contracts are programs running on a blockchain. They are immutable to change, and hence can not be patched for bugs once deployed. Thus it is critical to ensure they are bug-free and well-designed before deployment. A Contract defect is an error, flaw or fault in a smart contract that causes it to produce an incorrect or unexpected result, or to behave in unintended ways. The detection of contract defects is a method to avoid potential bugs and improve the design of existing code. Since smart contracts contain numerous distinctive features, such as the gas system. decentralized, it is important to find smart contract specified defects. To fill this gap, we collected smart-contract-related posts from Ethereum StackExchange, as well as real-world smart contracts. We manually analyzed these posts and contracts; using them to define 20 kinds of contract defects. We categorized them into indicating potential security, availability, performance, maintainability and reusability problems. To validate if practitioners consider these contract as harmful, we created an online survey and received 138 responses from 32 different countries. Feedback showed these contract defects are harmful and removing them would improve the quality and robustness of smart contracts. We manually identified our defined contract defects in 587 real world smart contract and publicly released our dataset. Finally, we summarized 5 impacts caused by contract defects. These help developers better understand the symptoms of the defects and removal priority. 2022-01-01T08:00:00Z text application/pdf https://ink.library.smu.edu.sg/sis_research/6929 info:doi/10.1109/TSE.2020.2989002 https://ink.library.smu.edu.sg/context/sis_research/article/7932/viewcontent/SmartContractEthereum_av.pdf http://creativecommons.org/licenses/by-nc-nd/4.0/ Research Collection School Of Computing and Information Systems eng Institutional Knowledge at Singapore Management University Empirical study Ethereum smart contracts contract defect Contracts Finance and Financial Management Information Security Software Engineering
institution Singapore Management University
building SMU Libraries
continent Asia
country Singapore
Singapore
content_provider SMU Libraries
collection InK@SMU
language English
topic Empirical study
Ethereum
smart contracts
contract defect
Contracts
Finance and Financial Management
Information Security
Software Engineering
spellingShingle Empirical study
Ethereum
smart contracts
contract defect
Contracts
Finance and Financial Management
Information Security
Software Engineering
CHEN, Jiachi
XIA, Xin
LO, David
GRUNDY, John
LUO, Xiapu
CHEN, Ting
Defining smart contract defects on Ethereum
description Smart contracts are programs running on a blockchain. They are immutable to change, and hence can not be patched for bugs once deployed. Thus it is critical to ensure they are bug-free and well-designed before deployment. A Contract defect is an error, flaw or fault in a smart contract that causes it to produce an incorrect or unexpected result, or to behave in unintended ways. The detection of contract defects is a method to avoid potential bugs and improve the design of existing code. Since smart contracts contain numerous distinctive features, such as the gas system. decentralized, it is important to find smart contract specified defects. To fill this gap, we collected smart-contract-related posts from Ethereum StackExchange, as well as real-world smart contracts. We manually analyzed these posts and contracts; using them to define 20 kinds of contract defects. We categorized them into indicating potential security, availability, performance, maintainability and reusability problems. To validate if practitioners consider these contract as harmful, we created an online survey and received 138 responses from 32 different countries. Feedback showed these contract defects are harmful and removing them would improve the quality and robustness of smart contracts. We manually identified our defined contract defects in 587 real world smart contract and publicly released our dataset. Finally, we summarized 5 impacts caused by contract defects. These help developers better understand the symptoms of the defects and removal priority.
format text
author CHEN, Jiachi
XIA, Xin
LO, David
GRUNDY, John
LUO, Xiapu
CHEN, Ting
author_facet CHEN, Jiachi
XIA, Xin
LO, David
GRUNDY, John
LUO, Xiapu
CHEN, Ting
author_sort CHEN, Jiachi
title Defining smart contract defects on Ethereum
title_short Defining smart contract defects on Ethereum
title_full Defining smart contract defects on Ethereum
title_fullStr Defining smart contract defects on Ethereum
title_full_unstemmed Defining smart contract defects on Ethereum
title_sort defining smart contract defects on ethereum
publisher Institutional Knowledge at Singapore Management University
publishDate 2022
url https://ink.library.smu.edu.sg/sis_research/6929
https://ink.library.smu.edu.sg/context/sis_research/article/7932/viewcontent/SmartContractEthereum_av.pdf
_version_ 1770576145962500096