Design patterns for Ethereum smart contracts

Bibliographic Details
Main Author: Moura, Tiago Augusto Pinto
Publication Date: 2020
Format: Master thesis
Language: por
Source: Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
Download full: http://hdl.handle.net/10400.22/16441
Summary: The Ethereum platform has become very popular in recent years in smart contract development, an area in which several programming languages are applied. Solidity, nevertheless is the most popular and widely used. On top of blockchain technology, Ethereum and its smart contracts have enabled developers worldwide to create innovative solutions in various areas such as finance, healthcare, insurance, internet of things, supply chain and others. These solutions are referred to as Decentralized Applications (dapps) and use the distributed nature of blockchain technology to solve problems in a disruptive manner, casting out intermediaries and automating processes. The fact that blockchain transactions triggered by smart contract execution are unchangeable also provides dapps users with a lot of confidence when compared to traditional centralized apps, because dapps’ data becomes tamper-proof. In the context of this work, it was necessary to analyze and look for software design patterns in order to help making the development of Solidity smart contracts simpler and safer, thus giving confidence both to users and developers of dapps built with Ethereum. In an initial phase, a literature review was made and 62 design patterns were found. From this set, 30 design patterns were selected for the practical component of this work. In this stage, 318 smart contracts were analyzed and the 30 previously selected patterns were confirmed. Additionally, four more patterns which had not been identified in the literature review stage were found. The 30 design patterns were divided into four categories: authorization, control, maintenance and security. Efficiency across all these categories was evaluated in terms of gas consumption and security vulnerabilities. Once the research was completed, it became possible to create a set of recommendations for Solidity developers.
id RCAP_97745490aa5b133677a3cdfa311cc83d
oai_identifier_str oai:recipp.ipp.pt:10400.22/16441
network_acronym_str RCAP
network_name_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository_id_str https://opendoar.ac.uk/repository/7160
spelling Design patterns for Ethereum smart contractsBlockchainEthereumSmart ContractsSoliditySecurityGasDesign PatternsThe Ethereum platform has become very popular in recent years in smart contract development, an area in which several programming languages are applied. Solidity, nevertheless is the most popular and widely used. On top of blockchain technology, Ethereum and its smart contracts have enabled developers worldwide to create innovative solutions in various areas such as finance, healthcare, insurance, internet of things, supply chain and others. These solutions are referred to as Decentralized Applications (dapps) and use the distributed nature of blockchain technology to solve problems in a disruptive manner, casting out intermediaries and automating processes. The fact that blockchain transactions triggered by smart contract execution are unchangeable also provides dapps users with a lot of confidence when compared to traditional centralized apps, because dapps’ data becomes tamper-proof. In the context of this work, it was necessary to analyze and look for software design patterns in order to help making the development of Solidity smart contracts simpler and safer, thus giving confidence both to users and developers of dapps built with Ethereum. In an initial phase, a literature review was made and 62 design patterns were found. From this set, 30 design patterns were selected for the practical component of this work. In this stage, 318 smart contracts were analyzed and the 30 previously selected patterns were confirmed. Additionally, four more patterns which had not been identified in the literature review stage were found. The 30 design patterns were divided into four categories: authorization, control, maintenance and security. Efficiency across all these categories was evaluated in terms of gas consumption and security vulnerabilities. Once the research was completed, it became possible to create a set of recommendations for Solidity developers.Azevedo, Isabel de Fátima SilvaREPOSITÓRIO P.PORTOMoura, Tiago Augusto Pinto2020-11-05T15:33:11Z20202020-01-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10400.22/16441urn:tid:202533492porinfo:eu-repo/semantics/openAccessreponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiainstacron:RCAAP2025-03-07T10:15:48Zoai:recipp.ipp.pt:10400.22/16441Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireinfo@rcaap.ptopendoar:https://opendoar.ac.uk/repository/71602025-05-29T00:45:16.861320Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiafalse
dc.title.none.fl_str_mv Design patterns for Ethereum smart contracts
title Design patterns for Ethereum smart contracts
spellingShingle Design patterns for Ethereum smart contracts
Moura, Tiago Augusto Pinto
Blockchain
Ethereum
Smart Contracts
Solidity
Security
Gas
Design Patterns
title_short Design patterns for Ethereum smart contracts
title_full Design patterns for Ethereum smart contracts
title_fullStr Design patterns for Ethereum smart contracts
title_full_unstemmed Design patterns for Ethereum smart contracts
title_sort Design patterns for Ethereum smart contracts
author Moura, Tiago Augusto Pinto
author_facet Moura, Tiago Augusto Pinto
author_role author
dc.contributor.none.fl_str_mv Azevedo, Isabel de Fátima Silva
REPOSITÓRIO P.PORTO
dc.contributor.author.fl_str_mv Moura, Tiago Augusto Pinto
dc.subject.por.fl_str_mv Blockchain
Ethereum
Smart Contracts
Solidity
Security
Gas
Design Patterns
topic Blockchain
Ethereum
Smart Contracts
Solidity
Security
Gas
Design Patterns
description The Ethereum platform has become very popular in recent years in smart contract development, an area in which several programming languages are applied. Solidity, nevertheless is the most popular and widely used. On top of blockchain technology, Ethereum and its smart contracts have enabled developers worldwide to create innovative solutions in various areas such as finance, healthcare, insurance, internet of things, supply chain and others. These solutions are referred to as Decentralized Applications (dapps) and use the distributed nature of blockchain technology to solve problems in a disruptive manner, casting out intermediaries and automating processes. The fact that blockchain transactions triggered by smart contract execution are unchangeable also provides dapps users with a lot of confidence when compared to traditional centralized apps, because dapps’ data becomes tamper-proof. In the context of this work, it was necessary to analyze and look for software design patterns in order to help making the development of Solidity smart contracts simpler and safer, thus giving confidence both to users and developers of dapps built with Ethereum. In an initial phase, a literature review was made and 62 design patterns were found. From this set, 30 design patterns were selected for the practical component of this work. In this stage, 318 smart contracts were analyzed and the 30 previously selected patterns were confirmed. Additionally, four more patterns which had not been identified in the literature review stage were found. The 30 design patterns were divided into four categories: authorization, control, maintenance and security. Efficiency across all these categories was evaluated in terms of gas consumption and security vulnerabilities. Once the research was completed, it became possible to create a set of recommendations for Solidity developers.
publishDate 2020
dc.date.none.fl_str_mv 2020-11-05T15:33:11Z
2020
2020-01-01T00:00:00Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10400.22/16441
urn:tid:202533492
url http://hdl.handle.net/10400.22/16441
identifier_str_mv urn:tid:202533492
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron:RCAAP
instname_str FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron_str RCAAP
institution RCAAP
reponame_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
collection Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository.name.fl_str_mv Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
repository.mail.fl_str_mv info@rcaap.pt
_version_ 1833600681683976192