Registros Médicos Permisados Y Distribuidos A Través De Hyperledger .

1y ago
9 Views
2 Downloads
4.21 MB
108 Pages
Last View : 1m ago
Last Download : 3m ago
Upload by : Philip Renner
Transcription

UNIVERSIDAD CENTRAL DE VENEZUELAFACULTAD DE CIENCIASESCUELA DE COMPUTACIÓNRegistros Médicos Permisados y Distribuidosa través de Hyperledger Fabric eInterPlanetary FilesystemTrabajo Especial de Grado presentado ante la ilustreUniversidad Central de Venezuela porBr. Alexander YamminePara optar al título de Licenciado en ComputaciónTutores:Prof. Antonio RuedaProfa. Mercy OspinaCaracas, Octubre 2018

1

AgradecimientosLe agradezco a Dios por haberme dado la sabiduría y la fortaleza para que fuera posiblealcanzar este triunfo.A mis padres, mi padre Roberto Yammine, por apoyarme siempre y estar junto a mí cuandolo necesito, por ser un excelente padre, mi madre Jeanette Al Halabi, por ser la mejor madredel mundo, a mi hermana Lamia, por brindarme mucho apoyo.A la ilustre Universidad Central de Venezuela y la Facultad de Ciencias, por permitirmedesarrollar esta carrera universitaria. A todos los profesores, que me enseñaron y formarona lo largo de cada período académico. A mis tutores Antonio Rueda y Mercy Ospina, por sugran apoyo y paciencia. A mis jurados, Antonio Russoniello y Miguel Astor, por el interés,apoyo y crítica necesarios para la culminación de este trabajo.2

Universidad Central de Venezuela.Facultad de CienciasEscuela de ComputaciónRegistros Médicos Permisados y Distribuidos a través de Hyperledger Fabric e InterPlanetaryFilesystemAutor: Br. Alexander R. Yammine Al HalabiTutores: Prof. Antonio RuedaProfa. Mercy OspinaFecha: Octubre del 2018ResumenUn historial médico es una colección de información médica de un paciente, acumuladadurante un periodo de tiempo. El tener acceso a esta información en el momento oportuno hace unagran diferencia para el tratamiento de un paciente, especialmente en una situación de emergencia.Este historial típicamente se almacena en medios impresos, exigiendo al médico que tenga espaciodonde almacenarlos y pudiendo deteriorarse con el transcurso del tiempo, y aunque la digitalizaciónes una posible solución puede generar problemas de accesos no autorizados y/o alteración de lainformación, además de generar registros digitales de tamaño considerable que pudieran sercomplejos de manejar. Utilizando la tecnología de cadena de bloques, llamada Blockchain, podemosalmacenar registros médicos donde es importante por un lado su disponibilidad inmediata, como es elcaso del tipo de sangre o alergias, información de primera mano en caso de emergencias, y por otrolado su inmutabilidad. Como aplicación de blockchain, se utiliza Hyperledger Fabric, proyecto decódigo abierto para blockchain empresariales, la cual garantiza seguridad y control de acceso. Parael almacenamiento y transferencia de registros médicos de gran tamaño, como lo es la imagenologíamédica, se utiliza InterPlanetary Filesystem (IPFS) a consecuencia de los problemas de escalabilidadde la blockchain para el almacenamiento de archivos de gran tamaño. El objetivo de este trabajo esdesarrollar una interfaz de programación de aplicaciones que sirva de intermediario entre ambasaplicaciones para crear, modificar y acceder al historial médico de un paciente, limitando el accesodel mismo por los profesionales tratantes del paciente, utilizando una metodología de desarrollobasado en componentes.Palabras Claves: Blockchain, InterPlanetary Filesystem, Historial médico, Registros médicos, API3

Índice de contenidoINTRODUCCIÓN6CAPÍTULO 1: PROBLEMA DE INVESTIGACIÓN71.1 Planteamiento del problema71.2 Objetivo general81.3 Objetivos específicos81.4 Justificación81.5 Alcance9CAPÍTULO 2: MARCO TEÓRICO2.1 Interplanetary Filesystem10102.1.1 Características de IPFS102.1.2 Diseño de IPFS132.2 Cadena de Bloques162.2.1 Transacciones y firmas digitales162.2.2 Consenso de nodos172.2.3 Incentivo182.2.4 Contratos Inteligentes192.3 Hyperledger Fabric202.3.1 Contratos Inteligentes212.3.2 Seguridad212.3.3 Arquitectura del sistema222.3.3.1 Transacciones222.3.3.2 Estructura de Datos222.3.3.3 Tipos de nodos232.3.3.4 Prueba de consenso242.3.4 Hyperledger Explorer2.4 Hyperledger Composer24252.4.1 Características de Composer252.4.2 Composer Rest Server272.5 Apache Kafka282.5.1 Características282.5.2 Arquitectura del sistema282.6 Restful292.7 Privacidad de la información médica de un paciente312.7.1 Ley de ejercicio de medicina en Venezuela312.7.2 HIPAA32CAPÍTULO 3: MARCO METODOLÓGICO334

3.1 Ingeniería de software basada en componentes333.2 Componentes y modelos de componentes343.2.1 Características de un componente343.2.2 Modelos de componentes353.3 Composición de componentes37CAPÍTULO 4: MARCO APLICATIVO384.1 Definición de los requerimientos384.2 Diseño técnico384.2.1 Diagrama de componentes444.2.2 Diagrama de Secuencia454.3 Definición de las herramientas524.3.1 Node.js524.3.2 Node package manager (npm)524.3.3 Hyperledger Composer CLI524.3.4 Hyperledger Explorer534.3.4 Hyperledger Composer Playground534.3.5 Postman534.4 Entorno de trabajo534.5 Desarrollo del componente544.5.1 Interfaz HTTP554.5.2 Resultados594.5.2.1 Administrador594.5.2.2 Perfil Personal634.5.2.3 Perfil Público664.5.2.4 Historial Médico694.5.2.5 Paciente724.5.2.6 Profesional754.5.2.7 Transacciones774.6 Pruebas Unitarias82ANEXO A - DIAGRAMAS DE SECUENCIA85ANEXO B - CONFIGURACIÓN DEL SERVICIO96B1. Instalar InterPlanetary Filesystem96B2. Instalar Hyperledger Fabric97B3. Instalar Hyperledger Composer99B3. Instalar la API100CONCLUSIONES102TRABAJO A FUTURO103BIBLIOGRAFÍA1045

INTRODUCCIÓNEl historial médico es una colección de documentos clínicos que proporcionainformación de la evolución del paciente (Ley 41/2002, 2018), esta colección permite elmonitoreo y seguimiento de parte de un médico tratante, para el cual su obtención de formainmediata resulta esencial. Además de proveer disponibilidad de la información, se debegarantizar la confidencialidad de los datos del paciente permitiendo su acceso solo por partede entes permisados, como por ejemplo, su médico tratante.Gracias a la digitalización de estos registros es necesario utilizar mecanismos deprotección de acceso a la información, ya que esta se va a encontrar distribuida en la red.Una posible solución a este problema está en la tecnología de cadena de bloquespermisiva. En una blockchain permisiva es posible seleccionar a los usuarios que puedantener acceso a la información dentro de la red y las operaciones que puedan realizar sobreellas, por ejemplo, la lectura y la escritura. Además, en las blockchain permisivas se registrael historial de todas las operaciones de modificación del registro que se han realizado en lared.El presente documento se encuentra estructurado en cuatro capítulos de lasiguiente manera: Capítulo 1, se abarca el problema de investigación que nos llevó aelaborar este trabajo especial de grado y los objetivos para resolverlo. En el capítulo 2,marco teórico, donde se define cada uno de los conceptos, tecnologías y herramientasinvolucrados con el proyecto. En el capítulo 3, la metodología utilizada, buscando lasolución utilizando el desarrollo de software basado en componentes y finalmente en elCapítulo 4, el desarrollo de la aplicación, donde se describe con mayor detalle la aplicaciónque se desarrolló en el presente trabajo especial de grado.6

CAPÍTULO 1: PROBLEMA DE INVESTIGACIÓNEn este capítulo se plantea el problema a solventar y se explicará el contextoactual. También, se especifican los objetivos, la justificación y el alcance definidos para estainvestigación.1.1Planteamiento del problemaAnualmente se generan millones de registros médicos, esta información típicamentese almacena en medios impresos, exigiendo al médico que tenga espacio dondealmacenarlos y pudiendo deteriorarse estos con el transcurso del tiempo (Estrada, 2017). Eluso regular de los registros médicos por distintos actores hace que se conviertan enredundantes y posiblemente conflictivos; por ejemplo, si el paciente cambia de médicotratante el registro vuelve a generarse o se tiene que emitir una copia del registroalmacenado.Los registros médicos digitales son una solución al problema de deterioro, debido ala característica de copia “perfecta” que se logra en las reproducciones digitales. A su vez ladigitalización de los documentos permite la visualización y procesamiento de los datos y suacceso por parte de médicos tratantes. Sin embargo, la característica de copia perfecta delos registros digitales facilita su uso y propagación no autorizado, aspecto que resultaproblemático debido a la discrecionalidad con la que deben manejarse los registros médicos(Gutiérrez, Núñez, Aguirre, y Delgado, 2014). La tecnología de contratos inteligentes enblockchain es una solución propuesta al problema de manejo discrecional de los datos enregistros médicos digitales. En esencia, la tecnología blockchain corresponde a una lista detransacciones enlazadas por hashing, que no pueden ser modificadas sin dejar registro delcambio. Los contratos inteligentes son programas que se ejecutan en la blockchain,igualmente dejando registro de su actividad (Tar, 2017). A través de los contratosinteligentes se puede lograr un acceso permisado y discrecional de información médicasensible. Sin embargo, para el almacenamiento de estos registros digitales de tamañoconsiderable, como la imagenología médica, es necesario utilizar métodos distintos queblockchain. Aunque blockchain ha demostrado ser una tecnología que garantiza laintegridad y seguridad en la información, al permitir que la blockchain almacene archivos degran tamaño, se aumenta la latencia de los nodos que entran a la red y se reduce lavelocidad en que se procesan las transacciones (Croman et al., 2016). Se han planteado7

ideas complementarias y superiores a la blockchain para almacenar archivos de grantamaño en la cadena de bloques, entre estos métodos destaca el InterPlanetary File System(IPFS). IPFS es un sistema similar al protocolo Bittorrent, ideado para la transferencia deinformación de tamaño considerable, como lo son los registros médicos (Benet, 2017).1.2Objetivo generalDesarrollar una aplicación de registros médicos distribuidos utilizando blockchain deHyperledger Fabric e Interplanetary File System (IPFS) c omo red de entrega de contenidospara garantizar la disponibilidad de la información y su acceso permisado.1.3Objetivos específicos1. Definir los requerimientos para el desarrollo de la aplicación2. Implementar un sistema para la obtención de registros médicos en las plataformasde IPFS3. Implementar un sistema para la asignación de permisos de acceso a los registrosmédicos en Hyperledger Fabric4. Desarrollar una interfaz de programación de aplicaciones para el acceso a laplataforma de IPFS y Hyperledger Fabric5. Realizar pruebas unitarias y funcionales de la API1.4JustificaciónLos sistemas peer-to-peer ( P2P ) minimizan los puntos de fallo a través de laredundancia, es decir, si un nodo se encuentra caído, el sistema puede seguir prestandosus servicios, este tipo de sistemas no utiliza el esquema clásico cliente-servidor.Para una red de hospitales, institutos o entes dedicados a prestar servicios médicoses muy importante tener acceso a la información más reciente de un paciente, dado que enun momento de emergencia (en el cual se pueden presentar complicaciones adicionalescomo la inconsciencia o la ignorancia del paciente), un profesional pueda tener acceso a lainformación médica del paciente que se haya hecho previamente, así sea en alguna entidadmédica distinta a donde se presenta la emergencia. En esta red, las entidades tendríanacceso a toda la información pública de un paciente, como su tipo de sangre o las alergias y8

manteniendo el acceso permisado a la información más delicada, como exámenes desangre, resultados de pruebas de VIH o radiografías.Esta información médica tiene la garantía de ser legítima, actualizada y válida, yaque utilizando tecnologías como blockchain e IPFS se almacenan los registros de todas lasmodificaciones que se realicen sobre la información médica.1.5AlcanceEn este trabajo se desarrolla una interfaz de programación de aplicaciones(application programming interface, API ) que sirve de intermediario entre el software de unaentidad médica y los sistemas de IPFS y la blockchain. Esta aplicación tiene la funcionalidadde comunicarse con la red de IPFS al momento de introducir o extraer archivos y decomunicarse con el contrato inteligente instanciado en la blockchain de Hyperledger Fabric,para esto es necesario tener configurada una red de nodos de Hyperledger Fabric e IPFS.9

CAPÍTULO 2: MARCO TEÓRICOEn este capítulo se explicarán los conceptos, las herramientas y las tecnologías quese utilizaron para el desarrollo de este proyecto. Primero se explicará qué es InterPlanetaryFilesystem, cómo funciona y su diseño. De segundo, se introducirá la tecnología de cadenade bloques llamada Blockchain para dar paso a la explicación de Hyperledger Fabric, sudiseño y características. De tercero, se explicará la herramienta llamada HyperledgerComposer, utilizada para creación y administración de Contratos inteligentes enHyperledger Fabric. Seguidamente, se introduce la definición de una API Rest y por último,se mencionan y describen las leyes de privacidad de un paciente, tanto la HIPAA como laLey de ejercicio de Medicina en Venezuela.2.1Interplanetary FilesystemInterPlanetary File System ( IPFS ) es un sistema distribuido de archivos peer to peer. IPFS proporciona un modelo direccionado de almacenamiento de bloques con hiperenlacesdirigidos al contenido de alto rendimiento. Esto forma un Merkle Directed Acyclic Graph(grafo acíclico dirigido) generalizado, que es una estructura de datos sobre la cual sepueden construir sistemas de archivos versionados, cadenas de bloques e incluso una webpermanente, en la que toda versión del contenido que alguna vez haya sido cargadopersista. IPFS combina una tabla hash distribuida, un sistema incentivado de intercambio debloques y un espacio de nombres autocertificados. IPFS es una red robusta, carente depuntos únicos de falla y los nodos presentes en ella no necesitan confiar entre sí (Benet,2017)2.1.1 Características de IPFSTablas de Hash DistribuidasUn tabla Hash es una estructura de datos que almacena pares de clave y valor quepermite consultar el valor asociado a cada clave. Una Distributed Hash Table e s unaextensión multinodo a las tablas hash que puede determinar el nodo responsable dealmacenar los datos asociados a una clave dada. Cada nodo mantiene información (porejemplo, la dirección IP) de un pequeño número de nodos (“vecinos”) en el sistema,10

formando una red superpuesta con mensajes de enrutamiento para almacenar yrecuperar claves, (Balakrishnan, Kaahoek, Karger, Morris, y Stoica, 2003) como semuestra en la figura #1 .Figura #1 - Los archivos están distribuidos en la red según el hash de su contenido.Fuente: Elaboración propiaIntercambio de bloques - BittorrentBitTorrent es un sistema de intercambio de archivos entre pares que coordina redesde nodos para cooperar entre sí y lograr la distribución de fragmentos de archivos. Lascaracterísticas más importantes de BitTorrent que se tomaron en cuenta en el desarrollo deIPFS son: El protocolo de intercambio de datos de BitTorrent, este utiliza una estrategiatit-for-tat que recompensa a los nodos que se cooperan entre sí y castiga a losnodos que solo descarguen de los demás. Los pares de BitTorrent rastrean la disponibilidad del archivo, priorizando el envío depiezas más raras primero, dejando las más comunes al final. Con esta estrategia, sereduce la probabilidad de que se pierdan fragmentos del archivo (Cohen, 2003).Sistema de Control de Versiones - GitUn Sistema de Control de Versiones proporciona registros sobre los cambios que serealicen sobre un archivo o un conjunto de archivos a lo largo del tiempo. El sistema decontrol de versiones Git proporciona un poderoso modelo del árbol Merkle DAG que captura11

los cambios en un árbol del sistema de archivos de una manera amigable y distribuida(Benet, 2017). Los objetos inmutables representan Archivos (blob), Directorios (árbol) y Cambios(commit). Los objetos están dirigidos al contenido, mediante el hash criptográfico de suscontenidos. Los enlaces a otros objetos están incrustados, formando un Merkle DAG. Estoproporciona muchas propiedades útiles de integridad y flujo de trabajo. La mayoría de los metadatos de control de versiones (ramas, etiquetas, etc.) sonsimplemente referencias de punteros y, por lo tanto, de bajo costo para crear yactualizar. Los cambios de versión solo actualizan referencias o agregan objetos. Distribuir cambios de versiones de archivos a otros usuarios es simplementetransferir objetos y actualizar referencias remotas (Benet, 2017)Sistema de archivos autocertificados - SFSEl Self-Certifying File System ( SFS ) es un sistema de archivos de red seguro ydescentralizado para Internet. SFS proporciona un espacio de nombres para todos losarchivos del mundo. Los usuarios puede acceder a sus archivos almacenados del nodo quemás confían y que pueda estar en cualquier parte del mundo, además con saber el nombredel archivo, un usuario podrá compartirlo con cualquier otro. SFS introdujo una técnica paraconstruir sistemas de archivos autocertificados, direccionando los sistemas de archivosremotos usando el siguiente esquema:/sfs/Location:HostIDLocation: Información que le dice al cliente donde buscar el servidor del sistema dearchivos, ésta puede ser una dirección IP.HostID: I nformación que le dice al cliente cómo certificar un canal seguro para ese servidor.Para lograr una comunicación segura, todos los servidores SFS tienen una clavepública. El HostID es un hash criptográfico de la clave pública con el campo Location . ElHostID permite a los clientes preguntar a los servidores por sus claves públicas y verificar laautenticidad de la respuesta. Conocer la clave pública de un servidor permite que un clientese comunique de forma segura con ella. Por lo tanto, el nombre de un sistema de archivosSFS certifica su servidor (Mazieres y Kaashoek, 2000).12

2.1.2 Diseño de IPFSIPFS es un sistema peer-to-peer que une todas las ideas anteriormente mencionadas. IPFSpresenta una nueva plataforma para desplegar aplicaciones web, y un nuevo sistema paradistribuir y versionar datos de cualquier tamaño. Los nodos de IPFS almacenan objetos enel almacenamiento local y se conectan entre sí con otros nodos de la red para transferirestos objetos, dichos objetos representan archivos y otras estructuras de datos.El protocolo IPFS se divide en una pila de sub-protocolos responsables de diferentesfuncionalidades:IdentidadesLos nodos son identificados por su id, que es el hash de su clave pública. Los nodosalmacenan su ID, clave pública y clave privada encriptadas por una firma digital, como semuestra en el Código #1 en lenguaje Go.type NodeId Multihash // El formato multihash almacena un encabezadocorto que especifica la función hash utilizada y la longitud en bytes delhashtype Multihash []bytetype PublicKey []bytetype PrivateKey []bytetype Node struct {NodeId NodeIDPubKey PublicKeyPriKey PrivateKey}// Algoritmo para generar el ID del nododifficulty integer parameter n Node{}do {n.PubKey, n.PrivKey PKI.genKeyPair()n.NodeId hash(n.PubKey)p count preceding zero bits(hash(n.NodeId))} while (p difficulty)Código #1 - Algoritmo para la generación de la clave pública (Mazieres y Kaashoek, 2000)Para que haya una conexión exitosa entre pares, estos tienen que verificar su identidad,ambos pares intercambian sus claves públicas para comprobar su validez. Esteprocedimiento solo se aplica al conectarse por primera vez (Benet, 2017).13

EnrutadorLos nodos de IPFS necesitan un sistema de enrutamiento para encontrar lasdirecciones de los demás nodos en la red y para encontrar a los demás nodos que puedentener los objetos que necesitemos. IPFS logra esto usando un DHT basado en S/Kademlia yCoral. Los valores pequeños (igual o inferior a 1 KB) se almacenan directamente en el DHT.Para valores más grandes, el DHT almacena referencias, que son los Node IDs de paresque pueden engarce de almacenar el bloque (Benet, 2017).Intercambio de Bloques - Protocolo BitswapEn IPFS, la distribución de datos ocurre intercambiando bloques con sus paresutilizando un protocolo inspirado en BitTorrent: BitSwap. Los nodos de Bitswap buscanobtener un conjunto de bloques (objetos que se quiere descargar) y tienen otro conjunto debloques que ofrecer (objetos que se quiere compartir). Bitswap opera como un mercadodonde los nodos pueden obtener bloques de archivos que necesiten, independientemente sino se tratase del mismo archivo, es decir pueden estar intercambiando bloques de distintosarchivos.En muchos casos, la distribución de bloques no es complementaria, es decir que unnodo puede no tener un bloque que otro quiera. Para solucionar este caso, cuando un nodono tenga piezas que le hayan sido solicitadas, comienza a buscar las piezas que sus paresnecesiten, motivando a los nodos a difundir piezas raras, incluso si no están interesados enellas (Benet, 2017).Object Merkle DAGDHT y Bitswap hacen que IPFS formen un robusto y rápido sistema Peer-to-Peerpara la distribución y el almacenamiento de bloques. Adicionalmente, IPFS utiliza unaestructura de datos llamada Merkle DAG , un grafo acíclico dirigido en donde los enlacesentre objetos son hashes criptográficos de los objetivos.Esta es una generalización de la estructura de datos de Git. Merkle DAG proporciona aIPFS muchas propiedades bastante útiles, como:14

Direccionamiento de contenidos: Todo el contenido se identifica de manera única porsu multihash checksum , incluyendo los enlaces. Resistencia a la manipulación: Todo contenido puede ser verificado con elchecksum. Si un contenido es modificado o se corrompe, IPFS lo sabrá. Sin duplicados: Al igual que Bittorrent, los objetos están identificado por su contenidoy no por su nombre, es decir, si varios objetos tienen el mismo contenido, solo sealmacena una vez.El Merkle DAG de IPFS es una forma flexible de almacenar datos. Los objetos de IPFSpueden navegarse con una API añadiendo una ruta, estas rutas funcionan de la mismamanera que lo hace tradicionalmente UNIX y la web (Benet, 2017). La arquitectura deenlace del Merkle DAG permiten navegación única, por ejemplo una ruta completa en IPFSpuede ser de la siguiente forma:/ipfs/ hash-del-objeto / nombre-de-la-ruta-del-objeto foo.txtArchivosIPFS define un conjunto de objetos para modelar un sistema de archivos versionadosobre Merkle DAG (Benet, 2017). Este modelo de objeto es similar al de Git: Bloque: un bloque de datos de tamaño variable. Lista: una colección de bloques u otras listas. Árbol: una colección de bloques, listas u otros árboles. Commit: registra los cambios de versiones de un árbol.Con IPFS es posible resolver el problema de escalabilidad de la cadena de bloquesutilizandola para la transferencia y almacenamiento de archivos de gran tamaño. En elsiguiente punto se explicará que es una Blockchain, cómo está diseñada y sus principalescaracterísticas que son importantes para el desarrollo de este trabajo.15

2.2Cadena de BloquesUna cadena de bloques (conocida como Blockchain) es una base de datosdistribuida, que almacena registros de transacciones realizadas. La cadena está compuestapor bloques enlazados, cuando se genera un nuevo bloque, este se enlaza al anterior. Estesistema está diseñado para que no se pueda realizar ninguna modificación sin traza, ya quecada bloque contiene almacenado el hash del bloque anterior, ya de querer modificaralguna transacción, esta modificación se verá reflejada en los bloques posteriores. Asímismo, se garantiza integridad de información entre los pares con un sistema de broadcast:cuando se realiza una transacción, esta es enviada a todos los nodos en la red para quesea registrada en todos (Champagne, 2014, p.11).2.2.1 Transacciones y firmas digitalesUna firma digital es un mecanismo por el cual el receptor pueda verificar el remitentedel mensaje. Para que esto sea posible, se utiliza un cifrado asimétrico basado en elalgoritmo RSA, que genera una clave pública y una clave privada. La clave privada esconfidencial, y se utiliza para cifrar el mensaje, mientras que la clave pública es utilizadapara descifrar el mensaje (Stallings, 2005, p.256).Un ejemplo de una firma digital asimétrica:1. Carlos redacta un correo para María.2. Carlos firma digitalmente el mensaje con su clave privada .3. Carlos envía el mensaje firmado digitalmente a María a través de internet, porcorreo electrónico.4. María recibe el mensaje firmado digitalmente y comprueba su autenticidadusando la clave pública de Carlos para descifrar el correo.5. María ya puede leer el mensaje con total seguridad ya que ha sido Carlos elque escribió el correo.En la blockchain de Bitcoin, las transacciones se generan cuando el dueño de unamoneda desea transferirlo a otra persona, donde el dueño tendrá que firmar un mensajeque está compuesto por la clave pública del destinatario y el hash de la transacción anterior.El sistema puede comprobar que fué el dueño de la moneda quien firmó el mensajeutilizando su clave pública (Nakamoto, 2009).16

2.2.2 Consenso de nodosEn las Blockchain públicas como Bitcoin, cualquier nodo puede entrar a la red yparticipar. Para decidir de forma segura quién será el nodo en agregar el siguiente bloque ala cadena, se tiene que pasar por un consenso para garantizar que todos los nodos en lared estén de acuerdo con el nuevo bloque que se va a agregar en la cadena, con esto sepuede evitar comportamientos indeseados por si algún nodo desea dañar la cadena. Losdos algoritmos más utilizados para el consenso de nodos, son la prueba de trabajo ( PoW ) yla prueba de participación (PoS ).Prueba de TrabajoPara este sistema se requiere que cada nodo realice un tipo trabajo de alto costo yque pueda ser verificado fácilmente. La prueba de trabajo es utilizada en la cadena debloques de Bitcoin. Lo que se busca es que cada nodo encuentre un hash que cumpla unrequisito, y es que este hash tenga una cierta cantidad de ceros a su izquierda, estacantidad de ceros viene dada por la dificultad del algoritmo y se ajusta cada 2016 bloquespara que el hash pueda ser resuelto en aproximadamente 9 minutos. El proceso de crearnuevos bloques a la cadena utilizando este algoritmo de consenso es llamado “minería”. Sien un mismo instante, se generan dos bloques, los nodos tendrán que almacenar elsegundo bloque que les llegue, el sistema continuará normalmente hasta que llegue elbloque del “desempate”, es decir, el siguiente bloque definirá cuál de los dos anterioresbloques se quedará en la cadena, con esto se crea la premisa de “la cadena más larga, esla correcta”.La prueba de trabajo también es considerada un sistema de votación determinandouna nueva representación en cuanto a decisión por mayoría, si la mayoría estuviese basadopor un voto por IP, podría ser alterada por un ente que genere varias IPs. En la prueba detrabajo se puede considerar un CPU como equivalente a un voto. Ya que la decisión de lamayoría, es representada por la cadena más larga. Si el mayor poder de cómputo escontrolado por nodos honestos, la cadena crecerá más rápido y superará en extensión acualquier cadena que esté compitiendo con ella. Como se mencionó anteriormente, parapoder modificar un bloque anterior, un atacante tendrá que rehacer la prueba de trabajo delbloque y los posteriores a ese hasta superar la cadena formada por los nodos honestos. Laprobabilidad para que esto ocurra, se reduce exponencialmente por cada nuevo bloquegenerado en la cadena honesta (Nakamoto, 2009).17

Prueba de ParticipaciónPara la prueba de participación se aplica para cadenas de bloques que tengan unacriptomoneda de forma nativa, el algoritmo selecciona pseudo-aleatoriamente a un nodo(validador) basado en la cantidad de monedas que tenga, mientras más monedas tengaretenido el nodo, mayor es la probabilidad de que sea seleccionado para agregar elsiguiente bloque a la cadena (Ray, 2015).Existen muchas variantes de este algoritmo, dos de ellas son la prueba de depósitoy prueba de participación híbrida usada por Peercoin. Para el consenso de la prueba de depósito, el algoritmo seleccionará a un validadorcada intervalo de tiempo (Por ejemplo, cada 10 segundos), uno de los factores que se tomaen cuenta antes de escoger al validador es la cantidad de monedas que tenga congelado enel momento, estas monedas congeladas están bloqueadas y no pueden ser usadas hastaque se generen cierta cantidad de bloques. Hay variantes de este algoritmo que aplica untiempo de vejez, donde un depósito realizado hace un largo periodo de tiempo puede notener el mismo impacto que los depósitos recientes. Por ejemplo, un tiempo de vejez dondedespués de 90 días, el depósito no tendrá validez (Narayanan, Bonneau, Felten, Miller yGoldfeder, 2016).La prueba de participación usada por Peercoin , es una mezcla de la prueba departicipación y la prueba de trabajo. Donde la complejidad del algoritmo de descifrado delhash, es inversamente proporcional a la cantidad de monedas que tenga retenido elvalidador. Es decir que mientras más monedas tenga un validador, más fácil será encontrarel hash vencedor de la prueba de trabajo, por ejemplo, si con 200 monedas pudieseencontrarse el hash en 2 días, con 400 monedas pudiese encontrarse en 1 día (King yNadal, 2012).2.2.3 IncentivoUna de las características más importantes en una blockchain pública, es elbeneficio que obtienen los nodos al momento de generar un nuevo bloque para la cadena.Este incentivo es comúnmente la generación de una nueva moneda y la obtención lacomisión de las transacciones almacenadas en el nuevo bloque. Esto significa un incentivoa los nodos para que dediquen recursos de cómputo a la validación de transacciones y elmantenimiento de la red.18

Un atacante pudiese reunir suficiente potencia de CPU pa

2.3 Hyperledger Fabric 20 2.3.1 Contratos Inteligentes 21 2.3.2 Seguridad 21 2.3.3 Arquitectura del sistema 22 2.3.3.1 Transacciones 22 2.3.3.2 Estructura de Datos 22 2.3.3.3 Tipos de nodos 23 2.3.3.4 Prueba de consenso 24 2.3.4 Hyperledger Explorer 24 2.4 Hyperledger Composer 25 2.4.1 Características de Composer 25 2.4.2 Composer Rest Server 27

Related Documents:

Grados del Curso de los Registros Akáshicos Registros Akáshicos -Primer Nivel Los Registros Akáshicos son los registros del viaje del Alma, a través del espacio-tiempo material e inmaterial. Son la mente fotográfica de Dios. Ya que las impresiones espirituales se graban a

Lectura de Registros Akashicos ! Qué son los Registros Akashicos?!! Los Registros Akáshicos son un tema controvertido, muchas personas lo consideran un sistema inteligente y auto-consciente, creados por la energía del “TODO” para uso de todos aquellos que se encuentran en estos mo

145.996 registros procedentes del Putumayo 28 publicadores Del total de registros, solo el 18% corresponden a especímenespreservados en colecciones biológicas. Del total de registros el 86% corresponden al reino animal y el 6% a plantas . 118.840 registros - 852 especies . Nombre común Nombre científico Libro Rojo IUCN Gallinteas Tinamus .

El estudio se sustenta en la Teoría de los Registros de Representación Semiótica de Duval (1999), quien afirma que es imperativo emplear gran diversidad de registros ya que considera que la coordinación de estos registros es fundamental para la aprehensión de los conceptos matemáticos.

REGISTROS AKASHICOS NIVEL 1 -LIBRO DE EJERCICIOS-P á g i n a 2 392 NOTA ACLARATORIA Este libro se realizo en el curso de REGISTROS AKASHICOS NIVEL 1, del grupo ASHRAM DEL GRIAL de la maestra LUMARA SIERRA creadora del grupo.

comenzó a enseñar cómo acceder a los Registros propios y ajenos. A finales de los 70 Juan volvió a México donde vivió el resto de sus días. El camino de Transformación con los Registros Akáshicos En este primer curso aprendes a conectar con el Amor, gracias a poder acced

FORMACIÓN COMPLETA EN REGISTROS AKASHICOS Y CONEXIÓN INTERIOR VOLVIENDO A LA ESENCIA OBJETIVO: El objetivo de esta formación es que a finalizar la misma el alumno haya aprendido a: Acceder a los Registros Akáshicos (entrar al libro de la vida dond

The protein that is formed? Gene Expression DNA has many regions, some of them are coding regions – the genes which code for proteins, and other regions are non-coding regions which can switch the genes on or off and therefore determine if they will be expressed (if their protein will be produced) or not. Your cells have all of your genes but your cells don’t need to express all of these .