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).
驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?