Curso de blockchain (1). Blockchain 101

Es muy probable que si está leyendo este post, ya haya oído hablar de blockchain y seguro que tienes una apreciación fundamental de su enorme potencial. Si no, déjame decirte que esta es una tecnología que ha prometido alterar positivamente los paradigmas existentes de casi todas las industrias que incluyen, entre otras, las de TI, las finanzas, el gobierno, los medios de comunicación, la medicina y el derecho. Este post es una introducción a la tecnología blockchain, sus fundamentos técnicos, la teoría detrás de ella, y varias técnicas que se han combinado para construir lo que se conoce hoy como blockchain. En este post, se describen primero los fundamentos teóricos de los sistemas distribuidos. A continuación, el se presentan los precursores de Bitcoin. Finalmente, se introduce la tecnología blockchain. Este enfoque es una forma lógica de entender la tecnología blockchain, ya que las raíces de blockchain están en los sistemas distribuidos y en la criptografía. Cubriremos mucho terreno rápidamente aquí, pero no se preocupe, repasaremos una gran cantidad de este material con mucho más detalle a medida que avanza a través del curso. La imagen del post corresponde al genial artista lanzaroteño Cesar Marrique.

Mas sobre Cesar Manrrique aqui: http://fcmanrique.org/cesar-manrique/biografia/?lang=es

el crecimiento de la tecnologia blockchain

Con la invención de Bitcoin en 2008, el mundo conoció un nuevo concepto, que revolucionó el conjunto de la sociedad. Era algo que prometía tener un impacto en
cada industria. Este nuevo concepto fue blockchain; la tecnología subyacente que sustenta
Bitcoin. Algunos describen blockchain como una revolución, mientras que otra escuela de pensamiento cree que va a ser más evolutivo, y pasarán muchos años antes de que se obtengan beneficios prácticos de blockchain. Este pensamiento es correcto hasta cierto punto, pero, en muchas opiniónes, la revolución ya ha comenzado. Es una tecnología que tiene impacto en las tecnologías actuales y que también posee la capacidad de cambiarlas a un nivel fundamental.

Muchas organizaciones prominentes de todo el mundo han pasado ya de las pruebas de concepto y ya están escribiendo sistemas de producción utilizando blockchain. El potencial disruptivo de blockchain ahora ha sido plenamente reconocido. Por ejemplo, DeFi o las llamadas finanzas descentralizada han surgido recientemente como una nueva idea disruptiva que tiene como objetivo descentralizar los sistema financieros. DeFi ofrece a las personas más control sobre sus activos, lo que les permite poseer y operar su estrategia financiera en blockchain sin requerir intermediarios. Esto ya es un desafío para las finanzas tradicionales al crear plataformas descentralizadas para el comercio,
sistemas de inversiones, seguros, pagos y préstamos.

Se puede ver un vistazo del potencial de DeFi en https://defipulse.com. Un hecho notable es la cantidad de valor total bloqueado en el sistema, que es de casi 5 mil millones de dólares estadounidenses.

Sin embargo, algunas organizaciones aún se encuentran en la etapa de exploración preliminar, aunque se espera que progresen más rápidamente a medida que la tecnología madure.

Progreso hacia la madurez

Si miramos los últimos años, notamos que, en 2013, comenzaron a surgir algunas ideas que sugirieron que blockchain podia tener el potencial de aplicación en áreas distintas de
las criptomonedas. Por ese tiempo, el uso principal de blockchain fue en el espacio de las criptomonedas como Bitcoin y Litecoin, y muchas monedas nuevas surgieron durante ese período.

Una criptomoneda se puede definir como una moneda digital que está protegida por la criptografía.

El siguiente gráfico muestra un esquema de amplio espectro de la progresión y adopción anual de tendencias de la tecnología blockchain. Los años que se muestran en el eje x indican el intervalo de tiempo en en la que cae una fase específica de la tecnología blockchain. Cada fase tiene un nombre que representa la etapa en la que se alcanzó la tecnología, y esto se muestra en el eje x a partir del período de IDEAS Y PENSAMIENTOS en 2013 hasta eventualmente MADUREZ Y MÁS PROGRESO, previsto en 2025. El eje y muestra el nivel de actividad, participación y adopción de la tecnología blockchain. El gráfico muestra que, aproximadamente para 2025, la tecnología blockchain se espera que madure y tenga un gran número de usuarios.

Adopcion de la tecnologia blockchain y su madurez

El gráfico anterior muestra que, en 2013, surgieron ideas y pensamientos sobre otros usos de la tecnología blockchain además de las criptomonedas. Luego, en 2014, hubo algunas investigaciones y comenzó la experimentación, que condujo a pruebas de concepto, más investigación y a proyectos de prueba a gran escala entre 2015 y 2017. En 2018, vimos implementaciones en el mundo real. Muchos proyectos están en marcha y se establecen para reemplazar los sistemas existentes; por ejemplo, el Australian Securities Exchange (ASX) pronto se convertirá en la primera organización en reemplazar su sistema de liquidación con tecnología blockchain.

Puede encontrar más información sobre este tema en https://www.asx.com.au /services/chessreplacement.htm.

Otro ejemplo destacado reciente es el de un proyecto listo para producción implementado por el banco Santander, donde se ha emitido el primer bono blockchain de extremo a extremo. Este es un paso significativo hacia la adopción generalizada de blockchain.

Puede leer más sobre esto en:

http://www.santander.com/csgs/Satellite/CFWCSancomQP01/en_GB/Corporate/Press-room/2019/09/12/Santander-launches-the-first-end-to-end-blockchain-bond.html.

Se espera que, durante 2020, se realicen más investigaciones, junto con un aumento del interés hacia la regulación y estandarización de la tecnología blockchain. Después de esto, los proyectos listos para producción y los proyectos listos para usar estarán disponibles utilizando tecnologia blockchain a partir de 2020, y para 2021 se espera el uso generalizado de la tecnología blockchain a nivel de producción.

El progreso en la tecnología blockchain es casi como el boom de las punto-com de finales de la década de 1990.

En los próximos años, se espera que la investigación sobre la escalabilidad de las cadenas de bloques, donde las cadenas de bloques podrán manejar una gran cantidad de transacciones similares a las redes financieras tradicionales den sus frutos. Además, durante los primeros años de la década de 2020, veremos más producción a nivel de uso de blockchain que abordara problemas como la privacidad, la identidad descentralizada y se harán algunos progresos hacia la web descentralizada (o descentralización de Internet). Tenga en cuenta que tales soluciones ya existen pero no están en uso generalizado. El uso generalizado de tales tecnologías es esperado a partir de principios de 2020.
Se espera que, a principios de la próxima década, la investigación en estas áreas continúe con la adopción y mayor madurez de la tecnología blockchain. Finalmente, en 2025, se espera que la tecnología será lo suficientemente madura para ser utilizada en el día a día por menos conocedores para los conocedores de la tecnología. Por ejemplo, las redes blockchain se pueden utilizar tan fácil y naturalmente como los consumidores usan Internet ahora. Se espera que continúen las investigaciones adicionales incluso más allá de este punto. Por favor tenga en cuenta que los plazos proporcionados en la tabla no son estrictos y pueden variar, ya que es bastante difícil predecir cuándo madurará exactamente la tecnología blockchain. Este gráfico se basa en los avances de los últimos años y el clima actual de investigación, interés y entusiasmo con respecto a esta tecnología, que se puede extrapolar para predecir que blockchain progresará a
convertirse en una tecnología madura para 2025.

Incrementandose el interes

El interés en la tecnología blockchain ha aumentado significativamente en los últimos años. Una vez descartado simplemente como “dinero geek” desde el punto de vista de la criptomoneda, o como algo que simplemente no se consideró que valiera la pena perseguir, blockchain ahora está siendo investigado por las mayores empresas y organizaciones de todo el mundo. Se están gastando millones de dólares para adoptar
y experimentar con esta tecnología. Esto es evidente a partir de las recientes acciones tomadas por la Union Europea, donde han anunciado planes para aumentar la financiación para la investigación de blockchain a casi 340 millones de euros en 2020.

Los lectores interesados pueden leer más sobre esto en

https://www.irishtimes.com/business/technology/boost-for-blockchain-research-as-eu-increases-funding-four-fold-1.3383340

Otro informe sugiere que el gasto global en investigación de tecnología blockchain podría alcanzar 9.2 mil millones de dólares estadounidenses para 2021.

Puede encontrar más información al respecto en

https://bitcoinmagazine.com/articles/report-suggests-global-spending-blockchain-tech-could-reach-92-billion-2021/.

Además, el interés en blockchain dentro del mundo académico es asombroso y muchos
establecimientos, incluidas universidades prestigiosas de todo el mundo, están llevando a cabo investigaciónes y desarrollo en tecnología blockchain. No solo hay cursos educativos
ofrecido por muchas instituciones, sino que los académicos también están realizando investigaciones de alta calidad y la producción de varios artículos de investigación interesantes sobre el tema. También hay un número de grupos de investigación y conferencias en todo el mundo que se centran específicamente en investigaciones blockchain. Esto es extremadamente útil para el crecimiento de todo el ecosistema blockchain. Una simple búsqueda en línea de “grupos investigación blockchain” revelaría cientos, si no miles, de estos grupos de investigación.
También hay varios consorcios como Enterprise Ethereum Alliance (EEA) en https://entethalliance.org e Hyperledger en https://www.hyperledger.org, que han sido
establecidos para la investigación, el desarrollo y la estandarización de la tecnología blockchain. Además, una gran cantidad de empresas emergentes ya están proporcionando soluciones basadas en blockchain. Una búsqueda simple en Google Trends revela la inmensa escala de interés en la tecnología blockchain en los últimos años.

Especialmente desde principios de 2017, el aumento del término de búsqueda “blockchain” es bastante significativo, que se muestra en el siguiente gráfico:

Grafico de la popularidad de la palabra blockchain en Google Trends

Cabe señalar que la disminución que se muestra al final del gráfico no necesariamente implica un menor interés en la tecnología blockchain, sino simplemente captura el hecho
que el término de búsqueda se buscó menos veces en comparación con finales de 2017 y principios de 2018. Esto podría deberse simplemente al hecho de que las personas interesadas en la tecnología blockchain ya han entendió lo suficiente sobre blockchain como para no justificar su búsqueda en Google. Sin embargo, vemos un interés significativo y continuo en la tecnología blockchain. Ya se han previsto varios beneficios de esta tecnología, como la confianza descentralizada, ahorro de costos, transparencia y eficiencia. Sin embargo, también existen múltiples desafíos que siguen siendo investigados activamente en blockchain, como la escalabilidad y la privacidad.
En este curso, veremos cómo la tecnología blockchain puede ayudar a generar los beneficios. previamente mencionados. Aprenderá qué es exactamente la tecnología blockchain y cómo se puede remodelar empresas, múltiples industrias y, de hecho, la vida cotidiana al generar una plenitud de beneficios como eficiencia, ahorro de costos, transparencia y seguridad. Lo haremos también explorarando qué es la tecnología de contabilidad distribuida (DLT), la descentralización y los contratos inteligentes, y cómo se pueden desarrollar e implementar soluciones tecnológicas utilizando plataformas blockchain como Ethereum e Hyperledger. También investigaremos qué desafíos necesitan ser abordados antes de que blockchain pueda convertirse en una tecnología convencional. También echaremos un vistazo crítico a la escalabilidad de la blockchain y otros desafíos, como una discusión sobre las limitaciones y desafíos de la tecnología blockchain. Comenzaremos nuestra exploración de blockchain observando los sistemas distribuidos en la siguiente sección. Este es un paradigma fundamental utilizado dentro de blockchain, y debemos tener una comprensión firme sobre qué son los sistemas distribuidos antes de que podamos discutir de manera significativa blockchain en detalle.

sistemas distribuidos

Comprender los sistemas distribuidos es esencial para comprender blockchain, como blockchain es un sistema distribuido en su núcleo. Es un libro mayor distribuido que se puede centralizar o descentralizar. Originalmente, una cadena de bloques está destinada a ser y generalmente se usa como una plataforma. Se puede considerar como un sistema que tiene propiedades tanto descentralizadas como paradigmas distribuidos. Es un sistema distribuido descentralizado. Los sistemas distribuidos son un paradigma informático mediante el cual dos o más nodos trabajan con otros de manera coordinada para lograr un resultado común. Está modelado de tal manera que los usuarios finales lo ven como una única plataforma lógica. Por ejemplo, el motor de búsqueda de Google se basa en un gran sistema distribuido; sin embargo, para un usuario, parece una plataforma única y coherente. Un nodo puede definirse como un jugador individual en un sistema distribuido. Todos los nodos son capaces de enviar y recibir mensajes entre sí. Los nodos pueden ser honestos, defectuosos o maliciosos, y tienen memoria y procesador. Un nodo que exhibe un comportamiento irracional es también conocido como nodo bizantino.

El problema de los generales bizantinos
En 1982, Lamport et al. propusieron un experimento mental. En su artículo de investigación, The Byzantine Generals Problem, que está disponible aquí: https://www.microsoft.com/en-us/research/publication/byzantine-generals-problem/ un grupo de generales del ejército que lideran diferentes partes del ejército bizantino planea atacar o retirarse de una ciudad. La única forma de comunicarse entre ellos es a través de un mensajero. Necesitan acordar atacar al mismo tiempo para ganar. El problema es que uno o más generales podrían ser traidores que podrían enviar un mensaje engañoso. Por lo tanto, existe la necesidad de un mecanismo viable que permita un acuerdo entre los generales, incluso en presencia de los traidores, para que el ataque pueda tener lugar al mismo tiempo. Como analogía para los sistemas distribuidos, los generales pueden considerarse nodos honestos, los traidores como nodos bizantinos (es decir, nodos con comportamiento arbitrario), y el mensajero se puede considerar como un canal de comunicación entre los generales. Este problema fue resuelto en 1999 por Castro y Liskov quienes presentaron el Algoritmo Practico de tolerancia a fallos bizantinos (PBFT), que resuelve el problema de consenso en presencia de fallas bizantinas en redes asincronicas utilizando el protocolo de replicación de estados de maquina. PBFT va a través de una serie de rondas para finalmente llegar a un acuerdo entre los nodos en el valor propuesto. PBFT y otros protocolos de consenso serán discutido con mayor detalle en la parte 5 del curso Algoritmos de consenso.

Este tipo de comportamiento inconsistente de los nodos bizantinos puede ser intencionalmente malicioso, lo que es perjudicial para el funcionamiento de la red. Cualquier comportamiento inesperado de un nodo en la red, ya sea maliciosa o no, se puede clasificar como bizantina.

En el siguiente diagrama se muestra un ejemplo a pequeña escala de un sistema distribuido. Este sistema distribuido tiene seis nodos, de los cuales uno (N4) es un nodo bizantino que conduce a posibles datos inconsistentes. L2 es un enlace roto o lento, y esto puede conducir a una partición en la red.

Diseño de un sistema distribuido. N4 es un nodo bizantino y L2 es un enlace roto o defectuoso

El principal desafío del diseño de un sistema distribuido es la coordinación entre nodos y la tolerancia a fallos. Incluso si algunos (un cierto umbral dictado por el protocolo de consenso) de los nodos se vuelven defectuosos o algunos de los enlaces de la red se rompen, el sistema distribuido debe poder tolerar esto y continuar trabajando para lograr el resultado deseado. Este problema ha sido un área activa de la investigación del diseño de sistemas distribuidos durante muchos años, y varios algoritmos y mecanismos
se han propuesto para superar estos problemas. Los sistemas distribuidos son tan desafiantes de diseñar que una teoría conocida como el teorema CAP establece que un sistema distribuido no puede tener las tres propiedades simultáneamente; es decir, consistencia, disponibilidad y tolerancia de partición. Bucearemos en el teorema de CAP con más detalle más adelante en este post. Aunque blockchain puede considerarse un sistema distribuido y descentralizado, existen diferencias críticas entre los sistemas distribuidos y los sistemas descentralizados que hacen que ambos sistemas sean arquitectónicamente diferentes. Discutiremos estas diferencias en detalles en el post 2 del curso, Descentralización. Con una mejor comprensión de los sistemas distribuidos, pasemos ahora a hablar de blockchain en sí. Comenzaremos con un breve resumen de la historia de blockchain y Bitcoin.

la historia de blockchain y bitcoin

Blockchain se introdujo con la invención de Bitcoin en 2008. Su implementación práctica
luego ocurrió en 2009. Para los propósitos de este post, es suficiente revisar Bitcoin muy brevemente, ya que se explorará en profundidad en el post 6, Introducción a Bitcoin. Sin embargo es imprescindible referirse a Bitcoin porque, sin él, la historia de blockchain no está completa.

eventos que permitieron blockchain

Ahora veremos la historia temprana de la computación y las redes de computadoras y discutiremos cómo estas tecnologías evolucionaron y contribuyeron al desarrollo de Bitcoin en 2008. Podemos ver esto en orden cronológico:

  1. Década de 1960: invención de las redes informáticas
  2. 1969 – Desarrollo de ARPANET
  3. Década de 1970: trabajo inicial sobre comunicaciones de red seguras, incluida la criptografia de clave pública
  4. Década de 1970: funciones hash criptográficas
  5. 1973 – Extensión de ARPANET a otras ubicaciones geográficas
  6. 1974 – Primer proveedor de servicios de Internet, Telenet
  7. 1976 – Diffie – Hellman trabaja en el intercambio seguro de claves criptográficas
  8. 1978 -Invención de la criptografía de clave pública
  9. 1979 – Invención de Merkle Trees (hashes en una estructura de árbol) por Ralph C. Merkle
  10. Década de 1980: desarrollo de TCP / IP
  11. 1980 – Protocolos para criptosistemas de clave pública, Ralph C. Merkle
  12. 1982 – Blind Signatures propuestas por David Chaum
  13. 1982 – El problema de los generales bizantinos (Bitcoin puede considerarse una solución al Problema de los generales bizantinos; sin embargo, la intención original de la red Bitcoin era abordar el problema del doble gasto no resuelto previamente)
  14. 1985 – Trabajo en la criptografía de curva elíptica por Neal Koblitz y Victor Miller
  15. 1991 – Haber y Stornetta trabajan en las marcas de tiempo de los documentos a prueba de manipulaciones. Esto puede ser considerada la primera idea de una cadena de bloques o cadenas hash
  16. Cynthia Dwork y Moni Naor publican Precios mediante procesamiento o lucha contra el span de Correo. Este se considera el primer uso de Prueba de trabajo (PoW)
  17. 1993 – Haber, Bayer y Stornetta actualizaron la protección contra manipulaciones de sistema de marcas de tiempo con árboles Merkle
  18. 1995 – Se inició el sistema Digicash de David Chaum (un sistema de efectivo electrónico anónimo) para ser utilizado en algunos bancos.
  19. 1998 – Bit Gold, un mecanismo de moneda digital descentralizada, inventado por Nick Szabo. Utilizaba el encadenamiento de hash y los quórums bizantinos
  20. 1999: aparición de una aplicación para compartir archivos que se utiliza principalmente para compartir música, Napster que es una red P2P, pero se centralizó con el uso de servidores de indexación
  21. 1999: Desarrollo de un servicio de sellado de tiempo seguro para el proyecto belga TIMESEC
  22. 2000 – Red de intercambio de archivos Gnutella, que introdujo la descentralización
  23. 2001: aparición de BitTorrent y tablas hash distribuidas (DHT)
  24. 2002 – Hashcash de Adam Back
  25. 2004 – Desarrollo de B-Money por Wei Dei usando hashcash
  26. 2004 – Hal Finney, la invención del sistema PoW reutilizable
  27. Prevención de los ataques de Sybil mediante el uso de puzzles de cálculo, gracias a James Aspnes
  28. Bitcoin (primera cadena de bloques)

Las tecnologías antes mencionadas contribuyeron de alguna manera al desarrollo de Bitcoin, incluso indirectamente; el trabajo es relevante para el problema que resolvió Bitcoin. Todos los intentos anteriores para crear moneda digital anónima y descentralizada fue un éxito hasta cierto punto, pero no pudieron resolver el problema de prevenir el doble gasto de una manera completamente desconfiada o en un entorno sin permiso. Este problema finalmente fue abordado por la cadena de bloques de Bitcoin, que introdujo la criptomoneda Bitcoin. Cabe señalar que otros conceptos como la replicación de la máquina de estado (el problema SMR), introducido en 1978 por Leslie Lamport y formalizado en 1980 por Fred Schneider, también fueron solucionados por Bitcoin. Bitcoin resuelve el problema de SMR (probabilísticamente) al permitir la replicación de bloques y la garantía de coherencia a través de su mecanismo de consenso PoW.

El SMR, o problema de replicación de la máquina de estado, es una técnica utilizada para proporcionar replicación tolerante a fallas en sistemas distribuidos.

Ahora discutiremos algunos de los principales hitos en la historia de blockchain con más detalle.

dinero electronico

El concepto de efectivo electrónico (e-cash) o moneda digital no es nuevo. Desde la década de 1980, los protocolos de dinero electrónico habn existido y se basan en un modelo propuesto por David Chaum. Así como es necesario comprender el concepto de sistemas distribuidos para comprender la tecnologia blockchain, la idea del efectivo electrónico también es esencial para apreciar blockchain, y con ello, la aplicación de blockchain, Bitcoin y, más ampliamente, las criptomonedas en general. Es necesario abordar dos cuestiones fundamentales del sistema de efectivo electrónico: la contabilidad y el anonimato. Se requiere contabilidad para garantizar que el efectivo se pueda gastar una sola vez (abordando el problema del doble gasto) y que solo puede gastarlo su legítimo propietario. El problema del doble gasto surge cuando el mismo dinero se puede gastar dos veces. Como es bastante fácil hacer copias de datos digitales, esto se convierte en un gran problema en las monedas digitales, ya que puede hacer muchas copias de la misma cantidad de efectivo digital. Se requiere el anonimato para proteger la privacidad de los usuarios. Con efectivo físico, es casi imposible restrear el gasto hasta la persona que realmente pagó el dinero, lo que proporciona privacidad si el consumidor opta por ocultar su identidad. En el mundo digital, sin embargo, proporcionar tal nivel de privacidad es difícil debido a la personalización inherente, el rastreo y los mecanismos de registro en sistemas de pago digitales como pagos con tarjeta de crédito. Este es de hecho un característica necesaria para garantizar la seguridad y la protección de la red financiera, pero a menudo también visto como una violación de la privacidad.

Esto se debe al hecho de que los usuarios finales no tienen ningún control sobre quiénes pueden compartir sus datos, incluso sin su consentimiento. Sin embargo, este es un problema solucionable y la criptografía se utiliza para abordar estos problemas. Especialmente en las redes blockchain, la privacidad y el anonimato de los participantes en la cadena de bloques son características buscadas. Aprenderemos mas
sobre esto en el post 4, Criptografía de clave pública. David Chaum resolvió ambos problemas durante su trabajo en la década de 1980 utilizando dos operaciones criptográficas, a saber, las blind signatures y el secret sharing. Estas terminologias y los conceptos relacionados se discutirán en detalle en el post 4, Criptografía de clave pública. Por el momento, basta con decir que las blind signatures permiten firmar un documento sin verlo y el secret sharing es un concepto que permite detectar el doble gasto, es decir,
la deteccion del gasto de la misma ficha de efectivo electrónico dos veces. En 2009 apareció la primera implementación práctica de un sistema de efectivo electrónico llamado Bitcoin. El término criptomoneda surgió más tarde. Por primera vez, resolvió el problema dl consenso en una red distribuida sin confianza. Usa criptografía de clave pública con un mecanismo PoW para proporcionar un método seguro, controlado y descentralizado para acuñar moneda digital. La innovación clave fue la idea de una lista ordenada de bloques compuesta de transacciones que es asegurada criptográficamente por el mecanismo PoW para evitar el doble gasto en un entorno sin confianza. Este concepto se explicará con más detalle en el Post 6, Introducción a Bitcoin. Otras tecnologías utilizadas en Bitcoin, pero que existían antes de su invención, incluyen Los arboles de Merkle y las funciones hash. Todos estos conceptos se explican con la profundidad adecuada en Post 4, Criptografía de clave pública. Al observar todas las tecnologías mencionadas anteriormente y su historial relevante, es fácil ver cómo se combinaron conceptos de esquemas de efectivo electrónico y sistemas distribuidos para crear Bitcoin y lo que ahora se conoce como blockchain. Este concepto también se puede visualizar con la ayuda del siguiente diagrama:

Los componentes clave para la invencion de Bitcoin y Blockchain

Con la aparición del efectivo electrónico, junto con las ideas que llevaron a la formación de Bitcoin y blockchain, ahora podemos comenzar a hablar de blockchain.

blockchain

En 2008, se publicó un documento pionero, titulado Bitcoin: un sistema de efectivo electrónico de pares escrito sobre el tema del efectivo electrónico peer-to-peer bajo el seudónimo de Satoshi Nakamoto. Este documento está disponible en https://bitcoin.org/bitcoin.pdf.
Introdujo el término cadena de bloques. Nadie conoce la identidad real de Satoshi Nakamoto. Después de introducir Bitcoin en 2009, permaneció activo en la comunidad de desarrolladores de Bitcoin hasta 2011. Luego entregó el desarrollo de Bitcoin a sus desarrolladores principales y simplemente desapareció. Desde entonces, no ha habido comunicación de él en absoluto, y su existencia y la identidad está envuelta en misterio. El término “cadena de bloques” evolucionó a lo largo de los años hasta convertirse en
palabra “blockchain”. Como se dijo anteriormente, la tecnología blockchain se puede incorporar a una multitud de aplicaciones que se puede implementar en varios sectores económicos, particularmente en el sector financiero. La mejora en el desempeño de las transacciones y liquidaciones financieras se manifiesta como reducciones deseables de tiempo y costo. Se arrojará luz adicional sobre estos aspectos de blockchain
en el Post 19, Blockchain – Mas alla de las criptomonedas, donde se discutirán casos de uso prácticos en detalle para diversas industrias. Por ahora, es suficiente decir que partes de casi todos los sectores ya se han dado cuenta del potencial y la promesa de blockchain y se han embarcado, o lo hará pronto, en el viaje para capitalizar los beneficios de la tecnología blockchain.

definiendo blockchain

Un buen lugar para comenzar a aprender qué es blockchain sería ver su definición. Hay algunas diferentes formas en que se puede definir blockchain; los siguientes son dos de los más aceptadas definiciones:

Definición de Layman: Blockchain es un sistema compartido, seguro y de mantenimiento de registros en constante crecimiento en el que cada usuario de los datos tiene una copia de los registros, que solo se pueden actualizar si todas las partes involucradas en una transacción acepta actualizar.
Definición técnica: Blockchain es un libro mayor distribuido peer-to-peer que
es criptográficamente seguro, de solo escritura, inmutable (extremadamente difícil de
cambiar) y que se puede actualizar solo mediante consenso o acuerdo entre pares.

Ahora, examinemos estas cosas con más detalle. Examinaremos las palabras clave de estas definiciones técnicas una por una.

peer to peer

La primera palabra clave en la definición técnica es peer-to-peer o P2P. Esto significa que no hay un controlador central en la red, y todos los participantes (nodos) se comunican entre sí directamente. Esta propiedad permite que las transacciones se realicen directamente entre los pares sin la participación de terceros, como por ejemplo en un banco.

ledger distribuido

La disección de la definición técnica revela además que blockchain es un “libro mayor distribuido”, que significa que un libro mayor se distribuye por la red entre todos los pares de la red, y cada par tiene una copia del libro mayor completo.

criptograficamente seguro

A continuación, vemos que este libro mayor es “criptográficamente seguro”, lo que significa que la criptografía se ha utilizado para proporcionar servicios de seguridad que hacen que este libro mayor sea seguro contra la manipulación y el mal uso. Estos servicios incluyen el no repudio, la integridad de los datos y la autentificación del origen de los datos. Verá cómo se logra esto más adelante en el post 4, Criptografía de clave pública, que presenta el fascinante mundo de la criptografía.

solo escritura

Otra propiedad que encontramos es que blockchain es “de solo escritura“, lo que significa que los datos solo se puede agregar a la cadena de bloques en orden secuencial en el tiempo. Esta propiedad implica que una vez que los datos se agrega a la cadena de bloques, es casi imposible cambiar esos datos y se pueden considerar prácticamente inmutables. En otras palabras, los bloques agregados a la cadena de bloques no se pueden cambiar, lo que permite que blockchain se convierta en un libro de transacciones inmutable y a prueba de manipulaciones. Sin embargo, recuerde que se puede cambiar en escenarios raros en los que la unión contra la red blockchain de los malos actores logra obtener más del 51 por ciento del poder computacional. Fuera de este caso, la cadena de bloques es prácticamente inmutable.

Puede haber algunas razones legítimas para cambiar los datos en la cadena de bloques una vez que se ha escrito, como el “derecho al olvido” o “el derecho a borrado “(también definido en la resolución GDPR: https://gdpr-info.eu/art-17-gdpr/).

Sin embargo, esos son casos individuales que deben manejarse por separado y que requieren una elegante solución técnica. Para todos los propósitos prácticos, blockchain es de hecho inmutable y no puede ser cambiada.

actualizable via consenso

El atributo más crítico de una cadena de bloques es que solo se puede actualizar mediante consenso. Esto es lo que le da el poder de descentralización. En este escenario, ninguna autoridad central tiene el control de actualizar el libro mayor. En cambio, cualquier actualización realizada en la cadena de bloques se valida contra estrictos criterios definidos por el protocolo blockchain y agregados a blockchain solo después de que un consenso se ha alcanzado entre todos los pares/nodos participantes en la red. Para lograr el consenso, existen varios algoritmos de facilitación de consenso que aseguran que todas las partes estén de acuerdo sobre el estado de los datos en la red blockchain y se acuerde decididamente que sea cierto. Los algoritmos de consenso se presentan más adelante en este post, y luego con más detalle en el post 5, Algoritmos de Consenso.

arquiectura de la blockchain

Habiendo detallado las características principales de blockchain, ahora estamos en condiciones de comenzar a mirar su arquitectura actual. Comenzaremos observando cómo blockchain actúa como una capa dentro de una red distribuida peer-to-peer.

blockchain por capas

Blockchain se puede considerar como una capa de una red distribuida de pares que se ejecuta en la parte superior de Internet, como se puede ver en el siguiente diagrama. Es análogo a SMTP, HTTP o FTP ejecutándose sobre TCP/IP:

Arquitectura de una blockchain generica

Ahora discutiremos todos estos elementos uno por uno:
• En el diagrama anterior, la capa más baja es la Red, que suele ser Internet y proporciona una capa de comunicación base para cualquier blockchain.
• Una red de pares se ejecuta en la parte superior de la capa de red, que consta de protocolos de propagacion de información como gossip o los protocolos de inundación (flooding).

• Después de esto viene la capa de criptografía, que contiene protocolos criptográficos cruciales que garantizan la seguridad de la cadena de bloques. Estos protocolos criptográficos juegan un papel vital en la integridad de los procesos en blockchain como la difusión segura de información o de mecanismos de consenso de blockchain. Esta capa consta de criptografía de clave pública y componentes relevantes como firmas digitales y funciones hash criptográficas. A veces, esta capa se abstrae, pero se ha incluido en el diagrama. porque juega un papel fundamental en las operaciones de blockchain.
• Luego viene la capa Consenso, que se ocupa del uso de varios mecanismos de consenso para asegurar el acuerdo entre los diferentes participantes de la blockchain. Esta es otra parte crucial de la arquitectura blockchain, que consiste en varias técnicas como SMR, mecanismos de consenso basados ​​en pruebas o en el tradicional protocolo de consenso bizantino tolerante a fallas.
• Además de esto, tenemos la capa de ejecución, que puede consistir en máquinas virtuales, bloques, transacciones y contratos inteligentes. Esta capa, como su nombre indica, proporciona y ejecuta servicios en la cadena de bloques y realiza operaciones como transferencia de valor, ejecución inteligente de contratos y generación de bloques. Máquinas virtuales como Ethereum Virtual Machine (EVM) proporciona un entorno de ejecución para la ejecución de contratos inteligentes.
• Por último, tenemos la capa de Aplicaciones, que se compone de contratos inteligentes,
aplicaciones descentralizadas, DAO y agentes autónomos. Esta capa puede efectivamente
contiener todo tipo de varios agentes y programas de nivel de usuario que operan en el
blockchain. Los usuarios interactúan con la cadena de bloques a través de aplicaciones descentralizadas. Hablaremos más sobre aplicaciones descentralizadas en el post 2, Descentralización.

Todos estos conceptos se discutirán en detalle más adelante en este curso en varios posts. A continuación, vamos a mirar blockchain desde una perspectiva más orientada a los negocios.

blockchain en los negocios

Desde un punto de vista empresarial, una cadena de bloques se puede definir como una plataforma donde los pares pueden intercambiar valor o efectivo electrónico mediante transacciones sin la necesidad de un árbitro de confianza centralizado.
Por ejemplo, para las transferencias de efectivo, los bancos actúan como un tercero de confianza. En el comercio financiero,
La cámara central de compensación actúa como un tercero de confianza entre dos o más partes comerciales. Este concepto es convincente y, una vez que lo absorba, se dará cuenta del enorme potencial de la tecnologia blockchain. Esta desintermediación permite que blockchain sea un mecanismo de consenso descentralizado donde ninguna autoridad está a cargo de la base de datos. Inmediatamente, verá un beneficio significativo de la descentralización aquí, porque si no hay bancos o cámaras de compensación centrales
requerido, inmediatamente conduce a ahorros de costos, velocidades de transacción más rápidas y más confianza. Ahora hemos visto qué es blockchain en un nivel fundamental. A continuación, profundizaremos un poco más y observaremos algunos de los elementos que componen una cadena de bloques.

elementos genericos en una blockchain

Ahora, repasemos los elementos genéricos de una cadena de bloques. Puedes usar esto como una sección práctica de referencia si alguna vez necesita un recordatorio sobre las diferentes partes de una cadena de bloques. Los elementos precisos se discutirán en el contexto de sus respectivas cadenas de bloques en pots posteriores, por ejemplo, la cadena de bloques Ethereum. Se puede visualizar la estructura de una blockchain genérica
con la ayuda del siguiente diagrama:

Estructura generica de una blockchain

Los elementos de una cadena de bloques genérica se describen aquí uno por uno. Estos son los elementos que se encontrará en relación con blockchain:

  • Dirección: las direcciones son identificadores únicos que se utilizan en una transacción de blockchain para denotar remitentes y destinatarios. Una dirección suele ser una clave pública o se deriva de una clave pública.
  • Transacción: una transacción es la unidad fundamental de una cadena de bloques. Una transacción representa una transferencia de valor de una dirección a otra.
  • Bloque: un bloque se compone de múltiples transacciones y otros elementos, como el hash del bloque anterior (puntero hash), marca de tiempo y nonce. Un bloque se compone de un encabezado de bloque y una selección de transacciones agrupadas y organizadas lógicamente. El bloque contiene varios elementos, que presentamos de la siguiente manera:
    • Se incluye una referencia a un bloque anterior en el bloque a menos que sea un bloque génesis. Esta referencia es el hash del encabezado del bloque anterior. Una bloque génesises el primer bloque en la cadena de bloques que está codificado en el momento en que la Blockchain se inica por primera vez. La estructura de un bloque también depende del tipo y diseño de una cadena de bloques
    • Un nonce es un número que se genera y se usa solo una vez. Se usa el nonce extensamente en muchas operaciones criptográficas para proporcionar protección de reproducción,autenticación y cifrado. En blockchain, se usa en el algoritmo de consenso POW y para la protección de reproducción de transacciones. Un bloque también incluye el valor nonce.
    • Una marca de tiempo (timestamp) es la hora de creación del bloque.
    • La raíz de Merkle es un hash de todos los nodos de un árbol de Merkle. En un bloque de blockchain, es el hash combinado de las transacciones en el bloque. Los árboles Merkle son ampliamentese utiliza para validar grandes estructuras de datos de forma segura y eficiente. En el mundo de las cadena de bloques , los árboles Merkle se utilizan comúnmente para permitir una verificación eficiente de transacciones. La raíz de Merkle en una cadena de bloques está presente en la sección de encabezado de bloque de un bloque, que es el hash de todas las transacciones de un bloque. Esto significa que solo se requiere la raíz Merkle para verificar todas las transacciones presentes en el arbol de Merkle en lugar de verificar todas las transacciones una por una. Desarrollaremos más adelante estos conceptos en el post 4, Criptografía de clave pública.
    • Además del encabezado del bloque, el bloque contiene transacciones que componen el cuerpo del bloque. Una transacción es un registro de un evento, por ejemplo, el evento de transferir efectivo de la cuenta de un remitente a la cuenta de un beneficiario. Un bloque contiene transacciones y su tamaño varía según el tipo y diseño de la cadena de bloques.

La siguiente estructura es un diagrama de bloques simple que representa un bloque. Las estructuras de bloques específicas en relación con sus tecnologías blockchain se discutirán más adelante en el curso con mayor detalle técnico:

Estructura generica de un bloque

Sin embargo, en general, hay solo algunos atributos que son esenciales para la funcionalidad de un bloque: el encabezado del bloque, que se compone del hash del encabezado del bloque anterior, la marca de tiempo (timestamp), el nonce, la raíz de Merkle y el cuerpo de bloque que contiene las transacciones. También hay otros atributos en un bloque, pero generalmente, los componentes introducidos en esta sección estan generalmente disponibles en un bloque.

  • Red peer-to-peer: como su nombre lo indica, una red peer-to-peer es una topología de red donde todos los pares pueden comunicarse entre sí y enviar y recibir mensajes.
  • El lenguaje de programación o scripts: los scripts o programas que realizan varias operaciones en una transacción para facilitar diversas funciones. Por ejemplo, en Bitcoin, los scripts de transacciones están predefinidos en un lenguaje llamado Script, que consta de un conjunto de comandos que permiten a los nodos transferir bitcoins de una dirección a otra. Script es un lenguaje limitado, en el sentido de que solo permite operaciones esenciales que son necesarias para ejecutar transacciones, pero no permite el desarrollo de programas arbitrarios. Para facilitar el desarrollo de programas arbitrarios en una cadena de bloques, se necesita un lenguaje de programación turing completo, y ahora es una característica muy deseable para tener en las cadenas de bloques. Piense en esto como una computadora que permite el desarrollo de cualquier programa utilizando lenguajes de programación. Sin embargo, la seguridad de dichos lenguajes es un cuestión crucial y un área de investigación esencial y permanente. Discutiremos esto en mayor detalle en el Post 6, Introducción a Bitcoin, post 10, Contratos inteligentes y los posts sobre Ethereum, más adelante en este curso.
  • Máquina virtual: esta es una extensión del script de transacción presentado anteriormente. Una máquina virtual permite que el código Turing completo se ejecute en una cadena de bloques (como contratos); mientras que un script de transacción tiene un funcionamiento limitado. Sin embargo, las maquinas virtuales no están disponibles en todas las cadenas de bloques. Varias blockchains usan máquinas virtuales para ejecutar programas como Ethereum Virtual Machine (EVM) y Chain Virtual Machine(CVM). EVM se usa en la cadena de bloques Ethereum, mientras que CVM es una máquina virtual desarrollada y utilizada en una cadena de bloques de nivel empresarial llamada “Chain Core”.
  • Máquina de estado: una cadena de bloques se puede ver como un mecanismo de transición de estado mediante el cual un estado se modifica de su forma inicial a la siguiente por los nodos en la red blockchain como resultado de la ejecución de la transacción.
  • Contratos inteligentes: estos programas se ejecutan sobre la cadena de bloques y encapsulan la lógica empresarial que se ejecutará cuando se cumplan determinadas condiciones. Estos programas son ejecutables y se ejecutan automáticamente. La función de contrato inteligente no está disponible en todas las plataformas blockchain, pero ahora se está convirtiendo en una característica muy deseable debido a la flexibilidad y potencia que proporciona a las aplicaciones blockchain. Los contratos inteligentes tienen muchos casos de uso, incluidos, entre otros, la gestión de identidades, los mercados de capitales, financiación comercial, gestión de registros, seguros y gobernanza electrónica. Los contratos inteligentes serán discutido con más detalle en el post 10, Contratos inteligentes.
  • Nodo: un nodo en una red blockchain realiza varias funciones dependiendo del papel que asume. Un nodo puede proponer y validar transacciones y realizar minería para facilitar el consenso y asegurar la cadena de bloques. Este objetivo se logra siguiendo un protocolo de consenso (más comúnmente PoW). Los nodos también pueden realizar otras funciones como verificación de pago simple (nodos ligeros SPV), validación y muchos otras funciones dependiendo del tipo de blockchain utilizado y el rol asignado al nodo. Los nodos también realizan una función de firma de transacciones. Las transacciones se crean primero por los nodos y luego también don firmadas digitalmente por nodos que utilizan claves privadas como prueba de que son el propietario legítimo del activo que desean transferir a otra entidad en la red blockchain. Este activo suele ser un token o moneda virtual, como Bitcoin, pero también puede ser cualquier activo del mundo real representado en la cadena de bloques mediante el uso de tokens. Ahora también son estándares relacionados con tokens; por ejemplo, en Ethereum, hay ERC20, ERC721 y algunos otros que definen las interfaces y la semántica de la tokenización. Cubriremos estos en el pots 12, Ethereum.

Piense en el lenguaje de secuencias de comandos como una calculadora que solo admite
operaciones aritméticas estándar preprogramadas. Como tal, el lenguaje de secuencia de comandos de Bitcoin no se puede llamar “Turing completo”. En palabras simples, un lenguaje completo de Turing significa que puede realizar cualquier cálculo. Lleva el nombre de Alan Turing, que desarrolló la idea de una máquina de Turing que puede ejecutar cualquier algoritmo por complejo que sea. Los lenguajes Turing completos necesitan bucles y capacidad de ramificación para realizar cálculos complejos.
Por lo tanto, el lenguaje de programación de Bitcoin no es Turing completo,
mientras que el lenguaje de Solidity de Ethereum lo es.

Un diagrama de alto nivel de la arquitectura blockchain que destaca los elementos clave mencionados anteriormente se muestra como sigue:

Estructura general de una red blockchain

El diagrama anterior muestra una red blockchain de cuatro nodos (arriba), cada uno manteniendo una cadena de bloques, una máquina virtual, una máquina de estado y una dirección. La cadena de bloques se amplía aún más (en medio) para mostrar la estructura de la cadena de bloques, que se amplía nuevamente (abajo) para mostrar la estructura de una transacción. Tenga en cuenta que esta es una estructura genérica de una cadena de bloques; veremos estructuras de cadenas de bloques específicas en detalle en el contexto de las cadenas de bloques Ethereum y Bitcoin más adelante en este curso.

como funciona blockchain

Ahora hemos definido y descrito blockchain. Ahora, veamos cómo una blockchain realmente trabaja. Los nodos son mineros que crean nuevos bloques y acuñan criptomonedas (monedas) o validan las firmas o firman digitalmente las transacciones. Una decisión crítica que cada red blockchain tiene que hacer es averiguar qué nodo agregará el siguiente bloque a la cadena de bloques. Esta decisión se toma mediante un mecanismo de consenso. Se describirá el mecanismo de consenso más adelante en este post. Por ahora, veremos cómo una cadena de bloques valida las transacciones y crea y agrega bloques para hacer crecer la cadena de bloques. Veremos un esquema general para crear bloques. Este esquema se presenta aquí para darle una idea general de cómo se generan los bloques y cuál es la relación entre transacciones y bloques:

  1. Se inicia la transacción: un nodo inicia una transacción primero creándola y luego
    firmandola digitalmente con su clave privada. Una transacción puede representar varias acciones en una cadena de bloques. Más comúnmente, esta es una estructura de datos que representa la transferencia de valor entre usuarios en la red blockchain. La estructura de datos de la transacción generalmente consiste en alguna lógica de transferencia de valor, reglas relevantes, direcciones de origen y destino y otra información de validación. Las transacciones suelen ser una transferencia de criptomonedas (transferencia de valor) o invocación de contrato inteligente que puede realizar cualquier operación deseada. Se produce una transacción entre dos o más partes. Esto será cubierto con más detalle en posts específicos sobre Bitcoin y Ethereum más adelante en el curso.
  1. La transacción se valida y difunde: una transacción se propaga (difunde) generalmente mediante el uso de protocolos de difusión de datos, como el protocolo Gossip, a otros pares que validan la transacción según criterios de validez preestablecidos. Antes de que una transacción sea propagada, también se verifica para asegurarse de que sea válida.
  2. Buscar nuevo bloque: cuando la transacción es recibida y validada por participantes especiales llamados mineros en la red blockchain, se incluye en un bloque, y comienza el proceso de minería. Este proceso también se denomina a veces “encontrar un nuevo bloque”. Aquí, los nodos llamados mineros compiten para finalizar el bloque que han creado mediante un proceso conocido como minería.
  3. Nuevo bloque encontrado: una vez que un minero resuelve un acertijo matemático (o cumple el requisito del mecanismo de consenso implementado en una cadena de bloques), el bloque es considerado “encontrado” y finalizado. En este punto, la transacción se considera confirmada. Por lo general, en cadenas de bloques de criptomonedas como Bitcoin, el minero que resuelve el rompecabezas matemático también se recompensa con un cierto número de monedas como incentivo para
    su esfuerzo y los recursos que gastaron en el proceso minero.
  4. Agregación de un nuevo bloque a la cadena de bloques: el bloque recién creado se valida, las transacciones o los contratos inteligentes se ejecutan dentro de él, y se propagan a otros pares. Los peers también validan y ejecutan el bloque. Ahora se convierte en parte de la cadena de bloques (libro mayor), y el siguiente bloque se enlaza criptográficamente con este bloque. Este enlace se llama puntero de hash.

Este proceso se puede visualizar en el diagrama de la siguiente manera:

Como un bloque es generado

Esto completa la introducción básica a blockchain. En la siguiente sección, aprenderá acerca de los beneficios y limitaciones de esta tecnología.

beneficios, caracteristicas y limitaciones de una blockchain

Se han discutido numerosas ventajas de la tecnología blockchain en muchas industrias y
propuesto por líderes de opinión de todo el mundo que participan en el espacio blockchain. Los beneficios notables de la tecnología blockchain son los siguientes:

  1. Descentralización: este es un concepto central y un beneficio de blockchain. No hay necesidad para que un tercero o intermediario de confianza valide las transacciones; en cambio, un mecanismo de consenso se utiliza para acordar la validez de las transacciones.
  2. Transparencia y confianza: ya que las cadenas de bloques se comparten y todos pueden ver lo que hay blockchain, esto permite que el sistema sea transparente. Como resultado, se establece la confianza. Esto es más relevante en escenarios como el desembolso de fondos o en el reparto de beneficios donde es necesario restringir la discreción personal en relación con la selección de beneficiarios.
  3. Inmutabilidad: una vez que los datos se han escrito en la cadena de bloques, es extremadamente difícil volver a cambiarlo. No es realmente inmutable, pero debido a que cambiar los datos es tan desafiante y casi imposible, esto se ve como un beneficio para mantener un libro mayor de transacciones inmutable.
  4. Alta disponibilidad: dado que el sistema se basa en miles de nodos en una red de pares , y los datos se replican y actualizan en cada nodo, el sistema se convierte
    altamente disponible. Incluso si algunos nodos abandonan la red o se vuelven inaccesibles, la red en su conjunto continúa funcionando, lo que la hace altamente disponible. Esta redundancia da como resultado una alta disponibilidad.
  5. Muy seguro: todas las transacciones en una cadena de bloques están protegidas criptográficamente y, por lo tanto, proporcionan integridad a la red. Cualquier transacción publicada desde los nodos en la cadena de bloques se verifican en función de un conjunto predeterminado de reglas. Solo se seleccionan transacciones válidas
    para su inclusión en un bloque. La cadena de bloques se basa en tecnología criptográfica probada que asegura la integridad y disponibilidad de los datos. Generalmente, la confidencialidad no es proporcionada debido a los requisitos de transparencia. Esta limitación es la barrera principal a su adopción por instituciones financieras y otras industrias que requieren la privacidad y confidencialidad de las transacciones. Como tal, las investigaciones sobre la privacidad y confidencialidad de las transacciones en blockchain estan siendo fructiferas, y los avances ya están
    siendo materializados. Se podría argumentar que, en muchas situaciones, la confidencialidad no es necesaria y se prefiere la transparencia. Por ejemplo, con Bitcoin, la confidencialidad no es un requisito absoluto; sin embargo, es deseable en algunos escenarios. Un ejemplo más reciente es Zcash (https://z.cash), que proporciona una plataforma para realizar actividades de transacciones anónimas. Otros servicios de seguridad, como el no repudio y la autenticación, son también proporcionado por blockchain, ya que todas las acciones están protegidas mediante claves privadas y firmas digitales.
    .
  6. Simplificación de los paradigmas actuales: el modelo actual de blockchain en muchas industrias, como finanzas o salud, está algo desorganizado. En este modelo, varias entidades mantienen sus propias bases de datos y compartir datos puede resultar muy difícil debido a la naturaleza dispar de los sistemas. Sin embargo, como una cadena de bloques puede servir como un libro mayor entre muchas partes interesadas, esto puede resultar en la simplificación del modelo al reducir la complejidad de la gestión de los sistemas separados mantenidos por cada entidad.
  7. Negociaciones más rápidas: en la industria financiera, especialmente en las funciones de liquidación posterior a la negociación, blockchain puede desempeñar un papel vital al permitir la liquidación rápida de operaciones. Blockchain no requiere un largo proceso de verificación, conciliación y autorización porque una única versión de los datos acordados ya está disponible en un libro mayor compartido entre
    organizaciones financieras.
  8. Ahorro de costos: ya que no se requiere un tercero de confianza o un modelo de cámara de compensación en la cadena de bloques, esto puede eliminar masivamente los costos generales en forma de tarifas, que son pagado a tales partes.
  9. Plataforma para contratos inteligentes: una cadena de bloques es una plataforma en la que se pueden ejecutar programas que ejecutan la lógica empresarial en nombre de los usuarios. Esta es una característica muy útil pero no todas las cadenas de bloques tienen un mecanismo para ejecutar contratos inteligentes; sin embargo, esta es una
    característica deseable. Está disponible en plataformas blockchain más nuevas como Ethereum y MultiChain, pero no en Bitcoin.
  10. Propiedad inteligente: es posible vincular un activo digital o físico a la cadena de bloques de una manera segura y precisa que no pueda ser reclamada por nadie más. Esto controla su activo, y no se puede gastar o poseer dos veces. Compara esto con un archivo de música digital, por ejemplo, que se puede copiar muchas veces sin control. Si bien es cierto que hay muchos esquemas de administración de derechos digitales (DRM) que se utilizan actualmente junto con las leyes de derechos de autor, ninguno de ellos puede hacer cumplir dichos derechos en la manera que lo hace blockchain. Blockchain puede proporcionar gestión de derechos digitales de tal manera que se pueda hacer cumplir plenamente. Hay famosos esquemas de DRM que se veían geniales en teoría pero que fueron pirateados debido a ciertas limitaciones. Un ejemplo es el hack de Oculus: http://www.wired.co.uk/article/oculus-rift-drm-hackeado. Otro ejemplo es el hack de PS3; también, muchos archivos de música digital protegida por derechos de autor,películas y libros electrónicos se comparten habitualmente en Internet sin ninguna limitación. Tendremos protección de derechos de autor durante muchos años, pero la piratería digital refuta todos los intentos para hacer cumplir plenamente la ley. En una cadena de bloques, sin embargo, si posee un activo, nadie más puede reclamarlo a menos que decida transferirlo. Esta característica tiene implicaciones de gran alcance,especialmente en sistemas DRM y e-cash donde la detección de doble gasto es un requisito crucial. El problema del doble gasto se resolvió primero sin el requisito de tercero de confianza en Bitcoin.

La tecnología Blockchain proporciona una plataforma para ejecutar contratos inteligentes. Estos son programas automatizados y autónomos que residen en la red blockchain y encapsulan la lógica empresarial y el código necesario para ejecutar una función requerida cuando se cumplen determinadas condiciones. Por ejemplo, piense en un
contrato de seguro donde se paga una reclamación al viajero si el el vuelo está cancelado. En el mundo real, este proceso normalmente toma una cantidad significativa de tiempo para hacer el reclamo, verificarlo y pagar el monto del seguro al reclamante (viajero). Y si todo este proceso se automatiza criptográficamente otorgando confianza, transparencia y ejecución para que tan pronto como el contrato inteligente recibe un feed de que el vuelo en cuestión ha sido cancelado, activa automáticamente el pago del seguro al afectado Si el vuelo llega a tiempo, el contrato inteligente se paga solo. De hecho, esta es una característica revolucionaria de blockchain, ya que proporciona flexibilidad, velocidad, seguridad y automatización para escenarios del mundo real que pueden conducir a un sistema completamente confiable con reducciones significativas de costos. Los contratos inteligentes se pueden programar para realizar cualquier acción que los usuarios de blockchain necesiten y de acuerdo con sus requisitos comerciales específicos.

Al igual que con cualquier tecnología, es necesario abordar algunos desafíos para hacer que un sistema sea más robusto, útil y accesible. La tecnología Blockchain no es una excepción. De hecho, se requiere mucho esfuerzo que se realiza tanto en la academia como en la industria para superar los desafíos planteados por la tecnologia blockchain. Los problemas de blockchain más sensibles son los siguientes:

Escalabilidad: actualmente, las redes blockchain no son tan escalables como, por ejemplo, las actuales redes financieras. Esta es un área conocida de preocupación y un área muy madura para la investigación.
Adopción: a menudo, blockchain se considera una tecnología incipiente. Aunque esta perspectiva está cambiando rápidamente, todavía queda un largo camino por recorrer antes de la adopción masiva de esta tecnología. El desafío aquí es permitir que las redes blockchain sean más fáciles de usar para que la adopción pueda aumentar. Además, otros desafíos como la escalabilidad (introducidos anteriormente) existen, que deben resolverse para aumentar la adopción.
Regulación: Debido a su naturaleza descentralizada, la regulación es casi imposible en
blockchain. Esto a veces se ve como una barrera para la adopción porque, tradicionalmente, debido a la existencia de autoridades reguladoras, los consumidores tienen un cierto nivel de confianza en que si algo sale mal, ellos pueden responsabilizar a alguien. Sin embargo, en las redes blockchain, no existe tal autoridad reguladora y control, lo cual es un factor inhibidor para muchos consumidores.
Tecnología relativamente inmadura: en comparación con los sistemas de TI tradicionales que se han beneficiado de décadas de investigación, blockchain es todavía una nueva tecnología y requiere mucha investigación para alcanzar la madurez.
Privacidad y confidencialidad: la privacidad es una preocupación en las cadenas de bloques públicas como Bitcoin donde todos pueden ver cada transacción. Esta transparencia no es deseable en muchas industrias, como las financieras, legales o médicas. Esto también es una preocupacion conocida y una gran cantidad de investigación valiosa con algunas soluciones impecables ya ha sido desarrollada. Sin embargo, aún se requieren más investigaciones para impulsar la adopción masiva de
blockchain.

Todos estos problemas y posibles soluciones se discutirán en detalle en el Post 21, Escalabilidad y Otros desafíos. Ahora conoce los conceptos básicos de blockchain y sus beneficios y limitaciones. Ahora, echemos un vistazo a los diversos tipos de blockchain que existen.

tipos de blockchains

Basado en la forma en que blockchain ha evolucionado en los últimos años, se puede dividir en múltiples categorías con atributos distintos, aunque a veces parcialmente superpuestos. Debieras tener en cuenta que los niveles descritos anteriormente en el post son un concepto diferente, por lo que la lógica que se presenta en la categorización de blockchain, esta basada en su evolución y uso.
En esta sección, examinaremos los diferentes tipos de blockchains desde un punto de vista técnico y comercial.. Estos tipos de blockchain pueden ocurrir en cualquier nivel de blockchain, ya que no existe una relación entre los niveles mencionados anteriormente y los diversos tipos de blockchain.

En esta sección, examinaremos:
• Ledgers distribuidos
• Tecnología de ledger distribuido (DLT)
• Blockchains
• Ledgers

ledgers distribuidos

Primero, necesito aclarar una ambigüedad. Cabe señalar que un ledger distribuido es un término amplio para describir bases de datos compartidas; por lo tanto, todas las blockchains caen técnicamente bajo el paraguas de bases de datos compartidas o ledgers distribuido. Aunque todas las blockchains se distribuyen fundamentalmente en ledgers, todos los ledgers distribuido no son necesariamente cadenas de bloques. Una diferencia fundamental entre un ledger distribuido y una cadena de bloques es que un ledger distribuido no consiste necesariamente en bloques de transacciones para mantener el crecimiento del ledger. Más bien, una blockchain es un tipo especial de base de datos compartida que se compone de bloques de transacciones. Un ejemplo de un libro mayor distribuido que no usa bloques de transacciones es R3 Corda
(https://www.corda.net). Corda es un ledger distribuido que se desarrolla para registrar y administrar acuerdos y se centra especialmente en la industria de servicios financieros. Por otro lado, las cadenas de bloques mas ampliamente conocidas como Bitcoin y Ethereum utilizan bloques para actualizar las bases de datos. Como sugiere su nombre, un ledger distribuido se distribuye entre sus participantes y se difunde en varios sitios u organizaciones. Este tipo de liedger puede ser privado o público. La idea fundamental aquí es que, a diferencia de muchas otras cadenas de bloques, los registros se almacenan
de forma contigua en lugar de estar ordenados en bloques. Este concepto se utiliza en Ripple, que es una Red de pago global basada en blockchain y criptomonedas.

Tecnología de ledger distribuido (DLT)

Cabe señalar que en los últimos años han crecido los términos del ledger distribuido o DLT
para ser comúnmente utilizado para describir blockchain en la industria financiera. A veces, blockchain y DLT se utilizan indistintamente. Aunque esto no es del todo exacto, así es como el término ha evolucionado recientemente, especialmente en el sector financiero. De hecho, DLT es ahora un muy activo y pujante área de investigación en el sector financiero. Desde el punto de vista del sector financiero, las DLT son cadenas de bloques autorizadas que utilizan los consorcios. Los DLT suelen servir como una base de datos, con todos los participantes conocidos y verificados. No tienen una criptomoneda y no
no requiere minería para asegurar el libro mayor.

En un nivel más amplio, DLT es un término general que representa un Ledger Distribuido en su conjunto, compuesta por blockchains y libros de contabilidad distribuidos de diferentes tipos.

blockchains publicas

Como sugiere su nombre, las cadenas de bloques públicas no son propiedad de nadie. Estan abiertos al publico y cualquiera puede participar como nodo en el proceso de toma de decisiones. Los usuarios pueden o no ser recompensados por su participación. Todos los usuarios de estas blockchains publicas mantienen una copia del libro mayor en sus nodos locales y usan un mecanismo de consenso distribuido para decidir el estado eventual del libro mayor. Bitcoin y Ethereum se consideran cadenas de bloques públicas.

blockchains privadas

Como su nombre lo indica, las cadenas de bloques privadas son solo eso: privadas. Es decir, están abiertas solo para un consorcio o grupo de personas u organizaciones que han decidido compartir el libro mayor entre ellos. Hay varias cadenas de bloques ahora disponibles en esta categoría, como Kadena y Quorum. Opcionalmente, ambas cadenas de bloques también pueden ejecutarse en modo público si es requerido, pero su propósito principal es proporcionar una cadena de bloques privada.

blockchains semiprivadas

Con las cadenas de bloques semiprivadas, parte de la cadena de bloques es privada y parte es pública. Tenga en cuenta que esto todavía es solo un concepto hoy, y aún no se han desarrollado pruebas de concepto del mundo real. Con una cadena de bloques semiprivada, la parte privada está controlada por un grupo de personas, mientras que
la parte pública está abierta a la participación de cualquier persona. Este modelo híbrido se puede utilizar en escenarios donde permanece la parte privada de la cadena de bloques interna y compartida entre participantes conocidos, mientras que la parte pública de la cadena de bloques puede aún puede ser utilizado por cualquier persona, lo que opcionalmente permite que la minería asegure la cadena de bloques. De esta manera, la
blockchain en su conjunto se puede proteger mediante PoW, lo que proporciona consistencia y validez tanto para la parte privada como para la pública. Este tipo de blockchain también se puede llamar “modelo semi-descentralizado”, en el que está controlado por una sola entidad, pero aún permite múltiples usuarios unirse a la red siguiendo los procedimientos adecuados.

cadenas laterales (sidechains)

Más precisamente conocido como “cadenas laterales fijas”, este es un concepto mediante el cual las monedas se pueden mover de una cadena de bloques a otra y luego de regreso. Los usos típicos incluyen la creación de nuevas altcoins (criptomonedas alternativas) mediante las cuales las monedas se queman como prueba de una apuesta adecuada.
“Quemar” o “quemar las monedas” en este contexto significa que las monedas se envían a una dirección que es inutilizable, y este proceso hace que las monedas “quemadas” sean irrecuperables. Este mecanismo se utiliza para iniciar una nueva moneda o introducir escasez, lo que da como resultado un aumento del valor de la moneda. Este mecanismo también se denomina “Prueba de grabación” y se utiliza como método alternativo para
consenso distribuido a PoW y Proof of Stake (PoS). El ejemplo proporcionado anteriormente para la quema de monedas se aplica a una cadena lateral unidireccional. El segundo tipo se llama cadena lateral fijada bidireccional, que permite el movimiento de monedas desde la cadena principal a la cadena lateral y de regreso a la cadena principal cuando sea necesario.

Este proceso permite la construcción de contratos inteligentes para la red Bitcoin. El patrón es uno de los ejemplos principales de una cadena lateral, que permite el desarrollo de contratos inteligentes para Bitcoin utilizando este paradigma. Funciona al permitir una vinculación bidireccional para la cadena de bloques de Bitcoin, y esto da como resultado un rendimiento mucho más rápido.

ledgers con permisos

Un ledger autorizado es una cadena de bloques donde los participantes de la red ya son conocidos y confiables. Los ledgers autorizados no necesitan utilizar un mecanismo de consenso distribuido; en lugar, se utiliza un protocolo de acuerdo para mantener una versión compartida de la verdad sobre el estado de los registros en la cadena de bloques. En este caso, para la verificación de transacciones en la cadena, todos los verificadores
ya están preseleccionados por una autoridad central y, por lo general, no hay necesidad de un mecanismo de consenso.
Por definición, tampoco existe ningún requisito para que una cadena de bloques autorizada sea privada, ya que puede ser una blockchain pública pero con control de acceso regulado. Por ejemplo, Bitcoin puede convertirse en un ledger autorizado si se introduce una capa de control de acceso encima que verifica la identidad de un usuario y luego permite el acceso a la cadena de bloques.

ledgers compartidos

Este es un término genérico que se utiliza para describir cualquier aplicación o base de datos compartida por el público o consorcio. Generalmente, todas las cadenas de bloques entran en la categoría de un ledger compartido.

blockchains propietarias y totalmente privadas

No existe una aplicación generalizada de este tipo de cadenas de bloques, ya que se desvían del núcleo del concepto de descentralización en tecnología blockchain. No obstante, en entornos privados específicos dentro de una organización, podría ser necesario compartir datos y proporcionar algún nivel de garantía de la autenticidad de los datos.
Un ejemplo de este tipo de blockchain podría ser permitir la colaboración y el intercambio de datos entre varios departamentos gubernamentales. En ese caso, ningún mecanismo de consenso complejo se requiere, además de un SMR simple y un protocolo de acuerdo con validadores centrales conocidos. Incluso en las cadenas de bloques privadas, los tokens no son realmente necesarios, pero pueden usarse como un medio de transferir valor o representar algunos activos del mundo real.

blockchains tokenizadas

Estas cadenas de bloques son cadenas de bloques estándar que generan criptomonedas como resultado de un proceso de consenso vía minería o distribución inicial. Bitcoin y Ethereum son excelentes ejemplos de este tipo de blockchain.

blockchains sin tokens

Estos blockchains están diseñados de tal manera que no tienen la unidad básica para el
transferencia de valor. Sin embargo, siguen siendo valiosas en situaciones en las que no es necesario transferir valor entre nodos y solo se requiere el intercambio de datos entre varias partes de confianza.
Esto es similar a las cadenas de bloques completamente privadas, la única diferencia es que el uso de tokens no es necesario. Esto también se puede considerar como un ledger distribuido compartido que se utiliza para almacenar y compartir datos entre los participantes. Tiene sus beneficios cuando se trata de inmutabilidad, manipulación
pruebas, seguridad y actualizaciones impulsadas por consenso, pero no se usa para una aplicacion de una cadena de bloques común de transferencia de valor o criptomoneda. La mayoría de las blockchains autorizadas pueden ser vistas como un ejemplo de blockchains sin token, por ejemplo, Hyperledger Fabric o Quorum. Los tokens se pueden construir en estas cadenas como una aplicación, pero intrínsecamente estas cadenas de bloques no
tienen un token asociado a ellos. Todas las terminologías mencionadas anteriormente se utilizan en la literatura asociada, pero fundamentalmente todas estas blockchains son lesgers distribuidos y se incluyen en la categoría de nivel superior de DLT. Podemos ver
estos diferentes tipos en el gráfico simple de la siguiente manera:

Jerarquia DLT

Con esto finaliza nuestro examen de los distintos tipos de blockchain. Ahora pasaremos a la siguiente sección para discutir el concepto de consenso.

consenso

El consenso es la columna vertebral de una cadena de bloques, ya que proporciona la descentralización del control a través de un proceso opcional conocido como minería. La elección del algoritmo de consenso a utilizar es gobernado por el tipo de blockchain en uso; es decir, no todos los mecanismos de consenso son adecuados para todo tipo de blockchains. Por ejemplo, en blockchains públicas sin permiso, tiene sentido usar PoW en lugar de mecanismos que son más adecuados para blockchains autorizados, como la Prueba de autoridad (PoA) o mecanismos de consenso tradicionales bizantinos tolerantes a fallas (BFTP). Por lo tanto, es esencial elegir un algoritmo de consenso apropiado para un
proyecto blockchain. El consenso es un proceso para lograr un acuerdo entre los nodos que desconfían del estado final de datos. Para lograr el consenso se utilizan diferentes algoritmos. Es fácil llegar a un acuerdo entre dos nodos (en sistemas cliente-servidor, por ejemplo), pero cuando hay varios nodos participantes en un sistema distribuido que necesitan ponerse de acuerdo en un valor único, se convierte en un desafío lograr el consenso. Este proceso de lograr un acuerdo sobre un estado o valor común entre múltiples nodos a pesar de la falla de algunos nodos se conoce como consenso distribuido.

mecanismo de consenso

Un mecanismo de consenso es un conjunto de pasos que toman la mayoría o todos los nodos de una cadena de bloques para acordar un estado o valor propuesto. Durante más de tres décadas, este concepto ha sido investigado por científicos informáticos en la industria y la academia. Con la llegada de blockchain y Bitcoin, los mecanismos de consenso han vuelto a ser el centro de atención y han ganado una considerable popularidad.
Hay varios requisitos para un mecanismo de consenso. A continuación se describen estos
requisitos:
Acuerdo: Todos los nodos honestos deciden sobre el mismo valor.
Integridad: este es un requisito de que ningún nodo puede tomar la decisión más de una vez en un ciclo de consenso único.
Validez: El valor acordado por todos los nodos honestos debe ser el mismo que el inicial
valor propuesto por al menos un nodo honesto.
Tolerante a fallas: el algoritmo de consenso debe poder ejecutarse correctamente en presencia de nodos defectuosos o maliciosos (nodos bizantinos).
Terminación: Todos los nodos honestos terminan la ejecución del proceso de consenso y
eventualmente llegará a una decisión.

Habiendo visto estos requisitos generales, ahora veremos los diferentes tipos de mecanismos de consenso.
.

tipos de mecanismos de consenso

Todos los mecanismos de consenso se desarrollan para hacer frente a las fallas en un sistema distribuido y para permitir que los sistemas distribuidos alcancen un estado de acuerdo final. Hay dos categorías generales de los mecanismos de consenso. Estas categorías tratan con todo tipo de fallas (tipos de parada por falla o arbitrario). Estos tipos comunes de mecanismos de consenso son los siguientes:
Mecanismos de consenso basados ​​en pruebas: este arreglo requiere que los nodos compitan en una lotería de elección de líder, y el nodo que gana propone el valor final. El algoritmo trabaja sobre el principio de proporcionar prueba de algún trabajo y la posesión de algúna autoridad o fichas para ganar el derecho de proponer el siguiente bloque. Por ejemplo, el mecanismo PoW utilizado en Bitcoin entra en esta categoría, donde un minero que resuelve el rompecabezas computacional como prueba del esfuerzo computacional invertido gana el derecho a agregar el siguiente bloque de la cadena de bloques.
Tradicional basado en tolerancia a fallas: sin operaciones de cálculo intensivo, como
inversión hash parcial (como en Bitcoin PoW), este tipo de mecanismo de consenso se basa en un esquema simple de nodos que publican y verifican mensajes firmados en varias fases. Eventualmente, cuando se recibe una cierta cantidad de mensajes durante un período de rondas (fases), luego se llega a un acuerdo. Para lograr la tolerancia a fallas, se utiliza la replicación. Este es un método estándar y ampliamente utilizado para lograr tolerancia a fallos. En general, hay dos tipos de fallas que puede experimentar un nodo:
Fallos de parada por falla: este tipo de falla ocurre cuando un nodo simplemente se ha bloqueado. Las fallas de parada de emergencia son las más fáciles de tratar de los dos tipos de fallas. Paxos o el protocolo RAFT, introducidos anteriormente en este post, se utilizan normalmente para tratar este tipo de fallas. Estas fallas son más fáciles de tratar.
Fallos bizantinos: el segundo tipo de fallo es aquel en el que el nodo defectuoso presenta un comportamiento malicioso o inconsistente de forma arbitraria. Este tipo es difícil de manejar ya que puede crear confusión debido a información engañosa. Esto puede ser el resultado de un ataque por adversarios, un error de software o corrupción de datos. Protocolos SMR como Practical Bizantine Fault Tolerance (PBFT) se desarrolló para abordar este segundo tipo de fallas. Se han propuesto muchas otras implementaciones de protocolos de consenso en sistemas distribuidos. Paxos es el más famoso de estos protocolos. Fue presentado por Leslie Lamport en 1989. Con Paxos, a los nodos se les asignan varios roles como Proponente, Aceptador y Aprendiz. Los nodos o procesos se denominan réplicas y el consenso se logra en presencia de nodos defectuosos por acuerdo entre la mayoría de los nodos. Una alternativa a Paxos es RAFT, que funciona asignando cualquiera de los tres estados; es decir, seguidor, Candidato o Líder de los nodos. Se elige un líder después de que un nodo candidato recibe suficientes votos, y todos los cambios deben pasar por el líder. El Líder compromete la propuesta una vez que se completa la replicación en la mayoría de los nodos seguidores. Abordaremos brevemente algunos aspectos del consenso en blockchain ahora, pero el el post 5 Algoritmos de Consenso estableceremos más detalles sobre la teoría de los mecanismos de consenso desde el punto de vista de un sistema distribuido y también desde la perspectiva de blockchain.

consenso en blockchain

El consenso es un concepto de computación distribuida que se ha utilizado en blockchain para proporcionar un medio para aceptar una única versión de la verdad por parte de todos los pares en la cadena de bloques. Este concepto se discutió previamente en la sección de sistemas distribuidos de este post. En esta sección, abordaremos el consenso en el contexto de la tecnología blockchain. Algunos conceptos que se presentan a continuación siguen siendo relevantes para la teoría de sistemas distribuidos, pero son
explicado desde una perspectiva blockchain. A grandes rasgos, a continuación se describen las dos categorías principales de mecanismos de consenso:

  1. Basado en pruebas, basado en lotería de elección de líderes o el consenso de Nakamoto por el cual un líder se elige al azar (mediante un algoritmo) y propone un valor final. Esta categoría también se conoce como el tipo de consenso totalmente descentralizado o sin permiso. Este tipo se usa en la cadena de bloques de Bitcoin y Ethereum en forma de un mecanismo PoW.
  2. La tolerancia a fallas bizantina (BFT) es un enfoque más tradicional basado en rondas
    de votos. Esta clase de consenso también se conoce como mecanismo de consenso de consorcio o de tipo autorizado.
    Los mecanismos de consenso basados ​​en BFT funcionan bien cuando hay un número limitado de nodos, pero no escalan bien. Por otro lado, el consenso basado en la lotería de elección de líder (PoW), los mecanismos escalan muy bien pero funcionan muy lentamente. Como hay importantes investigaciones en esta área, también están surgiendo nuevos tipos de mecanismos de consenso, como el tipo semi-descentralizado, que se utiliza en la red Ripple. También hay varias propuestas que intentan encontrar el equilibrio adecuado entre escalabilidad y actuación. Algunos proyectos notables incluyen PBFT, Hybrid BFT, BlockDAG, Tezos, Stellar y GHOST. Los algoritmos de consenso disponibles en la actualidad, o que se están investigando en el contexto de
    blockchain, se presentan de la siguiente manera. La siguiente no es una lista exhaustiva, pero incluye todos algoritmos notables:
    Prueba de trabajo (PoW): este tipo de mecanismo de consenso se basa en la prueba de que se han gastado recursos computacionales antes de proponer un valor para ser aceptado por la red. Este esquema se utiliza en Bitcoin, Litecoin y otras cadenas de bloques de criptomonedas. Actualmente, es el único algoritmo que ha demostrado ser asombrosamente exitoso contra cualquier ataque de colusión en una red blockchain, como el ataque Sybil. El ataque de Sybil se discutirá en el post 6, Introducción a Bitcoin.
    Prueba de participación (PoS): este algoritmo funciona con la idea de que un nodo o usuario tiene una participación adecuada en el sistema; es decir, el usuario ha invertido lo suficiente en el sistema para que cualquier intento malintencionado de ese usuario superaría los beneficios de realizar tal ataque a la red. Esta idea fue presentada por primera vez por Peercoin, y va a ser utilizado en la versión de blockchain de Ethereum llamada Serenity. Otro concepto importante en PoS es la edad de la moneda, que es un criterio derivado de la cantidad de tiempo y el número de monedas que no se han gastado. En este modelo, las posibilidades de proponer y firmar el siguiente bloque aumenta con la edad de la moneda.

Prueba de participación delegada (DPoS): se trata de una innovación sobre la PoS estándar, por la que cada nodo que tiene una participación en el sistema puede delegar la validación de una transacción a otros nodos votando. Se utiliza en la cadena de bloques BitShares.
Prueba de tiempo transcurrido (PoET): introducido por Intel en 2016, PoET utiliza un Entorno de ejecución (TEE) para proporcionar aleatoriedad y seguridad en el líder
proceso de elección a través de un tiempo de espera garantizado. Requiere un procesador Intel SGX (Software Guard Extensions) para brindar la garantía de seguridad para que sea seguro. Este concepto se discute con más detalle en el post 17, Hyperledger, en el contexto de la blockchain Intel Sawtooth lake .
Prueba de depósito (PoD): En este caso, los nodos que desean participar en la red tienen que hacer un depósito de seguridad antes de que puedan extraer y proponer bloques. Este mecanismo es utilizado en la cadena de bloques Tendermint.
Prueba de importancia (PoI): esta idea es significativa y diferente de PoS. PoI no solo
depende de la participación del usuario en el sistema, sino también supervisa el uso y
movimiento de tokens por parte del usuario con el fin de establecer un nivel de confianza e importancia. Eso se utiliza en la cadena de bloques de monedas NEM. Más información sobre esta moneda está disponible en el Sitio web de NEM (https://nem.io).
Consenso federado o consenso bizantino federado: este mecanismo se utiliza en
el protocolo de consenso Stelar. Los nodos de este protocolo retienen un grupo de
pares y propagar solo aquellas transacciones que han sido validadas por la mayoría de
nodos de confianza.
Mecanismos basados ​​en la reputación: como sugiere el nombre, un líder es elegido por la reputación que ha construido a lo largo del tiempo en la red. Se basa en los votos de otros miembros.
Práctica tolerancia a fallas bizantinas (PBFT): este mecanismo logra SMR, que
proporciona tolerancia contra los nodos bizantinos. Varios protocolos, incluido PBFT,
PAXOS, RAFT y Federated Byzantine Agreement (FBA), también se están utilizando o se han propuesto para su uso en muchas implementaciones diferentes de sistemas distribuidos y cadenas de bloques.
Prueba de actividad (PoA): este esquema es una combinación de PoS y PoW, que asegura que una parte interesada se selecciona de forma pseudoaleatoria pero uniforme. Esto es un mecanismo comparativamente más eficiente de energía en comparación con PoW. Utiliza un nuevo concepto llamado “Sigue al Satoshi”. En este esquema, PoW y PoS se combinan juntos para lograr consenso y un buen nivel de seguridad. Este esquema es más eficiente energéticamente ya que PoW se usa solo en la primera etapa del mecanismo; después de la primera etapa, cambia a PoS, que consume poca energía. Analizaremos estas ideas con más detalle en el post 7 Red Bitcoin y Pagos, , donde los protocolos se revisan en el contexto de los protocolos de Bitcoin.
Prueba de capacidad (PoC): este esquema utiliza el espacio del disco duro como un recurso para extraer los bloques. Esto es diferente de PoW, donde se utilizan los recursos de la CPU. En PoC, el espacio de disco duro se utiliza para la minería y, como tal, también se conoce como minería de disco duro. Este concepto se introdujo por primera vez en la criptomoneda BurstCoin.

Prueba de almacenamiento: este esquema permite la subcontratación de la capacidad de almacenamiento. Este esquema se basa en el concepto de que un dato en particular probablemente sea almacenado por un nodo, que sirve como medio para participar en el mecanismo de consenso. Varias variaciones de este esquema se han propuesto, como la Prueba de replicación, la Prueba de Posesión de datos, la Prueba de espacio y la Prueba de espacio-tiempo.
Prueba de autoridad (PoA): este esquema utiliza la identidad de los participantes llamados validadores como parte de la red. Los validadores son conocidos y tienen la autoridad de proponer nuevos bloques. Los validadores proponen los nuevos bloques y los validan según las reglas de blockchain. Los algoritmos de PoA más utilizados son Clique y Aura.

Algunos protocolos destacados en blockchain se discutirán en detalle en el post5, Consenso y Algoritmos. En este post, solo se presenta una ligera introducción . Recuerde, anteriormente en este post dijimos que los sistemas distribuidos son difíciles de construir y el sistema distribuido no puede tener consistencia, disponibilidad y tolerancia de partición al mismo tiempo. Este es un resultado probado; sin embargo, en blockchain, parece que este teorema es de alguna manera violado. En la siguiente sección, presentaremos formalmente el teorema CAP y discutiremos por qué blockchain parece lograr las tres propiedades simultáneamente.

teorema cap y blockchain

El teorema CAP, también conocido como teorema de Brewer, fue introducido por Eric Brewer en 1998 como una conjetura. En 2002, Seth Gilbert y Nancy Lynch lo probaron como teorema. El teorema establece que ningún sistema distribuido puede tener consistencia, disponibilidad y tolerancia de partición simultaneamente:
La consistencia es una propiedad que garantiza que todos los nodos de un sistema distribuido tengan una copia única, actual e idéntica de los datos.

Disponibilidad significa que los nodos del sistema están activos, accesibles para su uso, aceptan solicitudes entrantes y responden con datos sin fallas como y cuando sea necesario. En otras palabras, los datos están disponibles en cada nodo y los nodos
responden a las solicitudes.
La tolerancia de partición asegura que si un grupo de nodos no puede comunicarse con otros nodos debido a fallas en la red, el sistema distribuido continúa funcionando correctamente. Esto puede ocurrir debido a fallas en la red y en los nodos.

La consistencia se logra utilizando algoritmos de consenso para asegúrarse de que todos los nodos tengan la misma copia de los datos. Esto es también llamada replicación de la máquina de estado. (SMR). La cadena de bloques es un medio para lograr la replicación de la máquina de estado.

Un diagrama de Venn se usa comúnmente para visualizar el teorema de CAP:

Teorema CAP

El diagrama anterior muestra que solo se pueden lograr dos propiedades a la vez. O AP,
CA o CP.
En resumen:

  1. Si optamos por CP (consistencia y tolerancia de partición), sacrificamos la disponibilidad.
  2. Si optamos por AP (disponibilidad y tolerancia de partición), sacrificamos la consistencia.
  3. Si optamos por AC (disponibilidad y consistencia), sacrificamos la tolerancia de partición.


Por lo general, no se puede ignorar una partición de red; por lo tanto, la elección se convierte principalmente en consistencia o disponibilidad en el caso de una partición de red. Como se mostró anteriormente, un sistema distribuido no puede tener consistencia, disponibilidad y tolerancia a la partición simultáneamente. Esto se puede explicar con el siguiente ejemplo. Imaginemos que existe un sistema distribuido con dos nodos. Ahora, apliquemos las tres propiedades del teorema en el menor de los posibles sistemas distribuidos solo con dos nodos:
• La consistencia se logra si ambos nodos tienen el mismo estado compartido; es decir, tienen la misma copia actualizada de los datos.
• La disponibilidad se logra si ambos nodos están en funcionamiento y respondiendo con la última copia de datos.
• La tolerancia de partición se logra si, a pesar de la falla de comunicación o el retraso entre nodos, la red (sistema distribuido) sigue funcionando.

Ahora piense en un escenario en el que se produce una partición y los nodos ya no pueden comunicarse el uno con el otro. Si ahora llegan nuevos datos actualizados, solo se pueden actualizar en un nodo. En este caso, si el nodo acepta la actualización, entonces sólo se actualiza ese nodo en la red y por tanto, se pierde la consistencia. Ahora, si la actualización es rechazada por el nodo, eso resultaría en una pérdida de disponibilidad. En ese caso, debido a la tolerancia de partición, tanto la disponibilidad como la consistencia son inalcanzables.
Esto es extraño porque de alguna manera blockchain se las arregla para lograr todas estas propiedades, o ¿no lo hace? Parece que el teorema CAP es violado por blockchain, especialmente en su forma implementación más exitosa, Bitcoin. Sin embargo, éste no es el caso. En blockchains, sacrifica la consistencia a favor de la disponibilidad y la tolerancia a la partición. En este escenario, la consistencia (C) en la blockchain no se logra simultáneamente con la tolerancia de partición (P) y la disponibilidad (A), pero se logra con el tiempo. Esto se llama consistencia eventual, donde se logra la consistencia como resultado de la validación de varios nodos a lo largo del tiempo. Significa que puede haber un desacuerdo temporal entre los nodos sobre el estado final, pero finalmente se acuerda. Por ejemplo, en Bitcoin, se requieren múltiples confirmaciones de transacciones para lograr un buen nivel de confianza de que las transacciones puedan no ser revertidas en el futuro y eventualmente una visión consistente del historial de transacciones está disponible para todos los nodos. Varias confirmaciones de una transacción a lo largo del tiempo proporciona consistencia eventual en Bitcoin. Para ello, se introdujo el proceso de minería en Bitcoin. La minería es un proceso que facilita la consecución de consensos mediante el uso del algoritmo PoW. En un nivel superior, la minería se puede definir como un proceso que se utiliza para agregar más bloques a la cadena de bloques. Cubriremos más sobre esto más adelante en el post 6, Introducción a Bitcoin.

resumen

Este post presentó la tecnología blockchain a un nivel avanzado. Primero, discutimos el progreso de blockchain para convertirse en una tecnología madura, seguido de algunos conceptos básicos. sobre sistemas distribuidos, y luego se revisó la historia de blockchain.
También se habló del dinero electrónico. Se presentaron varias definiciones de blockchain desde diferentes puntos de vista. También se introdujeron algunas aplicaciones de la tecnología blockchain. A continuación, diferentes tipos de blockchain fueron explorados. Finalmente, también se examinaron los beneficios y limitaciones de esta nueva tecnología.
Algunos temas como la escalabilidad y adaptabilidad de blockchain se introdujeron intencionalmente sólo a la ligera, ya que se analizarán en profundidad en post posteriores. En el próximo post, presentaremos el concepto de descentralización, que es fundamental para la idea detrás de blockchains y su gran cantidad de aplicaciones.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s