Buscar

Blog de Alfonso Tienda

Marketing, Startups, Proyectos y Tecnología.

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/

 

Anuncios

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.

Blockchain: Smart Contracts

En 1996, Nick Szabo acuñó el término smart contract o contrato inteligente.

Los Smart Contracts son simplemente programas informáticos que ejecutan acciones predefinidas cuando se cumplen ciertas condiciones dentro del sistema. Pueden considerarse como protocolos informáticos para facilitar, verificar o hacer cumplir la negociación de un contrato legar. Los Smart Contracts proporcionan el lenguaje de las transacciones que permiten modificar el estado del ledger distribuido. Pueden facilitar el intercambio y la transferencia de cualquier cosa de valor (por ejemplo, acciones, dinero, contenido, propiedad).
Hoy, los contratos inteligentes de Ethereum están diseñados para funcionar en todos los nodos de la red Ethereum.

Blockchain: Inmutabilidad de datos

La inmutabilidad de los datos que se encuentran en el blockchain es quizás la razón más poderosa y convincente para implementar soluciones basadas en blockchain para una variedad de procesos que actualmente se registran en servidores centralizados. Esta característica de inmutabilidad o “inalterable en el tiempo” hace que blockchain sea útil para la contabilidad, las transacciones financieras, la administración de identidades y la propiedad, administración y transferencia de activos, solo por nombrar algunos ejemplos. Una vez que se escribe una transacción en la cadena de bloques, nadie puede cambiarla o, al menos, sería extremadamente difícil cambiarla.

De acuerdo con Antony Lewis, el Director de Investigación en R3,

Cuando la gente dice que las cadenas de bloques son inmutables, no significa que los datos no se puedan modificar, significa que es extremadamente difícil cambiarlo, y si lo intentas, es muy fácil detectar el intento

Profundicemos en esta afirmación un poco más. Es extremadamente difícil cambiar las transacciones en un blockchain, porque cada bloque está vinculado al bloque anterior al incluir el hash del bloque anterior. Este hash incluye el hash de raíz de Merkle de todas las transacciones en el bloque anterior. Si una sola transacción fuera a cambiar, no solo cambiaría el hash raíz de Merkle, sino también el hash contenido en el bloque modificado. Además, cada bloque subsiguiente debería actualizarse para reflejar este cambio. En el caso del modelo de consenso de prueba de trabajo o proof of work, la cantidad de energía requerida para volver a calcular la ausencia de este bloque y cada bloque subsiguiente sería prohibitiva. Por otro lado, si alguien modificó una transacción en un bloque sin realizar los pasos necesarios para actualizar los bloques subsiguientes, sería fácil recalcular los valores hash usados ​​en los bloques y determinar si algo anda mal.

Veamos un ejemplo de cómo funciona esto. En el siguiente diagrama, vemos los bloques originales y las transacciones para el Bloque 11. Específicamente, vemos que la raíz de Merkle para las transacciones en el Bloque 11 es Hash #ABCD, que es el hash combinado para las cuatro transacciones en este bloque. Ahora, digamos que alguien entra e intenta cambiar la Transacción A por la Transacción A ‘. Esto, a su vez, modifica los hashes que se almacenan en el árbol de Merkle, y la raíz de Merkle cambia a Hash # A’BCD. Además, el hash del Bloque Anterior almacenado en el Bloque 12 también necesita ser modificado para reflejar el cambio general en el hash para el Bloque 11

BLOCKCHAIN_IMMUTABILITY

Blockchain: Peer 2 Peer y consenso

Históricamente, la mayoría de las aplicaciones utilizan un servidor central (o servidores). Para que un usuario / cliente envíe un mensaje a otro usuario / cliente en la red, la solicitud debe enviarse al hub o a un servidor central, que luego lo dirige a la computadora correcta.

Las redes peer-to-peer (P2P) primero se hicieron populares por Napster (y más tarde BitTorrent) y consisten en sistemas informáticos que están conectados directamente entre sí a través de Internet, sin un servidor central. Los pares contribuyen a la potencia de cómputo y almacenamiento que se requiere para el mantenimiento de la red. Las redes P2P generalmente se consideran más seguras que las redes centralizadas, ya que no tienen un único punto de ataque, como en el caso de una red basada en servidores centrales, donde la seguridad de toda la red puede verse comprometida si el servidor central es atacado con éxito Como resultado, las grandes empresas invierten cantidades significativas de recursos financieros para fortalecer sus servidores centrales. Según el “Informe de Riesgo Global 2016” del Foro Económico Mundial  en ese año esta inversión en seguridad superó los 445 mil millones de dólares.

Los sistemas P2P sin permiso (o públicos), no requieren una cantidad establecida de pares para estar en línea y generalmente son más lentos. Las redes P2P privadas deben garantizar el tiempo de actividad y requieren un alto nivel de calidad de servicio en los enlaces de comunicación.

Una red blockchain es un grupo de computadoras que están organizadas en una arquitectura Peer-to-Peer. El consenso es un proceso mediante el cual los pares sincronizan los datos en el blockchain. Hay una serie de mecanismos o algoritmos de consenso, como proof of work, proof of stake, proof of elapsed time o simplified byzantine fault tolerance.
Bitcoin usa proof of work, Ethereum usa proof of work pero está migrando a proof of stake. Hyperledger Sawtooth utiliza proof of elapsed time.

Tipos de Blockchain : Públicos y privados

Un blockchain puede ser sin permiso (como Bitcoin o Ethereum) o estar autorizado (como los diferentes frameworks de cadena de bloques de Hyperledger). Una blockchain sin permiso también se conoce como blockchain público, porque cualquiera puede unirse a la red. Una cadena de bloques autorizada o cadena de bloques privada requiere una verificación previa de los participantes de la red, y estas partes generalmente son conocidas entre sí.

La elección entre blockchain público o privado debe ser tomada por la aplicación  y la necesidad de negocio. La mayoría de las aplicaciones empresariales implican una investigación exhaustiva antes de que las partes acuerden hacer negocios entre ellos. Un ejemplo en el que varias empresas intercambian información es la gestión de la cadena de suministro. La gestión de la cadena de suministro es un caso de uso ideal para blockchains privados. No se quiere que las compañías no “validadas” participen en la red. Cada participante de la cadena de suministro requeriría permisos para ejecutar transacciones en el blockchain. Estas transacciones permitirían a otras compañías entender en qué parte de la cadena de suministro se encuentra un artículo en particular.

Por el contrario, cuando una red puede ‘distribuir’ la confianza, facilitando a las partes a realizar transacciones sin necesariamente tener que verificar la identidad de cada una, como el blockchain de Bitcoin, una cadena de bloques pública es más adecuada. Muchas de estas instancias involucran la venta o distribución al público. Las criptomonedas generalmente implican implementaciones de blockchains públicos.

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.

Diferencias entre Blockchain y Bases de datos

 La tecnología Blockchain tiene algunas diferencias clave con las bases de datos.

Un blockchain es una estructura de datos de solo escritura, donde las nuevas entradas se anexan al final del libro. Cada bloque nuevo se agrega a la cadena de bloque al enlazar con el ‘hash’ del bloque anterior ( ver Blockchain: El arbol de Merkle ). No hay permisos de administrador dentro de una cadena de bloques que permitan la edición o eliminación de datos.

En una base de datos relacional, los datos se pueden modificar o eliminar fácilmente. Normalmente, hay administradores de bases de datos que pueden realizar cambios en cualquier parte de los datos y / o su estructura. Además, las cadenas de bloques se diseñaron para aplicaciones descentralizadas, mientras que las bases de datos relacionales, en general, se diseñaron originalmente para aplicaciones centralizadas, donde una sola entidad controla los datos.

Blog de WordPress.com.

Subir ↑