Anuncio de Batcher de Bull Bitcoin: complemento de procesamiento por lotes de billetera en cadena, sin custodia, de código abierto para usuarios empresariales de Bitcoin de alto volumen

Un complemento de API autohospedado para Bitcoin Core sobre Cyphernode

Batcher es un complemento de automatización y procesamiento por lotes de transacciones de Bitcoin para usuarios de cyphernode (una cypherapp) diseñado para usuarios empresariales de gran volumen que realizan múltiples transacciones de Bitcoin por día.

En lugar de realizar una transacción de Bitcoin por cada pago de Bitcoin (por ejemplo, un usuario que retira Bitcoin de un intercambio), le permite programar y administrar lotes de múltiples pagos de Bitcoins enviados a Bitcoin Blockchain como una sola transacción.

Batcher fue desarrollado por Francis Pouliot y Kexkey de Satoshi Portal Inc., la compañía detrás de bullbitcoin.com y bylls.com como parte del proyecto Cyphernode, bajo licencia MIT.

Cypherapps se pueden concebir como “complementos” de cyphernode. Por lo tanto, se requiere ejecutar una instancia de Cyphernode para usar la aplicación de cifrado Batcher. En lugar de comunicarse directamente con la API de Cyphernode, los usuarios se conectarán a la API de Batcher. Batcher luego administrará cómo y cuándo Cyphernode creará transacciones de Bitcoin.

Las características principales son:

Batcher está actualmente implementado en el intercambio Bull Bitcoin.

Cualquiera puede ejecutar su propia instancia autohospedada de Batcher: es gratuita y de código abierto … ¡sin terceros!

El repositorio de software en github está aquí: https://github.com/SatoshiPortal/batcher

Los detalles técnicos del software para desarrolladores y diseñadores de productos se encuentran al final de este documento.

Discusión: una solución en cadena para escalar Bitcoin

El rendimiento de las transacciones de la red Bitcoin está limitado a 3,7 tx / s en promedio debido al límite máximo de peso del bloque. Durante el año pasado, la red puede incluir ~ 360.000 transacciones en la cadena de bloques en sus buenos días.

Este límite mantiene a Bitcoin descentralizado y conserva sus características principales: escasez, resistencia a la censura, auditabilidad y soberanía. Debido a la creciente demanda de espacio para bloques y al hecho de que los bloques se producen cada 10 minutos, los usuarios que deseen incluir sus transacciones tienen dos opciones:

Generalmente, hay cuatro cosas que podemos hacer para aliviar este problema:

4. Los pagos múltiples de Bitcoin por lotes son una sola transacción : esta es la fruta más baja. Es una solución obvia e intuitiva (por ejemplo, caben más personas en un autobús en la carretera en lugar de agregar más carriles). Sin embargo, requiere mucho trabajo construir un software que permita esto para intercambios sin custodia. La mayoría de los operadores de cambio tienen custodia y no se enfrentan a los problemas de los intercambios sin custodia que tienen estrictos requisitos de velocidad para los retiros. A otros simplemente no les importa la red Bitcoin fuera de sus intereses inmediatos a corto plazo, y están subsidiados por otros medios.

Había un nicho de mercado para una solución que automatiza todos los aspectos del procesamiento por lotes de transacciones, que es autohospedado y gratuito, conectado a Bitcoin Core (a través de Cyphernode). ¡Así que lo construimos!

Antes de pasar a las redes de segunda capa, creemos que otros intercambios deberían optimizar primero tanto como sea posible su procesamiento por lotes de transacciones. Batcher es gratuito, de código abierto y autohospedado (sus propias claves, su propio nodo). ¡Así que úsala!

¿Por qué realizar lotes? ¡Haz los cálculos!

El concepto de procesamiento por lotes de transacciones de Bitcoin empresarial es simple: en lugar de realizar una sola transacción cada vez que envía un pago a un destinatario, pone en cola estos pagos y los agrega como diferentes salidas (destinatarios) de una sola transacción de Bitcoin. Hay tres beneficios principales: menor tamaño de transacción general (espacio de bloque utilizado), menor cantidad de UTXO creadas y evitar los problemas de recuento de antepasados ​​no confirmados, que se explica a continuación.

Las matemáticas siguientes son solo un ejemplo de cuánto se podría ahorrar. Es poco probable que haya muchos servicios que realicen 2400 transacciones para usuarios por día que podrían reducirlo a una vez por hora mediante el procesamiento por lotes. ¡Pero existen!

Instalaciones:

Minimice sus UTXO de cambios

Misma matemática que la anterior. Se pasa de agregar 2400 utxos de cambio por día a 24 utxos de cambio por día. Esto hace que la gestión de la billetera activa sea mucho más fácil y menos propensa a errores.

Minimizar el tamaño de la transacción

Ahorro total

Minimizar el número de antepasados ​​

Existe un problema muy específico que la mayoría de los operadores de servicios de Bitcoin de alto volumen solo conocen.

Cuando realiza una transacción, el resultado del cambio vuelve a su billetera activa. Al crear la siguiente transacción, su billetera puede usar ese resultado de cambio no confirmado como entrada. Esa segunda transacción tendrá un antepasado no confirmado, así como un nuevo resultado de cambio no confirmado. Si la tercera transacción usa el segundo resultado de cambio no confirmado como entrada, esa transacción de sed tendrá 2 antepasados ​​no confirmados.

Una vez que haya superado las 25 transacciones no confirmadas en una cadena de transacciones, otros nodos considerarán la transacción como inválida. Tendrás que esperar a que las transacciones anteriores se incluyan en la cadena de bloques.

Existen algunos métodos para mitigar este problema o evitarlo por completo, pero es un problema que ocurrirá si está utilizando el sistema de transacciones predeterminado de Bitcoin Core sin control de monedas personalizado.

Reducir la cantidad de resultados de cambios de manera tan drástica hace que sea extremadamente improbable encontrar este problema.

Inconvenientes de privacidad

Las personas que forman parte de una transacción por lotes sabrán que los bitcoins enviados a las otras direcciones en la transacción también fueron enviados por Bull Bitcoin, y presumiblemente son clientes de Bull Bitcoin (que no lo son). Tratamos de mitigar esto usando Coinjoin en múltiples pasos de nuestros procesos. Pero si recibe un retiro por lotes, es mucho más importante que use Coinjoin. Use la billetera wasabi como su billetera receptora, una vez que tenga más de 0.1 BTC, mezcle los bitcoins con Coinjoin y luego envíelos a su almacenamiento en frío desde allí. Esto resuelve el problema de que otros usuarios de Bull Bitcoin etiqueten sus monedas como pertenecientes a otro usuario de Bull Bitcoin.

Investigación y desarrollo futuros

El siguiente paso será crear un sistema que utilice completamente la funcionalidad RBF de Bitcoin Core y el Protocolo de Bitcoin. Esto nos permitiría transmitir transacciones y reducir las tarifas, agregando más y más pagos (salidas) a una transacción ya transmitida, al igual que lo que se hace en el servidor de calendario de OpenTimestamps. Esto nos permitiría proporcionar a los usuarios finales txids de bitcoin no confirmados, lo cual es mucho más deseable que solo un mensaje diciendo que el pago se ha procesado por lotes. El inconveniente es que el txid cambiaría cada vez y los anteriores serían inválidos, lo que podría resultar muy confuso para el usuario.

Además, estamos siguiendo de cerca el desarrollo de WabiSabi, una técnica desarrollada por Wasabi Wallet que esencialmente fusionará el proceso de agrupación por lotes y unión de monedas. Una mejora potencialmente masiva.

¿Sin custodia?

¿No tiene custodia? La respuesta corta es no, la respuesta larga es un poco más complicada. Cuando configura un programa de procesamiento por lotes, todavía está en posesión física del Bitcoin que un usuario ha comprado a un servicio sin custodia como Bull Bitcoin. El tiempo entre el cual se compra el Bitcoin y se recibe el Bitcoin técnicamente podría considerarse de custodia. Pero esto es más como un servicio de envío, que lleva un poco de tiempo. En el caso de Bull Bitcoin, nuestro procesamiento por lotes será cada hora o cada vez que los retiros totales en ese momento excedan (x) Bitcoin, lo que ocurra primero. La Asociación Canadiense de Valores tiene disposiciones que se refieren específicamente a este tipo de demoras en los servicios no custodiales, reconociendo que el procesamiento por lotes no constituye un custodio de intercambio sin custodia. Los usuarios pueden optar por no participar en el lote en cualquier momento, pero deberán pagar las tarifas de la red de Bitcoin. Esto les permite obtener una seguridad más rápida de los fondos si así lo desean.

Documentación técnica

Paso 1: creación de un programa de procesamiento por lotes

Cree un programa de procesamiento por lotes a través del archivo de configuración. Puede optar por:

Edite la configuración aquí https://github.com/SatoshiPortal/batcher/blob/master/src/config/BatcherConfig.ts

BATCH_TIMEOUT_MINUTES: establezca esto como la frecuencia máxima. Si no se alcanza la cantidad de umbral, se ejecutará independientemente con esta frecuencia.

CHECK_THRESHOLD_MINUTES: frecuencia de verificación del umbral.

BATCH_THRESHOLD_AMOUNT: el umbral del lote de destino. Cuando se alcanza esta cantidad, el lote se ejecutará como una transacción de Bitcoin. Si no se alcanza, el lote se ejecutará según la configuración del tiempo de espera del lote.

BATCH_CONF_TARGET: cuando se ejecuta el lote, esta configuración determinará qué nivel de tarifa de red utilizará la billetera Bitcoin Core para los pagos. Por ejemplo, puede tener 2 lotes, uno con batch_conf_target de 6 para retiros exprés y uno de batch_conf_target de 100 para transacciones no urgentes.

Flujo de trabajo de la API

Agregar un pago de Bitcoin a un lote a través de API

Respuesta de la API después de agregar un pago a un lote

Notificación de webhook enviada a todas las URL de devolución de llamada enviadas con pagos a un lote

Información sobre el lote como respuesta de la API

Conclusión