Rufen Sie eine Zahlung mit Smart Contract auf

Ich versuche, eine Funktion in meinem Smart-Vertrag zu erstellen, die eine Zahlung vom Benutzer aufruft. Wenn beispielsweise auf eine Schaltfläche geklickt wird, fordert die Metamaske auf, die Zahlung von 0,10 ETH an meinen Vertrag zu bestätigen. Ich verstehe zahlbare Funktionen und habe dies getestet Remix und kann meinen Vertrag bezahlen, aber ich möchte wissen, wie ich eine Zahlung mit einer vordefinierten Menge an Ether „aufrufe“ und sie vom Benutzer anfordere. Danke

Antworten (1)

Verträge können keine Transaktionen von Externally Owned Accounts (EOA) aufrufen – da das Initiieren von Transaktionen erfordert, dass ein (EOA) mit seinem privaten Schlüssel signiert. Sie sind sich bei Ihrer speziellen Anwendung nicht sicher, aber könnte sie mit einem Treuhandvertrag gelöst werden? So könnte der Nutzer Gelder an ein Treuhandkonto senden, um es bis zum Hauptvertrag zu halten und dann möglicherweise zu senden. Wenn Sie nur Transaktionen akzeptieren möchten, die einen bestimmten Wert haben, würden Sie Folgendes verwenden:

function userSendsEth() {
     require(msg.value > someamount)
     //Any additional functionality
}
Vielen Dank dafür, wäre eine andere Option, Ether an den Vertrag zu senden (durch den Benutzer) und msg.value zu verwenden, um den gesendeten Betrag zu überprüfen. Wenn ja, wie würden sie das tun?
Ja, ich habe das Obige aktualisiert, es würde immer noch erfordern, dass der Benutzer die Transaktion einleitet - jedoch nicht den Vertrag. Aber es würde sicherstellen, dass der Benutzer den von Ihnen angegebenen Betrag gesendet hat someamount.
Das ist großartig, ich habe ein Frontend für mein Dapp erstellt. Wenn der Benutzer zur Zahlung geht, wie gibt er an, wie viel er den Vertrag senden möchte?
Sie können ein Eingabefeld einfügen, das sie über die Benutzeroberfläche angeben können. Oder wenn sie MetaMask verwenden, können sie dort auch Werteingaben einfügen.