¿Acepta pagos de Bitcoin sin la cadena de bloques completa o las API de terceros?

Quiero hacer un programa/secuencia de comandos básico que utilice pagos de Bitcoin, pero no tengo el espacio de almacenamiento para sincronizar con toda la cadena de bloques, y no quiero depender de una API de terceros como las que ofrece la cadena de bloques. .info o block.io.

Básicamente, necesito una billetera con estas tres propiedades:

  • Ligero (es decir, no requiere la cadena de bloques completa)
  • Tiene una CLI para generar y devolver una dirección de recepción a pedido
  • Tiene un CLI para obtener el saldo total de la billetera

Estoy vagamente familiarizado con clientes ligeros como Electrum, MultiBity MultiBit HD, y sé que Electrum incluso tiene una CLI, pero no parece haber nada en su documentación sobre la generación de nuevas direcciones:

https://docs.electrum.org/en/latest/cmdline.html

He leído que las billeteras Electrum funcionan con una cola de direcciones y generan nuevas automáticamente después de que se han utilizado, por lo que incluso si pudiera obtener una lista de direcciones asociadas con la billetera, podría obtener algo como la funcionalidad que quiero. Pero, de nuevo, la CLI parece realmente limitada.

En general, estoy frustrado. Seguramente hay una manera de hacer lo que estoy tratando de hacer, y si no hay una solución obvia, ¿por qué no? Parece contradictorio que deba usar servicios centralizados y API para la funcionalidad básica de la billetera solo porque no puedo permitirme alquilar un servidor con más de 90 GB de espacio para almacenar la cadena de bloques.

Desde Bitcoin Core 0.12, puede ejecutarse en modo de poda, donde aún sincroniza, verifica completamente y descarga todas las transacciones, pero solo los últimos bloques se mantienen en el disco. Esto le permite ejecutar un nodo de validación completa con todas las funciones de CLI (excepto volver a escanear) con ~2 GB de espacio en disco.
@PieterWuille excelente sugerencia! ¿Podrías publicar eso como respuesta?

Respuestas (2)

Si no desea ejecutar un nodo o usar API de terceros, puede usar una biblioteca, ya que solo desea aceptar pagos.

Use una clave pública extendida de una de sus billeteras y genere nuevas direcciones desde el HD xpub usando una biblioteca. Cuando un usuario paga, aparecerá en la billetera de su teléfono/PC.

Por ejemplo, con la biblioteca Bitcore sería:

var bitcore = require("bitcore-lib");

var pub = new bitcore.HDPublicKey('xpubMyHDPublicKey');
var derivedHdPublicKey = pub.derive('m/0/1'); 
//increment up the keychain m/0/2, m/0/3, etc each order
var derivedPublicKey = derivedHdPublicKey.publicKey;
var address = new bitcore.Address(derivedPublicKey);
console.log(address);

Luego, solo realice un seguimiento de los pedidos y las direcciones en la base de datos de su servidor.

¡Eres tu! Compré una copia de su libro "Creación de sitios web de Bitcoin" durante las vacaciones de invierno, y hoy estaba viendo algunos de sus videos en YouTube de su serie de tutoriales de Bitcoin JSON-RPC. Estaba planeando usar una configuración similar para este proyecto, pero esta solución parece aún más simple. Gracias por la respuesta, y más que eso, gracias por todo su interés y trabajo para hacer que Bitcoin sea más accesible para el desarrollador promedio. ¡Tú rockero!
Además, ¿conoce alguna biblioteca similar para la ejecución del lado del servidor (es decir, sin JavaScript?)
Gracias por los comentarios positivos Rick! El bitcore lib está del lado del servidor con nodejs, otro sería bitcoinjs-lib ( npmjs.com/package/bitcoinjs-lib ). Escuché que bit-wasp para PHP también funcionará, pero no lo he probado yo mismo.
Entonces, esta puede ser una pregunta novata, pero ¿cómo encuentro mi clave pública extendida de una billetera como Bitcoin Core?
Me gusta esto, pero ¿hay alguna manera de firmar una transacción y transmitirla a la red sin ejecutar mi propio nodo?

El Mycelium Gear es probablemente la forma más práctica de hacerlo. Si bien técnicamente es un tercero, el dinero no se enruta a través de ellos y, por lo tanto, no hay KYC/AML, censura ni comisión. Mycelium Gear simplemente le notifica sobre los pagos entrantes en función de su billetera HD xpubkey.

Alternativamente, puede configurar su software de código abierto usted mismo.