Wie kann der Vertrag wiederkehrende Zahlungen leisten? [Duplikat]

Ich muss einen Vertrag erstellen, der wiederkehrende Zahlungen gemäß der Anforderung des Benutzers leistet. Der Vertrag fordert den Benutzer auf, die Absender- und Empfängeradresse anzugeben, und er überträgt eine gewisse Menge an erc20-Tokens auf wiederkehrende Weise vom Absender zum Empfänger - vielleicht alle Monat oder täglich.

Ich habe den Ethereum-Wecker gelesen, was ich bis jetzt verstanden habe, ist, dass die Transaktion für einen späteren Zeitpunkt geplant wird, aber kann sie wiederholt werden? wie alle 2 monate?

Ein Schnellstart-Link oder Vorschläge wären willkommen, vielen Dank!

Antworten (3)

In Ethereum selbst gibt es kein Planungssystem. Alles beginnt damit, dass jemand eine Transaktion unterschreibt und sie mit dem Benzin (bezahlt) sendet, um die Transaktion auszuführen.

Dies führt zu einigen neuen Mustern, Daten und Prozessabläufen, die einige Anpassungen erfordern.

Die offensichtliche Idee ist der Ethereum-Wecker-Ansatz. In diesem Muster würden Sie Ihre Benutzer dazu bringen, genug Ether bereitzustellen, um Prozessgebühren im Voraus zu zahlen, damit der Dienst in Zukunft eine Transaktion senden kann. Da wir immer versuchen, die Zahlung von Gebühren an den Interessen der Person auszurichten, die die Gebühren zahlt, kann es für einen Benutzer sinnvoll sein, beispielsweise Gebühren für 6 Monate zu zahlen, um die nächsten 6 monatlichen Überweisungen abzudecken. Dann müssten sie für weitere Bequemlichkeit "aufladen".

Ein weniger offensichtlicher Weg besteht darin, den Fluss umzukehren und die Benutzer ihre Gelder einfordern zu lassen. Dies ist meiner Meinung nach tatsächlich vorzuziehen, da es stärker an Best Practices ausgerichtet ist. Beim Abhebungsstil erkundigen sich Benutzer einfach nach ihrem Kontostatus/-verlauf, und der Vertrag berechnet die seit ihrer letzten Abhebung geschuldeten Zahlungen. Einfach.

Dann übermittelt der Benutzer eine Transaktion (drücken Sie die Schaltfläche), um geschuldete Gelder anzufordern, und der Vertrag befasst sich ausschließlich mit der Validierung der Anforderung als akzeptabel und der Abrechnung. Auch einfach. Der Benutzer zahlt für das Gas, das zur Abwicklung der Transaktion erforderlich ist. Das ist richtig.

Keines der Muster verwendet Schleifen über Listen oder Stapelverarbeitung an bestimmten Tagen, wie dies bei einem serverzentrierten Ansatz der Fall sein könnte. Es ist wichtig, das nicht zu tun.

Ich hoffe es hilft.

Wie hoch sind die durchschnittlichen Kosten pro Transaktion mit dem Ethereum-Wecker?
@RobHitchens Hallo, als ich nach Fragen zum Wecker gesucht habe, habe ich Ihre Antwort gefunden. Ich fand Ihre Antwort klar und ich frage Sie, ob Sie mir bei meiner Frage helfen können . Ich bin ein Anfänger, also verstehe ich einige Konzepte nicht.

Sie können dies nicht nativ tun.

ETH-Tempus

Orakel

Ethereum-Wecker (dieser war lange Zeit inaktiv und „Chrono-Logik“ baut darauf auf)

ETH-Tempus ist am einfachsten und billigsten. Der Unterschied zu oraclize ist, dass der Gasverbrauch von ETH-Tempus geringer ist, wichtiger ist, dass Sie bei oraclize im Voraus bezahlen und das Gas, das Sie an sie weitergeben, nicht zurückerstattet wird, wenn Sie es nicht vollständig verbrauchen.

Beachten Sie, dass ETH-Tempus nur die Funktionalität hat, Anrufe zu einem beliebigen Zeitpunkt in der Zukunft zu planen, während oraclize viele andere Funktionen hat.

Im ETH-Tempus:

  1. Die Zahlung erfolgt, wenn Ihr Vertrag aufgerufen wird.

  2. Günstiger im Gasverbrauch.

  3. Der Gasverbrauch wird online geschätzt und Sie müssen nur das bezahlen, was berechnet wurde, zuzüglich einer Gebühr von etwa 5 Cent Dólar.

  4. Ist einfach zu bedienen (siehe Beispiel auf GitHub)

Haftungsausschluss: Ich habe den Code für ETH-Tempus geschrieben und kann kostenlos im Testnetz (rinkeby) getestet werden. Ich habe es erstellt, weil ich gesehen habe, dass viele Leute danach gesucht haben und die Lösungen, die ich gefunden habe, entweder kompliziert oder zu teuer waren, um tatsächlich in Betracht gezogen zu werden, wenn Sie viele Anrufe benötigen. (Wie wiederholte Anrufe zu bestimmten Zeiten)

Hoffe das hilft

können wir ETH-Tempus im Hauptnetz verwenden?
Im Moment ist es nur auf Rinkeby, bis zum 10. Juni wird es auf dem Hauptnetz sein.

Verträge können nur ausgeführt werden, wenn etwas außerhalb der Blockchain sie aufruft. Ich kann mir drei Unternehmen vorstellen, die bereit sein könnten, den Vertrag alle 2 Monate zu kündigen:

  1. Der Absender ist möglicherweise bereit, dies zu tun, wenn er beispielsweise einige Dienste nicht mehr erhält, wenn die Zahlung nicht gesendet wird.
  2. Der Empfänger ist möglicherweise bereit, dies zu tun, damit er bezahlt wird.
  3. Ein Dritter könnte bereit sein, dies zu tun, wenn er dafür entschädigt wird. (So ​​funktioniert der Ethereum-Wecker.)

Wenn ich Sie wäre, würde ich die Funktion einfach von jedem aufrufbar machen und die Erwartung aufstellen, dass der Empfänger diese Funktion aufrufen muss, um bezahlt zu werden. Für Empfänger, die nicht bereit sind, kann der Absender dies selbst tun oder einen Dritten dazu anregen.