Skip to content

Instantly share code, notes, and snippets.

@yemel
Created April 5, 2014 15:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yemel/9993627 to your computer and use it in GitHub Desktop.
Save yemel/9993627 to your computer and use it in GitHub Desktop.
Trustless Prepaid Service
Integrantes: C) Cliente, T) ThirdParty, P) Proveedor
C genera 3 claves privadas y una bitcoin address que para la que se le pueden retirar fondos con 2 de 3 de esas claves (todo esto client-side)
A carga fondos a esa address, entrega una clave privada a T y otra clave privada a P. Los fondos cargados corresponderían al prepago, por ejemplo dinero suficiente para un año de servicio de X.
Cuando C le pasa la clave privada a T también informa las condiciones de pago que exigirá P, como pueden ser: gasto máximo en un periodo y la frecuencia de cobro.
Finalmente el proceso de pago sería el siguiente:
1- P generaría la transacción para cobrar a cada fin de ciclo y se la emitiría a T.
2 - T confirmaría que está dentro de las restricciones y terminaría de firmar la transacción.
3 - T broadcastea la transacción a la red de bitcoin y el pago se da por confirmado.
Nota: Esto funcionaría perfecto hasta que la cuenta quede sin dinero, entonces C tendría que volver a cargar.
Si A quiere cancelar la suscripción, puede hacerlo hablando solo con T o guardando algun backup de las claves privadas que generó client side. En cualquier caso puede recuperar todo su dinero.
Si hackean a T o a P no hay problema, ellos solo tiene una clave privada y por tanto no podrían retirar los fondos de la cuenta.
Otra ventaja de este sistema es que si el servicio de P desaparece, no hay problema con haber pagado 1 año por adelantado. El dinero se puede recuperar.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment