Estoy tratando de enviar los argumentos en función desde la cuenta del propietario, pero obtengo un error devuelto.
Estoy usando web3 1.0 .
Función en el contrato:
/**
* @dev Adds single address to whitelist.
* @param trusted Address to be added to the whitelist
*/
function addToWhiteList(address trusted) public onlyOwner {
require(!whitelist[trusted]);
whitelist[trusted] = true;
emit UserWhitelist(true);
}
Código en index.html:
// Add user on whitelist
abc.methods.addToWhiteList("0x9DA80947ACf5Fc16299311EdAabc37fF7d201C95")
.send({ from: "0x61A44075419C4402f6DE631341d875Ece6A3922e" })
.on("receipt", function(receipt) {
console.log(receipt);
})
.on("error", function(error) {
console.error(error);
});
ERROR : Returned error: The method eth_sendTransaction does not exist/is not available
Nota: agrego web3 en la etiqueta del script:
<script language="javascript" type="text/javascript" src="web3.min.js"></script>
e init. como esto :
web3 = new Web3(new Web3.providers.WebsocketProvider("wss://ropsten.infura.io/ws"));
No estoy seguro si esta es la razón. Pero intente desbloquear la cuenta antes de enviar la transacción. La cuenta del remitente debe estar desbloqueada. Generalmente obtienes please unlock your account
un error. Pero puede ser que esto no le permita enviar tx. Un código de muestra se parece a:
custom_func.prototype.SENDCNK=function(from,to,password,amount){
return new Promise(function(fullfill,reject){
/* add basic checks like if user has sufficient balance , address are valid etc*/
web3.eth.personal.unlockAccount(from, password).then(function(result,e){
console.log("Account "+from+" unlocked successfully");
amount = parseFloat(amount);
amount = amount *decimalMultiplier;
cnkContract.methods.transfer(to ,amount).send({from:from})
.on('transactionHash',function(txHash){
console.log("Transaction hash : "+txHash);
fullfill(txHash);
}).catch(function(error){
console.log("Unable to send transaction. Error:"+error);
logger.error(error);
reject("Sending transaction on blockchain failed");
});
}).catch(function(error){
logger.error("Incorrect transaction password for account: "+from);
reject("Incorrect transaction password.");
});
});
}
--rpcapi web3,eth,net,personal,db
. Si no habilita esto, no podrá acceder a los métodos personales. Dado que está utilizando el nodo infura, verifique si han habilitado lo mismo.
Prashant Prabhakar Singh
chirag maliwal
Prashant Prabhakar Singh
personal.unlock(owner)
chirag maliwal
ismael
sendTransaction
que tenga que firmar sus propias transacciones y usarsendSignedTransaction
, o usar un complemento como MetaMask para firmar transacciones.