Solidität | Wie werfe ich das Argument "string" mit der Funktion Send()?

Ich habe eine Funktion, die einen Parameter als String erhält und ihn wie unten vergleicht.

function freezeAccount(string _value) onlyOwner public {
    if (keccak256(_value) == keccak256("true")){ isFrozen = "true"; }
    if (keccak256(_value) == keccak256("false")){ isFrozen = "false"; }
}

Oben ist mein Smart-Contract-Code. Ich möchte diese meine Methode mit web3 verwenden, also versuche ich, den Übergang nach send()Funktion wie unten zu machen.

export const setFreezeAccount = value => {
console.log("setFreezeAccount :: value: ", value);
  const str = value.toString();

  myContract.methods
  .freezeAccount(str)
  .send({ from: TOKENOWNER })
  .then(receipt => {
    console.log("setFreezeAccount :: receipt: ", receipt);
  })
  .catch(err => {
    console.log("setFreezeAccount :: err: ", err);
  });
};

Die Funktion freezeAccount() funktioniert gut in der Remix IDE, aber der Error: Invalid JSON RPC response: ""Fehler wird zurückgegeben, wenn ich die Funktion setFreezeAccount() ausführe.

Antworten (1)

Ich bin ein Idiot. Ich möchte diese Frage löschen, aber ich werde sie für andere Leute behalten, die denselben Fehler machen wie ich. Der Grund für das Auftreten des Fehlers war, dass die freezeAccount()Funktion auf Solidity nur vom Eigentümer ausgeführt werden kann. Ich habe den benannten Zugriffsmodifikator hinzugefügt onlyOwner, damit ich Transaktionsdaten erstellen und signieren muss, und dann die Transaktion mit Web3 senden.

Du bist auch ein guter Sportler.