domingo, 19 de agosto de 2018

¿Qué son las confirmaciones?

Cuando se realiza un envío de bitcoins, esta transacción se difunde desde la billetera a la red Bitcoin para ser procesada y verificada por todas los nodos que forman la red. Una vez validada esta transacción (se verifica que la billetera tiene suficientes bitcoins), los mineros incluyen la transacción, junto con otras, en un bloque. A esto se le llama confirmación de transacción. Cuando esta transacción es incluida en un bloque de la cadena de bloques (blockchain) se dice que esta transacción tiene una confirmación, cuando es incluida en el siguiente bloque se dice que tiene 2 confirmaciones y así sucesivamente.



Una confirmación significa que hay un consenso en la red en que los bitcoins recibidos no han sido enviados a alguien más y son ahora de tu propiedad. Una vez que tu transacción ha sido incluida en un bloque, esta irá siendo "enterrada" con más confirmaciones por los siguientes bloques que van añadiéndose a la cadena, lo que hará consolidarse este consenso y disminuir el riesgo de una revocar la transacción (cada confirmación reduce exponencialmente el riesgo de que la transacción sea revertida). Cada usuario es libre de determinar en qué punto se puede considerar una transacción como confirmada, pero normalmente 6 confirmaciones es considerado un número de confirmaciones segura.

La cantidad exacta de seis confirmaciones es un límite arbitrario sobre el cual se estima que la probabilidad de que un atacante pueda obtener más del 10% del hash rate de la red para falsificar una transacción se vuelve insignificante (menos del 0.1%).

Aunque el estándar es de seis confirmaciones, los comerciantes e intercambios que acepten bitcoin a cambio de sus productos y servicios deberán estipular la cantidad de confirmaciones que requieren para aceptar una transacción como pago.

Transacciones sin confirmar

Las transacciones sin confirmar significa que la transacción no se ha incluido en un bloque, y por tanto, no se ha completado. Las razones comunes por las transacciones no confirmadas son:
  • Acabas de realizar una transferencia. La red Bitcoin necesita al menos 10 minutos, como mínimo, para incluir la transaccion en un bloque (el protocolo de la red Bitcoin está diseñado para generar o minar un bloque cada 10 minutos).
  • La comisión blockchain es demasiado baja o es nula. Cuanto más baja sea la comisión blockchain, más baja será la prioridad de la transacción en la red Bitcoin y, por tanto, la confirmación tardará más.
  • La red Bitcoin está congestionada. Debido a su capacidad limitada, la red no puede procesar suficientes transacciones de manera rápida, especialmente durante periodos de alto número de transacciones.
Si tu transacción no está confirmada, normalmente sólo tienes que esperar. La mayoría de las transacciones se completarán dentro de un día o dos (o más si el blockchain está sobrecargado o la comisión es baja o inexistente). Hay que tener en cuenta que, además del limitado número de bloques que se generan (uno cada 10 minutos de promedio), cada bloque solo puede contener un número finito de transacciones.

Puedes ver el número de transacciones sin confirmar en el siguiente enlace.


¿Qué es la MemmPool?

Cuando envías Bitcoins a alguien, la transacción pasa a través de diferentes nodos corriendo el protocolo Bitcoin alrededor del mundo que aseguran que la transacción es válida. Una vez que la transacción es verificada es cuando pasa a un estado de “espera” dentro de la Mempool, es decir en una clase de estado “limbo".

Está básicamente esperando para ser recogida por un minero Bitcoin y agregada dentro del bloque de transacciones del Blockchain. Hasta que es recogida es considerada como una “transacción sin confirmar” o una “transacción pendiente”.

Todos los nodos tienen una capacidad de RAM diferente para almacenar transacciones no confirmadas. Como resultado, cada nodo tiene su propia interpretación de las transacciones pendientes y esto explica la variedad de tamaños de Mempool y recuentos de transacciones que se encuentran en diferentes fuentes.

Pero, ¿cómo evitan los nodos el bloqueo debido a la sobrecarga del tamaño de Mempool? Si el tamaño de Mempool se acerca demasiado a la capacidad de RAM, el nodo establece un umbral de tarifa mínima. Las transacciones con tarifas por kB inferiores a este límite se eliminan inmediatamente de Mempool y solo las nuevas transacciones con una tarifa por kB lo suficientemente grande tienen permitido el acceso a Mempool.

Básicamente, el Mempool es el cuello de botella de la red de Bitcoin. Cuanto más rápido se eliminen las transacciones de la Blockchain , mejor será la experiencia de los usuarios. Si la tasa de minería de nuevos bloques de transacciones es menor que la tasa de nuevas transacciones que llegan al Mempool, se producirá un "embotellamiento" y las transacciones pueden demorar mucho tiempo en confirmarse (dependiendo de su tamaño y tarifa adjunta).

En http://bitcointicker.co/networkstats/ podemos ver de forma gráfica el estado de la Mempol de un nodo:


El tamaño de Mempool se muestra a la derecha. Si, por ejemplo, el tamaño de Mempool es de alrededor de 3MB, una transacción tomará 3 bloques en promedio para confirmarse ya que cada bloque tiene un tamaño de 1 MB.

¿Qué le pasa a las transacciones que nunca son confirmadas?

Básicamente las transacciones se quedan en el “limbo” (el mempool) hasta que son incluidas en un bloque. Sin embargo, si una transacción queda dentro del mempool durante mucho tiempo, los diferentes nodos Bitcoin podrían simplemente desecharla de su sistema. En este caso la transacción será cancelada.

Algunos monederos tienen la capacidad de retransmitir una transacción expirada por lo que podrá permanecer en este estado durante mucho tiempo hasta que algún minero decida incluirla en un bloque.

Aceleradores de transacciones

Existen portales que al parecer logran acelerar una transacción que se ha quedado en el limbo (Mempool). Buscando por la web he encontrado tres:
Nota: 
He de indicar que no he utilizado ninguno de estos tres portales por lo que no puedo describir mi experiencia con ellos