MetaMask zeigt "UNBEKANNTE FUNKTION" beim Aufrufen der Methode Sendefunktion

Ich versuche, die Kommunikation zwischen einem Web-Frontend und einem bereitgestellten Ethereum-Vertrag (auf Rinkeby) zu konfigurieren. Ich versuche, eine einfache Methode aufzurufen, die einen Wert aktualisiert, der ungefähr so ​​​​aussieht:

uint public value;

function someFunction(uint newValue) public {
    value = newValue;
}

Und ich rufe die Funktion so vom Client auf:

myContract.methods.someFunction(newValue).send({
    from: myAccount,
});

Wenn MetaMask auftaucht, steht "UNBEKANNTE FUNKTION" über dem Wert, der an den Client gesendet werden soll (dies geschieht auch, wenn ich versuche, Methoden aufzurufen, die tatsächlich einen Etherwert erfordern). Gibt es eine Möglichkeit, das Problem anzugehen? Es scheint, dass dies für Benutzer wahrscheinlich beunruhigend wäre, wenn tatsächlich Ether im Spiel wäre.

Geben Sie hier die Bildbeschreibung ein

Antworten (1)

Damit MetaMask die Signatur Ihrer Funktion erkennt, müssen Sie sich unter
https://etherscan.io/address/0x44691B39d1a75dC4E0A0346CBB15E310e6ED1E86#writeContract registrieren

Hier zieht MetaMask Daten, um die Funktion zu bestimmen, die einem Funktions-Hash entspricht.

dh rufen Sie in Ihrem Beispiel die registerFunktion des obigen Vertrags auf und übergeben Sie Folgendes:
someFunction(uint256)

Kannst du das etwas genauer ausführen, weil ich es nicht verstehe? Von wo aus soll ich die Registerfunktion aufrufen? Von welchem ​​Konto? Über das Webinterface?
Sie können die Funktion von überall aufrufen register(z. B. MEW, Mist), mit der Sie mit Smart Contracts interagieren können. etherscan.io unterstützt jetzt auch das Schreiben in Verträge (siehe obigen Link) mit MetaMask. Das Konto sollte bei der Registrierung einer Funktion keine Rolle spielen – alles, was Sie tun, ist, den Funktionsnamen mit seiner Signatur zu verknüpfen und diese Zuordnung im Smart Contract aufzuzeichnen. Sie müssten für den Anruf Benzin bezahlen, aber sonst nichts.