Solidez | ¿Cómo lanzar un argumento de "cadena" usando la función Enviar ()?

Tengo una función que obtiene un parámetro como String y lo compara como se muestra a continuación.

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

Arriba está mi código de contrato inteligente. Quiero usar este mi método usando web3, así que estoy tratando de hacer una transición por send()función como se muestra a continuación.

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

La función freezeAccount() funciona bien en Remix IDE pero el Error: Invalid JSON RPC response: ""error regresa cuando ejecuto la función setFreezeAccount().

Respuestas (1)

Soy un idiota. Quiero eliminar esta pregunta, pero la dejaré para otras personas que cometen el mismo error que yo. La razón por la que ocurrió el error fue que la freezeAccount()función en Solidity solo puede ser ejecutada por el propietario. Agregué el modificador de acceso llamado onlyOwnerasí que tengo que hacer datos de transacción y lo firmé y luego envié la transacción usando Web3.

También eres un buen deportista.