Overledger de Quant Network: Parte uno Fundamentos de la cadena de bloques
En la Parte uno, antes de hablar específicamente sobre Overledger, necesito explicar algunos conceptos importantes para ayudarlo a apreciar lo que hace a Overledger diferente de otras plataformas de Interoperabilidad. Con frecuencia puede ver / usar palabras como DAPP, Blockchain, claves privadas, etc., pero no necesariamente entiende qué son y cómo funcionan. Mi objetivo no es proporcionar una explicación muy técnica y de bajo nivel, sino que espero completar las partes faltantes de cómo se unen todas. Esta es la parte diez de una serie que analiza más de cerca a Overledger.
¿Qué es una API?
API significa Application Programming Interface (Interfaz de programación de aplicaciones) y se utilizan en todas partes del mundo hoy en día. Definen cómo un desarrollador puede programar una aplicación para interactuar con otra y procesar sus solicitudes y respuestas. Las API han existido durante mucho tiempo, siempre que use una computadora de escritorio o portátil, las API son las que hacen posible mover información entre programas, por ejemplo, al cortar y pegar un fragmento de un documento de LibreOffice en una hoja de cálculo de Excel. Las API de nivel de sistema hacen posible que aplicaciones como LibreOffice se ejecuten en primer lugar en un sistema operativo como Windows.
En la Web, las API hacen posible que grandes servicios como Google Maps o Facebook permitan que otras aplicaciones se “enruten” en sus ofertas. Algunas de las API más populares son las que ofrece Facebook, Google maps, YouTube, etc., donde permiten que otras aplicaciones utilicen sus servicios. Piense en la forma en que Yelp, por ejemplo, muestra los restaurantes cercanos en un mapa de Google en su aplicación o mi publicación aquí en Medium incrustando un video en YouTube a continuación.
Las API cuando se conectan a terceros a través de Internet pueden cambiar significativamente el panorama de los servicios que prestan. Cada sitio de comparación al que va se conecta a una API del tercero para proporcionar un precio. Un ejemplo más reciente, que cambiará drásticamente la banca, es la reciente introducción de la regulación PSD2 de la UE.
En resumen, PSD2 permite a los clientes bancarios, tanto consumidores como empresas, utilizar proveedores externos para administrar sus finanzas. En un futuro cercano, puede estar usando Facebook o Google para pagar sus facturas, hacer transferencias P2P y analizar sus gastos, mientras aún tiene su dinero colocado de manera segura en su cuenta bancaria actual. Sin embargo, los bancos están obligados a proporcionar a estos proveedores externos acceso a las cuentas de sus clientes a través de API abiertas (interfaz del programa de aplicación). Esto permitirá a terceros construir servicios financieros sobre la infraestructura y los datos de los bancos.
Los bancos ya no solo competirán contra los bancos, sino que todos ofrecerán servicios financieros. PSD2 cambiará fundamentalmente la cadena de valor de los pagos, qué modelos de negocios son rentables y las expectativas de los clientes. A través de la directiva, la Comisión Europea pretende mejorar la innovación, reforzar la protección del consumidor y mejorar la seguridad de los pagos por Internet y el acceso a las cuentas dentro de la UE y el EEE.
¿Qué es un DAPP?
Estoy seguro de que todos saben a qué se refiere un DAPP: una aplicación descentralizada, pero ¿qué implica eso?
Una aplicación consta de varias capas: front-end y back-end.
El extremo frontal es donde está la interfaz del usuario y es lo que el usuario final ve para interactuar con la aplicación. Cuando navega a twitter.com en un navegador web o abre la aplicación en su teléfono que es la parte delantera.
El back-end maneja la lógica de negocios y el almacenamiento de datos para la aplicación. No es visible para el usuario y generalmente se asocia con una base de datos, etc. Cuando inicia sesión en Twitter y puede ver sus tweets y las personas a las que sigue, esta información se almacena en el back-end.
Para todos los entornos de prueba menos básicos, el extremo frontal y el extremo posterior residirán en servidores separados. La interfaz de usuario generalmente se instalará en un grupo de servidores en un proveedor de nube para alta disponibilidad y la parte de atrás también consistirá de servidores separados en un proveedor de nube para alta disponibilidad. El front-end solicita datos del back-end a través de una API y la API proporciona las respuestas de back-end al front-end. Incluso si estuvieran ubicados en el mismo servidor, consistirían en aplicaciones separadas y seguirían usando una API para interactuar entre sí.
Tanto el extremo delantero como el trasero están centralizados.
Un DAPP es donde el back-end consiste en un contrato inteligente almacenado en la cadena de bloques y se ejecuta en una máquina virtual como el EVM de Ethereum. El contrato inteligente y la cadena de bloques ahora se usan para la lógica de negocios y los datos en lugar de almacenarlos en una base de datos.
Un contrato inteligente es un protocolo de computadora destinado a facilitar, verificar o hacer cumplir digitalmente la negociación o el cumplimiento de un contrato. Los contratos inteligentes permiten la realización de transacciones creíbles sin terceros. Estas transacciones son rastreables e irreversibles.
Se utiliza una API para que la aplicación Front-end se comunique con la aplicación back-end (Smart Contract y Blockchain), así como también se use directamente para mover los datos dentro y fuera de una cadena subyacente.
Con un DAPP, generalmente el extremo frontal permanece centralizado y el extremo posterior está descentralizado; sin embargo, el extremo frontal también se puede descentralizar mediante el uso de servicios como IPFS (sistema de archivos interplanetario)
IPFS es un sistema de archivos distribuido que funciona de manera similar a un enjambre de Bittorrent. Cada archivo y todos los bloques dentro de él reciben una huella digital única llamada hash criptográfico. Cada nodo de red almacena solo el contenido en el que está interesado y al buscar archivos le está pidiendo a la red que encuentre nodos que almacenen el contenido detrás del hash único.
¿Qué es el hash?
Una función de Hashing convierte cualquier forma de datos en una única cadena de texto de un tamaño fijo. La salida producida se conoce como Digest (también conocido como Hash o huella digital) y siempre tiene el mismo tamaño fijo independientemente del tamaño de los datos de entrada. Entonces, por ejemplo, SHA256 siempre tendrá 256 bits de longitud. Si está utilizando una representación hexadecimal, entonces cada dígito representa 4 bits. Así, el Digest tendrá 64 dígitos de largo.
Como ejemplo, el mensaje " Hello World " cuando se convierte utilizando el algoritmo de hash SHA256 genera el siguiente resumen:
“ A591A6D40BF420404A011733CFB7B190D62C65BF0BCDA32B57B277D9AD9F146E ”
Si cambio cualquier parte del mensaje (por ejemplo, use una minúscula en lugar de mayúscula), cambiará completamente el resultado del resumen.
El mensaje " Hello World " cuando se convierte utilizando el algoritmo de hash SHA256 genera el siguiente resumen:
“ 64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C ”
El contenido del documento técnico de bitcoin convertido con SHA256 produce el siguiente resumen:
“ 8B49B9476DFAC3A292E06607C0A6982017CC7C509689BDE894DD20C35B6B2D60 ”
El tamaño máximo de los datos que se pueden convertir en un solo resumen con SHA256 es (264–1) / 8 bytes = alrededor de 2,147,473,648 terabytes de datos, por lo que no hay necesidad de preocuparse por alcanzar límites allí en el corto plazo.
Es importante tener en cuenta que si convierte exactamente la misma pieza de datos, generará el mismo resumen cada vez. Por lo tanto, puede ir a un sitio como SHA256 Hash Generator Online y copiar el mensaje " Hola mundo " que debería recibir el mismo resultado de hash que el anterior. Un Hash es una función de una sola vía en la que no puede determinar cuáles son los datos originales con solo tener el Digest.
El hash proporciona integridad del mensaje para garantizar que no se haya modificado (ya que cualquier modificación pequeña cambiaría completamente la salida de la huella digital)
¿Qué es la criptografía simétrica?
La criptografía simétrica es donde un secreto compartido se comparte entre las dos partes. La misma clave se utiliza para cifrar los datos en el lado de los remitentes y descifrar los datos en el lado de recepción. Como solo las dos partes conocen el secreto compartido, nadie más puede descifrar el mensaje y, por lo tanto, brinda confidencialidad. El cifrado simétrico ofrece un cifrado rápido con poca sobrecarga, pero compartir la clave de forma segura a través de Internet no es muy fácil y, como resultado, ya no se usa mucho.
¿Qué es la criptografía asimétrica?
La criptografía asimétrica es donde cada usuario tiene un par de claves, una clave privada y una clave pública. La clave privada nunca debe compartirse y, estrictamente, solo el usuario conoce su propia clave privada, mientras que la clave pública se puede compartir libremente. Si Bob desea cifrar un mensaje y enviarlo a Fred, Bob lo cifra utilizando la clave pública de Fred, ya que la única forma de descifrar un mensaje cifrado con una clave pública es mediante la clave privada correspondiente. Como Fred es la única persona que conoce su clave privada, ellos son los únicos que pueden descifrar el mensaje, brindando confidencialidad. Esto permite compartir de forma segura las claves a través de medios no confiables, como Internet, y es ampliamente utilizado en todo el mundo.
¿Que es una asignatura digital?
Una firma digital utiliza una combinación de Hashing y Criptografía asimétrica para proporcionar No Repudio (El Remitente no puede negar haber enviado el mensaje) e Integridad (garantiza que el mensaje no se haya modificado).
Primero, los datos se convierten a un resumen utilizando un algoritmo de hash. Luego, el Compendio se cifra con la Clave privada del remitente. Es importante tener en cuenta que, dado que está cifrada con la clave privada de los remitentes, esto no proporciona confidencialidad, ya que cualquier persona que tenga la clave pública de los remitentes (ampliamente accesible) puede descifrar el mensaje. En su lugar, proporciona no repudio, lo que significa que el firmante no puede reclamar que no firmó el mensaje, ya que son los únicos con la clave privada.
¿Cómo se relaciona esto con Blockchain?
Su billetera de criptomonedas utiliza cifrado asimétrico. La dirección de su billetera de la que recibe la criptomoneda es un hash de su clave pública. La clave privada de su billetera es algo que solo usted debe saber y es lo que le permite gastar la moneda que tiene en la billetera. Se recomienda usar una billetera de hardware como un libro contable para almacenar las claves privadas de su billetera para protegerlas.
Siguiendo el ejemplo anterior, si Bob quiere enviar 1 Bitcoin a Fred, deberá crear una Transacción de Bitcoin. Una Transacción Bitcoin consiste en Entradas y Salidas, las entradas contienen detalles de transacciones anteriores para validar Bob tiene los fondos para enviar 1 BTC. Bob también agrega su clave pública a las entradas. En las salidas agrega la dirección de recepción y los fondos a transferir. Luego, Bob realiza una función de Hashing en estos datos de transacción para recibir un Resumen (Hash) de los detalles de la transacción. Como se mencionó en la sección de Hashing anterior, esto proporciona integridad de que los detalles de la transacción no se han modificado.
Bob luego encripta el Hash resultante de los detalles de la transacción con su clave privada, lo que resulta en la creación de una Firma Digital. Tenga en cuenta que solo el hash está cifrado y no la transacción real. Como se discutió en la sección Firma digital anterior, esto proporciona No Repudio ya que solo Bob tiene acceso a su clave privada y cuando Bob envía su clave pública coincidente dentro de la transacción, un minero puede validar que puede descifrar la firma digital usando La clave pública de Bob para ver el hash de los detalles de la transacción. Si no pueden descifrar la firma digital, la transacción se marca como no válida y se elimina.
La Firma Digital se agrega a la Entrada de la transacción y luego todos los datos pasan a través de otra función de Hash que resulta en un Hash que se conoce como la ID de la Transacción. Esto es lo que se usa comúnmente cuando se usan varios exploradores para ubicar una transacción en la cadena de bloques.
Antes de explicar cómo la transacción ingresa a la red Bitcoin, solo explicaré brevemente qué es un nodo y una visión general del consenso de blockchain.
Nodo completo
Un nodo completo es una computadora que ejecuta software para una cadena de bloques particular. Cada nodo completo en la cadena de bloques necesita descargar y verificar cada bloque individual y, por lo tanto, cada transacción individual en cada bloque. Como resultado, esto utiliza cantidades significativas de memoria, ancho de banda de red y almacenamiento. La cadena de bloques Ethereum requiere más de 1 TB de almacenamiento y necesita una unidad de estado sólido en lugar de una unidad de disco duro estándar para mantenerse al día con los cambios. Cada día este requisito aumenta a medida que se agrega más a la cadena de bloques. También vale la pena tener en cuenta que estos requisitos son cuando blockchain aún no es la corriente principal. Los requisitos van a aumentar significativamente con cada vez más uso.
Un nodo completo es un participante en la red de igual a igual para esa cadena de bloques en particular, mientras más nodos completos haya, más descentralizado se considera.
Para las cadenas de bloques de prueba de trabajo como Bitcoin, un nodo completo en sí mismo se conoce como validador. Un validador no agrega nuevos Bloques a la cadena de bloques, sino que valida los nuevos bloques e informa a otros nodos una vez que se ha verificado el nuevo bloque. Esto se replica en toda la red hasta que se alcanza el consenso. No hay recompensas por ser un nodo validador y son solo un gasto. Los nodos completos también pueden utilizar importantes recursos informáticos y ejecutar software para poder crear nuevos bloques en el proceso conocido como minería.
Cliente ligero
Los nodos completos son complicados para interactuar y, debido a los recursos informáticos requeridos, no están disponibles para dispositivos móviles, etc. Aquí es donde entran los clientes livianos (y es lo que la mayoría de las personas usan para enviar una transacción a través de su aplicación de billetera como Myetherwallet , Metamask, varias billeteras móviles, etc. Los clientes livianos no almacenan todos los bloques en la cadena de bloques, solo los encabezados, lo que significa que los recursos informáticos requeridos son suficientes para un dispositivo móvil. La compensación es que debe confiar en un nodo completo y un cliente liviano No participa directamente en los bloques de validación de redes descentralizadas.
Consenso blockchain
En resumen, los mecanismos de consenso son protocolos que aseguran que todos los nodos (el dispositivo en la cadena de bloques que mantiene la cadena de bloques y (a veces) las transacciones de procesos) estén sincronizados entre sí y acuerden qué transacciones son legítimas y se agregan a la cadena de bloques.
Estos mecanismos de consenso son cruciales para que una cadena de bloques funcione correctamente. Se aseguran de que todos usen la misma cadena de bloques. Todos pueden enviar elementos para agregarlos a la cadena de bloques, por lo que es necesario que todas las transacciones se verifiquen constantemente y que la cadena de bloques sea auditada constantemente por todos los nodos. Sin un buen mecanismo de consenso, las cadenas de bloques están en riesgo de varios ataques.
Existen varios mecanismos de consenso, todos con sus propias ventajas y desventajas. Bitcoin, por ejemplo, utiliza la Prueba de trabajo que implica resolver complejos rompecabezas matemáticos para poder determinar qué nodo puede agregar el bloque a la red y recibir Bitcoin como recompensa. Hay muchos otros, como Prueba de estaca, Prueba de estaca delegada, etc., pero no en el alcance de este artículo. Todo lo que necesita saber es que cada uno tiene sus ventajas y desventajas y no hay uno que se vea claramente mejor que otros, por lo que hay tantos modelos diferentes.
Bloque de génesis
El bloque de génesis es el primer bloque en una cadena de bloques, también conocido como bloque 0 y es el único bloque que no apunta a un bloque predecesor. Cada otro bloque en la red puede rastrear su linaje hasta el bloque de génesis. Define los ajustes para el blockchian.
Así que para terminar con una descripción general de cómo se agrega la transacción de Bob a la cadena de bloques de Bitcoin
Bob creó y firmó su transacción (probablemente utilizando un cliente ligero) que luego contacta con un nodo completo para obtener la información necesaria restante y la transacción se coloca en un grupo de transacciones pendientes.
Un nodo Completo que ejecuta software de minería y hardware de computadora costoso toma una selección de transacciones (como muchas que cabrán) y las coloca en un bloque. Luego, el minero ejecuta un rompecabezas computacional que consume muchos recursos y si es el primero en hacerlo fuera de los otros nodos, se selecciona como el que puede agregar el bloque a la cadena de bloques de Bitcoin.
Antes de que se agregue el bloque, el minero mira el último bloque comprometido con la cadena de bloques. Hace esto porque cada “bloque” contiene un Digest (Hash) del “bloque” anterior y eso es lo que lo hace parte de una cadena, de ahí el término “Blockchain”.
Luego agrega el Compendio del bloque anterior al nuevo bloque que desea agregar, que luego es validado por todos los otros nodos para confirmar que es correcto según las reglas de consenso. Una vez que 2 / 3rds de los nodos han confirmado el nuevo bloque a encadenar, se compromete y se alcanza el consenso.
Si alguna de las transacciones o cualquier dato dentro del Bloque se modifica, el Resumen (Hash) será completamente diferente. Luego, cualquier Bloque adicional posterior también tendrá un Resumen diferente, ya que contiene el Resumen del Bloque anterior. Esto es lo que hace que Blockchain sea tan seguro, es extremadamente difícil manipular cualquiera de los datos. Blockchain crea una plataforma inmutable, persistente y auditable que también incluye marcas de tiempo y elimina la necesidad de confiar en un tercero.
OK, eso era bastante información para entender, pero conceptos importantes para entender. En la segunda parte veremos las capas de Overledger