lunes, 17 de agosto de 2015

[Spanish article]¿Qué es un fork y en qué me afecta? (Pro tip: en casi nada)

Antes de comenzar, hagamos unas definiciones breves:
  • Bitcoin, la moneda, es un simple libro de contabilidad público que permite conocer quién tiene cuanto de la misma. En adelante mencionaré “la moneda” para cuando quiera referirme a este concepto.
  • Bitcoin, la red, es un conjunto de programas corriendo en forma distribuida en miles de computadoras del mundo que se conectan entre sí para lograr el consenso de la distribución de la moneda. En adelante mencionaré “la red” para cuando quiera referirme a este concepto.
  • Bitcoin, el protocolo, es el conjunto de reglas que especifican cómo se deben comunicar los clientes de la red para intercambiar las transacciones de la moneda. En adelante mencionaré “el protocolo” cuando quiera referirme a este concepto.
  • Bitcoin, el fenómeno, es la sinergia que se genera mediante el protocolo al distribuir la moneda en la red. En adelante me referiré a este concepto como “Bitcoin”.
  • Un nodo es un programa ejecutándose en una computadora que implementa el protocolo para unirse a la red y difundir los mensajes de intercambio de la moneda.


Ya establecidos estos puntos, es importante aclarar que la mayoría de nosotros interactuamos de manera casi exclusiva con la moneda. Si tienes un nodo (ej. el cliente Bitcoin Core, también conocido como el cliente /Satoshi/, o el proyecto Fullnode en IO.js) eres parte de la red y estás ayudando a difundir las transacciones de la moneda mediante el uso del protocolo.
Rara vez, de forma prácticamente exclusiva para programadores que quieren hacer servicios basados en Bitcoin, las personas interactúan de forma directa con el protocolo. La mayoría de las veces vemos personas hacer una versión alterna de la red para crear una moneda alterna, también llamadas Altcoins. Un ejemplo de esto es Litecoin o Dogecoin.
Consenso
El consenso en la red se logra a través de los siguientes pasos:
  • Los usuarios transmiten sus transacciones a todos los nodos en la red, de forma que eventualmente todos los nodos conocen de estas transacciones. Estas son llamadas transacciones sin confirmar. Existen en el llamado “mempool” y por ahora forman parte de la red de forma exclusiva (no están en el libro de contabilidad de la moneda, por así decirlo). Los usuarios pagan una comisión de transacción.
  • Los nodos “mineros” compiten entre sí para lograr encontrar el hash criptográfico que coincida con el bloque actual de la red. Este proceso es inherentemente difícil y es lo que agrega valor a la red ya que al ser difícil de encontrar este hash criptográfico un nodo no puede confirmar de forma maliciosa transacciones ficticias.

Es importante notar que los “mineros” (Antminer, Spondoolies, etc) NO son un minero per se, ellos tan sólo se conectan mediante el protocolo Stratum a un pool de minería, que es en realidad el nodo minero, y tratan de encontrar por medio de un proceso de fuerza bruta el hash criptográfico que coincida con el nonce actual del bloque de la red. El minero es el pool, que reparte de forma equitativa las ganancias a los trabajadores conectados.
  • Una vez que un nodo minero encuentra el hash criptográfico, el mismo arma un bloque con las transacciones que más le convengan, de acuerdo a las comisiones de transacciones otorgadas por los usuarios. Además, los nodos mineros deben agregar una transacción sin origen llamada “coinbase” que otorga un subsidio al minero por el hallazgo del bloque. El minero puede poner “cualquier” valor en esta transacción “coinbase”, pero si el monto es inválido, el bloque será rechazado por los demás nodos, de acuerdo a el protocolo.
  • Una vez armado el bloque, el nodo minero lo transmite a toda la red. Este es el momento más crítico del protocolo, ya que si el nodo minero no transmite suficientemente rápido el bloque recién hallado a los demás nodos de la red, otro nodo minero puede hallar la solución para el mismo bloque y alcanzar a mayor cantidad de nodos antes que el primero, venciéndole en la batalla del consenso, creando un bloque huérfano.
  • El proceso se repite nuevamente para el siguiente bloque.
Como puede observar el lector, el proceso de consenso es relativamente simple, sin embargo hay ciertos problemas que se han presentado en el pasado debido a la falta de coordinación entre los nodos de la red. Recientemente F2Pool y Antpool no cambiaron a la versión 3 del protocolo a tiempo, causando dos cadenas de bloques separadas de la moneda debido a la falta de consenso.

Bitcoin XT, o porqué el tamaño no importa

Bitcoin XT es la versión de la moneda y el protocolo de Gavin Andresen y Mike Hearn que permitiría en un futuro, a través del 75% o más del consenso en esta versión, ampliar el tamaño de los bloques de 1Mb a 8Mb.
Es como que si la pelea fuera en qué tipo de hoja vamos a usar para llevar el libro de contabilidad, si ¼ de carta o extra-oficio.

Como puede imaginar el lector, una vez que Bitcoin XT alcance el 75% de los nodos en la red, todos los nodos ejecutando Bitcoin Core dejarán de “entender” los bloques transmitidos por Bitcoin XT, ya que no entran dentro del parámetro de consenso del protocolo original, así como actualmente todos los bloques versión 3 no los entiende Bitcoin Core 0.9.4 o anterior.

Es importante entender que TODAS las transacciones de la moneda realizadas antes del cambio definitivo al nuevo tamaño de bloque son válidas en esta nueva versión del protocolo, lo único que está cambiando es el tamaño de los bloques NUEVOS. Todas las monedas que tengas en tu billetera son TOTALMENTE VÁLIDAS EN LA NUEVA VERSIÓN DE BLOQUES. Es tan sólo un cambio del tipo de “hoja” usada en el “libro de contabilidad”.

El aumento de los tamaños de los bloques en el protocolo, aunque parece ser una solución adecuada para aliviar el agotamiento del espacio en los bloques para la confirmación de las transacciones, es tan sólo un paliativo temporal, ya que eventualmente se llegará al tope de cantidad de transacciones por segundo y existirá exactamente el mismo problema. Es por ello que muchos han desestimado la solución Andresen-Hearn al ser la misma tan sólo un “corrimiento de la arruga”, por así decirlo.
Por otro lado, el aumento del tamaño del bloque afectará negativamente los tiempos de transmisión de bloques en la red para los nodos con poco ancho de banda (que son la mayoría), por lo cual muchos de los actores principales del mundo de Bitcoin se refieren, de forma exagerada, como el fin de la moneda si esto resultara efectivo (lo cual es evidente, sólo afectaría a ciertos nodos de minería, y no al usuario común que tan sólo utiliza la moneda para intercambiar valor).
A continuación una breve tabla que le ayudará a decidir si el cambio a Bitcoin XT le afecta o no:
Pregunta
Respuesta SI
Respuesta NO
¿Está ejecutando ud. un nodo?
Aumentará el uso de ancho de banda de 100kb/min a 800kb/min.
No le afecta el cambio.
¿Es ud. un minero solo?
Necesita un enlace de al menos unos 10mb/s para garantizar no obtener bloques huérfanos.
No le afecta el cambio.
¿Utiliza ud. una billetera SPV, Electrum o Web?
No le afecta el cambio. En las billeteras Web no le afecta si su proveedor es responsable.
Vea otra pregunta.
¿Es ud. un desarrollador de una aplicación que usa JSON-RPC para conectarse a Bitcoin Core?
Es importante que esté pendiente de cuando se realice el cambio a Bitcoin XT de forma definitiva, ya que pudiera sufrir ataques de double spending.
No le afecta el cambio.
¿Utiliza ud. Bitcoin para pagar compras en comercios y servicios online?
Bitcoin XT significará menor cantidad de comisiones por transacciones. Si no se implanta Bitcoin XT, es probable que algunas comisiones sean mayores a lo que va a pagar.
No le afecta el cambio.


Puede realizar una donación directa al autor de este artículo a la dirección Bitcoin:


17irZbqunFdRzo4KdXvQZmpCQ3qCP7pJHU
QR artículo.png

2 comentarios: