Bitcoind

De Bitcoin Wiki
Saltar a: navegación, buscar

Bitcoind es un programa que implementa el protocolo Bitcoin para su uso desde línea de comandos y mediante llamadas de procedimientos remotos (Remote procedure calls, RPC). Es también el primer cliente de Bitcoin en la historia del sistema. Se encuentra disponible bajo la licencia MIT en versiones de 32 y 64 bits para Windows, sistemas basados en GNU/Linux y Mac OS X.

Debido a su condición de primer cliente de Bitcoin escrito por Satoshi Nakamoto se le designa habitualmente como "cliente de Satoshi". También se le llama el "cliente de referencia", por tratarse de la implementación de referencia funcional para cualquier otro cliente, en ausencia de una especificación formal completa del protocolo Bitcoin.

Con anterioridad a la versión 0.5, este cliente utilizaba una interfaz de usuario basada en la biblioteca wxWidgets. En la actualidad, la interfaz gráfica es proporcionada por Bitcoin-Qt.

Ejecución

Véase Ejecución de bitcoind para más detalles y un ejemplo del archivo de configuración.

Bitcoind es un ejecutable daemon sin interfaz gráfica de usuario (headless), e incorpora también una herramienta de pruebas para el mismo daemon. Proporciona una interfaz JSON-RPC, que permite controlarlo tanto en modo local como en modo remoto. Esto lo hace útil para la integración con otras herramientas de software o en sistemas de pago más amplios. La biblioteca de programación o API proporciona numerosas funciones.

Para utilizarlo en modo local, inicie el programa en modo daemon:

bitcoind -daemon


A continuación, tendrá que utilizar el mismo programa para ejecutar las funciones del API, como por ejemplo:

bitcoind getinfo
bitcoind listtransactions


Para detener el daemon, ejecute:

bitcoind stop

Historia

  • La versión 0.4.0 fue publicada para todas las plataformas respaldadas el 23 de septiembre de 2011 [1].
  • La versión 0.3.24 fue publicada para todas las plataformas respaldadas el 8 de julio de 2011 [2].
  • La versión 0.3.23 fue publicada para todas las plataformas respaldadas el 13 de junio de 2011 [3].
  • La versión 0.3.22 fue publicada para todas las plataformas respaldadas el 19 de mayo de 2011 [4].
  • La versión 0.3.20 fue publicada para todas las plataformas respaldadas el 21 de febrero de 2011[5].

Análisis técnico

bitcoind es un programa escrito en C++ que utiliza múltiples hilos de ejecución (multithreaded). Se ha diseñado para que sea portable entre sistemas Windows, Mac y Linux. El uso de hilos de ejecución múltiples introduce una cierta complejidad y el uso de patrones de código para lidiar con la concurrencia que pueden resultar extraños a muchos programadores. Además, el código utiliza de manera general construcciones típicas del C++, por lo que es necesario estar familiarizado con clases estándar como map, multimap, set, string, vector, las clases iostream y las plantillas (templates). Como es habitual en los programas en C++, gran parte del código puede estar en lso archivos de encabezado por lo que al buscar una función concreta es conveniente buscar tanto en los archivos .cpp como en los .h del proyecto.

El cliente diferencia entre varias operaciones principales, que se describen en artículos detallados aparte y se resumen en las secciones siguientes:


Inicialización y puesta en marcha

Al iniciarse, el cliente lleva a cabo diversas llamadas de inicialización, como el lanzamiento de hilos múltiples de ejecución para gestionar operaciones concurrentes.

Descubrimiento de nodos

El cliente utiliza diversas técnicas para localizar a otros nodos de Bitcoin que se encuentran conectados a la red.

Conectividad de nodos

El cliente establece y mantiene las conexiones con los otros nodos.

Sockets y mensajes

El cliente procesa mensajes de otros nodos y envía mensajes a otros nodos utilizando conexiones por sockets.

Intercambio de bloques

Los nodos se anuncian unos a otros sus colecciones de bloques y se transfieren bloques para construir la cadena de bloques.

Intercambio de transacciones

Los nodos se intercambian y propagan transacciones entre ellos. El cliente vincula las transacciones conocidas con las direcciones Bitcoin de la cartera local.

Servicios de cartera

El cliente permite generar transacciones utilizando la cartera local. El cliente vincula las transacciones con las direcciones Bitcoin de la cartera local. El cliente proporciona un servicio para gestionar la cartera local.

Interfaz RPC

El cliente ofrece una interfaz JSON-RPC basada en HTTP por sockets que permite llevar a cabo diversas operaciones y gestionar la cartera local.

Interfaz de usuario

La interfaz de usuario actual de Bitcoind es a través de línea de comandos, mientras que anteriormente estuvo basada en wxWidgets. La interfaz gráfica es proporcionada ahora por Bitcoin-qt a partir de las versiones 0.5+.

Resolución de problemas

Me sale el error "Error loading blkindex.bat" al intentar ejecutar el cliente

blkindex.dat es parte de la base de datos que almacena la copia local de la cadena de bloques y puede corromperse. Intente abrir el directorio de datos de Bitcoin:

Windows: %APPDATA%\Bitcoin Linux: ~/.bitcoin Mac: ~/Library/Application Support/Bitcoin/

Haga una copia de seguridad de todo el directorio y borre todo EXCEPTO wallet.dat. Reinicie bitcoind y se descargará una copia nueva de la cadena de bloques.

Véase también

Enlaces externos

Referencias

  1. Bitcoin version 0.4.0 released
  2. Bitcoin version 0.3.24 released
  3. Bitcoin version 0.3.23 released
  4. Version 0.3.22
  5. Version 0.3.20