У меня есть функция, которая получает параметр как строку и сравнивает его, как показано ниже.
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() возвращается ошибка.
Я идиот. Я хочу удалить этот вопрос, но я оставлю его для других людей, которые совершают ту же ошибку, что и я. Причина возникновения ошибки заключалась в том, что freezeAccount()
функция Solidity может выполняться только владельцем. Я добавил модификатор доступа с именем onlyOwner
, чтобы мне нужно было создавать данные транзакции и подписывать их, а затем отправлять транзакцию с помощью Web3.
Роб Хитченс