Tengo el siguiente contrato:
pragma solidity ^0.4.24;
contract Escrow {
address public owner;
event LogReceivedFunds(address sender, uint amount);
event LogReturnedFunds(address recipient, uint amount);
constructor() public {
owner = msg.sender;
}
function() public payable {
emit LogReceivedFunds(msg.sender, msg.value);
}
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
function getBalance() public view returns (uint256) {
return address(this).balance;
}
function refundBalance() public onlyOwner {
uint256 balance = address(this).balance;
msg.sender.transfer(balance);
emit LogReturnedFunds(msg.sender, balance);
}
function kill() public onlyOwner {
selfdestruct(owner);
}
}
Me conecté con éxito a Ropsten a través de Infura, como puedo:
call
métodos como getBalance
.Sin embargo, cuando quiero usar enviar para modificar el estado (es decir, reembolsar al propietario del contrato los fondos depositados), recibo esta respuesta:
Error: respuesta JSON RPC no válida: ""
Esto no sucede en Ganache, por lo que creo que es un problema causado por Infura. ¿Hay algún tipo de incompatibilidad?
Infura no admite ninguna operación que requiera una clave privada (como firmar una transacción). Esto se debe a que no almacenan la clave privada de nadie.
Si desea enviar una transacción a través de Infura, primero debe firmarla localmente (usando su clave privada) y luego transmitir la transacción firmada a través de Infura.
js
carpeta.
shawn tabrizi
refundBalance
función tiene laonlyOwner
etiqueta adjunta. Cuando usa infura, ¿desbloquea correctamente la cuenta del propietario para acceder al contrato?