Buscar

Blog de Alfonso Tienda

Marketing, Startups, Proyectos y Tecnología.

Etiqueta

Bitcoin

Hyperledger Iroha. Introducción y funcionamiento.

Hyperledger Iroha forma parte del ecosistema hyperledger. Iroha cumple tres propósitos generales:

  1. Proporciona un entorno para que los desarrolladores de C ++ contribuyan a Hyperledger
  2. Proporciona infraestructura para soporte de aplicaciones móviles y web
  3. Proporcionar un framework para crear APIs y un nuevo algoritmo de consenso

Arquitectura de Iroha y participantes de la red

Describo a continuación los puntos más importantes de la arquitectura de Hyperledger Iroha:

  • Torii (gate) – Este elemento proporciona los interfaces de entrada y salida de los clientes, a través de un modelo basado en grpc (grpc.io). Las llamadas no son bloqueantes, lo que hace de Torii un servicio asíncrono.
  • El consenso está a cargo de que los pares acuerden el contenido de la cadena en la red. El mecanismo de consenso utilizado por Iroha es YAC (Yet Another Consensus), que es un algoritmo tolerante a errores bizantino basado en votar por block hash.
  • Los validadores comprueban las reglas de negocio la validez (formato correcto) de las transacciones o consultas. Hay dos tipos distintos de validación que ocurren en Hyperledger Iroha: La validación sin estado (stateless) es rápida y realiza chequeos de esquema y firma de la transacción. Por otro lado, la validación  con estado (stateful) es más lenta y verifica permisos y el estado actual del sistema, para ver si son posibles las reglas y políticas de negocio deseadas. Por ejemplo, ¿una cuenta tiene fondos suficientes para transferir?
  • Simulator genera una instantánea temporal de lo almacenado para validar las transacciones ejecutándolas en esta instantánea y formando una propuesta verificada, que consiste únicamente en transacciones válidas.
  • Synchronizer ayuda a sincronizar nuevos pares en el sistema o pares desconectados temporalmente.
  • Ametsuchi es el almacenamiento de blockchain que consta de un índice de bloque (actualmente Redis), un almacén de bloque (archivos actualmente planos) y un componente de “world state view” (actualmente PostgreSQL).

Por otra parte, hay tres participantes principales en una red de Iroha:

  • Los clientes, que pueden o bien consultar datos a los que tienen acceso / permiso
    o realizar una acción de cambio de estado, ‘transacción’, que consiste en operaciones atómicas, llamadas ‘comandos’. Por ejemplo, en una sola transacción, un usuario puede transferir fondos a tres personas (tres comandos separados). Pero, si él / ella no tiene fondos suficientes para cubrir para todos, la transacción completa será rechazada.
  • Los pares, que mantienen el estado actual y su propia copia del libro mayor (ledger). Hyperledger Iroha está diseñado para que un único par pueda ser una sola computadora o escalar para crear un clúster, lo que significa que se utilizan diferentes computadoras para el almacenamiento del ledger, de los índices, validaciones y lógica p2p.
  • Ordering Service, que ordena las transacciones de órdenes de servicio en un pedido conocido. Hay algunas opciones para el algoritmo utilizado, pero una de las opciones más populares es Apache Kafka.

YAC (Yet Another Consensus)

Hyperledger Iroha actualmente implementa un algoritmo de consenso llamado YAC (Yet Another Consensus), que se basa en votar por hash de bloques. El consenso implica tomar bloques después de que hayan sido validados, colaborar con otros bloques para decidir el commit y propagar los commits entre pares. El consenso de YAC cumple dos funciones: ordenamiento y consenso.

El servicio de ordenación es responsable de ordenar todas las transacciones, empaquetarlas en propuestas y enviarlas a sus pares en la red. El servicio de ordenación es un punto final para establecer un orden de las transacciones y su emisión (en forma de propuesta). Ordering no es responsable de realizar la validación stateful de las transacciones.

El algoritmo es básicamente el siguiente:

  1. El servicio de orden comparte una propuesta para todos los pares. Una propuesta es un bloque sin firmar creado y compartido por sus pares en la red por el servicio de orden. Contiene un lote de transacciones ordenadas.
  2. Los pares calculan el hash de una propuesta verificada y lo firman. La tupla <Hash, Signature> resultante se denomina voto.
  3. En función de los hashes creados en el paso anterior, cada par calcula una lista de ordenes u orden de pares. Para hacer esto, la función de ordenar necesitará tener conocimiento de todos los pares que votan en la red, y se basa en el hash del bloque propuesto. El primer par en la lista se llama el líder. El líder es responsable de recolectar los votos de otros pares y enviar el mensaje de commit.
  4. Cada par vota y el líder recolecta todos los votos y determina la mayoría de votos para un cierto hash. El líder envía un mensaje de confirmación que contiene los votos del bloque de confirmación. Esta respuesta se llama commit.
  5. Después de recibir la confirmación, los pares verifican la confirmación y aplican el bloque al ledger. En este punto, el consenso está completo.

En el caso de que el líder falle o caiga su servicio (tarda mucho en responder con un commit o no recoje todos los votos, por ejemplo), otros pares establecen un tiempo para recibir un mensaje de commit del líder. Si el temporizador expira, el siguiente interlocutor en la lista de transacciones se convierte en el nuevo líder.

Flujo de transacciones de Iroha

El flujo de una transacción en Iroha es el siguiente:

  1. Un cliente envía una transacción a Torii, que enruta la misma hacia un par que hará la validación stateless.
  2. Una vez validada sin estado la transacción, se envía al servicio de ordenación.
  3. El servicio de ordenación, una vez ordena correctamente las transacciones, las envía a los pares en forma de proposals. Estas proposals contienen un conjunto de transacciones ordenadas. El servicio de ordenación hace estas proposals con un número dado de transacciones ordenadas. Para evitar que esto suponga un bloqueo, si no se reciben en un tiempo delimitado suficientes transacciones para un proposal, el proposal se enviará con las transacciones que hayan al cumplir este tiempo.
  4. En este momento, cada par realizará la validación con estado (stateful) en el Simulator y creará un bloque que consiste tan sólo en transacciones validadas. Este bloque se envía a la consensus gate, que ejecuta la lógica del algoritmo de consenso YAC.
  5. Se determina una lista ordenada de pares y se elige un líder según la lógica de consenso de YAC. Cada par emite un voto firmando y enviando su bloque propuesto al líder.
  6. Si el líder recibe suficientes bloques propuestos y firmados (es decir, más de dos tercios de los pares), entonces comienza a enviar un mensaje de commit, indicando que este bloque debe aplicarse a la cadena de cada par participante en el consenso. Una vez que se ha enviado el mensaje de commit, el bloque propuesto se convierte en el siguiente bloque de la cadena de cada par a través del Synchronizer.

Librerías de desarrollo móvil

Una de las características más definitorias de Hyperledger Iroha es su enfoque en proporcionar librerías móviles. Uno de los principales objetivos de Hyperledger Iroha es crear un sistema de ledger distribuido en el  que las aplicaciones puedan utilizar de forma fácil. Para lograr esto, existen librerías open source para iOS, Android y Javascript. Estas bibliotecas permiten una compatibilidad sencilla no solo con Hyperledger Iroha, sino también, potencialmente, con otras redes a través de funciones API flexibles.

Android: https://github.com/hyperledger/iroha-android
iOS: https://github.com/hyperledger/iroha-ios

 

 

 

 

 

 

Blockchain Hyperledger: Introducción

Hyperledger es un proyecto open source creado para avanzar las tecnologías blockchain en cualquier tipo de ámbito. Coordinado por The Linux Foundation, es una colaboración global de miembros de diversas industrias y organizaciones. Cuenta en este momento con una gran cantidad de soluciones. Hyperledger se puede ver como un sistema operativo para marketplaces, redes de intercambio de datos, microempresas y comunidades digitales descentralizadas. Intenta asimismo reducir significativamente el coste y la complejidad de los negocios.

Los blockchain de Hyperledger son por lo común “permissioned” o autorizadas (ver Tipos de Blockchain : Públicos y privados ), lo que significa que las partes que se unen a la red están autenticadas mediante un módulo de autenticación y autorizadas para participar en la red. El objetivo principal de Hyperledger es crear frameworks para ledgers distribuidos, open source, con capacidades corporativas y código suficiente para dar respuesta a las necesidades empresariales.

En los blockchain sin permiso, como la cadena de bloques de Bitcoin o la cadena de bloques de Ethereum, cualquiera puede unirse a la red, así como también escribir y leer transacciones. Los actores en el sistema no son conocidos, lo que significa que podría haber algunos actores maliciosos dentro de la red.

Hyperledger reduce estos riesgos de seguridad y garantiza que solo las partes que deseen realizar transacciones sean las que forman parte de la transacción y, en lugar de mostrar el registro de las transacciones en toda la red, solo son visibles para las partes involucradas. Por lo tanto, Hyperledger ofrece todas las capacidades de la arquitectura blockchain: privacidad de datos, intercambio de información, inmutabilidad, una pila completa de protocolos de seguridad, etc.

Hyperledger tiene (mayo-08) muchos proyectos bajo su paraguas:

hyperledger-community-update-feb-20-2018-6-638.jpg

Hay también algunas diferencias fundamentales entre hyperledger y los blockchain sin permiso como Bitcoin o Ethereum que pasamos a resumir:

Bitcoin

Ethereum

Hyperledger

Basado en Criptomonedas

No

Autorizados

No

No

Si, aunque Sawtooth puede configurarse sin permiso

Pseudo-anónimo

No

No

Auditable

Immutable ledger

Modularidad

No

No

Smart contracts

No

Consensus protocol

PoW

PoW

Varios

Componentes de los Frameworks Hyperledger

Los frameworks de blockchain comerciales Hyperledger se utilizan para crear blockchains para uso empresarial. Son diferentes a los públicos como Bitcoin blockchain y Ethereum. Los frameworks de Hyperledger incluyen:

  • Un ledger distribuido de solo adición
  • Un algoritmo de consenso para aceptar cambios en el ledger
  • Privacidad de las transacciones a través de un acceso permitido
  • Contratos inteligentes para procesar solicitudes de transacción.

Components_of_blockchain.jpg

En los siguientes puntos veremos cada uno de estos frameworks.

Hyperledger Iroha

Hyperledger Iroha es un framework diseñado para ser simple y fácil de incorporar en proyectos de infraestructura que requieren tecnología ledger distribuida. Hyperledger Iroha hace hincapié en el desarrollo de aplicaciones móviles con bibliotecas cliente para Android e iOS, lo que lo diferencia de otros marcos de Hyperledger. Inspirado por Hyperledger Fabric, Hyperledger Iroha busca complementar Hyperledger Fabric e Hyperledger Sawtooth, a la vez que proporciona un entorno de desarrollo para que los desarrolladores de C ++ contribuyan a Hyperledger.

Hyperledger Iroha presenta una construcción simple, un diseño C ++ moderno y domain-driven, junto con el algoritmo de consenso YAC.

Hyperledger Sawtooth

Hyperledger Sawtooth, contribuido por Intel, es un framework de blockchain que utiliza una plataforma modular para construir, desplegar y ejecutar ledgers distribuidos. Las soluciones de ledgers distribuidos construidas con Hyperledger Sawtooth pueden utilizar varios algoritmos de consenso basados en el tamaño de la red. Incluye el algoritmo de consenso Prueba de tiempo transcurrido (PoET), que proporciona la escalabilidad de la cadena de bloques de Bitcoin sin el alto consumo de energía. PoET permite una red altamente escalable de nodos de validación. Hyperledger Sawtooth está diseñado para ofrecer versatilidad, con soporte para despliegues autorizados y sin permiso, siendo la única tecnología hyperledger (por el momento) que permite ambos despliegues. Tiene varias características importantes:

  • Dispone de un acuerdo de estado distribuido, lo que implica que todos los nodos dispongan del mismo conocimiento de la información, ningún nodo puede obviar la información de los demás.
  • Es capaz de crear interfaces para cualquier lógica de transacción, en la integración con Hyperledger Burrow consigue poder ejecutar cualquier código de máquina virtual Ethereum, como solidity y ejecutarse en Sawtooth

En un caso de uso de cadena de suministros o procedencia, como veremos en un video más adelante, permite hacer crecer a la red y cambiar los mecanismos de consenso en caliente. Esta característica permite una alta escalabilidad y flexibilidad en este framework.

El siguiente es un bonito video sobre un caso de uso de trazabilidad de procedencia de pescado:

 

Hyperledger Fabric

Hyperledger Fabric fue la primera propuesta para un framework en Hyperledger, que combina el trabajo previo realizado por Digital Asset Holdings, el libconsensus de Blockstream y OpenBlockchain de IBM. Hyperledger Fabric tiene una arquitectura modular, que permite que componentes como el consenso y los servicios de identificación sean plug-and-play. Hyperledger Fabric permite que las entidades realicen transacciones confidenciales sin pasar información a través de una autoridad central. Esto se logra a través de diferentes canales que se ejecutan dentro de la red, así como la división del trabajo que caracteriza a los diferentes nodos dentro de la red. Por último, es importante recordar que, a diferencia de Bitcoin, que es una cadena pública, Hyperledger Fabric admite implementaciones autorizadas. Es útil en casos de uso donde hay una gran red de blockchain y deseas compartir datos sólo con ciertas partes,  ya que permite crear canales privados con esos participantes.

 

La principal diferencia en Hyperledger Fabric con respecto a Bitcoin y Ethereum es que se trata de una implementación de una tecnología de ledger distribuida autorizada.
Bitcoin y Ehereum son redes esencialmente públicas y sin permiso, donde todos pueden unirse anónimamente.

Hyperledger Indy

Hyperledger Indy es un ledger distribuido especialmente diseñado para hacer una identidad distribuida, permite tener un lugar de confianza para administrar las claves, esquemas, pruebas y otra información que necesita, para habilitar las interacciones de pares confiables entre diferentes identidades, tal como se almacenan en una instancia de cadena de bloques de Hyperledger Indy. Esta identidad es propiedad de la persona que subyace a la misma. Se puede usar para compartir diferentes datos correlacionables entre la persona identificada e identidades con las que se desea interactuar, filtrando la información privada y no divulgando información que no se desee compartir.
Uno de los principales usos de Hyperledger Indy es la creación de una utilidad pública global para la identidad que está siendo creada por la Fundación Sovrin.

Según el proyecto:

Hyperledger Indy permite que los usuarios autentiquen la identidad en función de los atributos que desean almacenar y compartir. Esto puede reducir la cantidad de responsabilidad contenida dentro de una empresa porque los datos se pueden mantener con el usuario y volver a presentarlos de una manera que puede confiar y validar que lo que se ha dicho realmente fue dicho y es confiable para las otras partes con las que hace negocios.

Hyperledger Burrow

Conocido formalmente como eris-db, Hyperledger Burrow fue lanzado en diciembre de 2014. Hyperledger Burrow es una máquina de smart contracts autorizada que proporciona un cliente modular de blockchain con un intérprete de smart contracts autorizado incorporado a la especificación del Ethereum Virtual Machine (EVM). Es la única implementación de EVM con licencia de Apache.

Los siguientes son los principales componentes de Burrow:

  • El Gateway proporciona interfaces para integración de sistemas e interfaces de usuario
  • El motor de aplicación de smart contract facilita la integración de la lógica de negocio compleja
  • Consensus Engine tiene el doble propósito de:
    • Mantener la pila de red entre los nodos
    • Pedidos de transacciones
  • La Application Blockchain Interface (ABCI) proporciona la especificación de la interfaz para el motor de consenso y el motor de aplicación de smart contracts para conectarse.

Algunos proyectos menos conocidos de Blockchain

Chain Core

Chain Core es un sistema blockchain autorizado que se centra principalmente en servicios financieros, como monedas, valores, derivados, tarjetas de regalo y puntos de fidelidad. La compañía se asocia con clientes para lanzar y operar una red bajo la marca del cliente. Gracias a sus alianzas estratégicas con compañías como Capital One, Citigroup, Fiserv, Nasdaq, Orange, Visa, etc., la compañía recaudó más de $ 40 millones en fondos desde 2014.

Dentro de la red Chain Core, la creación y transferencia de activos está descentralizada. Sin embargo,  el funcionamiento de la red se rige por un conjunto designado de entidades conocidas como federación.

La plataforma cuenta con Chain Testnet, que permite el desarrollo descentralizado de aplicaciones en Chain Core, operado por Chain, Microsoft, y la Iniciativa para Cryptocurrencies and Contracts (IC3).

https://chain.com/technology/

Corda

R3 es un consorcio de más de cien grandes instituciones financieras mundiales, que busca aprovechar las tecnologías de ledger distribuidos para registrar, gestionar y automatizar acuerdos legales entre empresas a través de su solución de software, llamada Corda.

Corda es una de ledger distribuido, que presenta una red P2P de estilo blockchain; sin embargo, no es una plataforma blockchain. A diferencia de las blockchains, que involucran la disponibilidad global de datos a través de la red y validadores de terceros, Corda solo permite el acceso a la información y las funciones de validación a las partes involucradas en la transacción. Con una arquitectura de software diferente, logra el consenso entre las empresas a nivel de acuerdos individuales, no el nivel del sistema, al tiempo que admite una variedad de mecanismos de consenso.

https://www.corda.net/

Quorum

Creado por JPMorgan, Quorum es, de hecho, una rama del blockchain público de Ethereum, que utiliza un algoritmo de consenso basado en votación para facilitar un ledger distribuido y una plataforma de smart contracts. La privacidad de los datos se logra dentro de la red al permitir la visibilidad de los datos según la necesidad de conocerlos. La plataforma está diseñada para admitir la privacidad a nivel de la transacción y la transparencia de toda la red. La red valida todos los smart contracts y el estado general del sistema a través de la participación de todos los nodos en ejecución. Al igual que con otros ledgers autorizados, el cumplimiento normativo es el centro de atención en la plataforma Quorum.

https://www.jpmorgan.com/global/Quorum

IOTA

La criptomoneda IOTA existe desde 2015 y afirma ser la primera criptomoneda que proporciona todo el ecosistema basado en blockchain sin bloques para permitir transacciones de máquina a máquina (M2M).

IOTA, sin embargo, es más que solo una criptomoneda. Esencialmente, la plataforma implica una generalización del protocolo blockchain (la tecnología llamada Tangle) que se encuentra en el backend de la plataforma IOTA.

En lugar de pagar a los mineros para validar las transacciones, la arquitectura de la red implica validación basada en pares. Podemos pensar en una analogía simple, la de un maestro que califica la tarea de los estudiantes: los estudiantes son los clientes / usuarios en el protocolo de Bitcoin, y el maestro es el minero / validador. La tecnología Tangle les pide a los estudiantes (usuarios) que califiquen la tarea de los demás, haciendo que la necesidad de un maestro (validador externo) sea redundante y evite los gastos relacionados con el trabajo del docente / validador. Esto permite que la plataforma sea completamente gratuita, sin enfrentar los desafíos de escalabilidad que son inherentes a la primera generación de blockchains.

Además, la plataforma se ha diseñado para el uso con dispositivos conectados o el Internet de las cosas, lo que permite explorar nuevos modelos de negocio haciendo que cada recurso tecnológico sea un servicio potencial para ser intercambiado en un mercado abierto en tiempo real, sin comisiones.

https://www.iota.org/

 

Blockchain: Algoritmos de consenso

El consenso en la red se refiere al proceso de lograr un acuerdo entre los participantes de la red sobre el estado correcto de los datos en el sistema. El consenso lleva a que todos los nodos compartan exactamente los mismos datos. Un algoritmo de consenso, por lo tanto, hace dos cosas: asegura que los datos en el libro mayor o ledger son los mismos para todos los nodos de la red y, a su vez, evita que actores malintencionados manipulen los datos. El algoritmo de consenso varía con las diferentes implementaciones de blockchain.

Mientras que la cadena de bloques de Bitcoin utiliza Prueba de trabajo (proof of work) como algoritmo de consenso, otros blockchains y ledgers distribuidos están implementando una variedad de algoritmos de consenso, como Proof of Stake, Proof of Burn, Proof of Capacity, Proof of Elapsed Time y muchos otros, dependiendo en sus requisitos únicos.

Proof of Work (PoW)

El algoritmo de consenso de prueba de trabajo implica resolver un desafío computacional complejo y pesado con el fin de crear nuevos bloques en la cadena de bloques de Bitcoin. Coloquialmente, el proceso se conoce como ‘minería’, y los nodos de la red que se dedican a la minería se conocen como ‘mineros’. El incentivo para las transacciones mineras radica en los pagos económicos, donde los mineros que compiten son recompensados ​​con 12.5 bitcoins y una pequeña tarifa de transacción. La prueba es difícil de crear pero fácil de verificar.

Existen múltiples críticas para el algoritmo de consenso PoW. PoW requiere una gran cantidad de energía, dado el algoritmo computacionalmente pesado. Además, PoW tiene una alta latencia de validación de transacciones, y la concentración de la potencia minera se encuentra en países donde la electricidad es barata. En términos de seguridad de la red, PoW es susceptible al ‘51% de ataque ‘, que se refiere a un ataque a un blockchain por un grupo de mineros que controlan más del 50% de la potencia de computación de la red.

Proof of Stake (PoS)

El algoritmo de proof of stake es una generalización del algoritmo de prueba de trabajo. En PoS, los nodos se conocen como los “validadores” y, en lugar de extraer la cadena de bloques, validan las transacciones para obtener una tarifa de transacción. No se debe realizar una minería, ya que todas las monedas existen desde el primer día. En pocas palabras, los nodos se seleccionan aleatoriamente para validar bloques, y la probabilidad de esta selección aleatoria depende de la cantidad de participación que se tenga. Entonces, si el nodo X posee 2 monedas y el nodo Y posee 1 moneda, el nodo X tiene el doble de probabilidades de ser llamado para validar un bloque de transacciones.

La implementación específica de PoS puede variar, dependiendo del caso de uso, o como una cuestión de diseño de software. Las instancias incluyen Proof of deposit y Proof of burn. El algoritmo PoS ahorra costosos recursos computacionales que se gastan en la minería bajo un régimen de consenso PoW.

Proof of Elapsed Time (PoET)

Este algoritmo fue desarrollado inicialmente por Intel. El algoritmo de consenso de Prueba de tiempo transcurrido o proof of elapsed time emula la Prueba de trabajo de estilo Bitcoin. La implementación de Sawtooth de Hyperledger es un ejemplo de PoET.

En lugar de competir para resolver el desafío criptográfico y extraer el próximo bloque, como en el blockchain de Bitcoin, el algoritmo de consenso PoET es un híbrido de una lotería aleatoria y de un orden de llegada. En PoET, cada validador recibe un tiempo de espera aleatorio. El validador con el menor tiempo de espera para un bloque de transacción en particular es elegido líder. Este “líder” crea el siguiente bloque de la cadena.

Para garantizar que efectivamente no se está “mintiendo” para ser el líder del bloque se la cadena, PoET confía en unas instrucciones “seguras” de Intel, ejecuta una instrucción SGX del procesador para generar este tiempo aleatorio de espera.

Simplified Byzantine Fault Tolerance (SBFT)

El algoritmo de consenso SBFT implementa una versión adaptada del algoritmo practical byzantine fault tolerance (PBFT), y busca proporcionar mejoras significativas sobre el protocolo de consenso proof of work de Bitcoin. La idea básica involucra a un único validador que agrupa las transacciones propuestas y forma un nuevo bloque. Tenga en cuenta que, a diferencia de la cadena de bloques de Bitcoin, el validador es una parte conocida, dada la naturaleza permitida del ledger libro mayor. El consenso se logra como resultado de un número mínimo de otros nodos en la red que ratifican el nuevo bloque. Para ser tolerante a errores bizantinos, el número de nodos que debe alcanzar el consenso es 2f + 1 en un sistema que contiene 3f + 1 nodos, donde f es el número de fallas en el sistema. Por ejemplo, si tenemos 7 nodos en el sistema, entonces 5 de esos nodos deben estar de acuerdo si 2 de los nodos están actuando de manera incorrecta.

El ejemplo práctico sería el de ByzCoin, que busca realizar mejoras importantes sobre el protocolo original de Bitcoin. Al abordar el desafío de la escalabilidad debido a la alta latencia, las transacciones de ByzCoin se comprometen irreversiblemente con la cadena de bloques en cuestión de segundos. La ventaja adicional es que los árboles de comunicación optimizan los compromisos de transacción y la verificación en operaciones normales.

Proof of Authority (PoA)

Sólo se puede usar con permissiones ledgers o ledgers autorizados, ya que existen nodos validadores que tienen la autoridad para crear bloques, y están especialmente designados a tal efecto. Los ledgers  que utilizan el PoA requieren la aprobación de la mayoría de los validadores para que se cree un bloque.

Conclusiones

Esta fue una descripción general sobre algún algoritmo de consenso utilizado en el mundo blockchain.  Por supuesto, hay muchos otros posibles. En general, podemos distinguir tres tipos de consenso:

  • El consenso estándar de Prueba de trabajo
  • Consentimiento basado en votación autorizado (PoA, SBFT)
  • Concesión basada en lotería autorizada (PoET)

El consenso que se elija en una implementación de cadena de bloques depende del tipo de red y de los datos manejados.

Los tipos de lotería serían más adecuados para redes grandes. Los tipos de votación son más adecuados para redes más pequeñas y reducen la latencia a un mínimo.

 

 

 

Certificando un documento en Blockchain usando stamp.io

En esta entrada  mostraremos cómo podemos tomar un documento y certificarlo en los blockchain de Bitcoin y Ethereum. Vamos a usar la herramienta Stamp.IO, y tomaremos un archivo y, en cierto sentido, lo tendré certificado en el bloques. Una vez hecho esto, la salida de Stamp.IO nos mostrará un certificado.

Lo primero será darse de alta en https://stamp.io/ , es un registro sencillo. Posteriormente veremos el panel principal de la aplicación:

stamp_io_panel

Aquí podemos subir cualquier tipo de archivo. Por mi parte, subo un archivo gráfico y obtengo un certificado.

stamp.png

Se llama stampery certificate e indica el nombre del archivo, cuando se agregó a la estampación, y la persona que, en cierto sentido, lo firmó. Asimismo, esperando unos 10 o 15 minutos dispondremos de los hash en ethereum y bitcoin.

bitcoinethereumproof

Así, un hash particular de este documento se almacena en transacciones que fueron colocadas en varios bloques, tanto en el blockchain de Ethereum como en el de Bitcoin.

Así que, si abrimos esta transacción en particular en un explorador de bloques (ver entrada de El blockchain de Bitcoin y Ethereum: Ejemplos de bloques), veremos que había dentro de esta transacción un hash del documento, y esto se hizo hace un número de días y se agregó a este bloque en particular en el blockchain de  Ethereum:

https://etherscan.io/tx/0xf17ebf79e7ebfc647a3315329f878896320debc24675772b6b6f613dd9c289c5

Si examinamos el bloque bitcoin, también podemos ver sus datos:

https://www.blocktrail.com/BTC/tx/229454fed89f3af502e11df90e91cfe89021906a60aac3de45d8d86d143e647f

Por lo tanto, Stamp.IO es una herramienta que se puede utilizar para poner y verificar hashes de documentos en el Ethereum y Bitcoin blockchains.

El blockchain de Bitcoin y Ethereum: Ejemplos de bloques

Echemos un vistazo a un par de blockchains públicos: los de Bitcoin y Ethereum,
y examinemos el bloque de genesis, o el primer bloque, de cada uno de ellos.
Luego, veremos un par de grandes transacciones, incluida la transacción más famosa en el historial de criptomonedas: la compra de una pizza por 10.000 bitcoins.
Entonces, primero, iremos a este explorador de blockchain, y veremos que hay una columna de Altura del bloque, que indica el número de bloques en esta blockchain en particular; supera el medio millón. Veamos la página de https://blockchain.info/:

Captura de pantalla 2018-06-08 a las 20.30.37
Estos bloques se crean aproximadamente cada 10 minutos, y hay una columna de Actas que muestra cuántas transacciones se incluyen en cada bloque, así como el total enviado o la cantidad de bitcoin que se transfirió en cada uno de esos bloques. Finalmente encontramos la columna “Resuelto por”, que es esencialmente el grupo de minería que creó ese bloque.

Echemos un vistazo a otro explorador de blockchain, (https://blockexplorer.com/ ) y aquí se puede ver el bloque de genesis de la cadena de bloques de Bitcoin, de fecha 3 de enero de 2009.

Captura de pantalla 2018-06-08 a las 20.35.25
En cuanto al blockchain Ethereum, veremos otro explorador de cadena de bloques.

ethio
La imágen nos muestra que hay cerca de 6 millones de bloques en el blockchain de Ethereum. Hay que tener en cuenta que cada bloque se crea mucho más rápido que en el blockchain de Bitcoin. Examinaremos el bloque de genesis de la cadena de bloques de Ethereum:

eth_block0.png
Observamos que fué creado hace 1046 días a fecha de realización del presente artículo y la recompensa minera por esto fue de aproximadamente cinco éter.
Veamos ahora una transacción muy interesante: la de la transacción de pizza. En Bitcoin Forum, hubo alguien el 18 de mayo de 2010 que solicitaba una pizza a cambio de 10.000 bitcoins. Se puede consultar todavía en https://bitcointalk.org/index.php?topic=137.0

Entonces, la pizza era unos 40 dólares, sin embargo hoy valdría mucho más, según el twitter oficial de bitcoin_pizza, más de 68 millones de dólares:

Proporcionaron su dirección y, de hecho, alguien les envió una pizza. Y puede ver aquí que esa fue la transacción aquí: de 10,000 bitcoins (https://blockchain.info/address/17SkEw2md5avVNyYgj6RiXuQKNwkXaxFyQ):

bitcoin_pizza
Todas estas cadenas se pueden examinar en estos exploradores, tanto de Bitcoin, como Ethereum como con otros blockchain.

Bitcoin, Ethereum y la criptoeconomía

Con la invención del sistema de moneda peer-to-peer (P2P) conocido como Bitcoin en 2008, como respuesta a la crisis financiera del momento, tenemos un ejemplo de una red de pago descentralizada global con una infraestructura distribuida y de propiedad pública, que funciona como un sistema “sin permiso” o blockchain público. Bitcoin puede considerarse como la primera Killer App de la computación descentralizada. Uno puede enviar y recibir bitcoins en cualquier lugar del mundo de forma completamente P2P, sin tener que intermediar a través de un tercero de confianza, como un banco.

De acuerdo con el sitio web Coin Market Capitalizations, a partir de octubre de 2017, la capitalización bursátil de Bitcoin fue de casi $ 100 mil millones.

Según AngelList, se han creado más de mil nuevas empresas para aprovechar las tecnologías relacionadas con Bitcoin y Blockchain desde el inicio del sistema de pago Bitcoin. Cientos de grandes empresas y docenas de gobiernos y universidades se han involucrado activamente en la investigación, prueba y creación de prototipos de protocolos, plataformas y aplicaciones de blockchain. En particular, el sector de servicios financieros ha estado invirtiendo activamente en la exploración de aplicaciones más amplias de tecnologías de contabilidad distribuida (de las cuales, blockchain es un subconjunto) desde finales de 2015.

Parte de la motivación del sistema era poder transferir valor a través de Internet, sin un intermediario. Entonces, uno de los mayores inventos y problemas que resolvió fue el del problema del “doble gasto”, esto es, pagar al intermediario. Bitcoin, de hecho, es dinero programable.
Ethereum, por otro lado, fue creado como una respuesta a Bitcoin. Mientras que Bitcoin se centra en la transferencia de valor monetario entre las partes, tiene, sin embargo, un lenguaje de programación muy limitado. Ethereum usa un conjunto más amplio de lenguajes de programación y herramientas para permitir muchos otros tipos de programas y aplicaciones. La invención central de Ethereum es su EVM o Ethereum Virtual Machine.
El EVM se ejecuta en la red Ethereum, y ejecuta un software Turing-completo. Vitalik Buterin es la persona que escribió el whitepaper para Ethereum.
Algunas de sus características clave incluyen

  • inmutabilidad de los datos
  • los usuarios no autorizados no pueden realizar cambios en esos datos
  • plataforma de desarrollo diseñada para hacer aplicaciones a prueba de manipulaciones
  • comunicaciones protegidas con criptografía
  •  protegidos contra ataques de hackers
  • diseñado en alta disponibilidad con el objetivo zero-downtime, ya que las aplicaciones en la red están descentralizadas y corren en muchas máquinas,  y si algunas de esas máquinas se cae, la red Ethereum mantiene un estado estable

Bitcoin también ha dado lugar a un gran interés académico y de investigación en el área de la Criptoeconomía y la seguridad criptoeconómica.

De acuerdo con Vitalik Buterin,

“Cryptoeconomics se trata de construir sistemas que tienen ciertas propiedades deseadas mediante la criptografía para probar las propiedades de los mensajes que ocurrieron en el pasado y al mismo tiempo utilizar incentivos económicos definidos dentro del sistema para alentar las propiedades deseadas para el futuro”.

En otras palabras, el campo de Cryptoeconomics explora la intersección de la criptografía y los incentivos económicos. Si bien la criptografía se usa para garantizar la seguridad de la red en varios niveles y funciones, los incentivos económicos incorporados proporcionados a los nodos participantes en la red aseguran que, en cualquier punto dado, la mayoría de los jugadores en la red operan de manera correcta.

En lugar de imponer barreras a la entrada,  los blockchain “sin permiso” son públicos y abiertos para que cualquiera pueda unirse. Dado que dichas redes pueden razonablemente esperar todo tipo de agentes, incluidos los actores malintencionados, la clave está en incentivar el buen comportamiento en una mayoría crítica de la red, de modo que:

  • Los actores maliciosos no pueden controlar la red a través de un ataque en escala.
  • Los actores maliciosos no pueden confabularse para emprender un ataque mayoritario organizado en la red.
  • Los beneficios de proteger la red son consistentemente más altos que el costo de atacar la red.
  • El coste de atacar la red es prohibitivamente alto

De acuerdo con la documentación oficial de Ethereum,

“Ethereum es una plataforma abierta de blockchain que permite a cualquier persona crear y utilizar aplicaciones descentralizadas que funcionan con la tecnología blockchain”.

La plataforma blockchain de Ethereum facilita la funcionalidad de scripting, o ‘smart contracts’, que se ejecutan a través de los nodos en la red. Como resultado, a diferencia de la cadena de bloques de Bitcoin, no solo rastrea las transacciones, sino que también las programa. Técnicamente, Ethereum es una máquina virtual completa de Turing con su criptomoneda nativa llamada éther. La plataforma fue propuesta en 2013 en un whitepaper por el entonces Vitalik Buterin de 19 años.

Ethereum se puede definir como una plataforma open source que permite a los desarrolladores construir e implementar tanto contratos inteligentes como aplicaciones descentralizadas, también conocidas como Dapps.
Además del blockchain público de Ethereum, existen numerosas versiones de Ethereum diseñadas para ser privadas y autorizadas.

A partir de octubre de 2017, Ethereum tenía una capitalización de mercado de más de 28 mil millones de dólares, convirtiendo a ether en la segunda criptomoneda más valiosa después de Bitcoin.

Dapps

Las aplicaciones de Ethereum no tienen un intermediario; en su lugar, los usuarios interactúan de forma P2P con otros usuarios a través de una variedad de interfaces: social, financiera, de juegos, etc. Dado que las aplicaciones se desarrollan en la propia red descentralizada basada en el consenso, la censura de terceros es virtualmente imposible. Los actores malintencionados no pueden alterar la aplicación cambiando el código y poniendo en peligro a todos los usuarios de la aplicación (o nodos que interactúan activamente con ella). Estas aplicaciones descentralizadas se conocen como Dapps.

Como están protegidos de forma criptográfica, los Dapps se conocen como ‘aplicaciones seguras’. Algunos de los Dapps de alto perfil basados ​​en la plataforma Ethereum incluyen:

La red Ethereum es una red pública global distribuida, lo que significa que no se ejecuta en servidores centrales en una determinada ubicación geográfica. En cambio, la potencia de computación que ejecuta la red es aportada por nodos distribuidos por todo el mundo. En otras palabras, los Dapps tienen ‘tiempo de inactividad cero’, nunca bajan y, en general, no se pueden apagar.

Ethereum Smart Contracts

Un ejemplo hipotético de un contrato inteligente basado en Ethereum puede implicar la siguiente transacción: en una ampliación de capital, transfiera la cantidad X del inversor a la empresa al recibir las acciones dadas de la empresa. El monto monetario X, que fue prevalidado por la empresa para la transacción (al igual que en una compra con tarjeta de crédito), se mantiene en custodia mediante el contrato inteligente, hasta que las acciones hayan sido recibidas por el inversionista. Cualquier tipo de lógica comercial sofisticada arbitraria puede ser programada con la cadena de bloques. El blockchain de Ethereum solo codifica estas ‘reglas de los juegos’. Los pagos reales ocurren al interactuar con la cadena de bloques.

La siguiente ilustración describe este proceso. El contrato inteligente codifica el acuerdo entre la empresa que recauda fondos y sus inversores (Panel 1). El contrato inteligente se encuentra en el blockchain público de Ethereum y se ejecuta en la máquina virtual Ethereum (EVM). Una vez que se ejecuta un evento desencadenante, como una fecha de vencimiento o un precio de ejercicio que ha sido precodificado, el contrato inteligente se ejecuta automáticamente según la lógica comercial (Panel 2). Como característica adicional, los reguladores pueden analizar la actividad del mercado de manera continua, sin comprometer la identidad de los jugadores específicos en una cadena de bloques pública sin permiso, como Ethereum (Panel 3).

Ethereum_Smart_Contracts.png

 

Blog de WordPress.com.

Subir ↑