Design patterns for Ethereum smart contracts
Main Author: | |
---|---|
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 |