Nodo completo

Voy a intentar explicar, bajo mi punto de vista, cual es la función de un nodo completo en Bitcoin.

Lo primero es entender qué solucionó Bitcoin. Bitcoin permite transmitir valor sin necesidad de confiar en un ente centralizado.

Satoshi Nakamoto propuso una solución al problema del doble gasto valiéndose de una red descentralizada que actuara como un servidor de tiempo distribuido. Cuando se añade un bloque de objetos (transacciones), este contiene el hash de la cabecera del bloque anterior. Generar un bloque requiere de trabajo, esto impone un gasto económico. Si un atacante quiere modificar la cadena deberá rehacer ese trabajo con el consiguiente gasto económico.

Cadena de bloques

¿Cómo funciona la red Bitcoin?

Transacciones

Si queréis escuchar una explicación más elaborada os recomiendo este pod de @lunaticoin.

Cuando realizamos una transacción en Bitcoin, la propagamos a la red.

Propagando una tx

Cada uno de los nodos que componen la red y que reciben la transacción comprueban que cumple con todas las reglas de consenso, si las cumple, la transacción pasa a la memoria de transacciones del nodo y la propaga a los nodos a los que está conectado. Si no cumple alguna regla la transacción se descarta.

Bloques

Del mismo modo que las transacciones, de hecho la imagen anterior sirve aquí perfectamente, cuando se propaga un nuevo bloque a la red cada uno de los nodos que componen la red y que reciben el bloque comprueban que cumple con todas las reglas de consenso, si las cumple, lo añaden a su cadena y modifican el UTXO set.

Reglas de consenso

Como hemos visto, todos los nodos completos de la red Bitcoin comprueban que, tanto las transacciones como los bloques que reciben, cumplen con las reglas de consenso. Estas reglas son las que cada usuario que tiene un nodo completo refuerza. Pero, ¿cuales son?

Realmente muchas, la mayoría referentes a la construcción de los mensajes (transacciones, bloques, direcciones,…) que se propagan por la red y otras más conocidas como el límite de 21 millones de bitcoin, el máximo peso de un bloque (4MB), el ajuste de dificultad cada 2016 bloques, la disminución de generación de bitcoin a la mitad (halving) cada 210000 bloques, que las entradas en una transacción no pueden ser menores en valor a las salidas, etc.

Protocolo

Teniendo claro que las reglas de consenso son las que deciden qué es bitcoin y que cada nodo de la red comprueba y valida que efectivamente se cumplen podemos entender lo complicado que es modificar el protocolo Bitcoin. Todos los nodos deben validar las mismas reglas para tener la misma versión de la cadena. Si esto no fuera así se produciría una división en la cadena dando como resultado 2 versiones porque un nodo no aceptará un bloque que no cumpla las reglas que él mismo valida, da igual que cumpla con el POW o el hashrate que controle aquel que lo ha propagado.

La red de nodos

Recuperamos la imagen de nuevo, es muy importante tenerla clara:

Fortaleza de validación

Ahora mismo la red Bitcoin se compone de unos 100000 (cien mil nodos), ya sabemos que cada uno de esos nodos sólo aceptará bloques y transacciones que cumplan con todas las reglas de consenso. Cuando se propone un cambio en el protocolo Bitcoin pueden suceder varias cosas:

  • No afectan a las reglas de consenso –> no es necesario actualizar
  • Afectan a reglas de consenso (hard fork) –> es necesario actualizar
  • Afectan a reglas de consenso (soft fork) –> no es necesario actualizar

Vamos a coger el caso del hard fork, es decir, se introduce un cambio que hace que lo que hasta ese momento se consideraba no válido por todos los nodos deje de serlo, lo que obliga a todos a actualizar a esa nueva versión.

Todos los operadores de los nodos deberían conocer el cambio que se va a introducir y tomar la decisión, personal, de introducirlo o no. En caso de que haya discrepancias la cadena se bifurcará, si hay apoyo suficiente en las 2 versiones la bifurcación será permanente y se convertirán en 2 proyectos diferentes. Esto tiene muchos efectos secundarios, precio, seguridad de la cadena…

Tu nodo

Aquí llego a la razón de este artículo, a tu nodo, el que tú controlas, el que valida las normas que tú has elegido.

La principal función de un nodo es validar, sólo con tu propio nodo puedes no confiar en un tercero. Esto es importante a la hora de recibir transacciones.

Ayudar a la red Bitcoin. Bitcoin es una red descentralizada, es decir, ningún elemento es crítico por si solo. Si tu nodo entra y sale de la red no afecta. Entonces, ¿ayudas a la red teniendo un nodo? Si. Todos los clientes establecen conexiones a otros nodos y tu nodo recibe información y propaga sólo bloques y transacciones válidas. Si alguien no cumple alguna regla de consenso tu nodo lo detectará y desechará ese mensaje.

Pero es el conjunto de nodos lo que hace fuerte a Bitcoin. La persona o entidad que está detrás de cada nodo y que ha elegido libremente las reglas de consenso que definen lo que es Bitcoin. Si una entidad, persona, grupo, etc… quiere modificar alguna de esas reglas tendrá que convencer a los operadores de nodos de que las nuevas reglas son mejores. La red Bitcoin es cada vez más fuerte, las propuestas que afectan a la red están muy razonadas, muy documentadas y todas son públicas.

Conclusión

Está genial que queramos montar un nodo completo. Hay infinidad de documentación sobre ello:

Pero es conveniente entender cual es su función, Bitcoin tiene una curva de aprendizaje pronunciada, es un cambio de mentalidad, tener el control.

Un Comentario

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *