Abstract

Smart contracts are a promising means of formalizing and reliably enforcing agreements between entities using distributed ledger technology (DLT). Research has revealed that a significant number of smart contracts are subject to programming flaws, making them vulnerable to attacks and leading to detrimental effects, such as asset loss. Researchers and developers call for a thorough analysis of challenges to identify their causes and propose solutions. To respond to these calls, we conducted two literature reviews and diverse expert interviews and synthesized scattered knowledge on challenges and solutions. We identified 29 challenges (e.g., code visibility, code updateability, and encapsulation) and 60 solutions (e.g., gas limit specification, off-ledger computations, and shadowing). Moreover, we developed 20 software design patterns (SDPs) in collaboration with smart contract developers. The SDPs help developers adjust their programming habits and thus support them in their daily development practices. Our results provide actionable knowledge for smart contract developers to overcome the identified challenges and offer support for comparing smart contract integration concepts across three fundamentally different DLT protocols (i.e., Ethereum, EOSIO, and Hyperledger Fabric). Moreover, we support developers in becoming aware of peculiarities in smart contract development and the resulting benefits and drawbacks.

Highlights

  • SMART contracts are software programs that express logic formalized in code for the reliable enforcement of business agreements between defined entities [1]

  • We present 29 smart contract development challenges and 60 corresponding solutions associated with 11 sub-themes, including data visibility and interoperability

  • This classification enables a separate consideration of each principal challenge origin so that developers can better gauge between distributed ledger technology (DLT) protocols in combination with individual execution environments

Read more

Summary

Introduction

SMART contracts are software programs that express logic formalized in code for the reliable enforcement of business agreements between defined entities (e.g., individuals, organizations, or machines) [1]. An early form of smart contracts is enabled by the primitive Script available for the Bitcoin blockchain to define conditional asset transfers [2]–[4]. DLT enables multiple individuals or organizations to collectively operate a digital platform in a decentralized manner. This decentralized digital platform is based on a highly available and tamper-resistant distributed database (i.e., distributed ledger), where various storage and computing devices (i.e., nodes) maintain local copies of stored data [35]. The order in which transactions are verified is decided by each individual node, leading to a kind of concurrency in transaction processing [37]

Objectives
Methods
Results
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call