Alex Gallardo
Justin Motta
Bitcoin Core se encuentra alojado en un repositorio de GitHub como muchos otros proyectos OpenSource. El código fuente puede abrumar al principio, dado que es muy grande e incluye múltiples interfaces o herramientas para interactuar con la Blockchain de Bitcoin.
Cuáles son las interfaces Bitcoin Core
El repositorio de Bitcoin Core está compuesto por una serie de interfaces para interactuar con los datos de la Blockchain de diversas maneras, dependiendo el propósito y la necesidad como usuario final.
Interfaz red P2P
Bitcoin Core implementa un protocolo de mensajería P2P a través de TCP entre sus nodos para la comunicación y la sincronización de la información.
Los nodos pueden sufrir problemas de seguridad y de denegación de servicios que provocan que no puedan validar transacciones y, por lo tanto, no puedan operar. Sin embargo, Bitcoin Core implementa propuestas en su protocolo para evitar los ataque DOS.
Interfaz SPV
Simplified Payment Verification (SPV) o Verificación de Pago Simplificada permite la verificación de una transacción o la obtención del balance de una wallet sin necesidad de descargar la ledger completa de la Blockchain de Bitcoin.
La desventaja de SPV es su seguridad. No es posible la verificación de las transacciones con esta interfaz, ya que un tercero es quien hace entrega de la información y esta puede ser corrompida.
SPV se trata de un cliente ligero, ideal para dispositivos móviles o tablets, cuyo almacenamiento es más limitado y en donde solo requerimos realizar pequeñas transacciones.
Interfaz RPC/HTTP
Una de las interfaces más importantes de Bitcoin Core es la que permite el desarrollo de cualquier tipo de aplicación. Permite consultar datos a través del protocolo RPC (Remote Procedure Call) sobre HTTP.
El mismo funciona a través de un daemon (demonio) llamado Bitcoind. Un programa que corre en segundo plano y permite la ejecución de comandos utilizando el bitcoin-cli para la obtención de información y su posterior manipulación para construir aplicaciones como un explorador de Bitcoin.
Su funcionamiento es similar a una API, aunque técnicamente diferente. Los mineros utilizan esta interfaz para obtener información y construir los bloques.
Interfaz Qt
Bitcoin-qt es una de las interfaces más antiguas del proyecto con algo más de 10 años de existencia. La misma consta de un front-end para interactuar con la Blockchain, visualizar estadísticas básicas, interactuar con la información por medio del bitcoin-cli y de RPC y las funciones básicas de una wallet.
Esta interfaz está en desuso. Al tener RPC/HTTP, podemos verlo como un backend y construir aplicaciones web más sofisticadas y mejores funcionalidades.
Interfaz ZMQ
Las siglas MQ hacen referencia a servicios de mensajería y de entrega de notificaciones o push notificación. Este tipo de servicios se usan mucho en aplicaciones móviles para notificar con información sobre su cuenta.
ZMQ o ZeroMQ es el servicio que utiliza Bitcoin Core para el envío de notificaciones a los clientes a través de sockets. Múltiples clientes pueden conectarse a un socket para ser notificados cuando se crea un nuevo bloque, una transacción u ocurre un determinado evento en la Blockchain para actuar en consecuencia.
Esta interfaz es útil para desarrollar otro tipo de aplicaciones como Lightning Network que aprovecha esta característica para mantener su información actualizada con la red principal.
Conclusión
Has visto hasta aquí múltiples interfaces, gráficas, por CLI o que utilizan diversos protocolos de intercambio de información, que expone Bitcoin Core para interactuar con la Blockchain de Bitcoin o para la construcción de otras aplicaciones.
Contribución creada por: Kevin Fiorentino (Platzi Contributor).
Alex Gallardo
Justin Motta
Justin Motta
Sebastian Arango Vergara
andres reyes
Yamil Ochoa Bellaizac
andres reyes
andres reyes
Abidan Triguero Calle
Sebastian Marin
Gracias por el resumen!!
Para que que quede mas claro el concepto del modelo de red que utiliza bitcoin, les dejo 3 clases de diferentes cursos de Platzi que les pueden ayudar:)
Me esperaba un tratamiento mas general de la arquitectura de Bitcoin Core, me es inevitable compararlo con el diagrama del bitcoinbook: https://cypherpunks-core.github.io/bitcoinbook/ch03.html
Si creo que hace mucha falta de profundizacion en la arquitectura
Glosario de la clase
RCP: Remote Procedure Call: comunicación en sistemas cliente-servidor
Socket: Un Socket o enchufe es el punto final en una conexión, es decir, un dispositivo o elemento electrónico que se genera gracias al sistema operativo y que permite el envío e información de otros procesos que también hagan uso de estos.
ZMQ - Message oriented middleware: es un middleware de comunicaciones orientado a mensajes
Middleware: Es un software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones (software, hardware, redes, BD o SO)
Hash: En una transacción es la combinación entre números y letras (mayúsculas y minúsculas) que permiten identificar la transacción en la Blockchain
Cual es el problema de que en SPV trunque la informacion y tengas informacion erronea en relacion con tus llaves?
Los nodos pueden desconectar automáticamente a los nodos que intentan inundarlos con datos no deseados o envían información incorrecta. Esto ayuda a proteger a los nodos honestos de ser sobrecargados por ataques DoS. Para mas informacion transactions - What protection does Bitcoin have against Denial of Service (DoS) attacks? - Bitcoin Stack Exchange
RESUMEN CLASE 3: AQUITECTURA DE BITCOIN CORE
Interfaces:
I.- P2P
Bitcoin forma una red TCP de mensajería.
Cada nodo tiene pares/vecinos con los cuales puede intercambiar información.
Protección DoS.
SPV (Simplified Payment Verification).
II.- RPC/HTTP (Remote Procedure Call)
Interacción programática con Bitcoind
Consultas.
Uso de billeteras externas.
Mineros construyen bloques.
bitcoin-cli permite acceder a estar interfaz a través de la línea de comandos.
III.- Qt
Interfaz gráfica que expone:
Estadísticas básicas.
Consola RPC.
Funcionalidades de billetera.
IV.- ZMQ
Publica notificaciones en un socket cuando recibe:
Un nuevo bloque.
Una nueva transacción.
Útil para otros aplicativos para realizar acciones sobre esos eventos (Lightning Network).
Tremenda clase profe.