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:
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.
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.
Procedimientos necesarios para la operación de Bitcoin.
Glosario de la clase
Callback: Se usa para describir un proceso de creación de un evento en el cual un usuario recibe notificaciones al evento suscrito.
Mempool: Es la memoria temporal intermedia en donde se almacenan de forma momentánea las transacciones de los usuarios.
UTXO o Unspent transaction output (transacción de salida no gastada) es uno de los conceptos centrales que permiten el correcto funcionamiento de la tecnología blockchain que Satoshi Nakamoto desarrolló para Bitcoin, la primera criptomoneda del mundo.
Aca esta el archivo que hace referencia el profesor bitcoin/src/init.cpp at 160d23677ad799cf9b493eaa923b2ac080c3fb8e · bitcoin/bitcoin (github.com)
RESUMEN CLASE 4:
CONCURRENCIA Y REGIONES
I.- CONCURRENCIA
Bitcoin Core realiza tareas simultáneas.
Hilos.
Interfaz de Validación.
II.- SECCIONES
Subsistemas existentes en Bitcoin Core.
Procedimientos necesarios para la operación de Bitcoin.
Bitcoin core corre en varios hilos para procesar informacion, es por eso que para mineria se invierte mas en GPU que en CPU?
Todo un ecosistema que contiene procesos pasos y tecnologia dentro de bitcoin, ahora entiendo por que bitcoin esta revolucionando a la humanidad.