Wie rufe ich die Methode zur Änderung des Vertragsstatus auf Ropsten über Infura mit web3@1.0.0 auf?

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:

  1. Stellen Sie den Vertrag über Truffle bereit
  2. Führen Sie callMethoden 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?

An die refundBalanceFunktion ist das onlyOwnerTag angehängt. Wenn Sie infura verwenden, entsperren Sie das Eigentümerkonto ordnungsgemäß, um auf den Vertrag zuzugreifen?

Antworten (1)

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.

Können Sie bitte ein Beispiel posten, wie eine Transaktion vorbereitet und signiert wird, die einen Vertragsaufruf mit Änderungsstatus mit Argumenten durchführt?
@kitsune das findest du in diesem GitHub Repo . Sehen Sie sich den jsOrdner an.