Concurrencia y regiones

Clase 4 de 19Curso de Bitcoin Core y Script

Resumen

Bitcoin Core está compuesto por múltiples interfaces para interactuar con la Blockchain de Bitcoin. Tal vez te preguntes cómo logra funcionar técnicamente todas estas partes de este gran sistema.

Funcionamiento técnico de Bitcoin Core

El funcionamiento de Bitcoin Core utiliza el poder de la concurrencia y la asincronicidad para lograr que múltiples subsistemas trabajen en paralelo.

Concurrencia en Bitcoin Core

La concurrencia le permite a Bitcoin Core realizar tareas simultáneas utilizando hilos de ejecución. Posee interfaces de validación que le permiten registrar callback para responder a eventos para, por ejemplo, enviar notificaciones con ZMQ.

En concurrencia existen múltiples procesos relacionados con las funcionalidades de la red. Veamos algunos de ellos:

Procesos de Bitcoin Core

Existen procesos para la verificación de scripts, para la carga de bloques, respuestas a llamados RPC o para la inicialización de conexiones de red, entre otros. Cada proceso utiliza N cantidad de hilos y es ejecutado por una tarea. Los hilos se cargan al iniciar Bitcoin Core para estar listos para su funcionamiento.

Sección en Bitcoin Core

Dentro de Bitcoin Core existen múltiples secciones para responder a todos los subsistemas e interfaces para que Bitcoin y todo su protocolo pueda funcionar.

El código fuente Bitcoin Core está dividido en secciones. Puedes encontrar cada una de ellas en el repositorio del proyecto.

Secciones Bitcoin Core
  • net: base de todas las secciones, es donde se realiza toda la conexión P2P y todo el proceso de mensajería.
  • net_processing: responde a los eventos de mensajería de net.
  • validation: reglas que permiten validar cuál es la cadena con mayor poder de cómputo acumulado y agregar transacciones al mempool.
  • txmempool: implementación base del mempool de Bitcoin.
  • coins & txdb: implementación base para el funcionamiento de UTXO (salidas no gastadas).
  • script/: directorio que contiene scripts para la ejecución de tareas como la creación de transacciones.
  • consensus/: parámetros para el funcionamiento del consenso de Bitcoin.
  • policy/: estimación de las tarifas, existen empresas dedicadas solo a estos cálculos.
  • indexes/: creación de índices para la búsqueda de bloques o transacciones.
  • wallet/: billetera que no se suele utilizar en producción, pero nos sirve como base para desarrollar nuevas o hacer pruebas.

Conclusión

Entendiendo que por detrás del Bitcoin Core existen complejos mecanismos de concurrencia, multitareas y asincronicidad, puedes al menos entender mejor su funcionamiento y la obra de ingeniería de software qué es Bitcoin.

El código fuente de Bitcoin Core también es muy grande y complejo. Si lo divides en secciones, y entendiendo básicamente en qué consiste cada una de ellas, puedes navegar por el código fuente de Bitcoin de formas más sencillas y entender el mismo.


Contribución creada por: Kevin Fiorentino (Platzi Contributor).