117
UNIVERSIDAD DEL ISTMO CONTRATOS INTELIGENTES A TRAVÉS DE LA PLATAFORMA EOSIO Y LA TECNOLOGÍA DE CADENA DE BLOQUES: UN CASO DE USO TESIS QUE PARA OBTENER EL TÍTULO DE INGENIERO EN COMPUTACIÓN PRESENTA JUAN HERNÁNDEZ LÓPEZ DIRECTOR DE TESIS DR. RICARDO CARREÑO AGUILERA SANTO DOMINGO TEHUANTEPEC, OAXACA; FEBRERO DE 2020.

CONTRATOS INTELIGENTES A TRAVÉS DE LA PLATAFORMA …computacion/tesis/012020.pdf · 2020. 7. 23. · DisEOS, de desplegar los planos en base a esta información. Los contratos inteligentes

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • UNIVERSIDAD DEL ISTMO

    CONTRATOS INTELIGENTES A TRAVÉS DE LA

    PLATAFORMA EOSIO Y LA TECNOLOGÍA DE CADENA

    DE BLOQUES: UN CASO DE USO

    TESIS QUE PARA OBTENER EL TÍTULO DE

    INGENIERO EN COMPUTACIÓN

    PRESENTA

    JUAN HERNÁNDEZ LÓPEZ

    DIRECTOR DE TESIS

    DR. RICARDO CARREÑO AGUILERA

    SANTO DOMINGO TEHUANTEPEC, OAXACA; FEBRERO DE 2020.

  • iii

    Dedicatoria

    Dedico este trabajo a mi familia, que me ayudo en todo el proceso de mi formación,

    en especial a mis padres por todos los consejos y el apoyo que me brindaron. A mi

    madre por respetar mis decisiones y por siempre decirme las cosas con sinceridad.

    A mi padre que, aunque él no está presente en este momento, me formo durante la

    mayor parte de mi vida.

    Agradecimiento Agradezco la Universidad del Istmo por brindarme las facilidades que me

    permitieron concluir mis estudios. A los profesores por todo el tiempo dedicado a mi

    formación académica, en especial a los involucrados con este trabajo, por sus

    valiosas observaciones, su tiempo y su paciencia.

    A mis amigos y compañeros que de una u otra manera me ayudaron en los

    momentos de dificultad y con los que compartí buenos y malos momentos.

  • iv

    Resumen El crecimiento acelerado de aplicaciones que usan la tecnología de cadena de

    bloques lleva día a día a explorar el uso de esta tecnología en nuevos campos de

    aplicación, dado los beneficios atractivos de estas aplicaciones descentralizadas

    como lo son: las transacciones de punto a punto, el anonimato, la seguridad y la

    descentralización.

    La plataforma para desarrollo de aplicaciones descentralizadas EOSIO, que se usó

    inicialmente para la emisión de la criptomoneda EOS, se distingue de entre los

    demás ya que es una plataforma que se asemeja a un sistema operativo, en la cual

    se pueden programar contratos inteligentes usando el lenguaje C++ (Block.one,

    2018).

    El presente trabajo de tesis ofrece una alternativa de uso de la tecnología de cadena

    de bloques en un campo en donde no se ha aplicado con anterioridad, que es en el

    ámbito de salvaguardar información para generar planos o diseños en casas

    inteligentes (domóticas), para cual se desarrolla un contrato inteligente en la

    plataforma de EOSIO. Por lo tanto, se considera relevante explorar mediante este

    caso de uso el potencial y las características que dice poseer este proyecto, para

    así, generar documentación que conlleven al desarrollo de otros trabajos futuros de

    investigación sobre el tema.

    Las redes descentralizadas con tecnología de cadena de bloques con contratos

    inteligentes son un tema de interés hoy en día, en donde dos de las principales

    criptomonedas con capacidad de desarrollar contratos inteligentes son Ethereum y

    EOS, en este caso, este trabajo se centra en la plataforma de EOS (EOSIO), ya que

    la comunicación con la red de esta, es más fluida, al producir bloques cada 0.5

    segundos, permitiendo que el tiempo de respuesta percibido por el usuario sea

    mínimo; a diferencia de la red de Ethereum que produce un nuevo bloque en

    promedio cada 15 segundos.

    En el desarrollo de esta tesis se muestra una descripción general de la arquitectura

    de toda la aplicación, que consta principalmente de cuatro componentes: la base de

    datos externa IPFS (InterPlanetary File System), la cadena de bloques de EOSIO,

  • v

    la billetera y el cliente web. En esta arquitectura el usuario interactúa directamente

    con dos de ellos, el cliente web y la aplicación de escritorio de Scatter. En donde el

    cliente web le presenta una interfaz gráfica para realizar bosquejos de planos de

    planta, estos bosquejos pueden ser guardados por la aplicación, para lo cual el

    usuario inicia sesión con una cuenta creada en la cadena de bloques de EOS.

    El token llamado ZOA de EOS diseñado en este trabajo, trabaja en base a contratos

    inteligentes, los cuales se dividen en tres partes: acciones, definiciones de tipo y

    funciones. La función de la plataforma descentralizada EOSIO, es guardar la

    información sensible, para generar diseños domóticos, es decir, de casas

    inteligentes, siendo capaz la aplicación desarrollada; llamada de ahora en adelante

    DisEOS, de desplegar los planos en base a esta información. Los contratos

    inteligentes tienen las siguientes funciones principales: suscribir usuario, eliminar

    usuario, agregar plano, borrar un plano y borrar todos los planos. Dado que el token

    ZOA es una criptomoneda diseñada en la plataforma de EOSIO recibe el nombre

    de token, es decir, es una criptomoneda programada en la plataforma de otra

    criptomoneda (EOS), la cual requiere de una API que sirve como interfaz entre la

    aplicación y la cadena de bloques, con un protocolo de nombre RPC para interactuar

    con la cadena de bloques. Para realizar transacciones en la cadena de bloques

    desde la interfaz de la aplicación, se requiere que estas sean firmadas, para lo cual

    se usa Scatter. Scatter es una aplicación de escritorio que almacena las claves

    públicas y privadas, ya que almacenar las claves en el navegador puede resultar

    peligroso, dado que son vulnerables a cualquier ataque informático.

  • vi

    Índice de contenido

    Dedicatoria.........................................................................................................................................iii

    Agradecimiento .................................................................................................................................iii

    Resumen .............................................................................................................................................. iv

    Índice de figuras ................................................................................................................................x

    Índice de tablas ............................................................................................................................... xiii

    1 Introducción ............................................................................................................................... 1

    1.1 Trabajos relacionados...................................................................................................... 2

    1.2 Planteamiento del problema ........................................................................................... 4

    1.3 Justificación ....................................................................................................................... 5

    1.4 Objetivos ............................................................................................................................ 6

    1.4.1 Objetivo general ........................................................................................................ 6

    1.4.2 Objetivos específicos ............................................................................................... 6

    1.5 Delimitación del tema ....................................................................................................... 6

    1.5.1 Alcances ..................................................................................................................... 6

    1.5.2 Limitaciones ............................................................................................................... 7

    1.6 Estructura de la tesis........................................................................................................ 7

    2 Marco teórico ............................................................................................................................. 9

    2.1 Cadena de bloques .......................................................................................................... 9

    2.1.1 Eje cronológico........................................................................................................ 10

    2.1.2 Componentes de un sistema con tecnología de cadena de bloques ............. 10

    2.1.3 Criptomonedas ........................................................................................................ 11

    2.1.4 Clasificación ............................................................................................................ 11

    2.2 Contratos inteligentes .................................................................................................... 12

    2.2.1 Comparación con contratos tradicionales ........................................................... 12

    2.2.2 Campos de aplicación .................................................................................................. 13

    2.3 EOSIO .............................................................................................................................. 13

    2.3.1 Lenguaje de programación para EOSIO................................................................... 14

    2.3.2 Sistemas operativos ..................................................................................................... 14

    3 Desarrollo e implementación ................................................................................................ 16

    3.1 Requisitos del sistema ................................................................................................... 16

    3.2 Modelos de análisis de la aplicación web ................................................................... 17

    3.2.1 Actores ........................................................................................................................... 18

  • vii

    3.2.2 Casos de uso ................................................................................................................ 19

    3.3 Diseño de la aplicación web ......................................................................................... 23

    3.3.1 Contrato inteligente ...................................................................................................... 23

    3.3.1.1 Definición de tipos de datos ................................................................................ 23

    3.3.1.2 Funciones ............................................................................................................... 24

    3.3.1.2.1 Suscribir usuario ............................................................................................ 24

    3.3.1.2.2 Eliminar suscripción y eliminar planos ........................................................ 25

    3.3.1.2.3 Guardar plano ................................................................................................. 25

    3.3.1.2.4 Eliminar plano ................................................................................................. 27

    3.3.2 Cliente web .................................................................................................................... 28

    3.3.2.1 Interfaces de usuario ............................................................................................ 28

    3.3.2.1.1 Vista de inicio.................................................................................................. 28

    3.3.2.1.2 Vista de iniciar sesión .................................................................................... 29

    3.3.2.1.3 Vista bosquejar ............................................................................................... 29

    3.3.2.1.4 Vista perfil........................................................................................................ 30

    3.3.2.2 Diagramas de secuencia ...................................................................................... 30

    3.3.2.2.1 Iniciar sesión ................................................................................................... 31

    3.3.2.2.2 Crear diseño ................................................................................................... 31

    3.3.2.2.3 Mostrar perfil ................................................................................................... 32

    3.3.2.2.4 Suscribir usuario ............................................................................................ 33

    3.3.2.2.5 Guardar diseño ............................................................................................... 33

    3.3.2.2.6 Mostrar diseño ................................................................................................ 34

    3.3.2.2.7 Eliminar diseño, eliminar diseños y eliminar suscripción......................... 35

    3.4 Implementación de la aplicación .................................................................................. 35

    3.4.1 Actividades previas al desarrollo de la aplicación ................................................... 37

    3.4.1.1 Entorno de desarrollo ........................................................................................... 37

    3.4.1.2 Uso de billeteras .................................................................................................... 37

    3.4.1.3 Uso de cuentas ...................................................................................................... 37

    3.4.1.4 Contrato inteligente básico .................................................................................. 38

    3.4.1.5 Contrato inteligente con persistencia de datos ................................................. 38

    3.4.1.6 Token empleado en la aplicación ....................................................................... 38

    3.4.2 Contrato inteligente de la aplicación .......................................................................... 39

    3.4.2.1 Definiciones de tipo ............................................................................................... 40

  • viii

    3.4.2.1.1 Tipo usuario .................................................................................................... 40

    3.4.2.1.2 Tipo plano........................................................................................................ 41

    3.4.2.2 Acciones ................................................................................................................. 42

    3.4.2.2.1 Suscribir usuario ............................................................................................ 42

    3.4.2.2.2 Eliminar suscripción y eliminar planos ........................................................ 44

    3.4.2.2.3 Guardar plano ................................................................................................. 44

    3.4.2.2.4 Eliminar plano ................................................................................................. 45

    3.4.2.3 Despliegue del contrato inteligente .................................................................... 46

    3.4.3 Cliente web .................................................................................................................... 47

    3.4.3.1 Librerías JavaScript .............................................................................................. 47

    3.4.3.1.1 Consulta de datos de la cadena de bloques desde el cliente web ........ 47

    3.4.3.1.2 Autentificación de usuarios .......................................................................... 48

    3.4.3.1.3 Envío de transacciones desde el cliente web ........................................... 49

    3.4.3.2 Interfaces de usuario ............................................................................................ 49

    3.4.3.2.1 Inicio ................................................................................................................. 49

    3.4.3.2.2 Iniciar sesión ................................................................................................... 50

    3.4.3.2.3 Bosquejar ........................................................................................................ 52

    3.4.3.1.4 Perfil ................................................................................................................. 55

    4 Evaluación ............................................................................................................................... 57

    4.1 Costos .............................................................................................................................. 57

    4.1.1 Costo por despliegue ................................................................................................... 58

    4.1.2 Costo por almacenamiento de datos ......................................................................... 59

    4.1.3 Costo por transacciones .............................................................................................. 60

    4.2 Escalabilidad ................................................................................................................... 62

    4.3 Privacidad y seguridad .................................................................................................. 63

    5 Conclusiones y trabajo futuro ............................................................................................... 64

    5.1 Conclusiones ................................................................................................................... 64

    5.2 Trabajo futuro .................................................................................................................. 65

    Configuración del entorno de desarrollo EOSIO ....................................................................... 67

    A.1 Instalación de EOSIO .................................................................................................... 68

    A.1.1 Componentes de la instalación ................................................................................ 69

    A.1.1.1 Comprobar el funcionamiento de keosd ............................................................. 69

    A.1.1.2 Comprobar el funcionamiento de cleos............................................................... 70

  • ix

    A.1.1.3 Comprobar el funcionamiento de nodeos ........................................................... 70

    A.2 Instalación de EOSIO.cdt .............................................................................................. 72

    Creación y manejo de billeteras ................................................................................................... 74

    Creación y configuración de cuentas .......................................................................................... 77

    Primer contrato inteligente ............................................................................................................ 79

    D.1 Especificación del contrato ........................................................................................... 79

    D.2 Despliegue del contrato en la cadena de bloques .................................................... 79

    Gestión de datos en la cadena de bloques ................................................................................ 82

    E.1 Contrato de registro........................................................................................................ 82

    E.2 Tabla de índice múltiple ................................................................................................. 83

    E.3 Acción registrar ............................................................................................................... 84

    E.4 Acción borrar ................................................................................................................... 84

    Emisión y transferencia de tokens ............................................................................................... 85

    F.1 Obtención y compilación del contrato EOSIO.token ................................................. 85

    F.2 Despliegue del contrato en la cadena de bloques .................................................... 86

    F.3 Creación de un token ..................................................................................................... 86

    F.4 Emisión del token ........................................................................................................... 87

    F.5 Transferencia de tokens ................................................................................................ 88

    Contrato inteligente de la aplicación ............................................................................................ 89

    Peticiones a la cadena de bloques .............................................................................................. 93

    H.1 Consultar datos en la cadena de bloques .................................................................. 93

    H.2 Autentificar usuarios ................................................................................. 93

    H.3 Envío de transacciones firmadas ................................................................................. 94

    Configuración de Scatter ............................................................................................................... 96

    Referencias ................................................................................................................................... 101

  • x

    Índice de figuras

    Figura 2.1. Campos de aplicación de los contratos inteligentes. Modificado de

    (Kumar, Panda, & Jena, 2018) .............................................................................. 13

    Figura 3.1. Modelos de casos de uso de la aplicación. ......................................... 17

    Figura 3.2. Diagrama de flujo de suscribir usuario. ............................................... 24

    Figura 3.3. Diagrama de flujo de eliminar suscripción y eliminar planos. .............. 25

    Figura 3.4. Diagrama de flujo de guardar plano. ................................................... 26

    Figura 3.5. Diagrama de flujo de borrar plano. ...................................................... 27

    Figura 3.6. Diseño de la interfaz inicio. ................................................................. 28

    Figura 3.7. Diseño de la interfaz iniciar sesión. ..................................................... 29

    Figura 3.8. Diseño de la interfaz bosquejar. .......................................................... 29

    Figura 3.9. Diseño de la interfaz perfil. .................................................................. 30

    Figura 3.10. Diagrama de secuencia iniciar sesión. .............................................. 31

    Figura 3.11. Diagrama de secuencia crear diseño. ............................................... 32

    Figura 3.12. Diagrama de secuencia ver perfil. ..................................................... 32

    Figura 3.13. Diagrama de secuencia de suscribir usuario. .................................... 33

    Figura 3.14. Diagrama de secuencia guardar diseño. ........................................... 34

    Figura 3.15. Diagrama de secuencia mostrar diseño. ........................................... 34

    Figura 3.16. Diagrama de secuencias de eliminar suscripción, eliminar diseños y

    eliminar diseños. ................................................................................................... 35

    Figura 3.17. Arquitectura de la aplicación DisEOS. ............................................... 36

    Figura 3.18. Contrato de la aplicación. .................................................................. 40

    Figura 3.19. Acción suscripción. ............................................................................ 43

    Figura 3.20. Configuración de Scatter. .................................................................. 48

    Figura 3.21. Proceso de autentificación. ............................................................... 48

    Figura 3.22. Vista principal de la aplicación. ......................................................... 49

    Figura 3.23. Vista para iniciar sesión. ................................................................... 50

    Figura 3.24. Cuentas vinculadas a Scatter. ........................................................... 51

    Figura 3.25. Vista bosquejar.................................................................................. 52

    Figura 3.26. Elementos de diseño. ........................................................................ 53

    Figura 3.27. Ventana solicitando autorizar una acción. ......................................... 54

  • xi

    Figura 3.28. Proceso para guardar un plano. ........................................................ 54

    Figura 3.29. Vista perfil. ........................................................................................ 55

    Figura 3.30. Proceso para obtener datos. ............................................................. 56

    Figura 4.1. Comportamiento de agregar y borrar plano. ....................................... 62

    Figura A.1. Búsqueda de paquetes instalados. ..................................................... 67

    Figura A.2. Instalación de eosio. ........................................................................... 68

    Figura A. 3. Salida esperada para keosd &. .......................................................... 69

    Figura A.4. Comandos de cleos. ........................................................................... 70

    Figura A.5. Ejecución de nodeos. .......................................................................... 71

    Figura A.6. Comprobación de nodeos. .................................................................. 71

    Figura A.7. Información del nodo desplegado. ...................................................... 71

    Figura A.0.8. Instalación de eosio.cdt. .................................................................. 73

    Figura B.1. Creación de billetera. .......................................................................... 74

    Figura B.2. Desbloqueo de billetera. ..................................................................... 75

    Figura B.3. Configuración de billetera. .................................................................. 75

    Figura B.4. Claves de carteraDise. ........................................................................ 76

    Figura C.1. Creación de las cuentas julia y francisco. ........................................... 77

    Figura C.2. Información de la cuenta julia. ............................................................ 78

    Figura D..1. Compilación y creación de cuenta saludo. ........................................ 80

    Figura D.2. Despliegue del contrato saludo. ......................................................... 80

    Figura D.3. Llamada a la acción saludar. .............................................................. 81

    Figura F.1. Descarga de eosio.contracts. .............................................................. 85

    Figura F.2. Compilación de eosio.token. ............................................................... 86

    Figura F.3. Despliegue del contrato eosio.token. .................................................. 86

    Figura F.4. Creación del token. ............................................................................. 87

    Figura F.5. Información del token. ......................................................................... 87

    Figura F.6. Emisión del token. ............................................................................... 87

    Figura F.7. Comprobación de emitir token. ........................................................... 88

    Figura F.8. Llamada a la acción transfer. .............................................................. 88

    Figura F.9. Saldos de las cuentas. ........................................................................ 88

    Figura I.1. Pantalla de inicio de Scatter. ................................................................ 96

  • xii

    Figura I.2. Interfaz que solicita contraseña. ........................................................... 97

    Figura I.3. Pantalla importar clave privada. ........................................................... 97

    Figura I.4. Interfaz para introducir la clave privada. ............................................... 98

    Figura I.5. Apartado Wallet. ................................................................................... 98

    Figura I.6. Apartado Networks. .............................................................................. 99

    Figura I.7. Interfaz para añadir la cadena de bloques. .......................................... 99

    Figura I.8. Información de la cadena de bloques. ................................................ 100

    Figura I.9. Apartado Wallet con cuentas enlazadas. ........................................... 100

  • xiii

    Índice de tablas

    Tabla 1.1. Andamio cognitivo de trabajos relacionados. 2

    Tabla 2.1. Comparación entre diferentes tipos de cadena de bloques. 12

    Tabla 3.1. Actor Usuario. 18

    Tabla 3.2. Actor Billetera. 18

    Tabla 3.3. Actor Base de datos Registros. 18

    Tabla 3.4. Actor Base de datos Diseños. 19

    Tabla 3.5. Actor Contrato inteligente Token. 19

    Tabla 3.6. Caso de uso Iniciar sesión. 19

    Tabla 3.7. Caso de uso Mostrar perfil. 20

    Tabla 3.8. Caso de uso Crear diseño. 20

    Tabla 3.9. Caso de uso Guardar diseño. 20

    Tabla 3.10. Caso de uso Mostrar diseño. 21

    Tabla 3.11. Caso de uso Modificar diseño. 21

    Tabla 3.12. Caso de uso Eliminar diseño. 21

    Tabla 3.13. Caso de uso Suscribir usuario. 22

    Tabla 3.14. Caso de uso Eliminar suscripción. 22

    Tabla 3.15. Caso de uso Eliminar diseños. 22

    Tabla 4.1. Peso de los contratos. 58

    Tabla 4.2. Almacenamiento en las tablas. 59

    Tabla 4.3. Ancho de banda y CPU. 61

    Tabla A.1. Software usado. 67

  • xiv

    Índice de códigos

    Código 3.1. Definición de tipo usuario. .................................................................. 41

    Código 3.2. Definición del tipo plano. .................................................................... 41

    Código D.1. Contrato inteligente para saludar. ...................................................... 79

    Código E.1. Contrato inteligente tsgestdatos. ....................................................... 83

    Código G.1. Código de contrato tsrgdiseno........................................................... 92

    Código H.1. Función obtener tablas. ..................................................................... 93

    Código H.2. Iniciar sesión...................................................................................... 94

    Código H.3. Formato del envío de transacciones. ................................................. 94

  • Capítulo 1. Introducción

    1

    Capítulo 1

    1 Introducción

    En años recientes se ha observado un crecimiento acelerado de aplicaciones que usan

    la tecnología de cadena de bloques, siendo cada vez mayor su aceptación y uso

    debido a los beneficios que ofrece, estos son: las transacciones de punto a punto, el

    anonimato, la seguridad y la descentralización. Estas características han logrado que,

    a pesar de su complejidad tecnológica, tengan cada vez más usuarios en todo el

    mundo.

    Existen diferentes proyectos que implementan su propia cadena de bloques con

    soporte para contratos inteligentes, entre los cuales se encuentran: EOSIO, Neo,

    Ethereum y TRON, por mencionar algunos. Los contratos inteligentes son programas

    de computadora que se ejecutan en la parte superior de la cadena de bloques para

    facilitar y hacer cumplir un acuerdo entre dos partes sin la participación de un tercero

    (Alharby & Moorsel, 2017).

    EOSIO es el proyecto que proporciona la infraestructura para la operación de la

    moneda EOS, y se distingue de entre los demás ya que ofrece una plataforma que se

    asemeja a un sistema operativo, en la cual se pueden programar contratos inteligentes

    usando el lenguaje C++ (Block.one, 2018). Y según la información proporcionada por

    (Dappradar, 2019), de las 50 aplicaciones con el mayor número de usuarios de la

    semana, 6 utilizan la cadena de bloques de EOS. En este trabajo se utiliza la versión

    1.7.0 del software de EOSIO, sin embargo, la versión más reciente es la 2.0.

  • Capítulo 1. Introducción

    2

    1.1 Trabajos relacionados

    En el área de la tecnología de cadena de bloques, se han publicado trabajos y se han

    realizado proyectos que muestran y dan a conocer el impacto que esta tiene,

    otorgándole un lugar importante dentro de las tecnologías actuales. En la Tabla 1.1,

    se listan algunos trabajos de tesis que han abordado el tópico que se usa para este

    proyecto o han utilizado tecnologías similares para su realización.

    Autor Título Año Características Grado

    obtenido Institución

    (Bagchi, R., 2017)

    Using Blockchain technology and smart contracts for access management in IoT devices

    2017 Investigación y comparación de la administración de dispositivos IoT de manera tradicional y el uso de cadena de bloques en la plataforma de Ethereum.

    Maestría Universidad de Helsinki

    (Schüpfer, F., 2017)

    Design and implementation of a smart contract application

    2017 Diseño e implementación de contratos inteligentes en Ethereum. Desarrollo de una aplicación Android.

    Maestría Universidad de Zúrich

    (Salirrosas, M., 2018)

    Identity management with blockchain

    2018 Prototipo de sistema para el manejo de identidades. Uso de contratos inteligentes en Ethereum.

    Ingeniería Universidad Politécnica de

    Cataluña

    (Tran, H., 2018)

    Enabling a decentralized organization through smart contracts and tokens on the Ethereum blockchain

    2018 Uso de contratos inteligentes en Ethereum. Desarrollo back-end de una aplicación descentralizada.

    Ingeniería Universidad de Ciencias Aplicadas

    Arcada

    (Corten, P., 2018)

    Implementation of Blockchain powered smart contracts in governmental services

    2018 Investigación acerca de un marco de diseño para la implementación de contratos inteligentes en la plataforma de Ethereum.

    Maestría Universidad Técnica de Delft

    (Boogaard, K., 2018)

    A Model-Driven approach to smart contract development

    2018 Investigación de la factibilidad del uso de la ingeniería dirigida por modelos en el desarrollo de contratos inteligentes en la plataforma de Ethereum.

    Maestría Universidad de Utrecht

    (Pompianu, L., 218)

    Analysing blockchains and smart contracts: tools and techniques

    2018 Investigación acerca de blockchain y contratos inteligentes. Inserción de metadatos en la cadena de bloques de Ethereum.

    Doctorado Universidad de Cagliari

    (Hernández, J., 2019)

    Contratos inteligentes a través de la plataforma EOSIO y la tecnología de cadena de bloques: un caso de uso

    2019 Investigación exploratoria sobre el desarrollo de contratos inteligentes sobre la plataforma proporcionada por el software EOSIO.

    Ingeniería Universidad del Istmo

    Tabla 1.1. Andamio cognitivo de trabajos relacionados.

    Como se expone en la Tabla 1.1, existen tesis relacionadas o similares con el trabajo

    que se pretende realizar. Sin embargo, al momento no se han identificado trabajos de

  • Capítulo 1. Introducción

    3

    tesis publicados donde se aborde como tal el desarrollo de contratos inteligentes sobre

    la plataforma proporcionada por el software EOSIO, con el fin de explorar su

    desempeño, ya que la mayor parte de los trabajos se centran en Ethereum.

    Todos los trabajos de tesis de la Tabla 1.1 son pioneros en cuanto al campo de

    aplicación que cada uno va dirigido y en esta misma tabla se mencionan las

    características peculiares de cada uno de estos trabajos, sin embargo, todos son

    similares en cuanto a que buscan lo mismo a este trabajo de tesis, es decir, analizar y

    explorar el uso de la tecnología de la cadena de bloques en un nuevo campo, en donde

    se pretende tener un gran éxito como se tuvo con el bitcoin. La razón del éxito del

    bitcoin fue el hecho del uso de la tecnología de la cadena de bloques y no en si la

    invención del bitcoin, es decir, el bitcoin solo fue el primer caso de uso de la tecnología

    de cadena de bloques o llamada también descentralizada, sin embargo, el bitcoin y

    otras criptomonedas pioneras solo podían hacer la función de fungir como

    criptomoneda, es decir, realizar transacciones. No fue hasta la invención de la

    plataforma de Ethereum, que el uso de contratos inteligentes en plataformas de

    cadena de bloques se hizo posible, y a raíz de ello se amplió la gama de casos de uso

    de aplicaciones de la tecnología de la cadena de bloques usando contratos inteligentes

    para cualquier ámbito de aplicación. Hoy en día la plataforma que permite la

    generación de aplicaciones descentralizadas, con contratos inteligentes, con más

    aplicaciones y publicaciones de uso es la de Ethereum, pero este hecho podría ser

    simplemente porque fue la primera plataforma con contratos inteligentes lanzada al

    uso público en el 2015 (coinmarkecap.com), sin embargo, esta plataforma ha

    atravesado muchas dificultades de escalamiento, es decir, si la aplicación requiere

    mucha capacidad de procesamiento o es usada por más usuarios de lo normal, esta

    aplicación se satura y ya no funciona, es por ello que en este trabajo de tesis se optó

    por el uso de la plataforma descentralizada (con cadena de bloques) con contratos

    inteligentes de nombre EOSIO, que surgió en el 2017 (coinmarketcap.com)

    prometiendo terminar con este problema de saturación de Ethereum, es decir,

    ofreciendo mucho más capacidad y velocidad de procesamiento, sin embargo, siendo

    la plataforma de EOSIO alrededor de dos años más nueva que la de Ethereum, aún le

    falta tiempo por probar que efectivamente es mejor que todas las opciones existentes

  • Capítulo 1. Introducción

    4

    para programar contratos inteligentes como lo promete, pues la mayoría de sus

    aplicaciones aun no terminan de madurar y están en fases de desarrollo y prueba. Por

    el hecho peculiar de que la plataforma de EOSIO prometió acabar con todos los

    problemas de escalamiento que atraviesan todas las plataformas previas con contratos

    inteligentes existentes (Ethereum, TRON, DASH, etc.), se consideró de mayor valor

    utilizar la plataforma de EOSIO para este estudio de tesis. Al usar la plataforma de

    EOSIO en el desarrollo de esta tesis, se puede ofrecer un marco de referencia o punto

    de partida, no solo para explorar el caso de uso que compete a esta tesis, sino también

    como un valor agregado para evaluar o estimar para trabajos futuros, que tanto EOSIO

    tiene el potencial para poder cumplir lo que prometió, dado que todas las plataformas

    con contratos inteligentes están en competencia y se espera que finalmente halla una

    sola que prevalezca.

    1.2 Planteamiento del problema

    Los contratos inteligentes se pueden usar en diferentes áreas, en (Kumar, Panda, &

    Jena, 2018) se identifican 7 campos potenciales, que son: las cadenas de suministro,

    el internet de las cosas, el sistema de salud, la gestión de derechos digitales, los

    seguros, el sistema financiero y bienes raíces. Sin embargo, esta tecnología aún tiene

    muchas barreras que superar antes de que pueda ser vista como una alternativa.

    Algunas de sus deficiencias son: su poca practicidad, falta de adopción y la limitada

    exploración que se ha hecho sobre ella. Suscitándose con esto, la necesidad de dar

    seguimiento a estas problemáticas para lograr avanzar en su desarrollo.

    En general, es complicado encontrar documentación que permita al programador

    trabajar con esta tecnología, debido a que la existente no suele describir a detalle el

    proceso a seguir. Muchos autores omiten pasos que ellos consideran irrelevantes en

    el desarrollo de la tecnología como tal, y se enfocan directamente en el tema de cadena

    de bloques y los contratos inteligentes, dejando huecos en el tema que a más de uno

    pueden desanimar.

    El presente trabajo de tesis se enfoca en el problema de la falta de exploración de la

    tecnología de cadena de bloques, específicamente los contratos inteligentes

  • Capítulo 1. Introducción

    5

    desarrollados para la plataforma de EOSIO. Por lo tanto, se considera relevante

    explorar mediante un caso de uso el potencial y las características que dice poseer

    este proyecto, para así, generar documentación que conlleven al desarrollo de otros

    trabajos de investigación sobre el tema.

    1.3 Justificación

    La tecnología de cadena de bloques y los contratos inteligentes son un tema de interés

    para muchas personas, ya que solo la compra y venta de sus dos principales monedas

    (ether y EOS) mueven miles de millones de dólares al día en las casas de cambio

    (CoinMarketCap, 2019). Este trabajo se centra en EOS, ya que la comunicación con

    la red de este, es más fluida, al producir bloques cada 0.5 segundos (CryptoLions.io,

    2019), permitiendo que el tiempo de respuesta percibido por el usuario sea mínimo; a

    diferencia de la red de Ethereum que produce un nuevo bloque en promedio cada 15

    segundos (Ethstats, 2019).

    A manera de un caso de uso, en la tesis se buscó una aplicación web que permita

    bosquejar planos de planta, específicamente de casas de una sola planta que estén

    dentro en un terreno con extensión máxima de 80 metros por lado, en donde se

    incluyan la localización de sensores destinados a uso domótico. La funcionalidad de la

    aplicación se establecerá mediante un contrato inteligente, con la finalidad de examinar

    el desempeño actual de la cadena de bloques del proyecto EOSIO, tomando como

    indicadores: el costo que implica el desarrollo sobre esta plataforma, la seguridad, la

    privacidad y la escalabilidad de las aplicaciones.

    Se espera que la generación de documentación derivada de este trabajo contribuya al

    proceso de maduración de esta tecnología, sin embargo, esto está fuera del alcance

    de la tesis. Por lo anterior, solo se va a explorar la tecnología, a razón que está aún se

    encuentra en una etapa temprana, y dados sus antecedentes se espera que en un

    futuro cobre mayor importancia.

  • Capítulo 1. Introducción

    6

    1.4 Objetivos

    1.4.1 Objetivo general

    Evaluar el desempeño de la plataforma proporcionada por el software EOSIO mediante

    la programación de una aplicación que emplee contratos inteligentes.

    1.4.2 Objetivos específicos

    • Identificar los límites de la programación dentro de EOSIO.

    • Definir la forma adecuada de proteger los datos dentro de la plataforma de

    EOSIO.

    • Detallar los pasos a seguir para la realización de un contrato inteligente.

    • Integrar los contratos inteligentes con la tecnología web mediante el desarrollo

    de una aplicación.

    • Desplegar la aplicación desarrollada, en la plataforma provista por EOSIO.

    • Comprobar el correcto funcionamiento del sistema.

    1.5 Delimitación del tema

    1.5.1 Alcances

    • Se explorarán las siguientes funcionalidades de la plataforma provista por el

    software EOSIO:

    o Creación y manejo de cuentas y billeteras.

    o Creación y transferencia de tokens.

    o Almacenamiento y recuperación de datos.

    o Despliegue de contratos inteligentes en la cadena de bloques.

    • Se programarán ejemplos para corroborar cada una de las funcionalidades a

    explorar.

    • Se desarrollará una aplicación web que integre las funcionalidades exploradas,

    y en donde el backend esté dado por un contrato inteligente.

  • Capítulo 1. Introducción

    7

    1.5.2 Limitaciones

    • Se usó únicamente la versión 1.7.0 del software de desarrollo provisto por

    EOSIO, debido a que en cada nueva versión se pueden introducir cambios que

    afecten o impidan el correcto funcionamiento de los contratos inteligentes.

    • Los contratos inteligentes se desplegaron sobre una red de prueba local, es

    decir de un solo nodo.

    • La aplicación web desarrollada es solo con el fin de explorar la plataforma, por

    lo tanto, contendrá solo los elementos necesarios para corroborar la

    funcionalidad de la aplicación y la plataforma.

    • No se exploró la escalabilidad de la plataforma.

    1.6 Estructura de la tesis

    El resto de este trabajo se encuentra estructurado como se describe a continuación:

    El capítulo 2 presenta el fundamento teórico que ayudará a comprender mejor el

    desarrollo realizado. Para esto, se define la tecnología de cadena de bloques,

    resaltando sus características principales y los cambios que ha experimentado desde

    sus comienzos. Luego se describen y ejemplifican las características principales de los

    contratos inteligentes, así como sus usos potenciales. Al final se abordan aspectos

    relevantes acerca de la plataforma de EOSIO.

    En el capítulo 3 se describe a detalle el proceso seguido durante el desarrollo del

    proyecto, esto incluye la descripción de cada ejemplo realizado en donde se prueba

    de forma individual las características que se decidieron explorar, así como de la

    aplicación web final que integre todas las funcionalidades exploradas, y que permita

    comprender la interacción entre cada una de estas. Esto abarca desde la configuración

    del software necesario hasta el despliegue de la aplicación en la cadena de bloques.

    El capítulo 4 presenta los resultados obtenidos a lo largo del desarrollo de la tesis,

    incluyendo el comportamiento de todos los ejemplos hechos y la aplicación web final,

    desde su comienzo, dificultades presentadas y su finalización. Cabe destacar que

    también se expone el desempeño de las aplicaciones desarrolladas utilizando la

  • Capítulo 1. Introducción

    8

    tecnología de cadena de bloques, en comparación con el rendimiento proporcionado

    por otras tecnologías ya existentes.

    En el capítulo 5 se exponen las contribuciones que se hicieron al tema de la cadena

    de bloques, principalmente exploratorios. También se dan las conclusiones a las que

    se llegó a través del trabajo realizado y finalmente se sugieren posibles trabajos futuros

    que puedan realizarse a partir de la investigación y desarrollo realizado en este trabajo.

  • Capítulo 2. Marco teórico

    9

    Capítulo 2

    2 Marco teórico

    2.1 Cadena de bloques

    Cuando se habla de la tecnología de cadena de bloques no existe una definición

    formal, esto ocasiona que cada autor la defina de acuerdo con su visión de la

    tecnología (Zile & Strazdina, 2018). A continuación, se mencionan dos definiciones de

    cadenas de bloques realizadas por diferentes autores:

    Una estructura de datos, en donde la red que la implementa posee una copia en cada

    uno de sus nodos, dicha red deber ser capaz de efectuar transacciones basadas en

    criptografía de clave pública, verificando los requerimientos de la transacción antes de

    realizarla, y registrando cada transacción en bloques ordenados de forma secuencial;

    dichos bloques son creados de acuerdo a un algoritmo de consenso (Porru, 2017).

    En (Zubaydi, Chong, Ko, Hanshi, & Karuppayah, 2019) se define a la cadena de

    bloques como la tecnología que toma los principios de un libro de contabilidad digital

    con el objetivo de reemplazar la perspectiva de las transacciones digitales, dicho libro

    tiene las características de ser distintivo, distribuido y descentralizado, conteniendo

    además los registros de las transacciones de los integrantes que lo componen.

    Desde el punto de vista del presente trabajo, el concepto de cadena de bloques debe

    hacer énfasis en que esta, involucra un conjunto de nodos que poseen recursos

    asociados, los cuales a su vez varían de acuerdo a la implementación de la tecnología.

    Decir que la cadena de bloques es un libro de contabilidad digital o una estructura de

    datos con ciertas características puede causar confusión al momento de comprender

  • Capítulo 2. Marco teórico

    10

    el concepto. Otro punto que resulta relevante, es conocer los acontecimientos que

    marcaron la historia de esta tecnología, así como ubicar su estado actual.

    2.1.1 Eje cronológico

    En 2008 Satoshi Nakamoto publicó el artículo Bitcoin: A Peer-To-Peer Electronic Cash

    System, en donde se describe una red que permite efectuar pagos en línea

    directamente entre dos partes, sin la participación de una institución financiera que

    valide la operación (Nakamoto, 2008). Sin embargo, la tecnología de cadena de

    bloques marcó su llegada con el desarrollo y lanzamiento del Bitcoin en el 2009 (Kibet

    & Maina, 2018).

    Otro evento importante sucedió en 2013, cuando Vitalik Buterin publicó una guía en la

    cual presenta a Ethereum y propone una cadena de bloques que permita a sus

    usuarios implementar sus propios programas informáticos (Vitalik, 2013). Pero no es

    hasta 2015 que Ethereum es lanzado, dando paso a una segunda etapa en el tema de

    las cadenas de bloques, dejando de ser utilizadas para propósitos específicos y

    pasando a implementar el concepto de contrato inteligente (Franco, Scheid, Granville,

    & Stiller, 2019)

    Desde entonces su popularidad ha ido aumentando gracias a las múltiples

    aplicaciones que se le han encontrado, logrando que incluso países como China,

    Rusia, Reino Unido, Estados Unidos de América, Japón y Canadá; inviertan en

    investigación sobre esta tecnología (Yi, Lingjun, & Hong, 2018). EOSIO fue lanzado en

    2018 y forma parte de la segunda generación de cadenas de bloques. A continuación,

    se describen los componentes de un sistema que implementa esta tecnología.

    2.1.2 Componentes de un sistema con tecnología de cadena de bloques

    Los componentes generales de un sistema con tecnología de cadena de bloques son:

    los nodos de la red, la criptografía que se usa para validar las transacciones, la forma

    en la que las transacciones son almacenadas, y los mecanismos de consenso que

    permiten la autenticidad de las acciones.

  • Capítulo 2. Marco teórico

    11

    2.1.3 Criptomonedas

    Las criptomonedas son un medio digital de intercambio que utiliza principios

    criptográficos para permitir la realización de transacciones seguras y de manera

    descentralizada. Para ofrecer esto se valen de la tecnología de cadena de bloques.

    Desde su aparición en 2009, las criptomonedas se han popularizado cada vez más,

    esto se atribuye principalmente a tres de sus características principales, las cuales

    son:

    • Reducción en el costo de la transacción.

    • Reducción en el tiempo de operaciones debido a trámites burocráticos.

    • Eliminación de intermediarios que validen las transacciones.

    La primera criptomoneda fue el Bitcoin y dada la popularidad que tuvo, fueron

    apareciendo otras criptomonedas, muchas de estas eran copias de Bitcoin, sin

    embargo, también surgieron proyectos que implementaban características adicionales

    (Nakamoto, 2008). Estas, inicialmente eran para propósitos específicos, hasta que

    finalmente surgieron proyectos que implementaban el uso de contratos inteligentes

    para darle la oportunidad a los usuarios de definir sus propias funcionalidades (Peck,

    2017). Algunas criptomonedas son: Bitcoin, Ethereum, XPR, Bitcoin Cash, Litecoin,

    EOS, Binance Coin, Stellar.

    La lista anterior muestra a las 8 criptomonedas más populares según (CoinMarketCap,

    2019), esto con base en su capitalización del mercado. Sumando la capitalización de

    todas, da un total de más de cien mil millones de dólares. Para el caso particular de

    EOS, su capitalización del mercado es de más de cuatro mil millones de dólares.

    2.1.4 Clasificación

    Las cadenas de bloques pueden clasificarse de diversas formas, una de esas es

    mediante los permisos que se tienen para acceder a ella. Por tanto, existen las

    cadenas de bloques públicas, de consorcio y las privadas, en la Tabla 2.1 se muestra

    una comparativa entre los tres tipos de cadenas de bloques.

  • Capítulo 2. Marco teórico

    12

    Característica Cadena de bloques pública

    Cadena de bloques de consorcio

    Cadena de bloques privada

    Determinación del consenso

    Todos los participantes Conjunto de nodos seleccionados

    Una organización

    Permisos de lectura Público Público o restringido Publico o restringido

    Inmutabilidad Casi imposible de manipular

    Su manipulación es posible

    Su manipulación es posible

    Eficiencia Baja Alta Alta

    Centralizado No Parcial Si

    Proceso de consenso Sin permiso Por permiso Por permiso

    Tabla 2.1. Comparación entre tipos de cadena de bloques. (Wang, H., y otros, 2019).

    Cada uno de los tipos de cadenas de bloques tienen sus aplicaciones ad hoc. Para el

    caso de la cadena de bloques con la cual se trabaja en la presente tesis, corresponde

    a la cadena de bloques de consorcio, esto se ve reflejado principalmente en el alto

    desempeño de los contratos inteligentes que corren sobre la plataforma, con respecto

    a las cadenas de bloques públicas.

    2.2 Contratos inteligentes

    Se llama contrato inteligente a cualquier programa de computadora con las

    propiedades de autoverificación, auto ejecución y resistencia a la manipulación de

    forma indebida (Kumar, Panda, & Jena, 2018). Para logra esto, el contrato realiza las

    siguientes acciones (Molina, y otros, 2018):

    • Interceptar cada evento generado por las partes.

    • Determinar si el evento cumple o no con las condiciones establecidas.

    • Producir un veredicto.

    • Graba el veredicto en un registro indeleble y disponible para su verificación.

    2.2.1 Comparación con contratos tradicionales

    Los contratos inteligentes son llamados así debido a que comparten cierto parecido o

    características con los contratos tradicionales. Según (Real Academia Española, 2016)

    un contrato es un pacto o convenio, oral o escrito que obliga a las partes involucradas

    a una cosa determinada, y cuyo cumplimiento puede ser compelido. Sin embargo, la

    definición de contrato puede diferir de acuerdo con el país, por lo tanto, la definición

    de contrato inteligente también difiere.

  • Capítulo 2. Marco teórico

    13

    Según lo anterior, en algunos casos puede que no sea posible definir como contrato

    inteligente a algunos de los programas informáticos que se usan en esta tesis, ya que

    pueden no cumplir con las definiciones de contrato en algunos países. Sin embargo,

    para la mayoría de los casos esta definición es válida y solo en algunos se deben hacer

    ciertas aclaraciones para evitar malentendidos.

    2.2.2 Campos de aplicación

    Dado su cualidad de eliminar la necesidad de terceras partes, los contratos inteligentes

    pueden implementarse en diferentes campos para ayudar a automatizar los sistemas

    (Kumar, Panda, & Jena, 2018), algunos de estos campos se ilustran en la Figura 2.1:

    Figura 2.1. Campos de aplicación de los contratos inteligentes. Modificado de (Kumar, Panda, & Jena, 2018)

    En la Figura 2.1 se muestra que hay una diversidad de campos de aplicación para los

    contratos inteligentes, por ejemplo: para los bienes raíces esta breezecoin (breezecoin,

    2019), para el caso de cadenas de suministro esta binance (binance, 2019), para

    internet de las cosas esta IOTA (IOTA, 2019), para sistemas financieros citamos kyber

    network (kyber network, 2019), para sistemas de salud timihealth (timihealth, 2019),

    para derechos digitales esta consensum (consensum, 2019), y para seguros

    cryptoverze (cryptoverze, 2019).

    2.3 EOSIO

    El software EOSIO ofrece una estructura de cadena de bloques que permite la

    implementación de redes tanto públicas como privadas, diseñadas para permitir el

  • Capítulo 2. Marco teórico

    14

    escalamiento de aplicaciones descentralizadas, es decir que permitan y sean capaces

    de manejar un gran número de usuarios y transacciones a través del tiempo. EOSIO

    también facilita el uso de cuentas, autentificación, bases de datos, comunicación

    asíncrona y programación usando múltiples núcleos de CPU (Block.one, 2018).

    El software EOSIO ofrece una estructura de cadena de bloques que permite la

    implementación de redes tanto públicas como privadas, diseñadas para permitir el

    escalamiento, es decir, ser capaz de manejar un gran número de usuarios y

    transacciones a través del tiempo, a partir de un grupo mínimo de usuarios y

    desarrolladores pioneros y soportar sin que se sature el sistema hasta llegar a la

    adopción masiva de usuarios, de aplicaciones descentralizadas. EOSIO también

    facilita el uso de cuentas, autentificación, bases de datos, comunicación asíncrona y

    programación usando múltiples núcleos de CPU (Block.one, 2018).

    2.3.1 Lenguaje de programación para EOSIO

    Las aplicaciones en la cadena de bloques del software EOSIO se ejecutan utilizando

    WebAssembly (WASM), un estándar web apoyado por Google, Microsoft y Apple. Al

    momento, la herramienta más completa para la construcción de aplicaciones que

    compilen a WASM es el compilador de C/C++ proporcionado por EOSIO, y aunque

    existen herramientas de terceros que permiten programar en otros lenguajes como

    Rust, Python y Solidity, el rendimiento que estos ofrecen es inferior (Block.one, 2018).

    2.3.2 Sistemas operativos

    EOSIO proporciona soporte para la ejecución de su cadena de bloques en los

    siguientes sistemas operativos:

    • Amazon 2017.09 y superior

    • Centos 7

    • Fedora 25 y superior

    • Mint 18

    • Ubuntu 16.04 y 18.04

    • MacOS Darwin 10.12 y superior

  • Capítulo 2. Marco teórico

    15

    Para el desarrollo de aplicaciones se proporciona documentación sólo para los

    siguientes sistemas operativos:

    • Mac OS

    • Ubuntu

    • Debian

    • CentOS

    • RedHad

    • Fedora

    El desarrollo de la aplicación y todos los contratos inteligentes necesarios para la tesis

    se desarrollarán en Ubuntu, esto debido al soporte con el que cuenta y a la facilidad

    de uso con respecto a otras distribuciones de Linux. Finalmente, cabe mencionar que

    Windows no está soportado por este software en ninguna de sus presentaciones, por

    lo cual se recomienda desarrollar sobre una máquina virtual (Block.one, 2018).

  • Capítulo 3. Desarrollo e implementación

    16

    Capítulo 3

    3 Desarrollo e implementación

    Este capítulo describe el diseño e implementación del contrato inteligente, el cliente

    web y su integración a través de las librerías eosjs y scatter-js.

    3.1 Requisitos del sistema

    De acuerdo a los objetivos planteados para el desarrollo de este trabajo, se determinó

    que la herramienta debe cumplir con las siguientes exigencias:

    • Una aplicación web que permita:

    1. El bosquejo de planos de planta.

    2. Manejo de sesiones.

    3. Almacenar los diseños realizados.

    • Para el inicio de sesión, se requerirá una cuenta creada en la cadena de bloques

    de EOS.

    • La autentificación de los usuarios se realizará a través del SDK JavaScript de

    Scatter.

    • Los datos serán guardados utilizando IPFS, en donde el hash asociado a cada

    archivo se almacenará en la cadena de bloques de EOS.

    • El usuario podrá eliminar o modificar los datos almacenados en la cadena de

    bloques de EOS.

    • La aplicación cobrará por el servicio de almacenamiento, en donde el pago será

    a través de un token creado específicamente para ello.

  • Capítulo 3. Desarrollo e implementación

    17

    3.2 Modelos de análisis de la aplicación web

    En este apartado se busca describir la aplicación web en términos de las actividades

    que permitirá realizar, para lo cual se define el modelo de casos de uso mostrado en

    la Figura 3.1. Un modelo de casos de uso, especifica un sistema en relación a las

    distintas formas que se utilizará (Weitzenfeld, 2005). En general, esta etapa se enfoca

    en lo que podrá hacer el sistema, sin especificar el cómo lo hará (Weitzenfeld &

    Guardati, 2008).

    Figura 3.1. Modelos de casos de uso de la aplicación.

    niciar sesión

    rear diseño

    Guardar diseño

    Mostrar diseño

    Eliminar diseño

    Modificar diseño

    Mostrar perfil

    uscribir usuario

    Eliminar

    diseños

    Eliminar

    suscripción

    illetera

    ase de datos

    egistros

    ase de datos

    iseños

    Modificar

    registros

    Usuario

    e tiende

    e tiende incluye

    incluye

    incluye

    incluye

    incluye

    incluye

    incluye

    incluye

    incluye

    ontrato inteligente

    oken

    incluye

    incluye

  • Capítulo 3. Desarrollo e implementación

    18

    Además de un diagrama que represente el modelo de casos de uso, es importante

    describir de forma te tual a cada actor y caso de uso que lo componen. Estas

    descripciones solo incluyen eventos visibles por el usuario. A continuación, se detallan

    los actores y casos de uso de la Figura 3.1, usando una versión modificada de las

    plantillas propuestas en (Weitzenfeld, 2005).

    3.2.1 Actores

    El modelo de casos de uso de la aplicación incluye a 5 actores, que son: Usuario,

    billetera, base de datos “ egistros”, base de datos “ iseños” y base de datos “ ontrato

    nteligente oken”.

    Usuario es el actor que interactúa con todos los casos de uso, sin embargo, en la

    Figura 3.1 solo se relaciona de manera e plícita con los casos de uso considerados

    principales.

    Actor Usuario.

    Caso de uso Iniciar sesión, crear diseño, guardar diseño, mostrar perfil, mostrar diseño, borrar diseño,

    modificar diseño, modificar registros (suscribir usuario, eliminar suscripción o eliminar

    diseños).

    Tipo Primario.

    Descripción Es el actor para el cual fue diseñada la aplicación. Incluye a cualquier individuo que utilice el

    sistema.

    Tabla 3.1. Actor Usuario.

    illetera es un actor secundario y su interacción se limita a un caso de uso específico.

    Actor Billetera.

    Casos de uso Iniciar sesión.

    Tipo Secundario.

    Descripción Es uno de los actores secundarios y representa a una bóveda que almacena las claves

    privadas de los usuarios fuera del contexto de la aplicación.

    Tabla 3.2. Actor Billetera.

    ase de datos egistros al igual que illetera, es un actor secundario y se relaciona

    únicamente con casos de uso específicos.

    Actor Base de datos Registros.

    Casos de uso Guardar diseño, mostrar perfil, eliminar diseño, borrar diseño, modificar registros.

    Tipo Secundario.

    Descripción Es un actor secundario y representa a la base de datos que almacena información de los

    usuarios, excluyendo los diseños.

    Tabla 3.3. Actor Base de datos Registros.

  • Capítulo 3. Desarrollo e implementación

    19

    ase de datos iseños es un actor secundario y se relaciona con casos de uso

    específicos.

    Actor Base de datos Diseños.

    Casos de uso Guardar diseño, mostrar diseño.

    Tipo Secundario.

    Descripción Es un actor secundario y representa a la base de datos que almacena únicamente los diseños

    guardados.

    Tabla 3.4. Actor Base de datos Diseños.

    Contrato inteligente Token

    Actor Contrato Inteligente Token.

    Casos de uso Suscribir usuario.

    Tipo Secundario.

    Descripción Gestiona el manejo de los tokens usados dentro de la aplicación.

    Tabla 3.5. Actor Contrato inteligente Token.

    3.2.2 Casos de uso

    e acuerdo a la Figura 3.1 se tienen 10 casos de uso, sin considerar el caso abstracto

    Modificar registros. No se e plica debido a que sus especificaciones se encuentran

    contenidas en los casos de uso concretos: uscribir usuario, Eliminar diseños y

    Eliminar suscripción. Los casos de uso se describen en las ablas 3.6-3.15.

    niciar sesión

    Caso de uso Iniciar sesión.

    Actores Usuario, Billetera.

    Tipo Inclusión.

    Resumen Es iniciado por el usuario y realiza la validación utilizando un software externo.

    Precondiciones Para este caso de uso el sistema asume que se tiene una cuenta en la plataforma de EOSIO,

    esto se realiza de forma ajena a la aplicación.

    Flujo principal El usuario accede al aparto y selecciona la opción iniciar sesión.

    Se despliega una ventana emergente de un software de billetera externo, en donde se puede

    elegir la cuenta con la cual se quiere iniciar sesión.

    Una vez iniciada la sesión se desbloquea la mayor parte de funcionalidades de la aplicación

    (excepto guardar plano).

    Finalmente se presenta al usuario el caso de uso Crear diseño.

    Excepciones E-1 Software externo no encontrado: cuando se quiera iniciar sesión, pero no se logre

    establecer comunicación con el software externo encargado de gestionar esta acción. Se

    pedirá iniciar el software correspondiente.

    Tabla 3.6. Caso de uso Iniciar sesión.

  • Capítulo 3. Desarrollo e implementación

    20

    Mostrar perfil

    Caso de uso Mostrar perfil.

    Actores Usuario, Base de datos Registros.

    Tipo Inclusión.

    Resumen Este caso de uso es iniciado por el usuario y muestra la información de la cuenta relativa a

    la aplicación. Además, permite acceder a diferentes funcionalidades de la aplicación.

    Precondiciones Se debe haber iniciado sesión previamente.

    Flujo principal Se obtiene el nombre de la cuenta, estado de la suscripción, el número de diseños guardados

    y el saldo de la base de datos registros, esta información se muestra en la interfaz de usuario.

    También se presentan los casos de uso de suscribir usuario, eliminar suscripción y eliminar

    diseños. En caso de tener diseños guardados se muestran también los casos de uso de

    modificar diseño, eliminar diseño y mostrar diseño.

    • Si se selecciona suscribir usuario, se traslada al caso de uso Suscribir usuario.

    • Si la opción seleccionada es eliminar suscripción, se pasa al caso de uso Eliminar

    suscripción.

    • Si se elige la opción eliminar diseños, se continua con el caso de uso Eliminar diseños.

    • Si la opción elegida es modificar diseño, se traslada al caso de uso Modificar diseño.

    • Si se selecciona eliminar diseño, se transfiere al caso de uso Eliminar diseño.

    • Si la opción seleccionada es mostrar diseño, se pasa al caso de uso Mostrar diseño.

    Excepciones Ninguna.

    Tabla 3.7. Caso de uso Mostrar perfil.

    rear diseño

    Caso de uso Crear diseño.

    Actores Usuario.

    Tipo Básico.

    Resumen Es iniciado por el usuario y permite crear un diseño a través de la aplicación.

    Precondiciones Ninguna.

    Flujo principal Se presenta a los usuarios las opciones para crear un diseño, en el cual se pueden incluir

    paredes, puertas, ventanas y sensores. Además, se incluye la opción de guardar el diseño,

    que en caso de elegirla se inicia el caso de uso Guardar diseño.

    Excepciones Ninguna.

    Tabla 3.8. Caso de uso Crear diseño.

    Guardar diseño

    Caso de uso Guardar diseño.

    Actores Usuario, Base de datos Diseños, Base de datos Registros.

    Tipo Inclusión, extensión.

    Resumen Es iniciado por el usuario y permite guardar diseños recién creados o previamente

    modificados.

    Precondiciones Se considera que se ha iniciado sesión y suscrito con anterioridad.

    Flujo principal Se presenta la opción para introducir un nombre y guardar el diseño. El usuario debe

    introducir un nombre antes de seleccionar guardar el diseño, una vez guardado el diseño se

    notifica al usuario que la operación ha sido exitosa.

    Excepciones E-1 Nombre del diseño inválido: el nombre introducido por el usuario no cumple con las

    condiciones necesarias.

    Tabla 3.9. Caso de uso Guardar diseño.

  • Capítulo 3. Desarrollo e implementación

    21

    Mostrar diseño

    Caso de uso Mostrar diseño.

    Actores Usuario, Base de datos Diseños.

    Tipo Básico.

    Resumen Es iniciado por el usuario y posibilita ver diseños previamente guardados.

    Precondiciones Se tiene que haber iniciado el caso de uso mostrar perfil y se considera que se ha guardado

    un diseño previamente.

    Flujo principal Esta opción se presenta si se tienen diseños previamente guardados. Su selección recupera

    el diseño correspondiente de la base de datos diseños y lo presenta en la interfaz de usuario.

    Excepciones E-1 Registro inválido: el diseño a recuperar no existe.

    Tabla 3.10. Caso de uso Mostrar diseño.

    Modificar diseño

    Caso de uso Modificar diseño.

    Actores Usuario.

    Tipo Básico.

    Resumen Es iniciado por el usuario y posibilita editar diseños previamente guardados. Para esto ofrece

    las mismas opciones de edición que el caso de uso Crear diseño.

    Precondiciones Considera que se ha ejecutado el caso de uso Mostrar diseño.

    Flujo principal Se presenta un diseño, ofreciendo las opciones de añadir o eliminar: puertas, ventanas,

    paredes y sensores.

    Adicionalmente se puede extender la actividad mediante el caso de uso Guardar diseño.

    Excepciones Ninguna.

    Tabla 3.11. Caso de uso Modificar diseño.

    Eliminar diseño

    Caso de uso Eliminar diseño.

    Actores Usuario, Base de datos Registros.

    Tipo Básico.

    Resumen Es iniciado por el usuario y posibilita eliminar diseños guardados con anterioridad.

    Precondiciones Se tiene que haber ejecutado el caso de uso Mostrar perfil y Guardar diseño con anticipación.

    Flujo principal Esta opción se presenta si se tienen diseños previamente guardados.

    Su selección borra de la Base de daros Registros, el registro correspondiente al plano elegido

    seleccionado para eliminar.

    Actualiza la lista de diseños mostrados en el perfil.

    Excepciones Ninguna.

    Tabla 3.12. Caso de uso Eliminar diseño.

  • Capítulo 3. Desarrollo e implementación

    22

    uscribir usuario

    Caso de uso Suscribir usuario.

    Actores Usuario, Base de datos de registros, Contrato Inteligente del token.

    Tipo Básico, concreto.

    Resumen Es iniciado por el usuario y ofrece la función de suscribir al internauta con sesión activa en la

    aplicación.

    Precondiciones Se considera que ya se ha ejecutado el caso de uso Mostrar perfil.

    Flujo principal Esta opción se presenta en la interfaz del caso de uso Mostrar perfil.

    Se solicita una cantidad de tokens con la cual se quiere suscribir.

    Si se selecciona la opción de suscribir usuario:

    • Se realiza la transferencia de tokens usando Contrato inteligente Token.

    • Los datos asociados son guardados en la Base de datos Registros.

    Actualiza el estado de la suscripción y saldo mostrado en el perfil.

    Se desbloquean todas las funcionalidades de la aplicación.

    Excepciones E-1 Tokens insuficientes: la cantidad de tokens que posee el usuario es menor a la que se

    introdujo para su suscripción.

    Tabla 3.13. Caso de uso Suscribir usuario.

    Eliminar suscripción

    Caso de uso Eliminar suscripción.

    Actores Usuario, Base de datos Registros.

    Tipo Básico, concreto.

    Resumen Es iniciado por el usuario y le permite terminar su suscripción.

    Precondiciones Se considera que ya se ha ejecutado el caso de uso Mostrar perfil y Suscribir usuario.

    Flujo principal Esta opción se presenta en la interfaz del caso de uso Mostrar perfil.

    Al seleccionar esta opción se busca y elimina de la Base de datos Registros, los datos

    correspondientes a la suscripción del usuario con sesión activa.

    Actualiza el estado de la suscripción mostrado en el perfil.

    Excepciones Ninguna.

    Tabla 3.14. Caso de uso Eliminar suscripción.

    Eliminar diseños

    Caso de uso Eliminar diseños.

    Actores Usuario, Base de datos Registros.

    Tipo Básico, concreto.

    Resumen Es iniciado por el usuario y le permite eliminar todos los diseños que haya guardado.

    Precondiciones Se considera que ya se ha ejecutado el caso de uso Mostrar perfil y Guardar diseño.

    Flujo principal Esta opción se presenta en la interfaz del caso de uso Mostrar perfil.

    Al seleccionar esta opción se buscan y eliminan todos los registros de diseños

    correspondientes al usuario con sesión activa.

    Actualiza la lista de diseños mostrados en el perfil (eliminando todos).

    Excepciones Ninguno.

    Tabla 3.15. Caso de uso Eliminar diseños.

    Lo que se buscó en este apartado fue definir desde un inicio las funcionalidades de la

    aplicación, y a su vez, sentar una base que sirva de guía para las siguientes etapas.

  • Capítulo 3. Desarrollo e implementación

    23

    Esto ayuda a reducir la complejidad de las actividades realizadas durante la fase de

    diseño, al ya tener identificados las acciones que la aplicación podrá realizar.

    3.3 Diseño de la aplicación web

    En esta sección, se parte del modelo de análisis para describir el diseño de la

    aplicación. Este a su vez, se divide en dos etapas, en la primera se aborda el contrato

    inteligente, definiendo el modelo de los datos y el comportamiento de sus funciones.

    La segunda etapa comprende la descripción del cliente web, en donde se especifica

    el diseño de las interfaces y de las funcionalidades desde la interfaz de usuario.

    3.3.1 Contrato inteligente

    ado el enfoque de esta tesis, se requiere que el backend de la aplicación web sea

    implementado a través de un contrato inteligente. Los actores con los que se interactúa

    son: Usuario, ase de datos egistros y ontrato nteligente oken. A continuación, se

    describe la estructura de los datos, así como las funciones que se implementan en el

    contrato de la aplicación.

    3.3.1.1 Definición de tipos de datos

    En esta sección se definen los tipos de datos a usar para almacenar la información en

    la ase de datos egistros, los cuales se describen a continuación:

    ipo usuario, compone a la tabla usuarios y contiene:

    • Nombre del usuario.

    • Vigencia de la suscripción.

    ipo plano, compone a la tabla planos y contiene:

    1. Nombre del usuario.

    2. Nombres de los planos.

    3. Hashes de los planos.

  • Capítulo 3. Desarrollo e implementación

    24

    3.3.1.2 Funciones

    A partir de los casos de uso obtenidos en el modelo de análisis, se especifican 5

    funciones para llevar a cabo dichas actividades. El número de funciones no

    corresponde al de casos de uso debido a que algunas actividades son realizadas sin

    requerir del módulo contrato inteligente. Además, las funciones eliminar plano y

    eliminar suscripción se describen conjuntamente, esto debido a que el proceso es

    similar en ambas y solo varían los datos; se decidió usar dos funciones para que sea

    posible e tender la funcionalidad de una sin afectar a la otra.

    3.3.1.2.1 Suscribir usuario

    Esta función es llamada por el actor ontrato nteligente oken una vez que se haya

    realizado el pago correspondiente a la suscripción. La secuencia de actividades que

    debe llevar a cabo la función, se ilustra en la Figura 3.2.

    Figura 3.2. Diagrama de flujo de suscribir usuario.

  • Capítulo 3. Desarrollo e implementación

    25

    3.3.1.2.2 Eliminar suscripción y eliminar planos

    Estas funciones son llamadas desde la interfaz del cliente web, reciben el nombre del

    usuario y los permisos de este. Los permisos son necesarios para evitar que los

    usuarios puedan eliminar registros que no le pertenecen. En la Figura 3.3 se muestra

    el proceso que siguen estas funciones, marcando con (a) y (b) los puntos en donde los

    datos con los que se trabaja cambian; eliminar suscripción ocupa registros de la tabla

    usuarios, mientras que eliminar diseños ocupa registros de la tabla planos.

    Figura 3.3. Diagrama de flujo de eliminar suscripción y eliminar planos.

    3.3.1.2.3 Guardar plano

    ado que esta función permite almacenar el tipo de dato plano, recibe como

    parámetros los elementos de este (ver sección 3.3.1.1), además de los permisos para

    tener acceso a los registros que hace referencia. La Figura 3.4 muestra los pasos que

    se siguen para guardar un plano, cabe de mencionar que esta función es llamada

    desde la interfaz del cliente web.

    olicitar permisos

    nicio

    El registro e iste

    btener registro

    Eliminar registro

    Fin

    e tienen los

    permisos

    i

    i

    No

    No

    (a)

    (b)

  • Capítulo 3. Desarrollo e implementación

    26

    Figura 3.4. Diagrama de flujo de guardar plano.

    olicitar permisos

    nicio

    El registro e iste

    btener registro usuario

    Verificar suscripción

    e tienen los

    permisos

    i

    i

    No

    No

    uscripción vigente No

    btener registro plano

    uscar plano recibido

    El plano e iste

    Actualizar plano Agregar plano

    El registro e iste

    rear nuevo registro

    Agregar plano

    Actualizar registro plano

    Fin

    i

    i No

    i No

  • Capítulo 3. Desarrollo e implementación

    27

    3.3.1.2.4 Eliminar plano

    A diferencia de eliminar planos, esta función no elimina un registro dentro de la base

    de datos, solo modifica su contenido. Es llamada desde la interfaz del cliente web, y

    además de los permisos para modificar el registro, requiere que se especifique el

    usuario y el nombre del plano a eliminar. Los pasos que se siguen para llevar a cabo

    esta función se muestran en la Figura 3.5.

    Figura 3.5. Diagrama de flujo de borrar plano.

    nicio

    El registro e iste

    btener registro plano

    uscar plano recibido

    El plano e iste

    Eliminar plano

    Fin

    olicitar permisos

    e tienen los

    permisos

    i

    No

    Actualizar registro plano

    No

    No

    i

    i

  • Capítulo 3. Desarrollo e implementación

    28

    3.3.2 Cliente web

    El cliente web es el medio por el cual los usuarios interactuarán con la aplicación,

    entonces, resulta preciso presentar el contenido de forma organizada, evitando incluir

    opciones innecesarias que puedan confundir al usuario. A continuación, se presentan

    los diseños de las interfaces de usuario y los diagramas de secuencia que muestran

    la interacción de los diferentes elementos de la aplicación.

    3.3.2.1 Interfaces de usuario

    El estilo que se adopta para el diseño de las interfaces, busca contener solo los

    elementos necesarios para acceder a todas las funciones de la aplicación. El contenido

    se presenta en 4 diferentes vistas, que son: vista de inicio, vista iniciar sesión, vista

    bosquejar y vista perfil.

    3.3.2.1.1 Vista de inicio

    La vista inicio, es la primera con la que se interactúa al abrir la aplicación. ontiene

    una barra de navegación que permite acceder a las interfaces de bosquejar, iniciar

    sesión y perfil; esta última solo es accesible cuando se tiene una sesión activa.

    ambién muestra el nombre de la aplicación y consejos para su uso. La Figura 3.6

    muestra el diseño de esta vista.

    Figura 3.6. Diseño de la interfaz inicio.

    Nombre de la aplicación niciar sesión osquejar

    Nombre de la aplicación

    nformación acerca del uso de la aplicación

  • Capítulo 3. Desarrollo e implementación

    29

    3.3.2.1.2 Vista de iniciar sesión

    Esta vista muestra los elementos necesarios para iniciar sesión, que básicamente es

    un botón. e manera adicional se muestra el logo de la aplicación. Además, al igual

    que la vista inicio, contiene una barra de navegación que permite acceder a las vistas

    inicio y bosquejar.

    Figura 3.7. Diseño de la interfaz iniciar sesión.

    3.3.2.1.3 Vista bosquejar

    Al igual que las dos vistas anteriores, también posee una barra de navegación, esta

    permite acceder a la interfaz inicio, al perfil del usuario (solo con sesión activa) y a la

    vista iniciar sesión al elegir terminar la sesión. En la Figura 3.8 se muestra esta vista.

    Figura 3.8. Diseño de la interfaz bosquejar.

    Nombre de la aplicación niciar sesión osquejar

    isE

    otón iniciar sesión

    Nombre de la aplicación errar sesiónPerfil osquejar

    otón pared otón puerta otón sensor otón ventana

    aja de te to para el nombre del diseño otón guardar diseño

    Lienzo para el trazado del diseño

  • Capítulo 3. Desarrollo e implementación

    30

    3.3.2.1.4 Vista perfil

    Esta vista es la que contiene más elementos, ya que además de la barra de navegación

    desde la cual se puede acceder a las interfaces de inicio, bosquejar e iniciar sesión (el

    seleccionar cerrar sesión); contiene cuatro secciones adicionales, la primera muestra

    datos relevantes de la cuenta, la segunda permite al usuario suscribirse, la tercera

    posibilita eliminar todos los diseños y eliminar la suscripción, la cuarta muestra los

    planos que se hayan guardado con anterioridad (en caso de e istir). Esta interfaz se

    presenta en la Figura 3.9.

    Figura 3.9. Diseño de la interfaz perfil.

    3.3.2.2 Diagramas de secuencia

    Los diagramas de secuencia están basados en los casos de uso del apartado 3.2.

    ada uno, representa el flujo de interacción que se necesita para llevar a cabo una

    actividad, sin embargo, algunos se basan de diagramas previos; se especifica de esta

    manera para evitar ser repetitivo y e tenderlos de forma innecesaria. abe mencionar

    que modificar diseño se omite ya que está contenido en crear diseño, además, eliminar

    suscripción, eliminar diseño y eliminar diseños se describen en un mismo apartado

    Nombre de la aplicación errar sesiónPerfil osquejar

    Nombre de la cuenta Estado de suscripción aldo de la cuentaNúmero de

    diseños guardados

    otón suscribir aja de te to de tokes a transferir

    ección suscribir usuario

    otón eliminar suscripción otón eliminar todos los diseños

    ección de borrar registros

    iseño 2 iseño 1

    ección diseños guardados

    iseño 2 iseño 2

  • Capítulo 3. Desarrollo e implementación

    31

    debido a que comparten características. A continuación, se presentan los diagramas

    de secuencia de la aplicación web.

    3.3.2.2.1 Iniciar sesión

    En la Figura 3.10 se presenta mediante un diagrama de secuencia el flujo de los

    eventos necesarios para iniciar sesión. No depende de otras acciones previas

    realizadas en el sistema, y comienza cuando el usuario ingresa a la vista principal de

    la aplicación, es decir la vista inicio. nvolucra al caso de uso del mismo nombre y a los

    actores usuario y billetera.

    Figura 3.10. Diagrama de secuencia iniciar sesión.

    3.3.2.2.2 Crear diseño

    El diagrama de secuencia mostrado en la Figura 3.11, al igual que el anterior, no

    requiere que se hayan realizado acciones previas sobre la aplicación. e parte desde

    la vista de inicio para mostrar el flujo completo que se sigue si un usuario utiliza por

    primera vez el sistema. entro del diagram