Солидность | Как передать «строковый» аргумент с помощью функции Send ()?

У меня есть функция, которая получает параметр как строку и сравнивает его, как показано ниже.

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

Выше мой код смарт-контракта. Я хочу использовать этот мой метод с помощью web3, поэтому я пытаюсь сделать переход по send()функции, как показано ниже.

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);
  });
};

Функция freezeAccount() хорошо работает в среде Remix IDE, но Error: Invalid JSON RPC response: ""при выполнении функции setFreezeAccount() возвращается ошибка.

Ответы (1)

Я идиот. Я хочу удалить этот вопрос, но я оставлю его для других людей, которые совершают ту же ошибку, что и я. Причина возникновения ошибки заключалась в том, что freezeAccount()функция Solidity может выполняться только владельцем. Я добавил модификатор доступа с именем onlyOwner, чтобы мне нужно было создавать данные транзакции и подписывать их, а затем отправлять транзакцию с помощью Web3.

Ты также хороший спортсмен.