Ich habe folgenden Vertrag:
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);
}
}
Ich habe mich erfolgreich über Infura mit Ropsten verbunden, da ich:
call
Methoden wie getBalance
.Wenn ich jedoch send verwenden möchte, um den Status zu ändern (d. h. dem Eigentümer des Vertrags seine eingezahlten Gelder zurückzuerstatten), erhalte ich diese Antwort:
Fehler: Ungültige JSON-RPC-Antwort: ""
Dies passiert nicht auf Ganache, daher schätze ich, dass es ein Problem ist, das von Infura verursacht wird. Gibt es eine Art Inkompatibilität?
Infura unterstützt keine Vorgänge, die einen privaten Schlüssel erfordern (z. B. das Signieren einer Transaktion). Dies liegt daran, dass sie niemandes privaten Schlüssel speichern.
Wenn Sie eine Transaktion über Infura senden möchten, müssen Sie diese zuerst lokal signieren (mit Ihrem privaten Schlüssel) und dann die signierte Transaktion über Infura übertragen.
js
Ordner an.
Shawn Tabrizi
refundBalance
Funktion ist dasonlyOwner
Tag angehängt. Wenn Sie infura verwenden, entsperren Sie das Eigentümerkonto ordnungsgemäß, um auf den Vertrag zuzugreifen?