Configuración del nodo de Bitcoin
- decentralizedb
Algunos consejos o temas interesantes sobre la configuración de tu nodo completo de Bitcoin
Si te has animado a instalar tu propio nodo completo de Bitcoin y seguiste los pasos, de por ejemplo la página de bitcoin.org (yo no me fiaría de ningún otro sitio, pero si que hay varios clientes más), genial, haz empezado tu caída hacía la madriguera del conejo, como se suele decir en el mundo bitcoiner.
En mi caso no he parado desde que me instale el nodo y trato de aprender como funciona la red (no solo el nodo) pero para ello el nodo es fundamental y conforme he ido aprendiendo me he ido encontrando con algunas cosas que no tenía claras y que por ello escribo aquí, porque estoy seguro que alguien más se encontrará en mi misma situación.
Como consejo te diré que no tengas miedo, no rompes nada, si sigues la practica de tener a buen recaudo tus semillas o llaves, no pasa nada si tienes que reinstalar tu nodo (si es que usas el mismo nodo como cartera).
Voy a seguir la configuración por defecto a manera de ejemplo pero irás viendo que hay cosas interesantes que puedes cambiar.
El archivo que contiene la configuración fundamental y con la que tu nodo va a estar ejecutándose se llama bitcoin.conf (al final del artículo tienes un archivo PDF con todo el detalle) y debes crearlo en la ruta ~/.bitcoin/ (tomando como ejemplo de sistema operativo linux), dentro de ese archivo podrás crear una serie de parámetros de configuración.
Si no lo creas, de todas formas el nodo se ejecuta ya que internamente el nodo toma valores por defecto, es aquí donde empieza lo interesante y dónde puedes cambiar configuraciones o bien para aprender o para establecer tus propias políticas de participación en la red.
A que es impresionante que tu puedes poner tus propias reglas, siempre dentro de las propias reglas de la red. Vamos a ver algunos ejemplos! (obviamente no pondré todos, si quieres investigar más, te dejo este enlace de Loop que además es una útil herramienta para crear un archivo de configuración)
Si quisieras especificar una instalación no estándar de tus datos podrías incluir estos parámetros:
- blocksdir=/MiDiscoDuroExterno/.bitcoin/ —> Este valor le indicará a tu nodo dónde debe almacenar y buscar toda la información referente a los bloques.
- datadir=~/.bitcoin —> Este valor le indicará a tu nodo dónde debe almacenar y buscar toda la información pero como en el punto anterior tengo indicado que blocksdir este en una ruta diferente, la información de los bloques no estará en esta ruta, esto es muy útil para no quedarte sin espacio en tu maquina y tener los bloques en un disco externo (por ejemplo)
- blockfilterindex=1 —> Si quieres que tu nodo almacene y pueda recuperar filtros de bloques y hashes compactos que permiten ayudar a que clientes ligeros, como carteras de los móviles obtengan información.
- txindex=1 —> Si quieres que tu nodo mantenga un indice completo de todas las transacciones de la blockchain, es muy útil para poder ver las transacciones a través de comandos RPC, por ejemplo o desde la consola de comandos de tu nodo. Para mi este es un «must» de mi configuración.
- server=1 —> Si tienes idea de investigar más sobre como interactuar con tú nodo un poco más, esta es una opción ya que permite actuar como servidor para permitir comando tipo RPC a tu nodo, debe tener otras configuración pero en el enlace que deje de Loop lo explica bastante bien.
- dustrelayfee=0.00002 —> Este parámetro es bastante interesante, tienen que ver con lo que se denomina polvo, en Bitcoin Core, la definición de polvo indica que cualquier tx dónde cueste más las comisión del envió que el importe a enviar se puede considerar como polvo, esto es por diversos motivos, entre ellos el tema de evitar ataques de polvo o dusting atack. Pues esto te permite indicar en tu nodo a partir de que cantidad por debajo de lo que tu estipules será considerada como polvo. Si tu no indicas nada, el valor predeterminado para dustRelayFee es de 3.000 satoshi por kilobyte, si lo subes a 5.000 (0.00005 expresado en BTCs), estarías indicando que cualquier operación por debajo de eso sea considerado polvo y no sea retransmitido a la red por tu nodo. Esto no significa que otros nodos no la transmitan, tu nodo no lo hará. De igual manera podrías reducir el límite por debajo de los 3.000 satoshis/kB. Sin embargo, no te lo recomiendo ya que te pasará a la inversa, aunque tu nodo aceptará transacciones con salidas inferiores para otros nodos serán polvo y tus transacciones por debajo de ese default no se retransmitirán.
- incrementalrelayfee=0.00003 —> Estable la comisión que tu nodo va a revisar en las transacciones y que en base a eso determinará cuales de esas transacciones pueda entrar en la mempool Importante entender que no significa que tu vayas a recibir esas comisiones, sino que son reglas de relay, es decir que estableces para que tu nodo retransmita a la red.
- assumevalid=2100000 —> Con este parámetro en la configuración de tu nodo de Bitcoin Core podrías indicar a tu nodo desde qué Bloque quieres que consideren las firmas de los bloques como validas, por ejemplo con assumevalid=210000, estarías indicando que a partir de ese bloque todas las firmas de los bloques anteriores sean considerados como validos. Puede ser útil para acelerar la descarga de bloques en un nodo que esta recién sincronizando la cadena. Importante recalcar que esta función sólo desactiva la validación de firmas para los bloques anteriores a un bloque específico. Bitcoin Core tiene hardcode un valor que van actualizando en cada liberación.
- minrelaytxfee=0.00003 —> Otro parámetro muy interesante, establece la comisión mínima que tu nodo admitirá para retransmitir una transacción a otros nodos. Ojo como ya comenté, no es que te vayan a pagar a ti esa comisión, es la comisión que la transacción pagara al minero. No hay una tarifa establecida, cada nodo es libre de establecer su propia política. Una cosa importante para evitar abusos, si tu estableces una comisión por debajo de la que establezcas en el parámetro incrementalrelayfee, tomará la de ese parámetro. Es decir no puedes retransmitir una transacción que no has aceptado que entre en tu mempool, y ¿porqué?, porque solo las transacciones que entran a la mempool son validadas por tu nodo y eso significa que cumplen con las reglas de una transacción, al menos.
- mempoolexpiry=336 —> Si deseas mantener la mempool de tu nodo «fresca», con este parámetro puedes ajustar el tiempo que una transacción pueda estar en la mempool, así, por ejemplo no mantendrás en mempool aquellas transacciones que por pagar una fee muy baja, tarden mucho en procesarse en tiempo (ya que se toman primero las de fees más altos) y estarán ocupando memoria. El default según lo que esta establecido al momento de publicación de este artículo, en el código de Bitcoin es de 336 horas.
- maxconnections=40 —> este parámetro determina el número máximo de conexiones con pares (40 es un ejemplo).
Aquí te comparto un archivo con un compendio del total de configuraciones que se puede realizar, tiene como base la versión 0.19.1 de Bitcoin Core: bitcoin.conf
Esta investigación la he realizado por mi propia cuenta en el código de Bitcoin con el afán de ir aprendiendo, por lo cual no esta exenta de algún mal entendido por mi parte, por lo que si detectas algún error en la misma te agradecería me lo hicieras saber, toma en cuenta que la idea es poder dar información veraz a otros usuarios, no hay mayor interés de mi parte que ayudar a los que como yo vamos aprendiendo.
Conforme descubra algunas cosas que considere interesantes las iré añadiendo, pero si quieres colaborar, bienvenido sea. Puedes hacerlo a través de los comentarios o enviándome un mensaje por twitter a @decentralized_b. Como siempre, gracias por pasarte por aquí!!!.
Puedes dejar una propina con el botón «Invítame un café».
O mediante Lightning network:
También puedes hacerlo onchain, vía Paynyms de Samourai Wallet:
PayNym: +decentralized