// TECNOLOGÍA

Finalidad: ¿cuándo termina de verdad una transacción?

6 min de lecturanijitech

«Confirmada» e «irreversible» no son lo mismo. Para un sistema que cobra pagos, esa diferencia decide cuántos segundos hay que esperar.

Artículo completo

La primera pregunta al construir un sistema que cobra en una cadena de bloques suele ser: ¿cuánto tarda una transacción en confirmarse? Esa no es la pregunta correcta. La correcta es cuánto tarda en volverse irreversible.

La distancia entre ambas es la diferencia entre cobrar un café y cobrar un coche.

Confirmación no es finalidad

Una transacción que entra en un bloque es una confirmación. Pero en algunas cadenas ese bloque puede perder validez si aparece en la red una cadena más larga, y las transacciones que contiene se revierten. La primera confirmación, por tanto, no es una garantía sino un enunciado de probabilidad.

A medida que pasa el tiempo y se apilan bloques encima, la probabilidad de una reversión se reduce, pero en teoría nunca llega a cero. A esto se le llama finalidad probabilística: «espere lo suficiente y será suficientemente seguro».

Qué cambia la finalidad determinista

En algunos diseños de consenso un bloque es final en el momento en que lo aprueba una mayoría de validadores, y no puede revertirse. Esperar no sirve de nada: o la transacción es final o nunca ocurrió. La zona gris desaparece.

Por qué importa tanto del lado del pago

Si entrega un bien físico o desbloquea un servicio de inmediato, ha aceptado un pago que podría revertirse. En el mundo tradicional de las tarjetas a esto se le llama contracargo y los comercios llevan años gestionando el riesgo. En cadena, el riesgo depende del modelo de finalidad de la red que eligió.

Preguntas para el diseño

  • ¿La finalidad de esta red es determinista o probabilística?
  • Si es determinista, ¿cuál es el tiempo típico: segundos o minutos?
  • Si es probabilística, ¿cuántas confirmaciones esperamos a qué importe?
  • ¿Qué le mostramos al usuario mientras espera?

Lo último pertenece al lado de producto y es lo que más se salta. Una pantalla que dice «procesando» sin decirle al usuario cuánto va a esperar es una mala experiencia por corta que sea la espera real.

La compatibilidad es un eje aparte

El modelo de finalidad y el entorno de desarrollo son dos elecciones independientes. Una red puede ofrecer finalidad rápida y determinista y ser a la vez compatible con EVM, en cuyo caso los contratos Solidity, las carteras y las herramientas de desarrollo existentes funcionan tal cual.

En la práctica esto desacopla la decisión arquitectónica del equipo: usted elige el modelo de finalidad que exige su infraestructura y el equipo sigue trabajando con las herramientas que conoce.

En resumen

Tres frases

  • Confirmación significa «entró en un bloque»; finalidad significa «no puede revertirse»
  • Con finalidad probabilística, el importe decide el tiempo de espera
  • Con finalidad determinista esa decisión desaparece: la lógica de producto se simplifica

Productos mencionados en este artículo

Del glosario: Finalidad · Compatibilidad EVM

← Todos los artículos