Cómo configurar bitcoind en Arch Linux

Ok, bueno, he estado observando la tendencia de Bitcoin con cierto interés durante varios años. Y finalmente he decidido involucrarme yo mismo. Así que ayer y hoy he estado leyendo durante varias horas de los muchos recursos en esta pregunta y esta gran respuesta . Leí esta publicación de blog en su totalidad y creo que la entendí completamente. Entiendo que para pagarle a alguien o que me paguen en BTC, necesito una identificación de bitcoin y que esto va de la mano con obtener una "billetera" de BTC. Entiendo que hay esencialmente dos opciones distintas para mi billetera BTC:

  1. una copia almacenada localmente (en mi computadora) de toda la cadena de bloques
  2. una copia almacenada de forma remota (en la computadora de otra persona) de toda la cadena de bloques que está encriptada con credenciales de modo que solo yo tenga acceso a ella (aunque la falla de Mt. Gox y muchos otros parecen mostrar que esto es menos seguro que el anterior )

Creo que un sinónimo de la opción 1 anterior es "almacenamiento en frío", aunque no estoy seguro de eso.

Me doy cuenta de que la extracción de BTC es algo completamente diferente que realmente solo vale la pena con un ASIC o un hardware similar, por lo que no estoy interesado en absoluto en la minería en este momento. Solo quiero obtener una identificación y una billetera y entender Bitcoin lo suficientemente bien como para poder mantener mi propia copia de la cadena de bloques en mi máquina local y mantenerla actualizada. Quizá con el tiempo busque en la minería, pero no estoy interesado en este momento.

De la publicación del blog de Erik Voorhees, creo que entiendo que si quiero la opción 1 anterior (lo cual hago porque me parece más seguro y la conveniencia no es para nada importante para mí), entonces necesito instalar bitcoind o bitcoin- qt. (¿Supongo que ambos se consideran parte de "Bitcoin Core" a continuación?) Esto se ve reforzado por mi revisión de las herramientas de software que veo en bitcoin.org:

  1. Núcleo de Bitcoin :

    • Control sobre tu dinero
    • Validación completa
    • Transparencia total
    • Entorno vulnerable
    • Privacidad mejorada

mientras que lo mejor que cualquiera de los otros para Linux hay:

  1. electro
  2. mSIGNA
  3. multibit
  4. Arsenal
  5. Dirección verde

puede ofrecer con respecto a la transparencia es "Transparencia básica".

Entiendo por esta respuesta que, aunque es posible tener ambos instalados en el mismo sistema, uno no puede tener bitcoind y bitcoin-qt ejecutándose en el mismo sistema al mismo tiempo. Entonces, mi pregunta es sobre cómo configurar y comenzar a ejecutar bitcoind en Arch Linux; pero hay varios problemas específicos que siento que necesito entender mejor.

  1. Usando bitcoind, ¿exactamente en qué momento generaré mi ID? Supongo que tendría que ser después de que haya completado la descarga de toda la cadena de bloques.

  2. bitcoind.conf quiere que inserte un nombre de usuario y una contraseña claros, en texto plano y sin cifrar que supongo que bitcoind leerá al iniciarse. ¿Exactamente para qué usará bitcoind esas credenciales? Sé que las opciones tienen nombres bastante transparentes (rpcuser y rpcpassword) y la página de manual explica que son para conexiones JSON-RPC. Pero solo tengo un binario en mi paquete Arch bitcoin-daemon (/usr/bin/bitcoind), entonces, ¿qué cliente se conecta a mi instancia en ejecución de bitcoind usando conexiones JSON-RPC?

  3. Usando bitcoind, ¿exactamente en qué punto comenzará el software a descargar una copia de toda la cadena de bloques? Sé que es un archivo grande y puede tardar horas o días en completarse.

  4. Si quiero interactuar con mi cadena de bloques almacenada localmente después de descargarla, parece que debo incluir al menos una línea sin comentarios en ~/.bitcoin/bitcoin.conf:

    server=1
    
  5. ...pero, ¿cómo será el archivo bitcoin.conf más simple que necesito? Por ejemplo, tendré que descomentar la configuración de cualquiera de estos:

    addnode=
    connect=
    maxconnections=
    rpctimeout=
    rpcssl=
    rpcsslciphers=
    rpcsslcertificatechainfile=
    rpcsslprivatekeyfile=
    keypool=
    paytxfee=
    min=
    minimizetotray=
    
  6. ¿Qué usan otras personas para paytxfee? Además de lo que dice bitcoin.conf ("Las transacciones con tarifas tienen más probabilidades que las transacciones gratuitas de incluirse en los bloques generados, por lo que pueden validarse antes"), ¿por qué establecería este valor? a algo que no sea 0,00 (¿y cuál es ese número de todos modos? ¿un porcentaje? Entonces, si lo configuro en 1,00, ¿es 1,00%)?

Mi principal problema para comprender ahora es simplemente conectar la configuración específica en bitcoin.conf a mi comprensión abstracta de cómo funciona la red Bitcoin. Creo que tengo una comprensión general de este último, pero cómo implementar los conceptos específicos de este último usando la configuración del primero no es del todo obvio para mí y después de muchas horas de estudio, no veo una explicación clara de en cualquier lugar.

Así que espero que alguien aquí pueda arrojar algo de luz sobre estos problemas. Después de todas las preguntas que he visto en este sitio, estoy seguro de que no puedo ser el único que se pregunta estas cosas.

Consideré dividir esta publicación en 5 o más publicaciones separadas y espero que la comunidad perdone mi decisión de no hacerlo. Veo todas las preguntas anteriores como esencialmente partes de la pregunta del tema: "Cómo configurar bitcoind en Arch Linux". Por eso lo dejé como un post largo. Una vez más, pido perdón a la comunidad si eso se considera una decisión lamentable.

Todavía leyendo otras preguntas después de publicar, me encontré con esta . Pero cuando hago eso, veo lo siguiente: "Error: ya no hay funcionalidad de cliente RPC en bitcoind. Use la utilidad bitcoin-cli en su lugar". Pero no tengo el binario bitcoin-cli por haber instalado el paquete bitcoin-daemon en Arch.
El mantenedor de los paquetes Arch Bitcoin, Timothy Redaelli, parece haber dividido lo que necesita entre bitcoin-daemony bitcoin-cli, y no puedo entender por qué.
Y, sinceramente, hubiera sido mejor dividir esto en varias preguntas. Tal como está, no estoy muy seguro de por dónde empezar.
Después de leer esto , parece ser que esta división está presente aguas arriba.
Además, no es necesario enumerar todas las cosas que entiendes cuando haces una pregunta sobre algo que no entiendes. Trate de ser lo más breve posible y tan detallado como sea necesario.
@NickODell además de la página ascendente oficial a la que me referí anteriormente, solo quería señalar una respuesta en este sitio SE que también muestra su comentario anterior (sobre que Timothy Redaelli dividió Bitcoin Core en paquetes bitcoin-daemon y bitcoin-cli) ser engañoso. No me había dado cuenta antes de hoy de que bitcoind podía ejecutarse previamente (antes de la versión 0.9) como servidor o como cliente, pero desde la versión 0.10, bitcoind es solo el servidor RPC y bitcoin-cli es solo el cliente RPC.
@ 02019 upstream los dividió en diferentes binarios, seguro. Pero que yo sepa, nunca recomendaron que los creadores de paquetes los empaquetaran por separado. Si la respuesta que vinculó muestra que mi comentario es engañoso, me temo que no entiendo cómo.

Respuestas (1)

Aunque creo que es demasiado pronto para decirlo con seguridad, parece que ahora tengo muchas más lecturas informativas que he encontrado aquí . Sospecho que estos documentos eventualmente me ayudarán a comprender las respuestas correctas a todas mis preguntas anteriores. No me había dado cuenta de que mis preguntas eran esencialmente preguntas de desarrollador hasta ahora.

Todavía me gustaría ver más documentación orientada al usuario que me ayudaría a comprender mis preguntas, así que si alguien tiene alguna idea para compartir, le daría la bienvenida. De ninguna manera considero que esta sea una respuesta definitiva a mis varias preguntas anteriores.

ACTUALIZAR:

Estas palabras (aunque actualmente no están del todo completas ya que no mencionan bitcoin-cli): "Hay dos variaciones del programa bitcoin original disponibles; una con una interfaz gráfica de usuario (generalmente denominada simplemente "Bitcoin" [o bitcoin-qt ]), y una versión 'sin cabeza' (llamada bitcoind). Son completamente compatibles entre sí y toman los mismos argumentos de línea de comandos, leen el mismo archivo de configuración y leen y escriben los mismos archivos de datos. Puede ejecutar uno una copia de Bitcoin [también conocido como bitcoin-qt] o bitcoind en su sistema a la vez (si accidentalmente intenta iniciar otro, la copia le informará que Bitcoin o bitcoind ya se está ejecutando y se cerrará)". de esta página también fueron extremadamenteútil para mí Me ayudaron a ver que para comenzar, ni siquiera necesito preocuparme por la configuración en el archivo de configuración bitcoin.conf. Puedo instalar tanto bitcoin-qt como bitcoind, comenzar con bitcoin-qt inicialmente y luego cerrarlo más tarde a favor de bitcoind.

Entonces, al menos para Arch Linux, ahora creo que es mejor instalar los tres paquetes:

  1. bitcoind
  2. bitcoin-cli
  3. bitcoin-qt

Y todos estos son parte del software ascendente llamado Bitcoin Core utilizado para una transparencia total y una billetera almacenada localmente (posiblemente la mejor seguridad) en mi computadora en lugar de en la computadora de otra persona.

Pero un consejo realmente valioso que acabo de descubrir hace unos minutos es que hay una copia bastante reciente de la cadena de bloques completa (21 GB) disponible como archivo torrent . Y a la luz de ese descubrimiento, tengo claro que para comenzar lo más rápido posible con una billetera local, primero debo descargar completamente este torrente de la cadena de bloques. Y luego, y solo ENTONCES , debo iniciar bitcoind o bitcoin-qt para validar o verificar esa cadena de bloques de 21 GB o cualquiera que sea el término correcto para eso. Esto me ahorra tiempo de descarga y ahorra el ancho de banda de la red Bitcoin de las descargas directas a través de bitcoind o bitcoin-qt.

ACTUALIZACIÓN2:

Escribí un procedimiento detallado para esto en la página wiki de Arch Linux Bitcoin que he reproducido a continuación para mejorar esta respuesta.

  1. Verifique que haya al menos 80 GB (22 GB * 3 copias + 14 GB de bloques adicionales a través de bitcoind/bitcoin-qt) de espacio libre en disco disponible

  2. Instale gnupg, diluvio, bitcoin-qt, bitcoin-daemon y bitcoin-cli desde los repositorios oficiales

  3. Usando un navegador, descargue README.txt, bootstrap.dat.torrent, bootstrap.dat.torrent.gpg y bootstrap.txt

  4. Usando gnupg, verifique que los archivos descargados tengan buenas firmas (primero deberá importar la ID de clave pública del firmante A2DB9CCA)

  5. Usando diluvio, descargue el archivo bootstrap.dat de 22 GB (quizás horas dependiendo de su velocidad de descarga de datos)

  6. Cuando se complete la descarga de bootstrap.dat:

    • deje que Diluvio se ejecute hasta que se complete la siembra (opcional pero ayuda a la comunidad; puede requerir horas o días dependiendo de la tasa de carga de datos)

    • copie (no lo mueva o interrumpirá la siembra) bootstrap.dat a ~/.bitcoin (no use un enlace simbólico ya que bitcoin-qt cambiará el nombre de este archivo después de que se haya importado por completo, y eso también interrumpirá siembra)

  7. inicie bitcoind para importar en segundo plano o bitcoin-qt para importar con comentarios sobre el progreso

  8. bitcoin-qt comienza a importar la cadena de bloques desde bootstrap.dat, brindando comentarios visuales y de texto sobre el progreso de la importación ("Importando desde disco..." y, por ejemplo, "4 años y 24 semanas atrás", etc.; esta importación desde disco puede requerir más de una hora)

  9. el proceso de importación duplica el archivo bootstrap.dat de 22 GB en ~/.bitcoin/blocks/, duplicando así aproximadamente el tamaño de ~/.bitcoin de 22 GB antes de iniciar Bitcoin Core a 44 GB una vez finalizada la importación.

  10. Una vez finalizada la importación desde el disco

    • bitcoin-qt mostrará "Sincronizando con la red..." y, por ejemplo. "22 semanas de retraso..." (una conexión de red cableada aquí acelerará esta parte del proceso, pero es típico que transcurran varias horas para completar la sincronización con la red)

    • el archivo bootstrap.dat cambia de nombre a bootstrap.dat.old

    • ahora debería ser seguro eliminar bootstrap.dat.old de ~/.bitcoin, pero un enfoque cauteloso sería esperar hasta que su cadena de bloques almacenada localmente esté completamente sincronizada con la red

  11. salir de bitcoin-qt

  12. luego elimine ~/.bitcoin/bootstrap.dat.old

  13. Después de que bitcoin-qt indique que la copia local de la cadena de bloques está totalmente sincronizada con la red (~/.bitcoin/blocks llenó 34 GB en febrero de 2015, considere salir de bitcoin-qt y realice una de las siguientes acciones:

    • inicie bitcoind para mantener la cadena de bloques sincronizada; La retroalimentación sobre el estado de la cadena de bloques se puede obtener usando bitcoin-cli sin la memoria adicional requerida por bitcoin-qt.

    • reinicie bitcoin-qt ejecutándose como una ventana minimizada ($ bitcoin-qt -min). Sin embargo, tenga en cuenta que algunas personas han descubierto que este argumento de la línea de comandos no funciona como se anuncia.

  14. Considere hacer una copia de seguridad de su archivo wallet.dat usando bitcoin-qt.

  15. Consulte la wiki oficial de Bitcoin para obtener orientación adicional.