Este documento introduce Hyperledger, un proyecto de código abierto que incluye varios frameworks para blockchain. Explica que Hyperledger no es una sola blockchain sino una incubadora de múltiples proyectos. También describe algunas herramientas de Hyperledger como Explorer, Composer, Fabric y Sawtooth, los cuales proveen capacidades como despliegue, modelado, ejecución de contratos inteligentes y más. Finalmente, brinda ejemplos de cómo estas herramientas pueden usarse para casos de uso reales.
1. Introducción a Hyperledger
Introducción a
Hyperledger
VÍCTOR MARTÍNEZ BAHILLO (@VTHOT4)
25/02/2018 1
“La inteligencia consiste no sólo en el conocimiento, sino también en
la destreza de aplicar los conocimientos en la práctica.”
Aristóteles
2. Introducción a Hyperledger
¿Qué vamos a ver?
25/02/2018 2
PROYECTO HYPERLEDGER
Definición.
Arquitectura y components.
Beneficios.
INTRODUCCIÓN
Vision de arquitectura.
Definición. Privada vs Pública.
¿Necesitamos implementar
blockchain?
HERRAMIENTAS
HYPERLEDGER
Explorer, Composer, Quilt, Cello
HYPERLEDGER
SAWTOOTH
HYPERLEDGER
FABRIC
HYPERLEDGER IROHA
HYPERLEDGER BURROW
Lorem ipsum dolor sit amet, diam
donec neque nisl nibh, ante rutrum
dolor. Senectus urna justo, dis
tristique purus commodo at. Donec
nullam pede, non neque tortor sed.
HYPERLEDGER INDY
Lorem ipsum dolor sit amet, diam
donec neque nisl nibh, ante rutrum
dolor. Senectus urna justo, dis
tristique purus commodo at. Donec
nullam pede, non neque tortor sed.
SOME TITLE HERE
Lorem ipsum dolor sit amet, diam
donec neque nisl nibh, ante rutrum
dolor. Senectus urna justo, dis
tristique purus commodo at. Donec
nullam pede, non neque tortor sed.
4. Introducción a Hyperledger
Definición Blockchain.
25/02/2018 4
“ Definiremos Blockchain como una tecnología de registros distribuidos, protegidos
criptográficamente y agrupados secuencialmente en bloques inmutables”.
“
”CARACTERÍSTICAS:
• Distribuida.
• Inmutable.
• Transparente.
• No Repudio.
• Homomórfico.
Teorema CAP:
Disponibilidad
y tolerante a
fallos pero sin
consistencia
5. Introducción a Hyperledger
Definición Blockchain. Privada vs Pública
25/02/2018 5
PRIVADA PÚBLICA
Acceso de los usuarios al registro
de transacciones.
PERMISIONADO PÚBLICO
Acceso de los usuarios como
participante de la red.
CERRRADO ABIERTO
Estructura de una red de nodos. DISTRIBUIDO DESCENTRALIZADO
Acceso de los usuarios al
contenido de las transacciones
ANÓNIMO ANÓNIMA/
PSEUDOANÓNIMO
Velocidad validación transacción RÁPIDA LENTA
Ejemplos HYPERLEDGER,
QUORUM, R3
BITCOIN, ETHEREUM,
DASH
http://bitfury.com/content/5-white-papers-research/public-vs-private-pt1-1.pdf
http://bitfury.com/content/5-white-papers-research/public-vs-private-pt2-1.pdf
6. Introducción a Hyperledger
¿Necesitas Implementar Blockchain?
25/02/2018
(*) Source: Karl Wüst, “Do you need a Blockchain?”, https://eprint.iacr.org/2017/375.pdf
6
7. Introducción a Hyperledger
Visión de arquitectura.
25/02/2018 7
Arquitectura
de Negocio
Arquitectura
de
Aplicaciones
Arquitectura
de datos
Arquitectura
tecnológica
ORGANIZACIÓN
• Unidades organizativas.
• Entes Externos.
• Localidades Geográficas.
Gestión/Calidad
• Indicadores de gestión
de calidad.
• Problemas.
• Oportunidades de
Mejora
ESTRATEGIA
• Objetivos.
• Metas.
• Factores críticos de
éxito.
SIS. INFORMATICOS
• Sistemas/Aplicaciones.
• Funciones de sistemas.
• Servicios SOA/REST/…
PROCESOS/CLIENTE
• Procesos.
• Eventos.
• Puntos de encuentro
con clientes.
• Subprocesos.
• Actividades.
• Reglas de negocio.
• Flujos de información.
DATOS
• Datos conceptuales.
• Datos Informatizados.
Arquitectura Empresarial
“ Se puede definir como el proceso por el cual se
describen los objetivos y la misión de una
organización, como estos son alcanzados mediante
los procesos de negocio y como estos últimos usan
los sistemas de información y la infraestructura
tecnológica para soportar la realización”
10. Introducción a Hyperledger
Proyecto Hyperledger.
25/02/2018 10
“El papel más valioso que el proyecto Hyperledger puede desempeñar es servir como una fuente
confiable para la comunidad de desarrollo de software de fuente abierta, innovadora y
orientada a la calidad; y el crear componentes y plataformas modulares de código abierto;
todos enfocados en DLT y tecnologías de contratos inteligentes. Si Hyperledger puede forjar una
marca que sea ampliamente vista como la plataforma de implementación ‘segura’
predeterminada para los equipos empresariales, y ser vista como un gran hogar para la
colaboración activa en torno a las nuevas tecnologías, entonces creo que podemos decir ‘misión
cumplida’”.
Brian Behlendorf (Director Ejecutivo de Hyperledger)
“
”
11. Introducción a Hyperledger
Proyecto Hyperledger.
HYPERLEDGER NO ES:
Simplemente una Blockchain.
No es una cryptomoneda
Proyecto de una compañía.
No es un consorcio.
No es una solución única
HYPERLEDGER ES:
Una incubadora de múltiples proyectos de
Blockchain.
Marca común
Lugar donde fomentar componentes
interoperables.
Comunidad para proyectos de tecnología.
Licencia, propiedad intelectual y estándares.
25/02/2018 11
13. Introducción a Hyperledger
Proyecto Hyperledger. Enfoque modular.
25/02/2018 13
Hyperledger
Hyperledger
Quilt
Hyperledger
Composer
Hyperledger
Explorer
Hyperledger
Cello
HERRAMIENTAS
Software auxiliar específico para complementar el
despliegue, mantenimiento, diseño, prototipado y
despliegue de las redes Blockchain.
Hyperledger
Fabric
Hyperledger
Sawtooth
Hyperledger
Iroha
Hyperledger
Burrow
Frameworks
Se utilizan para construir blockchains empresariales
para un consorcio de organizaciones. Compuesto
por: Una Ledger, Algoritmo de consenso, Contratos
inteligentes y Garantía de privacidad.
Hyperledger
Indy
Infraestructura
Un ecosistema que acelera el desarrollo abierto y
adopción comercial. Incluye cobertura técnica, legal,
marketing y organizacional.
14. Introducción a Hyperledger
Proyecto Hyperledger. Enfoque modular.
25/02/2018 14
Modificación flexible
de los componentes
Bloques
reutilizables.
Comunidad de
desarrolladores
diversa
Módulos funcionales e
interfaces definidos de
forma común
Rápida
experimentación
Base del código
extensible
Arquitectura de Capas:
• Capa de Consenso.
• Capa de Smart Contract.
• Capa de comunicación.
• Capa de abstracción de
almacenamiento.
• Capa de abstracción de la criptografía.
• Servicio de identidad.
• API’s.
• Capa de interoporabilidad.
https://www.hyperledger.org/wp-content/uploads/2017/08/Hyperledger_Arch_WG_Paper_1_Consensus.pdf
15. Introducción a Hyperledger
Proyecto Hyperledger. Enfoque modular.
25/02/2018 15
La interfaz de Hyperledger es el REST API
Manejo de la
Identidad,
privacidad,
confidencialidad y
auditabilidad.
Infraestructura
basada en PKI para
permitir Blockchain
permisionadas
Ejecución de Smart
Contracts en nodos
validados de forma
ágil y segura.
SDK con soporte
para Go, Java y
Node.js
Maneja el layer distribuido mediante protocolo peer-
to-peer, construido sobre HTTP/2.
Diferentes consensos. Por defecto PBFT/Sieve
19. Introducción a Hyperledger
Hyperledger Cello
25/02/2018 19
Plataforma BaaS. Blockchain as a service
Cello nos proporciona:
• Aprovisionamiento de bloques de bloques personalizables al instante (por ejemplo,
una cadena de fabric de 6 nodos usando consenso de PBFT).
• Mantener un grupo de blockchains en funcionamiento sin necesidad de operaciones
manuales.
• Verificar el estado del sistema, escalar los números de la cadena, cambiar los
recursos, etc. a través de un único punto de acceso.
Las principales características de Cello incluyen:
• Gestión de múltiples blockchains.
• Respuesta casi instantánea, incluso con cientos de cadenas o nodos
• Soporte para solicitudes de blockchains personalizadas.
• Compatibilidad con un host Docker nativo o un host Swarm como nodos de cómputo.
• Soporte para arquitectura heterogénea (p. Ej., Z Systems, Power Systems y x86)
desde servidores bare-metal hasta máquinas virtuales
• Extensible con monitoreo, registro y características de salud mediante el empleo de
componentes adicionales.
20. Introducción a Hyperledger
Hyperledger Composer
25/02/2018 20
Hyperledger Composer es un conjunto de herramientas y
un marco de desarrollo extensos y abiertos para facilitar el
desarrollo de aplicaciones Blockchain.
Puede usar Hyperledger Composer para modelar
rápidamente su red comercial actual, que contiene sus
activos existentes y las transacciones relacionadas con ellos;
los activos son bienes, servicios o bienes tangibles o
intangibles. Como parte de su modelo de red comercial,
define las transacciones que pueden interactuar con los
activos. Las redes comerciales también incluyen a los
participantes que interactúan con ellos, cada uno de los
cuales puede asociarse con una identidad única, a través de
múltiples redes comerciales.
https://hyperledger.github.io/composer/tutorials/tutorials
21. Introducción a Hyperledger
Hyperledger Explorer.
25/02/2018 21
Según su descripción del proyecto Hyperledger, Explorer está diseñado
para crear una aplicación web fácil de usar que pueda ver, invocar,
implementar o consultar:
• Bloques.
• Transacciones y datos asociados.
• Información de red.
• Chaincodes.
• Familias de transacciones.
22. Introducción a Hyperledger
Hyperledger Quilt.
25/02/2018 22
Interlerger proporciona pagos seguros a través de múltiples
activos en diferentes libros contables. La arquitectura
consiste en un modelo conceptual para pagos de
intermedidores, un mecanismo para asegurar pagos y un
conjunto de protocolos que implementan este diseño.
El Protocolo Interlerger (ILP) es el núcleo del conjunto de
protocolos Interlerger.
24. Introducción a Hyperledger
Hyperledger Fabric.
25/02/2018 24
https://media.readthedocs.org/pdf/hyperledger-fabric/latest/hyperledger-fabric.pdf
• Hyperledger Fabric esta diseñado como una base para el desarrollo de
aplicaciones o soluciones con una arquitectura modular, Hyperledger Fabric
permite que los componentes, como el consenso y los servicios de
membresía, sean plug-and-play.
• Hyperledger Fabric aprovecha la tecnología de contenedores para alojar
contratos inteligentes llamados "chaincode" que comprenden la lógica de
aplicación del sistema.
Características principales
• Desarrollado en GO.
• Su mayor característica es la capacidad de crear canales para compartir
información confidencial.
• El servicio de pedidos ofrece transacciones consistentemente a los
compañeros en la red.
• Políticas de endosement para transacciones.
• CouchDB admite una amplia gama de consultas
• Dispone de su propio proveedor de servicios de membresía (MSP).
25. Introducción a Hyperledger
Hyperledger Fabric.
25/02/2018 25
Orderer (o servicio de pedido) proporciona un canal de comunicación compartido
a las aplicaciones cliente y pares, ofreciendo un servicio de difusión para mensajes
que contienen transacciones. Orderer proporciona entrega atómica
Endorser. Nodos que validan las las peticiones de orderesrs.
Chaincode es un software que define un activo o activos, y las instrucciones de
transacción para modificar los activos. En otras palabras, es la lógica de negocios.
Chaincode aplica las reglas para leer o alterar pares de valores clave u otra
información de base de datos de estado. Las funciones de Chaincode se ejecutan
en la base de datos de estado actual del libro mayor y se inician a través de una
propuesta de transacción. La ejecución de Chaincode da como resultado un
conjunto de escrituras de valores clave (conjunto de escritura) que pueden
enviarse a la red y aplicarse al libro mayor en todos los pares.
30. Introducción a Hyperledger
Hyperledger Sawtooth.
25/02/2018 30
“Hyperledger Sawtooth is a modular platform for building, deploying, and running distributed ledgers. Distributed
ledgers provide a digital record (such as asset ownership) that is maintained without a central authority or
implementation.”
• Sawtooth es un framework de implementación de Blockchain altamente configurable orientado a dar respuesta a numerosas problemáticas. Los
componentes clave de esta implementación son:
• Un modelo de datos que captura el estado actual de la DLT.
• Un lenguaje de transacciones que permitan cambiar el estado del libro mayor.
• Un protocolo que utilizaremos para generar el consenso entre los participantes sobre las transacciones que pasaran a formar parte del libro
mayor.
• Consenso dinámico, con consenso propio PoET (Proof of Elapsed Time).
• Motor de ejecución de transacciones avanzado. Las transacciones se puedes procesar de forma paralela.
• En Sawtooth, el modelo de datos y el lenguaje de transacciones se implementan en una familia de transacciones. Estas familias son una de las
principales ventajas de Sawtooth junto con los consensos plugables permitiéndole ser muy flexible en sus implementaciones.
• Iniciado por Intel en 2014 en Python.
• Soporta solidity de Ethereum mediante la integración con Burrow. (Seth)
31. Introducción a Hyperledger
Hyperledger Sawtooth. Architecture.
25/02/2018 31
https://www.altoros.com/blog/hyperledgers-sawtooth-lake-aims-at-a-thousand-transactions-per-second/
32. Introducción a Hyperledger
Hyperledger Sawtooth
25/02/2018 32
Validator. Componente encargado de validar los bloques de
transacciones y asegurar que las transacciones den como
resultado cambios de estado que sean consistentes a todos los
participantes de la red.
Consensus Interface. El consenso es modular. Admite PBFT,
Nakamoto y PoET. Podemos implementar uno propio
modificando:
• El editor de bloques.
• Verificador de bloques.
• Resolución de fork.
Transaction Procesor. Se define como la lógica de
negocio/proceso del lado servidor que actúa sobre los activos
de la red. Se pueden escribir en Java, Python, C, C++,
JavaScript, Go.
Transaction batches. Son agrupaciones de transacciones que
están comprometidas a declarar juntas.
33. Introducción a Hyperledger
Hyperledger Sawtooth
25/02/2018 33
Sawtooth nos proporciona una serie de modelos de datos y familias de transacciones que podemos usar en nuestras pruebas de concepto:
• Validator Registry. Proporciona una metodología para registrar los servicios de la DLT.
• IntegerKey. Se usa para pruebas sobre la DLT.
• Settings. Proporciona una implementación de referencia para almacenar la configuración de la cadena.
• Identy. Maneja la autorización de la cadena.
Las familias de transacciones adicionales proporcionan modelos para áreas específicas:
• Smallbank: gestiona el análisis de rendimiento para la evaluación comparativa y las pruebas de rendimiento al comparar el rendimiento de los
sistemas de cadena de bloques. Esta familia de transacciones se basa en el punto de referencia H-Store Smallbank.
• Seth: permite la creación y ejecución de contratos inteligentes. Esta familia de transacciones integra la implementación de Hyperledger Burrow
de la Máquina virtual Ethereum (EVM) en el marco Hyperledger Sawtooth usando el SDK Sawtooth Go.
• BlockInfo: proporciona una metodología para almacenar información sobre un número configurable de bloques históricos. Esta familia de
transacciones se utiliza para los contratos inteligentes de Seth.
34. Introducción a Hyperledger
Hyperledger Sawtooth
25/02/2018 34
Sawtooth nos proporciona una serie de modelos de datos y familias de transacciones que podemos usar en nuestras pruebas de concepto:
• Validator Registry. Proporciona una metodología para registrar los servicios de la DLT.
• IntegerKey. Se usa para pruebas sobre la DLT.
• Settings. Proporciona una implementación de referencia para almacenar la configuración de la cadena.
• Identy. Maneja la autorización de la cadena.
Las familias de transacciones adicionales proporcionan modelos para áreas específicas:
• Smallbank: gestiona el análisis de rendimiento para la evaluación comparativa y las pruebas de rendimiento al comparar el rendimiento de los
sistemas de cadena de bloques. Esta familia de transacciones se basa en el punto de referencia H-Store Smallbank.
• Seth: permite la creación y ejecución de contratos inteligentes. Esta familia de transacciones integra la implementación de Hyperledger Burrow
de la Máquina virtual Ethereum (EVM) en el marco Hyperledger Sawtooth usando el SDK Sawtooth Go.
• BlockInfo: proporciona una metodología para almacenar información sobre un número configurable de bloques históricos. Esta familia de
transacciones se utiliza para los contratos inteligentes de Seth.
35. Introducción a Hyperledger
Hyperledger Sawtooth. Ejemplos.
25/02/2018 35
• Sawtooth-supply-chain https://github.com/hyperledger/sawtooth-supply-chain
• The Supply Chain REST API will be at http://localhost:8020
• AssetTrack will be at http://localhost:8021
• FishNet will be at http://localhost:8022
• RethinkDB's admin panel will be available at http://localhost:8023
• Sawtooth's blockchain REST API will be available at http://localhost:8024
• https://sawtooth.hyperledger.org/docs/core/nightly/0-8/examples/supplychain/rest_api/endpoint_specs.html
• Sawtooth-Marketplace https://github.com/hyperledger/sawtooth-marketplace
• The Marketplace REST API will be at http://localhost:8040
• The SawbuckManager web app will be at http://localhost:8041.
• RethinkDB's admin panel will be available at http://localhost:8042
• Sawtooth's blockchain REST API will be available at http://localhost:8043
• Sawtooth-hyper-directory https://github.com/hyperledger/sawtooth-hyper-directory
• Sawtooth's blockchain REST API will be available at http://localhost:8080
• Rethink's database admin panel will be available at http://localhost:9090
36. Introducción a Hyperledger
H Y PERL EDGER I ROHA.
UR L : H T T P S : / / W W W. H Y P E R L E D G E R .O RG / P ROJ EC TS / I RO HA
T I PO: D LT, S M A RT CO N T R AC T E N G I N E , U T I L I T Y L I B R A R I ES .
ESTADO : AC T I VO
V E RSION: V 1 . 0
25/02/2018
37. Introducción a Hyperledger25/02/2018 37
Hyperledger Iroha.
• Iroha esta diseñado para ser simple y fácil de incorporar a proyectos de infraestructura que requieran DLT.
• Iroha presenta una construcción simple; Diseño moderno y orientado al dominio C++.
• Énfasis en el desarrollo de aplicaciones móviles.
• Nuevo algoritmo de consenso llamado Sumeragi.
• Presenta capacidad de desplegar contratos en Java.
• Uno de sus objetivos es ahacer un “Blockchain para móviles”.
• Desarrollado por Soramitsu, Hitachi, NTT Data y Colu.
Iroha proporciona:
• Biblioteca consenso Sumeragi
• Biblioteca de firma digital Ed25519
• SHA-3 biblioteca de hash
• Biblioteca de serialización de transacciones Iroha
• Biblioteca de difusión P2P
• Biblioteca del servidor API
• Biblioteca de iOS
• Biblioteca de Android
• Biblioteca JavaScript
• Blockchain explorer / suite de visualización de datos
CARACTERISTICAS:
• Creación y gestión de activos complejos personalizados,
como monedas o derechos indivisibles, números de
serie, patentes, etc.
• Gestión de cuentas de usuario.
• Taxonomía de cuentas basada en dominios –o sub-
ledgers en el sistema.
• Sistema de derechos y verificación de permisos de
usuario para la ejecución de transacciones y consultas
en el sistema.
• Validación de reglas comerciales para transacciones y
consultas en el sistema.
38. Introducción a Hyperledger25/02/2018 38
Hyperledger Iroha. Arquitectura.
Peer(iroha)
Arquitectura general
https://soramitsu.atlassian.net/wiki/spaces/IS/pages/127008772/How+to+run+Iroha+network+with+Ansible
https://github.com/hyperledger/iroha/tree/develop/deploy/ansible
39. Introducción a Hyperledger
HYPERLEDGER INDY
URL: HTTPS://WWW.HYPERLEDGER.ORG/PROJECTS/HYPERLEDGER -INDY
TIPO: DLT AND UTILITY LIBRARIES.
ESTADO: INCUBATE
VERSION: V1.0
25/02/2018
40. Introducción a Hyperledger25/02/2018 40
Hyperledger Indy.
• Indy es un ledger distribuido, especialmente diseñado para la identidad descentralizada.
• Proporciona herramientas, bibliotecas y componentes reutilizables para crear y usar identidades digitales
independientes arraigadas en Blockchain, de modo que sean interoperables en dominios administrativos y
aplicaciones.
• El componente clave de Indy son los reclamos verificables que le proporcionan la capacidad de servir como plataforma
universal para intercambiar afirmaciones confiables. Así mismo dispone de funcionalidad de revocación de los
reclamos.
• Security by disign
• Identificadores únicos por parejas y seudónimos para evitar correlación.
• Diseñada en base a los identificadores descentralizados (DID).
https://github.com/WebOfTrustInfo/rebooting-the-web-of-trust-fall2016/blob/master/final-documents/did-implementer-draft-10.pdf
• Los datos personales nunca se escriben en el Ledger. Sirve de ancla.
• Soporte para pruebas de conocimiento cero (ZKP) para evitar la divulgación
innecesaria de atributos de identidad.
• Inicialmente comenzó siendo sovrin y luego donado a Hyperledger.
Indy proporciona:
• Especificaciones, terminología y patrones de diseño para la identidad
descentralizada.
• Reclamos verificables.
• Protocolo de consenso Plenum.
41. Introducción a Hyperledger25/02/2018 41
Hyperledger Indy.
Prueba de conocimiento cero: https://es.wikipedia.org/wiki/Prueba_de_conocimiento_cero
“En criptografía, un protocolo de conocimiento cero (ZKP) o prueba de conocimiento nulo, también conocidas por las
siglas ZKP (del inglés Zero Knowledge Proof), es un protocolo criptográfico que establece un método para que una de
las partes pruebe a otra que una declaración (generalmente matemática) es cierta, sin revelar nada más que la
veracidad de la declaración.”
43. Introducción a Hyperledger25/02/2018 43
Hyperledger Burrow. Arquitectura.
Documento arquitectura: https://www.hyperledger.org/wp-content/uploads/2017/06/HIP_Burrowv2.pdf
• Hyperledger Burrow es un nodo de blockchain autorizado que ejecuta código de contrato inteligente siguiendo la especificación de Ethereum.
"Proporciona un cliente de blockchain modular con un intérprete de contrato inteligente autorizado construido en parte para la especificación de la
máquina virtual Ethereum (EVM)“ Casey Kuhlman, CEO de Monax .
• Un nodo se construye a partir de tres componentes principales:
• El motor de consenso. (Tendermint)
• La máquina virtual autorizada de Ethereum.
• La puerta de enlace rpc.
• Defensores de la estandarización de los interfaces:
• Especificación de genesis.json
• Especificación config.toml
• RPC de alto nivel.
44. Introducción a Hyperledger25/02/2018 44
Hyperledger Burrow. Arquitectura.
Documento arquitectura: https://www.hyperledger.org/wp-content/uploads/2017/06/HIP_Burrowv2.pdf
Los principales componentes de Burrow son los siguientes:
• Motor de consenso que es responsable de mantener la pila de red
entre los nodos y las transacciones de pedido que utilizará el
motor de la aplicación.
• La aplicación Blockchain Interface ("ABCI") proporciona la
especificación de la interfaz para motor de consenso y aplicación
para conectar.
• Máquina virtual autorizada de ethereum.
• El motor de aplicación de contrato inteligente proporciona a los
desarrolladores de aplicaciones un fuerte motor determinista de
contrato inteligente para operar procesos industriales complejos.
• Gateway proporciona interfaces programáticas para integraciones
de sistemas e interfaces de usuario.
• Consenso Tendermint.