¿Cómo resolver el problema de límite de brecha de direcciones de Blockchain 20?

Actualmente ofrecemos retiros y depósitos de Bitcoin en nuestro sitio web. La API Blockchain se utiliza para manejar todas las operaciones.

El único problema es el límite de brecha de 20 direcciones de Blockchain Receive API, como se menciona aquí: http://bitcoinx.io/news/articles/blockchain-info-updates-receive-payments-api-version-to-address-edge-cases/

Ahora tenemos muchos usuarios curiosos que hacen clic en el botón de depósito de Bitcoin y se comprometen sin enviar ninguna transacción, lo que genera fácilmente hasta 20 direcciones. ¿Cuáles son algunas formas de eliminar esta limitación? Tengo pocas ideas, pero son bastante voluminosas y algunas requieren una reescritura completa del código y el reemplazo de la API Blockchain. ¿Pueden ustedes ofrecer alguna idea y/o consejo? ¿Cómo se puede resolver este problema de manera elegante y eficiente?

No creo que tenga una comprensión completa de su problema, pero ¿no podría seguir mostrando la misma dirección al usuario que desea depositar hasta que realmente deposite algo en esa dirección? Por supuesto, esto requeriría más llamadas a la API para verificar si hay transacciones que paguen a esa dirección.
También debería poder solicitar más direcciones después de usar las 20 iniciales, ¿correcto?

Respuestas (2)

Sí, la brecha es un problema con la billetera HD. Blockchain hizo una publicación de blog sobre cómo trabajar con este problema. Consulte aquí: https://blog.blockchain.com/2016/06/15/receive-payments-api-update-address-gap-limits/#more-9024

Digamos que le pagan a la primera dirección, la dirección 1: la billetera buscará entre 2 y 21 direcciones para ver si hay fondos adicionales o historial de transacciones en esas direcciones. Si no encuentra nada, dejará de buscar. Entonces, si le pagan a la dirección 22, el software de la billetera no verá los fondos porque se detuvo en la 21. Sin embargo, si le pagan a la dirección 2, el software de la billetera buscará las direcciones 3-22, verá los fondos que fueron enviado a la dirección 22, y luego busque 20 adicionales más adelante (direcciones 23 - 43).

A partir del 1 de agosto de 2016, responderemos a las solicitudes de API que lo empujarían más allá del límite de brecha de 20 direcciones con un error HTTP, y no generaremos ninguna dirección nueva para su xpub hasta que detectemos un pago que cerraría la brecha por debajo de ese límite. Esto garantiza que nunca tendrá fondos inalcanzables mediante el uso de Receive Payments API V2, pero podría provocar que no genere direcciones cuando los usuarios las soliciten.

Puede llamar a la API checkgap a través del siguiente punto final:

https://api.blockchain.info/v2/receive/checkgap?xpub= {xpub}&key={apikey}

Obtendrá una respuesta JSON que se ve así:

{ "gap": 1 }

Este valor de brecha representa la diferencia entre el índice de la dirección pagada más reciente y la dirección solicitada más recientemente. Si ese valor es 20 o más, será difícil acceder a los fondos pagados a cualquier otra dirección creada hasta que las direcciones anteriores reciban los fondos.

¿Cuál es el estado de esto ahora en mayo de 2019? ¿Hay alguna forma de reducir la brecha que invalida las direcciones no pagadas? tal vez algún tiempo de caducidad?
Me di cuenta con esta empresa blockchain.info, la mayoría de sus direcciones URL antiguas no funcionan. Como el que publicaste en esa publicación de blog. (Y tampoco está en la máquina de regreso).

Antes de que ocurrieran los nuevos límites de API, una forma adecuada de manejar los pagos de Bitcoin era

  • Solicite una dirección separada (clave pública/privada) para cada usuario
  • Almacene la nueva dirección en la cuenta del usuario y muestre la parte pública para la transacción
  • Escuche la devolución de llamada de Blockchain.info
  • Cuando llegue la devolución de llamada, verifique la dirección de quién realizó el pago, cuánto se pagó, realice la lógica comercial y solicite una nueva dirección para este usuario.

Después de que la nueva API introdujo límites en el número total de direcciones solicitadas, se volvió inútil desde mi punto de vista. Al menos no puedo ver cómo manejar los pagos de múltiples cuentas de usuario de manera "confiable" simultáneamente.

-1 por favor concéntrese en responder la pregunta en lugar de presentar una solución ahora obsoleta y quejarse de su obsolescencia.