Show simple item record

Professor Advisordc.contributor.advisorBergel, Alexandre
Authordc.contributor.authorSoto Gamboa, Daniel Bernardo 
Associate professordc.contributor.otherHevia Angulo, Alejandro
Associate professordc.contributor.otherMuñoz Órdenes, Andrés
Associate professordc.contributor.otherOlmedo Berón, Federico
Admission datedc.date.accessioned2020-12-12T20:38:59Z
Available datedc.date.available2020-12-12T20:38:59Z
Publication datedc.date.issued2020
Identifierdc.identifier.urihttps://repositorio.uchile.cl/handle/2250/178011
General notedc.descriptionMemoria para optar al título de ingeniero Civil en Computaciónes_ES
Abstractdc.description.abstractLa blockchain de Ethereum promete una infraestructura ideal para desarrollar sistemas parcial o totalmente descentralizados, pero existe una diferencia fundamental entre su máquina virtual, y la de lenguajes como Java: es necesario pagar para ejecutar código en ella. Como es Turing-completa, no se puede determinar a priori si es que un programa será terminante o no, lo que crea un problema único en este ecosistema: estimar el costo de ejecutar un programa. Herramientas actualmente disponibles para estimar estos costos sólo generan una cota superior del posible costo, la que puede llegar a ser infinita y no entregarle información útil al desarrollador del sistema. Esta memoria tiene como objetivo general desarrollar una herramienta que genere distribuciones de costos de gas para las funciones de un contrato de Solidity (similar a una clase de Java), como un acercamiento al problema de estimación de gas. Además, como objetivos específicos se busca analizar patrones en el código fuente y cómo se relacionan a ciertas distribuciones de costos y generar recomendaciones a próximos autores de código Solidity para escribir código más seguro. Comienza con una etapa investigativa de Ethereum, en particular sobre la máquina virtual en la cual se ejecutan transacciones (similares a ejecutar un método en Java), seguida por un estudio de un lenguaje que corre en esta máquina virtual: Solidity y cómo se diferencia de otros lenguajes populares como Java. Continúa analizando el sistema de gas implementado para controlar el uso de recursos computacionales de cada minero, y herramientas actuales que intentan resolver el problema de estimación de gas. Luego se define la estructura de la herramienta desarrollada, basándose en conceptos de fuzz testing. Para esto se desarrollan técnicas únicas para este ecosistema, como la generación de direcciones en la blockchain y de transacciones válidas. El análisis simbólico se introduce para fortalecer un punto débil de la herramienta: su aleatoreidad. Un experimento para evaluar esta herramienta es diseñado para ser ejecutado en una base de datos de 94,878 contratos. A partir de los resultados obtenidos en el experimento se genera un gráfico que resume el consumo de gas para un servicio dado y se definen clasificaciones para cada uno basadas en los costos obtenidos y en cómo se relacionan a la estimación estática generada por el compilador de Solidity. Cada clasificación se correlaciona con ciertas estructuras en el código que las generó y luego son usadas para realizar un análisis global del comportamiento de la herramienta. Se concluye la memoria presentando posibles falencias en la lógica de la herramienta, explicando el efecto de agregar análisis simbólico a esta, resumiendo puntos donde concentrar el trabajo futuro y dando recomendaciones a autores de código Solidity para generar código más seguro en el futuro. Una versión resumida de este trabajo fue presentada en ICSME-NIER 2020es_ES
Lenguagedc.language.isoenes_ES
Publisherdc.publisherUniversidad de Chilees_ES
Type of licensedc.rightsAttribution-NonCommercial-NoDerivs 3.0 Chile*
Link to Licensedc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/cl/*
Keywordsdc.subjectSoftware computacional - Desarrolloes_ES
Keywordsdc.subjectAnálisis de costoses_ES
Keywordsdc.subjectSolidity (Lenguaje de programación para computadores)es_ES
Keywordsdc.subjectBlockchaines_ES
Títulodc.titleFuzzer to analize smart contract performancees_ES
Document typedc.typeTesis
Catalogueruchile.catalogadorgmmes_ES
Departmentuchile.departamentoDepartamento de Ciencias de la Computaciónes_ES
Facultyuchile.facultadFacultad de Ciencias Físicas y Matemáticases_ES


Files in this item

Icon
Icon

This item appears in the following Collection(s)

Show simple item record

Attribution-NonCommercial-NoDerivs 3.0 Chile
Except where otherwise noted, this item's license is described as Attribution-NonCommercial-NoDerivs 3.0 Chile