Ich richte eine dApp (Truffle Framework) mit einem Treuhandvertrag ein, der das Geld vom Käufer eines Produkts hält, bevor es an den Verkäufer freigegeben wird. Wenn der Benutzer auf "Bestellung" klickt, kann ich eine eth.sendTransaction vom Käufer zum Vertrag durchführen. Ich möchte, dass die Zahlung freigegeben wird, wenn der Benutzer auf "erhaltener Artikel" klickt, und ich kann anscheinend die Funktion, die die Zahlung an den Verkäufer von web3js freigibt, nicht aufrufen. Ich erhalte diesen Fehler:
Error: invalid address
at inputAddressFormatter
Liegt das daran, dass MetaMask dem Vertrag nicht erlaubt (da er nicht als Konto importiert wird), die Übertragung durchzuführen? Wenn ja, was muss ich an meinem Vertrag ändern?
Hier ist mein Vertragscode:
function EscrowPayment(address _seller){
// constructor
buyer = msg.sender;
seller = _seller;
}
function getSeller() constant returns(address) {
return seller;
}
function () payable{
}
function payoutToSeller() payable {
seller.transfer(this.balance);
}
Als Anmerkung, ich kann payoutToSeller() über die Truffle-Konsole aufrufen und es funktioniert.
Dieser Fehler bedeutet normalerweise, dass Sie den Absender auf eine ungültige Adresse eingestellt haben. Dies kann passieren, weil:
Einige Beispiele für die korrekte Erkennung von Konten finden Sie in dieser Anleitung: https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#partly_sunny-web3---ethereum-browser-environment-check
jwu
DanF