¿Cómo puede el contrato hacer pagos recurrentes? [duplicar]

Necesito crear un contrato que realice pagos recurrentes según la solicitud del usuario, el contrato le pedirá al usuario que indique la dirección del remitente y del destinatario y transferirá una cantidad de tokens erc20 del remitente al destinatario de manera recurrente, tal vez cada mes, o diario.

Estaba leyendo el reloj de alarma de ethereum, lo que entiendo hasta ahora es que programará la transacción para que se ejecute más tarde, pero ¿puede volverse recurrente? como cada 2 meses?

Se agradecería un enlace de inicio rápido o sugerencias, ¡Muchas gracias!

Respuestas (3)

No hay un sistema de programación en Ethereum. Todo comienza cuando alguien firma una transacción y la envía con la gasolina (pagada) para ejecutar la transacción.

Esto conduce a nuevos patrones, flujos de datos y procesos que requieren algunos ajustes.

La idea obvia es el enfoque de Ethereum Alarm Clock. En este patrón, haría que sus usuarios suministraran suficiente Ether para pagar las tarifas de los procesos por adelantado para la conveniencia de que el servicio envíe una transacción en el futuro. Dado que siempre tratamos de alinear el pago de las tarifas con los intereses de la persona que paga las tarifas, podría tener sentido que un usuario pague, digamos, 6 meses de tarifas para cubrir las próximas 6 transferencias mensuales. Luego, tendrían que "recargar" para continuar con su conveniencia.

Una forma menos obvia es invertir el flujo y hacer que los usuarios reclamen sus fondos. En realidad, esto es preferible en mi opinión , ya que está más alineado con las mejores prácticas. En el estilo de retiro, los usuarios simplemente preguntan sobre el estado/historial de su cuenta, y el contrato calcula los pagos adeudados desde su último retiro. Fácil.

Luego, el usuario envía una transacción (presione el botón) para solicitar los fondos adeudados y el contrato se ocupa únicamente de validar que la solicitud sea aceptable y llevar la contabilidad. También fácil. El usuario paga el gas necesario para procesar la transacción. Eso es correcto.

Ninguno de los patrones utiliza el bucle sobre las listas o el procesamiento por lotes en días específicos, como podría ser el caso en un enfoque centrado en el servidor. Es importante no hacer eso.

Espero eso ayude.

¿Cuál es el costo promedio a pagar por transacción usando el despertador ethereum?
@RobHitchens hola mientras buscaba preguntas sobre el despertador, encontré tu respuesta. Encontré tu respuesta clara y te pregunto si me puedes ayudar con el enlace de mi pregunta . Soy principiante por lo que no entiendo algunos conceptos.

No puedes hacer esto de forma nativa.

ETH-Tempus

oraclizar

Ethereum Alarm Clock (esto ha estado inactivo durante mucho tiempo y "Chrono-Logic" se está construyendo sobre esto)

ETH-Tempus es el más simple y económico. La diferencia con oraclize es que el consumo de gas de ETH-Tempus es menor, más importante, en oraclize pagas por adelantado y el gas que les pasas no te lo devuelven si no lo usas por completo.

Tenga en cuenta que ETH-Tempus solo tiene la funcionalidad de programar llamadas en cualquier momento en el futuro, mientras que oraclize tiene muchas otras funciones.

En ETH-Tempus:

  1. El pago se realiza cuando se llama a su contrato.

  2. Más barato en el consumo de gas.

  3. El consumo de gas se estima en línea y solo se te pide que pagues lo calculado más una tarifa de unos 5 centavos de dólar.

  4. Es fácil de usar (mira el ejemplo en GitHub)

Descargo de responsabilidad: Escribí el código para ETH-Tempus y es gratis para probar en la red de prueba (rinkeby). Lo creé porque vi que mucha gente buscaba esto y las soluciones que encontré eran complicadas o demasiado costosas para considerarlas en casos en los que necesita muchas llamadas. (como llamadas repetidas cada cierto tiempo)

Espero que esto ayude

¿Podemos usar ETH-Tempus en la red principal?
En este momento solo está en Rinkeby, para el 10 de junio estará en la red principal.

Los contratos solo pueden ejecutarse cuando algo fuera de la cadena de bloques los llama. Puedo pensar en tres entidades que podrían estar dispuestas a llamar el contrato cada 2 meses:

  1. El remitente podría estar dispuesto a hacer esto si, por ejemplo, dejará de recibir algún servicio si no se envía el pago.
  2. El destinatario podría estar dispuesto a hacer esto para que le paguen.
  3. Un tercero podría estar dispuesto a hacer esto si recibe una compensación. (Así es como funciona el despertador Ethereum).

Si yo fuera usted, simplemente haría que cualquiera pudiera llamar a la función y establecería la expectativa de que el destinatario debe llamar a esa función para recibir el pago. Para los destinatarios que no están dispuestos, el remitente puede hacerlo ellos mismos o incentivar a un tercero para que lo haga.