Aviso: para depositar documentos, por favor, inicia sesión e identifícate con tu cuenta de correo institucional de la UCM con el botón MI CUENTA UCM. No emplees la opción AUTENTICACIÓN CON CONTRASEÑA
 

Providing formal semantics for Solidity to allow its verification

dc.contributor.advisorVerdejo López, Alberto
dc.contributor.advisorMartí Oliet, Narciso
dc.contributor.authorPáez Velasco, Pablo
dc.date.accessioned2023-06-17T10:50:50Z
dc.date.available2023-06-17T10:50:50Z
dc.date.issued2020
dc.degree.titleGrado en Ingeniería Informática
dc.descriptionTrabajo de Fin de Grado en Ingeniería Informática, Facultad de Informática UCM, Departamento de Sistemas Informáticos y Computación, Curso 2019/2020
dc.description.abstractWhilst the number of programming languages continuously increases, along with their multiple applications, the need of guaranteeing correction or predicting the outcome of a certain program arises. Due to the lack of information that is often available in the official documentation of the languages, formal methods seem a powerful tool in this sense. Thanks to program verification using formal semantics we can abstract the behaviour of an instruction using mathematical notation. In this work we will study Solidity, a language used to create the so-called smart contracts in the Ethereum platform. Our goal is to study the state-of-the-art semantics in this topic, to ultimately suggest our own, with the aim of covering what we believe has not been covered yet, and to propose modifications to the rules that we have found rather imprecise. We have decided to pay special attention to how values are updated and retrieved from the storage, which is one on the four data locations Solidity makes use of. Lastly, it has been our goal to propose semantics that are executable in languages like K or Maude. For this reason, we have also coded several Maude modules which can be helpful when verifying a contract using this language.
dc.description.abstractEn un contexto en el cual el número de lenguajes de programación cada vez es más elevado, y su uso se extiende a un mayor número de ámbitos, aparece la necesidad de asegurar la corrección o de determinar el resultado de ciertos programas. Debido a la falta de información concreta que muchas veces encontramos en la documentación oficial de los lenguajes, surgen técnicas como la verificación de programas a través de semánticas formales, que permiten modelizar mediante abstracciones matemáticas el funcionamiento de las instrucciones. En este trabajo estudiaremos el lenguaje Solidity, utilizado para crear los llamados smart contracts en la plataforma Ethereum. Nuestro objetivo es estudiar qué propuestas de semánticas se han hecho, para posteriormente aportar la nuestra, que tratará de rellenar y corregir ciertos huecos e imprecisiones que hayamos podido encontrar en la literatura consultada. En nuestro caso, presentamos una semántica centrada sobre todo en la obtención y actualización de valores en storage, una de las cuatro memorias que utiliza Ethereum. Por último, el objetivo último de este trabajo es el ofrecer una semántica que sea implementable en lenguajes como K o Maude. En nuestro caso, hemos desarrollado diferentes módulos en Maude que pueden servir como base a la hora de realizar una verificación de un contrato en este lenguaje.
dc.description.departmentDepto. de Sistemas Informáticos y Computación
dc.description.facultyFac. de Informática
dc.description.refereedTRUE
dc.description.statusunpub
dc.eprint.idhttps://eprints.ucm.es/id/eprint/61671
dc.identifier.urihttps://hdl.handle.net/20.500.14352/10185
dc.language.isoeng
dc.page.total64
dc.rightsAtribución-NoComercial 3.0 España
dc.rights.accessRightsopen access
dc.rights.urihttps://creativecommons.org/licenses/by-nc/3.0/es/
dc.subject.cdu004(043.3)
dc.subject.keywordEthereum
dc.subject.keywordMaude
dc.subject.keywordOperational semantics
dc.subject.keywordSolidity
dc.subject.keywordStorage
dc.subject.keywordSemántica operacional
dc.subject.ucmInformática (Informática)
dc.subject.unesco1203.17 Informática
dc.titleProviding formal semantics for Solidity to allow its verification
dc.title.alternativeDotación de una semántica formal a Solidity que permita su verificación
dc.typebachelor thesis
dspace.entity.typePublication
relation.isAdvisorOfPublicatione8d4e85a-2a43-444c-84e7-1fa5f392c50d
relation.isAdvisorOfPublication.latestForDiscoverye8d4e85a-2a43-444c-84e7-1fa5f392c50d

Download

Original bundle

Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
Paez_Velasco_Providing_formal_semantics_for_Solidity_to_allow_its_verification_4398577_1823799654.pdf
Size:
3.02 MB
Format:
Adobe Portable Document Format