Den Mustervertrag „Advanced Token“ finden Sie hier: https://www.ethereum.org/token
Funktioniert nicht, wenn es im Testnetz bereitgestellt wird. Der Versuch, Ether an den Vertrag zu senden, um Token zu kaufen, führt zu der Fehlermeldung:
Der Vertrag lässt die Ausführung dieser Transaktion nicht zu
Nichts im Tutorial erklärt, warum dies passieren würde.
Bearbeiten Also, ich habe das Problem herausgefunden. Meine "bezahlbare" Funktion heißt buy(). Ich bin davon ausgegangen, dass der Vertrag beim Senden von Ether automatisch die Zahlungsfunktion auswählen würde, aber es sieht so aus, als ob Sie die Catch-All-Zahlungsfunktion anstelle einer benannten Funktion benötigen, um beliebige Ether-Zahlungen zu erhalten. Nachdem ich den Funktionsnamen entfernt hatte, funktionierte alles.
Bearbeiten: Obwohl die folgenden Informationen Teil des Problems waren, ist die spezifische Lösung oben.
Also soweit ich das beurteilen kann ist hier das Problem...
Damit buy() funktioniert, gibt es also ein paar Optionen (in der Reihenfolge zunehmender Komplexität).
Es macht absolut Sinn, sich den Code im Detail anzusehen, hat nur den Aspekt der Eigentümeradresse, die als "msg.sender" bezeichnet wird, im Gegensatz zur Vertragsadresse, die als "this" bezeichnet wird, nicht erfasst.
Nach der Vertragserstellung gehört die anfängliche Münzzuteilung dem Vertragsinhaber. Sie müssen einige der neuen Münzen auf den Vertrag selbst übertragen.
Bei einem Saldo von Null lässt der Vertrag die Transaktion nicht zu.
Richard Horrocks
Der Schuhputzer
Richard Horrocks
Der Schuhputzer
Der Schuhputzer