coinbase

Por Brock Miller.- A principios de este año, Coinbase lanzó el procesamiento por lotes de transacciones de Bitcoin (Bitcoin transaction batching.). 

Desde el lanzamiento, hemos agrupado el 100% de las solicitudes de envío de clientes de Coinbase Consumer y Coinbase Pro para Bitcoin. Durante este tiempo, hemos logrado un ahorro del 75,2% en tarifas de transacción y hemos transferido todos esos ahorros a nuestros clientes. 

También hemos reducido nuestro recuento de transacciones diarias en un 95%. En esta publicación de blog, veremos cómo funciona el procesamiento por lotes de transacciones y veremos el impacto en detalle.

El procesamiento por lotes de transacciones funciona agrupando muchas solicitudes de envío de clientes en una sola transacción en lugar de crear una nueva transacción para cada solicitud. Al hacerlo, podemos amortizar el costo general de una transacción a través de múltiples solicitudes de envío, lo que a su vez reduce la tarifa de transacción efectiva por solicitud. 

Esto tiene el beneficio adicional de reducir también la carga en la red general de Bitcoin, ya que cada bloque nuevo tiene un espacio limitado disponible y el procesamiento por lotes nos permite colocar más pagos en un espacio más pequeño.

Un ejemplo simplificado

Echemos un vistazo a un ejemplo sencillo. Una transacción de Bitcoin tiene 3 componentes principales:

  • Entradas: las monedas que se gastan como parte de la transacción.
  • Productos: los pagos que se están realizando, incluida la dirección y el monto del destinatario.
  • Encabezados: campos estándar incluidos en cada transacción, como información de versión.

Las tarifas de transacción en Bitcoin son en realidad una función del tamaño de byte virtual (o unidades de peso) de la transacción sin procesar, donde los tamaños más grandes generalmente requieren que se paguen tarifas más altas (según la tarifa actual de la red). 

Para el propósito de este ejemplo, solo trataremos los bytes virtuales (vbytes) como bytes estándar (consulte aquí para obtener más información sobre los bytes virtuales y los cambios que introdujo SegWit ).

Cada uno de los tres componentes anteriores tiene un tamaño específico y, por lo tanto, contribuye al tamaño general de la transacción a su manera. Suponiendo una transacción SegWit completamente nativa, los tres componentes tienen los siguientes tamaños aproximados:

  • 67 vbytes por entrada
  • 31 vbytes por salida
  • 11 vbytes para encabezados

Con este entendimiento, comparemos dos escenarios, uno con procesamiento por lotes y otro sin él. (Tenga en cuenta que para cada escenario, para calcular la tarifa total, asumiremos una tarifa de red de 10 satoshis por vbyte).

Escenario 1: sin lotes

En este escenario, tenemos tres transacciones separadas. Cada transacción tiene una única entrada y dos salidas. La primera salida corresponde a la solicitud de envío específica del cliente (una dirección y una cantidad), mientras que la segunda salida envía cualquier cambio en exceso a Coinbase. 

(Tenga en cuenta que se requiere el cambio de salida ya que la cantidad de entrada que se gasta no es la misma que la cantidad de salida que se envía y, por lo general, quedan algunos fondos).

coinbase

Cada transacción anterior tiene un tamaño total de 140 vbytes. Usando una tarifa de 10 satoshis por vbyte, podemos calcular que cada uno de ellos tiene una tarifa de transacción de 1400 satoshis.

Escenario 2: procesamiento por lotes

En este escenario, agrupamos las tres solicitudes en una sola transacción. Esta transacción todavía tendrá una entrada, sin embargo, debido a que estamos agrupando solicitudes por lotes, ahora tenemos cuatro salidas. Las primeras tres salidas corresponden a cada una de las solicitudes de envío de nuestros clientes, mientras que la última salida es la salida de cambio de los fondos restantes.

Imagen para publicación

En el ejemplo de transacción por lotes anterior, podemos ver que tenemos un tamaño total de 202 vbytes por una tarifa total de 2020 satoshis. ¡Esto equivale a una tarifa efectiva de 673 satoshis por solicitud de envío, o una reducción del 52% en las tarifas! Este ahorro de tarifas se vuelve aún mayor cuanto más pagos agrupamos.

Reflexión 1: Reducción del 75,2% en las tarifas de transacción del consumidor

Como se indicó anteriormente, desde el lanzamiento el 12 de marzo, hemos acumulado el 100% de los retiros de clientes de Consumer y Pro. Durante este período de tiempo, hemos logrado una reducción del 75,2% en las tarifas de transacción ahorradas y hemos transferido el 100% de esos ahorros directamente al cliente.

Imagen para publicación

En el cuadro a continuación, puede ver la estimación de la tarifa de transacción de Bitcoin (en satoshis) proporcionada a Coinbase Consumer para una sola solicitud de envío durante los últimos tres meses. Como puede ver, las tarifas no solo se reducen significativamente, sino que también son menos volátiles durante los períodos de alta actividad, como los aumentos de tarifas observados a mediados de mayo.

Imagen para publicación

Reflexión 2: reducción del 95% en las transacciones generadas por día

Otra cosa que hemos visto del procesamiento por lotes es una tremenda disminución en el recuento general de transacciones que generamos por día. 

En lugar de generar n transacciones para n solicitudes de envío, ahora generamos efectivamente un número constante c de transacciones por día para n solicitudes de envío, donde c se basa en la frecuencia con la que decidimos agrupar los pagos (hoy esto sucede al menos una vez por minuto) . 

El siguiente gráfico muestra la magnitud de este cambio al mostrar transacciones únicas que se transmiten por día en las semanas cercanas al momento del lanzamiento.

Imagen para publicación

Esto es una ganancia para nosotros internamente, ya que significa que nuestros servicios están haciendo menos trabajo para lograr el mismo resultado final. Este cambio también ha tenido un impacto positivo en la red general de Bitcoin. 

Al emitir la misma cantidad de solicitudes de envío en un espacio más pequeño (menos transacciones y menos espacio de bloque necesario), podemos ser más eficientes y nuestro impacto general en la red se reduce. Las estimaciones conservadoras sugieren que esto ha contribuido a una reducción del 10 al 15% en el número de transacciones confirmadas por día en toda la red. 

Esta reducción del recuento de transacciones es beneficiosa para la red en su conjunto y debería ayudar a reducir las tarifas para todos los usuarios de Bitcoin.

Imagen para publicación
Fuente: Coinmetrics

Reflexión 3: 78% de reducción de las alertas internas

Por último, también hemos visto ganancias significativas en términos de operaciones internas. Como ingenieros que trabajan en servicios críticos para el negocio, estamos monitoreando constantemente nuestros sistemas y alertando a los ingenieros cuando los servicios comienzan a operar fuera de los umbrales normales. 

Una métrica clave aquí para Bitcoin es el tiempo que tarda una solicitud de envío en procesarse y enviarse a la red como una transacción. Puede pensar en esto como el retraso entre hacer clic en el botón Enviar ahora en Coinbase Consumer y el momento en que realmente ve su transacción en la red.

Antes del procesamiento por lotes, este retraso a veces aumentaba debido a los niveles elevados de actividad en la red de Bitcoin, así como a retrasos ocasionales entre los bloques que los mineros minan. Debido a la forma en que funcionan las billeteras activas, casi siempre estamos esperando el resultado del cambio de una transacción anterior para que se confirme y podamos usar esos fondos para cumplir con otra solicitud de envío. 

Cuando estábamos creando una transacción separada para cada solicitud, teníamos muchos más de estos cambios de salida pendientes en un momento dado. En ocasiones, este problema puede provocar retrasos en las solicitudes de envío posteriores. Ahora que estamos creando un 95% menos de transacciones, tenemos menos salidas de cambio para esperar y este problema casi ha desaparecido por completo.

El cuadro a continuación muestra las alertas internas de Bitcoin relacionadas para nuestro equipo de guardia durante los últimos 6 meses para mostrar cuán impactante ha sido para nosotros. En este tiempo, hemos visto una reducción de ~ 78% en la cantidad de alertas relacionadas con el procesamiento de solicitudes de Bitcoin y los retrasos.

Imagen para publicación

Conclusión

El procesamiento por lotes de transacciones es una característica increíblemente exitosa que beneficia a los clientes de Coinbase, las operaciones internas y toda la red de Bitcoin. Si le gusta trabajar en un entorno divertido y de alta energía y desea trabajar en desafíos de escala como este, consulte nuestras vacantes en nuestra página de carreras . Nos encantaría saber de ti.


Este sitio web contiene enlaces a sitios web de terceros u otro contenido solo con fines informativos («Sitios de terceros»). Los Sitios de terceros no están bajo el control de Coinbase, Inc. y sus afiliados («Coinbase»), asi como de territorioblockchain y Coinbase no es responsable del contenido de ningún Sitio de terceros, incluidos, entre otros, cualquier enlace contenido en un Tercero, Sitio de terceros, o cualquier cambio o actualización de un Sitio de terceros, al igual que territorioblockchain

Coinbase y territorioblockchain no son responsables de la transmisión por Internet o cualquier otra forma de transmisión recibida de cualquier sitio de terceros. Coinbase y territorioblockchain le proporciona estos enlaces solo para su conveniencia, y la inclusión de cualquier enlace no implica respaldo, aprobación o recomendación por parte de Coinbase o de territorioblockchain del sitio o asociación con sus operadores.

Todas las imágenes proporcionadas en este documento son de Coinbase

coinbase
coinbase