Saltar al contenido

¿Y después de instalar un Nodo qué?

Una vez que tienes instalado el software para poder empezar a ejecutar un Nodo Completo de Bitcoin surgen dudas sobre qué hacer. La típica pregunta de ¿y ahora qué?.

Vamos a separar ese camino en dos partes, que a su vez serán dos entregas:

1.     Configuración del Nodo

2.     Uso de comandos en el Nodo

1. Configuración del Nodo

Para poder iniciar vamos a tener que asumir 2 cosas, la instalación del nodo está bajo Linux y también vamos a asumir que el nodo lo estas ejecutando con el software de Bitcoin Core, por lo cual todas las configuraciones que veremos aquí estarán basadas en estos criterios.

Lo primero a saber es que el nodo es un participante más dentro de la red de Bitcoin y que todos los nodos tienen que cumplir políticas aplicadas por el consenso de la red, es decir no pueden ser modificadas, están en el software y si fueran modificadas, el resto de nodos detectarían eso y dejarían fuera de la red a ese nodo que incumple las reglas.

Lo otro es saber que existen otras políticas que cada nodo puede aplicar o modificar. Lo veremos más en detalle conforme entremos en materia, pero es importante conocer estos dos puntos.

Otra cosa muy importante que debes saber es que hay algunas configuraciones que pueden implicar un largo tiempo en su aplicación, ya que la blockchain de Bitcoin es bastante grande, y por ello es necesario que antes de lanzarte a la descarga tengas claro que deseas hacer y sobre todo cuáles son tus posibilidades de almacenamiento y de procesamiento. Por ello antes deberías leerte este artículo que te ayudará a entender y saber qué hacer desde el inicio y no cuando ya hayas dado ciertos pasos.

El software del nodo, cuando se empieza a ejecutar busca en la ruta ~/.bitcoin (recuerda que hemos dicho que la instalación es bajo Linux) el archivo con las configuraciones para su ejecución. Ese archivo se llama bitcoin.conf. Si no existiera, el software se va a ejecutar con las opciones por defecto que están inmersas en el código del software.

Dentro del archivo de configuraciones tienes una serie de parámetros que puedes agregar para cambiar configuraciones, bien para aprender o bien para establecer tus propias políticas de participación en la red (libertad a tope).

Vamos a ver algunos ejemplos de los más importantes y también te dejaré un listado completo de los parámetros (para la versión 0.19.1 de Bitcoin Core).

Lo más habitual es que tengamos un disco duro externo para almacenar la blockchain del nodo, por lo que en el archivo bitcoin.conf podrás indicarselo incluyendo la siguiente línea:

blocksdir=/”MiDiscoDuroExterno”/.bitcoin/  →  Este valor le indicará a tu nodo dónde debe almacenar y buscar toda la información referente a los bloques, debes sustituir el texto entre comillas para indicar la ruta de tu disco.

Otra opción interesante es separar donde tienes almacenada la blockchain, de donde quieres almacenar los datos que NO son de la blockchain, por ejemplo la información de tu wallet, para hacerlo debes incluir la siguiente línea:

datadir=~/.bitcoin (por ejemplo)  →  Este valor le indicará a tu nodo dónde debe almacenar y buscar toda la información que NO es de la blockchain.

Una configuración muy pero que muy útil es la de habilitar el indexado de las transacciones contenidas en los bloques, es opcional y de hecho la configuración por defecto es que NO esté habilitado el indexado porque para poder utilizar es necesario tener un cierto conocimiento para sacarle provecho, pero si tu interés es profundizar más en el conocimiento de Bitcoin, es muy recomendable, desde mi punto de vista, habilitarlo, y esto se consigue habilitando la siguiente línea en tu archivo de configuración:

txindex=1  →  Este valor te permite habilitar el indexado completo de las transacciones en los bloques y con ello poder hacer uso de comandos vía RPC call (en la segunda entrega hablaremos de los comandos) y poder explotar la información de las transacciones contenidas en tu nodo.

Esa configuración deberá ir acompañada de habilitación del servidor Json RPC para poder ejecutar los comandos, esa configuración será incluir la siguiente línea en tu archivo de configuración:

server=1  →  Como decía, si tienes idea de investigar más sobre como interactuar con tú nodo un poco más, esta es la opción ya que te va a permitir interactuar con tu nodo, es importante matizar que esa interacción es local, por lo cual si bien siempre hay un riesgo de ataque, el no hacerlo visible a internet ayuda un poco a mantener la seguridad de tu nodo.

Otras configuraciones serían:

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.

Dustrelayfee=0.00002 (cifra a modo de ejemplo)  →  Este parámetro es bastante interesante, tiene que ver con lo que se denomina polvo. En Bitcoin Core la definición de polvo indica que cualquier transacción 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 attack. Pues este parámetro permite indicar en tu nodo a partir de qué 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 aceptara 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 (cifra a modo de ejemplo)→  Con este parámetro se establece la comisión que tu nodo va a revisar en las transacciones y que en base a eso determinará cuales de esas transacciones pueden entrar en la mempool.

Es importante entender que no significa que tu vayas a recibir esas comisiones, sino que son reglas de relay (retransmisión de transacciones a la red), es decir que con este parámetro estableces la regla para que tu nodo retransmita a la red las transacciones que paguen X comisiones (las que tu consideres).

minrelaytxfee=0.00003 (cifra a modo de ejemplo) →   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 pagará 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. ¿Por qué? 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 (cifra a modo de ejemplo)  →  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 estén ocupando memoria. El default en el código de Bitcoin es de 336 horas (según lo que está establecido al momento de publicación de este artículo).

assumevalid=2100000 →  Con este parámetro en la configuración de tu nodo de Bitcoin Core podrías indicar a tu nodo desde que Bloque quieres que considere que los bloques de la cadena son válidos, por ejemplo con assumevalid=210000, estarías indicando que a partir de ese bloque todos los bloques sean considerados como válidos. Puede ser útil para acelerar la descarga de bloques en un nodo que está recién sincronizando la cadena.

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 que no está exenta de algún mal entendido por mi parte. Si detectas algún error te agradecería que 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.

Aquí te dejo un archivo con la lista completa de todos los parámetros que puedes configurar para tu nodo y su significado.

Sobre el autor de este artículo

Desde que conocí Bitcoin me he vuelto un admirador de sus conceptos, su filosofía y de toda la tecnología que emerge a su alrededor. Mi objetivo y misión, es el tratar de facilitarle las cosas, a muchos que como yo, están buscando información que les ayude a adentrarse en este fantástico mundo.
¿Te ha sido útil esta madriguera? Puedes dejarme una propina via Lightning network
Decentralized.b

Paynyms (Samourai Wallet)

PM8TJR2yPtx5JS8e8CuwXBZMay67mg1RKrtVptBRZQD5qCyZc1rosVCbScFmzgYYrQtVmc6cJZ2hCK2nBra3KAXxXCKPU4K4vRPjnBqGCYKYRUwimKnA
+crimsontruth10e