Pautas para crear una aplicación web impulsada por PHP para canjear cupones de Bitcoin

Me gustaría emitir cupones de Bitcoin con un valor en USD determinado. La aplicación web de canje debe aceptar el código pin del cupón y una dirección de Bitcoin y transferir bitcoins a esa dirección de acuerdo con el tipo de cambio actual. Estoy buscando una solución rápida/simple, preferiblemente con PHP. Buscando pautas de diseño y algún consejo que me ayude a comenzar.

[editar] Para ser más específicos:

  1. ¿Hay un código de muestra para enviar monedas usando bitcoind/PHP?
  2. ¿Existe una API de terceros que proporcione dicha funcionalidad (en lugar de usar bitcoind)?
  3. ¿MtGox y Tradehill tienen API para transferencias?
  4. ¿Es obligatorio el captcha?

[finalizar edición]

Le sugiero que no intente mantener un demonio de bitcoin usted mismo, sino que trabaje con algo como Overlay Network / Stratum - bitcointalk.org/index.php?topic=55842.0
4. nunca NUNCA captcha. No proporcionan ningún beneficio, a cambio de enfurecer a los usuarios. No. Alguna vez.

Respuestas (2)

Modifiqué el código de intercambio de código abierto de Intersango para que pueda emitir y aceptar cupones de Bitcoin. Puedes ver el código para ver cómo lo hice. Mi código no almacena el código de cupón completo en la base de datos, por lo que incluso si un pirata informático obtiene acceso de lectura a la base de datos, no puede canjear los cupones no reclamados.

Para responder a sus preguntas particulares:

1) ¿Hay un código de muestra para enviar monedas usando bitcoind/PHP?

Sí. Aquí hay un código que lo hace de una manera muy simple.

2) ¿Existe una API de terceros que proporcione dicha funcionalidad (en lugar de usar bitcoind)?

No sé. Quizás alguno de estos tenga lo que buscas.

3) ¿MtGox y Tradehill tienen API para transferencias?

Tradehill ya no opera. MtGox lo hace .

4) ¿Es obligatorio el captcha?

No. Son molestos. Haga que el código que verifica los cupones tarde mucho tiempo en devolver un resultado y solo permita que los usuarios verifiquen uno a la vez. Entonces no pueden forzar los cupones en un tiempo razonable.

¿Cómo evita que un usuario malintencionado pruebe más de uno a la vez?
Utilizo un bloqueo para evitar que cada cuenta iniciada haga más de una cosa a la vez. No puedo evitar que un usuario malicioso cree un millón de cuentas y las use todas a la vez, pero eso es mucho más obvio si sucede.
Si un usuario malicioso crea Ncuentas, puede verificar los Ncupones a la vez. No puedes retenerlo en uno. Y si bien puede ser obvio si un usuario crea millones de cuentas, ¿cómo lo detienes? El retraso también tiende a convertirlo en un DOS propio porque tiende a quedarse sin conexiones.
  1. Emita cupones con algún número de serie que sea único para cada cupón, preferiblemente oculto de manera que una vez que el número sea visible, el cupón no pueda parecer cerrado.
  2. Tenga una lista de todos los números de serie de los cupones y sus valores en su base de datos.
  3. Al canjear el cupón con una dirección de Bitcoin adecuada, convierta la cantidad según algún valor de un intercambio (como Mt.Gox) y envíe la cantidad adecuada de monedas a la dirección especificada.

En cuanto al programa real para realizar esas acciones, no puede ayudarlo mucho, pero si puede comunicarse con Bitcoind a través de JSON-RPC, el resto debería ser bastante fácil de programar.

tnx ThePiachu, edité la pregunta, agregué algunos puntos más específicos.