Un discurso sobre los nodos (27 de mayo de 2020)

La definición que se ha propagado alrededor de la descripción de un nodo de Bitcoin ha llevado a una «cuasi religión» bastante sectaria. Lo llamaré una creencia religiosa, ya que claramente no está basada en el pensamiento racional. Desafortunadamente, hay muchos intereses creados e inversiones asociadas a la promoción de un falso concepto de Bitcoin. Hay dos aspectos en la red de Bitcoin, formada por nodos y clientes de la red. En un pasado lejano, traté de explicar conceptos difíciles de una manera tan simple como fuera posible, y utilicé el término «nodos cliente».

En la disciplina matemática de la teoría de grafos, existe el concepto de vértice o nodo. El mismo concepto se representa en informática. Los orígenes matemáticos de la parte correspondiente de la informática unieron las dos descripciones a la perfección. Los nodos de los vértices estarían conectados a través de las aristas. La distinción, aquí, que la gente parece no entender es que la red de nodos de Bitcoin de par a par es definida por los mineros. Los clientes o usuarios del sistema no son nodos, ya que no están produciendo bloques. Cualquier «nodo» que no produzca un bloque no se compromete con el mecanismo de consenso de la red de ninguna manera.

En una red congestionada y casi completa, las acciones de los sistemas cliente son irrelevantes. Los sistemas cliente no ayudan a la verificación o propagación de los bloques en ningún caso. En la actualidad, hay menos de 10 nodos que controlan cualquier sistema blockchain, similar a blockchain o de «criptomonedas» que exista. A la gente le gusta hacer la afirmación de que hay miles de nodos en Bitcoin, y ésta se propaga como una idea a través de la comunidad de BTC. La idea es falsa. La potencia de cálculo fluctúa entre cinco grupos en cualquier momento. En la actualidad, sólo tres grupos controlan el consenso de la red. Cualquier cosa más allá de 20 nodos es irrelevante y constituye una anomalía en el mejor de los casos. En la actualidad, una vez que superas los 10 nodos, cualquier otra cosa se convierte en un error de redondeo anómalo. Cada uno de los 10 nodos está densamente conectado. Eliminar el 99,999% de la conectividad del cliente no haría nada para la propagación de las transacciones. A lo sumo, una transmisión de un cliente se propagará a más del 95% de la red en dos saltos.

Si miramos la descripción original correspondiente, en la página web original, podemos ver mi explicación mal escrita (alfa), que sin embargo excede lo que mucha gente entiende hoy en día:

«Hay dos maneras de enviar dinero. Si el destinatario está en línea, puede introducir su dirección IP y se conectará, obtendrá una nueva clave pública y enviará la transacción con comentarios. Si el destinatario no está online, es posible enviarle a su dirección de Bitcoin, que es un hash de su clave pública que te dan. Recibirá la transacción la próxima vez que se conecte y se sincronice con el bloque en el que está la transacción. Este método tiene la desventaja de que no se envía información de comentarios, y se puede perder un poco de privacidad si la dirección se utiliza varias veces, pero es una alternativa útil si ambos usuarios no pueden estar en línea al mismo tiempo o el destinatario no puede recibir conexiones entrantes».

La red primaria es una red entre pares (P2P), en el sentido verdadero y más utilizado. La definición de una red P2P se halla realmente sesgada en el sentido de que se refiere a un sistema no basado en un servidor. En otras palabras, es un sistema distribuido. La noción de los mineros se refiere a los únicos nodos reales de la red de Bitcoin. Como tal, los usuarios estarían separados de la red real de Bitcoin. Los usuarios interactúan con el sistema.

Contrariamente a la falsa información que se difunde sobre Bitcoin, los usuarios no tienen voz en la red. El mecanismo de consenso se deriva puramente de los nodos de la red que crean bloques. Para que los nodos no puedan simplemente hacer trampa, hay un período de madurez de 100 bloques. El componente de madurez significa que los bloques que se crean pueden analizarse de manera que, si es necesario, los nodos de la red puedan tomar medidas. Las acciones podrían incluir incluso medidas legislativas o sanciones penales contra los agentes deshonestos. Dicho esto, no hay ningún efecto de conectividad entre los sistemas cliente.

Como se ha explicado, los nodos primarios están todos muy conectados en un grafo casi completo. Aquí vemos que más del 98% de la potencia computacional de la red está conectada directamente. Es decir, está conectada por un solo salto. Por lo tanto, cualquier transacción enviada por un usuario a un solo nodo estará conectada con casi todos los demás nodos de la red en un salto más. Estos servidores comerciales pagan por un gran ancho de banda, enrutadores de alta capacidad y equipo de red. En todo caso, la conectividad entre los nodos de la red supera la conectividad de todos los nodos del cliente.

Veamos un ejemplo de lo que ocurre cuando un bloque se distribuye en la red o una transacción se propaga por los nodos (de nuevo, nótese que me refiero a los nodos de la red y no a los clientes cada vez que digo «nodos»).

Si el cliente A envía una transacción a un solo nodo de la red y a otros siete clientes, en un tiempo T=1, aunque no llegue a ninguna parte sino a un solo nodo de la red y a muchos nodos cliente, el siguiente salto hará que cualquier acción de cualquier número de nodos cliente sea irrelevante.

Después de T=1, la transacción será recibida por un nodo de la red que está incentivado, a través de medios comerciales, a instalar un hardware rápido que validará y propagará la transacción más rápido de lo que puede cualquier cliente. Los nodos de la red también están incentivados para enviar transacciones a otros nodos de la red muy rápidamente. Así, cuando lleguemos a un tiempo T=2 o al siguiente período, todos los nodos de la red habrán recibido la transacción validada, que ahora también pueden validar, antes de recibirla de cualquier nodo cliente.

El resultado es que el hash de la transacción que se recibe de un cliente coincidirá con el que ya está en memoria en cada uno de los nodos de la red. En el segundo salto, cada uno de los nodos de la red habrá recibido la transacción validada, que ahora revalidará. Cualquier comunicación de los usuarios o clientes es entonces rechazada. Por consiguiente, la única vez que cualquier comunicación de un sistema de clientes importa en absoluto es cuando envían inicialmente una transacción. En otras palabras, cualquier comunicación entre un sistema cliente y otro es un desperdicio de ancho de banda, que no constituye ninguna diferencia en ningún proceso de consenso en la red.

Para contradecir el mito común, no existe un bloque candidato que se envíe a través de la red. Un bloque candidato es la propia solución del nodo al bloque en el que está trabajando. Tan pronto como se descubre la prueba de trabajo válida, deja de ser un bloque candidato. Como sólo se propagan los bloques completos, los demás nodos no deciden sobre la validez de los bloques candidatos. En efecto, el método más eficaz para enviar las transacciones es enviarlas directamente a los nodos de la red. Al hacerlo se reducirá el desperdicio de ancho de banda en la red. No puede aumentar el ancho de banda de la red entre los nodos de ésta, ya que en ningún momento los nodos no recibirán la transacción. Los nodos de la red sólo tienen que comprobar el hash inicial de una transacción y pueden rechazar una segunda copia inmediatamente, tan pronto como el hash se haya cotejado.

James Donald, al estar involucrado en varias actividades nefastas como la promoción de pornografía infantil, buscaba un sistema diferente a Bitcoin. Desafortunadamente, no me di cuenta de sus intenciones en ese momento, y fue mucho después de 2008 cuando llegué a entender qué tipo de persona era. Dicho esto, Bitcoin está diseñado de forma que no se puede cambiar hacia el sistema que le gustaría a gente como James Donald. Cuando James Donald dijo que Bitcoin no parecía escalar al tamaño requerido, era porque quería un sistema en el que los usuarios de la red votaran. Sin embargo, Bitcoin no está diseñado de esa manera. De hecho, está diseñado para que no pueda ser rediseñado como tal.

Cuando James Donald decía que el ancho de banda no escalaría debido al requisito de enviar transacciones a cada persona, asumía, por error, que cada nodo de la red debía recibir cada transacción, al no haber leído y entendido la sección 8 del documento técnico (white paper), sobre la verificación de pagos simplificada (SPV). La mayoría de los «nodos» (en este caso, en el sentido matemático de los «nodos de arista» o sistemas de usuario/cliente) de la red sólo necesitan los encabezamientos de bloque, que deben ser distribuidos a ellos y procesados. Sólo cuando reciben una transacción requieren alguna información adicional. Le señalé lo siguiente a James, en 2008, pero una vez más, no entendí que no quisiera un sistema como Bitcoin:

«Mucho antes de que la red llegue a ser tan grande, sería seguro para los usuarios utilizar la verificación de pago simplificada (sección 8) para comprobar si hay doble gasto, lo que sólo requiere tener la cadena de cabeceras de bloque, o unos 12 KB por día. Sólo las personas que intenten crear nuevas monedas tendrían que ejecutar los nodos de la red. Al principio, la mayoría de los usuarios utilizarían los nodos de la red, pero a medida que la red crezca más allá de cierto punto, se dejará cada vez más en manos de especialistas con granjas de servidores de hardware especializado. Una granja de servidores sólo necesitaría tener un nodo en la red y el resto de la LAN se conecta con ese único nodo [énfasis añadido]».

Ya hemos logrado granjas de servidores especializadas. Ciertos consorcios y corporaciones mineras, al ver el valor de no tener que construir sistemas a escala completa, simplemente promueven un mito que limita el uso de Bitcoin, permitiendo que unos pocos actores monopolísticos engañen a aquéllos que buscan invertir en el sistema. Aunque Bitcoin no se basa en una única entidad monopolística, en la actualidad, los principales consorcios mineros actúan como un cártel. Sin regulaciones, un escenario que ha surgido a través de la desinformación difundida por la gente dentro de la comunidad, tales compañías han sido capaces de mantener el dominio sin desarrollar y expandir el sistema.

Otra cosa que la gente no entiende, en contraste con lo que fue promovido por personas como James Donald, es que Bitcoin no es un sistema de emisión continua. Todas las monedas se emitieron en el momento en que lancé Bitcoin en 2009. Las monedas se distribuyen bajo un contrato unilateral. Hay una gran diferencia entre distribución y emisión que la gente no parece comprender. Poco menos de 21 millones de monedas (bitcoins) han existido desde el primer bloque descubierto en 2009. No se están creando nuevos bitcoins; son tokens que ya existen y que podría haber decidido guardar, en parte, para mí mismo, no como un «preminado», sino como un pago. No lo hice. En la creación de Bitcoin, asigné y entregué el 100% de los tokens creados a aquéllos que apoyaron la red.

En efecto, el contrato unilateral que creé permite a los agentes, bajo un conjunto de reglas predefinidas o términos contractuales, ir y venir a voluntad.

Bitcoin es un conjunto de tokens indivisibles y fungibles

Cada unidad normal llamada bitcoin se relaciona con 100 millones de tokens digitales. Cada uno de los tokens se puede considerar como un grano de arroz digital. Todos los tokens tienen la misma calidad, y son en sí mismos indivisibles, lo que les permite ser fungibles. Un token no es lo mismo que una salida de transacción no gastada (UTXO). Una UTXO puede ser análoga a un sobre que contiene un conjunto de tokens. Imagina cada UTXO como una bolsa o un sobre que contiene un número definido de granos de arroz. Aunque la UTXO en sí se registra por separado, el contenido de la UTXO es completamente fungible, y es imposible distinguir entre cada uno de los granos de arroz virtualizados o los tokens digitales.

Al considerar el bitcoin como un conjunto de fichas guardadas en sobres, cuando un usuario las intercambia con otro usuario, por ejemplo a través del protocolo original de IP a IP, son simplemente clientes de la red. Pueden tomar la forma de un cliente SPV o de un cliente web o de muchas otras formas, incluyendo un cliente pesado que se autopropaga.

Bitcoin se construyó de manera que la gente pudiera enviar transacciones tanto si estaban en línea como si no. La metodología principal era conectar directamente con la persona a la que se le pagaba e intercambiar una transacción con ella. De nuevo, lo expliqué en la página web original de «BitCoin»:

«Hay dos maneras de enviar dinero. Si el destinatario está online, puedes introducir su dirección IP y se conectará, obtendrá una nueva clave pública y enviará la transacción con comentarios. Si el destinatario no está online, es posible enviarle a su dirección de Bitcoin, que es un hash de su clave pública que le dan. Recibirá la transacción la próxima vez que se conecte y sincronice con el bloque en el que se encuentra. Este método tiene la desventaja de que no se envía información de comentarios, y se puede perder un poco de privacidad si la dirección se utiliza varias veces, pero es una alternativa útil si ambos usuarios no pueden estar en línea al mismo tiempo o el destinatario no puede recibir conexiones entrantes».

Lo más importante es que detallé el escenario en la primera frase de mi resumen en el documento técnico. Como dice, los pagos pueden ser enviados «directamente de una parte a otra». Para enviar un pago directo, no te conectas a los nodos de la red y esperas que lo envíen más tarde. Te conectas directamente con la persona a la que quieres pagar. Aunque es posible recibir transacciones mientras se está fuera de línea, «este método tiene la desventaja de que no se envía información de comentarios y puede perderse un poco de privacidad».

Me parece lamentable que la gente no pueda pensar por sí misma ni siquiera ahora. El culto que ha promovido Bitcoin para permitir la facilitación de la delincuencia y el blanqueo de dinero y la creación de esquemas Ponzi, diseñados para ordeñar a la población en general, no busca educar a la gente; más bien está vendiendo una mentira.

Así pues, para recapitular, diré de nuevo que los clientes de la red no son nodos. No importa si eres un comerciante que intenta propagar transacciones, un cliente de protocolo completo de Bitcoin Core, o cualquier cosa intermedia. Si no está validando transacciones y creando y ganando bloques, no es un nodo. Punto y aparte.

Algunas personas quieren referirse a cosas que no están involucradas en el proceso de consenso de Bitcoin como nodos. Pero, debería ser simple: hay nodos, y hay clientes. Los nodos crean bloques. Los nodos validan las transacciones. Los nodos hacen todo lo que se explica en la sección 5 del documento técnico. Es muy simple: si no estás haciendo todo lo que se explica en la sección 5 del white paper, tú (los sistemas informáticos) no eres un nodo en ningún sentido de la palabra.

Por lo tanto, no debemos tratar de llegar a términos arbitrarios como «nodos de transacción», «nodos de propagación» o «nodos de procesamiento de transacciones». No existe tal cosa en la red de Bitcoin como un nodo que no cree, valide, propague y gane bloques.

Las principales propiedades anotadas en la página web original de «BitCoin» nos dicen cómo se evita el doble gasto con una red peer-to-peer. La red de nodos (mineros) es una red de difusión o de transmisión estándar. No presenta cómo interactúan los usuarios, por supuesto. En realidad no hubo mucha diferenciación en 2009, ya que fue un proyecto de software alfa. La parte principal de que sea una red de pares radica en su resistencia: los nodos pueden ir y venir a voluntad. No es necesario estar conectado todo el tiempo.

Los clientes de la red son los usuarios de la red. Como estamos viendo una red de mandala, puede haber otras formas de redes superpuestas en la parte superior de Bitcoin. Aquí se pueden tener agentes autónomos, entidades de almacenamiento e incluso entidades de propagación. Ninguno de ellos es un nodo de la red Bitcoin. Un «nodo de almacenamiento y archivo» puede ser un nodo, pero no es un nodo de la red Bitcoin a menos que forme parte de una operación de minería. Una red de almacenamiento y distribución tendrá sus propios nodos. Por lo tanto, un «nodo de almacenamiento» es un nodo en una red superpuesta separada. No es un nodo de Bitcoin en ningún sentido. Un «nodo de almacenamiento» que no sea un minero no es un nodo en la red de Bitcoin, sino que es más bien un nodo en una red separada, que puede usar el sistema Bitcoin como una función de índice.

El problema al intentar distinguir entre las dos redes (de mineros y de clientes) es que no hay realmente dos redes en la implementación básica de Bitcoin. Los usuarios, clientes de la red, se conectan entre sí. Forman una conexión directa, que no es realmente una red como tal. Los nodos o mineros están en una verdadera red peer-to-peer. Se pueden formar otras redes. Una vez más, estamos viendo lo que he llamado una red de mandala. Las otras redes son redes separadas, superpuestas, construidas entre los clientes de la red. Cada cliente puede formar un nodo en una red separada de Bitcoin y que utiliza la blockchain de Bitcoin tanto como sistema de coordinación e incentivo económico como a modo de sistema de actualización e indexación.

El sistema puede ser creado como una red completamente peer-to-peer como vimos en sistemas como Mojo Nation hace dos décadas. El problema con Mojo Nation era la limitación de la estructura de incentivos económicos. Los clientes de Bitcoin pueden ser nodos en una red separada; no hay limitación en el número de funciones en las que puede participar un sistema informático, por lo que un sistema puede ser tanto un cliente de una red como un nodo en una red separada.

Los nodos de la red de Bitcoin son lo que, en un principio, llamé nodos de red. Cuando me refería a ellos como sistemas que terminarían en centros de datos, no me refería a máquinas individuales. Un nodo no necesita ser un ordenador individual. Incluso ahora, una computadora individual está hecha de múltiples núcleos y separada en una variedad de sistemas altamente vinculados. En efecto, incluso una computadora local de escritorio o una computadora portátil realmente consiste en múltiples computadoras. Dicho esto, un nodo de la red, un nodo de la red Bitcoin, estaría formado por muchos sistemas. Incluirá los enrutadores, las bases de datos y todos los diferentes equipos, sistemas y redes necesarios para manejar la creación y propagación de bloques.

En este momento, muchas personas tienen la falsa idea de que el nodo de Bitcoin necesita ejecutar la base de datos en la misma máquina, lo cual es un concepto asqueroso y evidentemente ilógico. La base de datos utilizada desde el principio de Bitcoin es un servicio separado. No importa si un servicio como la base de datos está en la misma máquina o en una máquina separada. Por lo tanto, tanto si es una sola máquina como si está dividida en muchas máquinas, un nodo sigue siendo un nodo.

Al principio, al tratar de explicar el concepto, me referí a los clientes como «nodos cliente». En la teoría y la ciencia de los grafos, cada uno de los usuarios podría ser representado como un nodo en términos matemáticos. El problema con esa terminología es que la misma palabra tiene otras connotaciones. Si lo llamamos de alguna manera, tiene que ser un «nodo cliente», pero tal término lleva a la gente a creer que un «nodo» como cliente tendría alguna representación en la propia red de Bitcoin.

Mi respuesta a nuestro (así llamado) dilema es muy simple…

La red de Bitcoin tiene una sola forma de nodo. Hay componentes separados que forman un nodo. La base de datos, por ejemplo, presenta sólo un aspecto de un nodo de la red.

Un sistema cliente no es un nodo de Bitcoin. Puede haber otras estructuras de nodos y redes de nodos construidas mediante el uso de Bitcoin; pueden ser nodos de otras redes superpuestas. No son ni pueden considerarse nodos de Bitcoin.

Puede suponer un golpe para algunos de vosotros, pero vuestro sistema de soft-forks activados por el usuario (UASF) no es un nodo, no tiene impacto en el protocolo de Bitcoin y no puede adquirir ningún impacto o relevancia dentro de Bitcoin.

Enlace al documento original: https://craigwright.net/blog/bitcoin-blockchain-tech/a-discourse-on-nodes/

4 Likes