Por Robert Hazlitt  

Aaron van Wirdum explica el funcionamiento de la sustitución-por-cuotas, que permite la sustitución de una transacción ya emitida mediante la transmisión de otra transacción con una tasa más elevada. 


A partir de este fin de semana, GreenAddress se convirtió en la primera cartera Bitcoin en incluir una opción de sustitución-por-cuota (replace-by-fee). Con ella, los usuarios pueden aumentar las tasas en sus transacciones haciendo clic a un botón; una característica bien recibida por algunos, ya que aumenta la probabilidad de que un minero incluya una transacción en un bloque. Esto puede ayudar a que las transacciones se “despeguen” en el caso de una carga pesada de transacciones, y beneficia la dinámica del mercado de cuotas. Otros disputan la característica: críticos temen que el sistema pueda perjudicar la fiabilidad de las transacciones sin confirmar, ya que los pagos pueden, en algunos casos, ser revertidos.
Para probar la función, GreenAddress activó una vista previa de la opción en la cartera GreenAddress  del usuario hace varias semanas. Esto, a su vez, le permite a la persona interesada probar qué partes del ecosistema Bitcoin están listas para el sistema de sustitución-por-tarifa y qué partes no lo están.
Los siguientes resultados se basan en la experimentación ad hoc desde la propia perspectiva como usuario que llevó a cabo Aaron van Wirdum (de Bitcoin Magazine), no en un análisis oficial realizado con precisión científica.  Por eso también está escrito en primera persona.

GreenAddress desde la perspectiva del remitente

Desde la perspectiva del emisor, la primera prueba fue, por supuesto, en la propia GreenAddress (la prueba la hizo en la versión Chrome extendida de su cartera).
Desde este fin de semana, la opción sustituir-por-cuota en GreenAddress está activada por defecto (los usuarios que no deseen utilizar la función deben desactivarla en el panel de “Configuración”). Cuando está encendida, cada transacción enviada desde la cartera incluye un distintivo de sustitución-por-cuota. De esta manera, los nodos de la red y los mineros saben que es elegible para ser reemplazada por una transacción conflictiva que incluya una tarifa más alta.
Después de enviar mi primera transacción de sustitución-por-cuota, fui redirigido automáticamente a la pantalla de “Transacciones”, donde se muestran los últimos movimientos de la cartera. Y, debajo de la transacción de reemplazo (aún no confirmada), una nueva pestaña había aparecido: “bump fee“.
Mientras que la versión opt-in de sustitución-por-cuota que se incluye en Bitcoin Core permite el reemplazo de cualquier transacción no confirmada (aunque esto signifique que operaciones no confirmadas puedan ser “canceladas”), los usuarios GreenAddress sólo pueden volver a enviar bitcoins a partir de las mismas fuentes y de las mismas salidas, pero con una tasa más elevada. Sólo se permite a los usuarios “impulsar” una operación para aumentar la probabilidad de que un minero la incluya en un bloque.
Al hacer clic en la pestaña “bump fee” se abre un mini-menú. En la parte superior de éste, el texto muestra la rapidez con la que la transacción espera ser confirmada. En mi caso, esperaba que fuera incluida en el bloque siguiente. Sin embargo, el menú me permitió impulsar con la cuota: 1,5 veces, 2 veces o 3 veces.
Sin embargo, y más importante, si una transacción no espera ser incluida en el primer bloque disponible porque la tasa es demasiado baja, GreenAddress ofrece una opción diferente. En ese caso, el mini-menú ofrece a los usuarios la opción de incluir una cuota suficientemente grande para que sea anexada en los próximos dos, tres o seis bloques.
Después de haber incrementado la cuota, un nuevo ícono aparece debajo de la transacción, que dice “actualiza”, acompañado de un botón para mostrar la identificación de la antigua transacción. Mientras tanto, el botón de “bump fee” sigue ahí, lo que significa que se podría aumentar la cuota una vez más.
En resumen, es un proceso muy sencillo y fácil de usar.

Lo que las piscinas [pools] están haciendo

El software de cartera en sí mismo no es suficiente para reemplazar las transacciones (o “bump fees”). Debido a que la opción de sustitución-por-cuota está activa en la red Bitcoin, realmente depende de los mineros.
Una serie de transacciones de prueba reveló que la mayoría de los mineros actualmente no aplican ninguna política de sustitución-por-cuota. Todas las grandes piscinas chinas –AntPool, F2Pool, BTCC y BW.com– ignoraron por completo las transacciones con aumento de tarifas, al igual que KnCMiner. Esto añade hasta un 75% más de poder de hash en la red.
Otras piscinas aplicaron una política de sustitución-por-cuota, presumiblemente la versión opt-in. Estos incluyen BitFury, Slush Pool, BitClub y CKPool, lo que equivale a cerca del 20% de toda la energía de hash (el otro 5% del poder de hash en la red es controlado por las piscinas o mineros que representan menos del 1% de la energía de hash, lo que no ocurrió para minar los bloques durante mis pruebas).
Entonces, ¿qué significa esto?
Aunque el 20% puede parecer bajo, en realidad no es así teniendo en cuenta el objetivo principal de la cuota por sustitución: que es “impulsar” una cuota para asegurar que una transacción es minada.
Por supuesto, con sólo el 20% del poder de hash aplicado a una política de sustitución-por-tarifa, sólo hay una probabilidad del 20% de que el siguiente minero recoja la transacción impulsada. Pero también hay una probabilidad de ¾ que la transacción impulsada sea incluida en un bloque dentro de una hora. Y es casi seguro que se incluirá dentro de varias horas.
No es necesario decir que esto es una mejora significativa en comparación con las transacciones que duran días sin confirmar, como ha sido el caso durante algunas “pruebas de tensión” en la red.
Los usuarios que quieran (ab)usar de la sustitución por cuota para revertir una transacción no confirmada, sólo tienen una probabilidad del 20% de tener éxito. Al menos el 75% de las veces tendrán que pagar a su “víctima” a pesar de que ellos no quieran (en primer lugar, revertir una transacción no es posible con GreenAddress).

Seguridad de carteras

Los usuarios que maliciosamente revierten las transacciones no confirmadas nos llevan al siguiente punto.
Para contrarrestar estos riesgos, el software de la cartera puede advertir a los usuarios en el extremo receptor de una transacción si esta se encuentra en posición de ser potencialmente reemplazada.
De todas las carteras analizadas, sólo Mycelium (para Android) y -de hecho- GreenAddress (Chrome) muestran una identificación para tales casos. Ambas carteras muestran claramente una transacción de reemplazo por cuota habilitada como tal, dando a los usuarios la opción de no aceptar una operación de este tipo hasta que se confirme, si así lo desean. (AirBitz aparentemente también lo hace, pero no tengo el sistema operativo adecuado para probar esto por mí mismo.)
Curiosamente, Bitcoin Core no hace señalamientos de este tipo para las transacciones de sustitución-por-cuotas entrantes, y como tales Bitcoin Classic, Bitcoin XT y Bitcoin Unlimited tampoco. Más bien, estas carteras simplemente muestran tanto la operación original y la operación de reemplazo como no confirmadas, hasta que una de estas operaciones entra en un bloque, momento en el que se muestra la transacción confirmada y la transacción en conflicto, rechazada.
Blockchain (web), Bither (iOS 7), Blocktrail (iOS 7 y Web), Breadwallet (iOS 7), Coinbase (web), Copay (iOS 7) y Electrum (desktop) tampoco identifican estas transacciones. Blocktrail, Bither y Breadwallet simplemente muestran tanto la operación original como la incrementada como dos transacciones entrantes diferentes. Mientras, Coinbase y Copay ignoran la última. En el caso de Electrum, dependerá del servidor al que se esté conectado, pero en la mayoría de los casos solo muestra la transacción más reciente
Cuando se les preguntó por qué su software no hace identificaciones para transacciones de sustitución-por-cuotas, los desarrolladores tanto de Electrum como de Bitcoin Core explicaron que las transacciones no confirmadas no son confiables de todas formas y que un sistema de marcación podría dar a los usuarios una falsa sensación de seguridad ()
()Nota del editor: Poco antes de la publicación de la nota original de Bitcoin Magazine, los desarrolladores Bitcoin Core señalaron que esto podría añadirse pronto, después de todo.

Aunque no lo he podido poner a prueba, Bitcoin Wallet (Android) aplica otra estrategia: no muestra una marcación de sustitución-por-cuota a menos que haya al menos una confirmación.
El desarrollador de Bitcoin Wallet, Andreas Schildbach, me dijo que añadir este sistema al software sería difícil, y que él cree que esta es la solución más responsable por ahora)

Procesadores de pago

He probado los dos grandes procesadores de pagos: BitPay y Coinbase. En esta ocasión, en realidad no traté de reemplazar (“impulsar”) mi transacción. Sólo quería ver cómo se manejaría la marcación.
Tal como era de esperar -el CEO Stephen Pair apoya la sustitución por cuota- BitPay pareció manejar los pagos de reemplazo por cuotas sin ningún problema. Tras haberle pagado a un repartidor de pizzas a través del procesador de pagos más grande de Bitcoin, la orden fue confirmada inmediatamente en la pantalla. Como tal, no sentí que estaba esperando demasiado tiempo para que mi transacción siguiese su curso.
Sin embargo, sí pasaron varios minutos -aparentemente hasta que se encontró un bloque- hasta que yo también recibí un correo electrónico de confirmación. Presumiblemente, esto se debe a que BitPay espera “detrás de las pantallas” hasta que una transacción se incluya en un bloque, para asegurarse de que no puedan ser defraudados.
Aunque funcionaba bien para mí, me dejó preguntándome qué pasaría si la operación tomase significativamente más para confirmar. Si eso hubiese significado que tendría que esperar más tiempo por mi pizza, una advertencia podría haber estado a lugar…
Coinbase no manejó bien mi primera transacción de reemplazo: mi pago a Reddit Gold, hecho hace varias semanas, no fue reconocido en absoluto. No antes de que se incluyese en un bloque, y no después de que se incluyese en un bloque. Después de que se venciese dos veces el tiempo de espera en la página de pagos, la orden fue finalmente cancelada. (Tuve que enviar un correo electrónico a Reddit para recuperar mi oro).
Sin embargo, un segundo y más reciente intento sugiere que Coinbase ha mejorado su servicio desde entonces: mi donación a Wikimedia fue confirmada al instante. Por otra parte, un mensaje apareció diciéndome que habría esperar una confirmación debido a una baja tarifa. Razón equivocada, pero buen servicio.

Exploradores de bloques

Finalmente, hice una ronda rápida para ver cómo los diferentes exploradores de bloques manejan las transacciones de sustitución-por-cuotas.
En el primer explorador de bloques que probé, Blocktrail, se contemplan este tipo de operaciones. Fue el único explorador de bloques que no sólo señalaba cuando una transacción era elegible para doble gasto, sino que también advertía a los usuarios si se detectaba una transacción conflictiva. Y, una vez que la transacción en conflicto se incluye en un bloque, es claro que la operación que fue reemplazada era de doble gasto, y no confirmará.
Blockchain.info no marca las transacciones reemplazables, y en su lugar sólo muestra las transacciones como sin confirmar. Es sólo después de que se haya realizado una transacción conflictiva que Blockchain.info muestra una nota de advertencia a los usuarios de un posible doble gasto, aunque todavía no hay mención de una sustitución-por-cuota. Y, después de que una transacción en conflicto es incluida en un bloque, Blockchain.info no emite ningún aviso adicional; parece como si todavía hubiese una pequeña posibilidad de que la transacción original pudiese ser confirmada.
En cuanto a otros exploradores de bloques…
Al igual que Blockchain.info, Blockcypher no muestra algún distintivo de sustitución-por-cuota, pero sí muestra una advertencia de doble gasto después de que se envió una segunda transacción. El explorador de bloques de código abierto de BitPay, insight.bitpay.com, bitcoinchain.com y chain.so muestran sólo la primera transacción inicial, sin distintivo de sustitución-por-cuota.

Fuente: BitcoinMagazine
Traductor: Robert Hazlitt

ADVERTENCIA: Este es un artículo de carácter informativo. DiarioBitcoin es un medio de comunicación, no promociona, respalda ni recomienda ninguna inversión en particular. Vale señalar que las inversiones en criptoactivos no están reguladas en algunos países. Pueden no ser apropiadas para inversores minoristas, pues se podría perder el monto total invertido. Consulte las leyes de su país antes de invertir.