Kann Metamask nicht mit meinem Smart Contract verwenden

Ich kann meinen Smart Contract in Metamask nicht über Ganache aufrufen.

Dies waren die Schritte, die ich unternommen habe:

  • Vertrag entwickelt
  • habe es erfolgreich mit getestettruffle test
  • ein Ganache-Netzwerk aufgesetzt und den Vertrag ins Netzwerk migriert
  • in Metamask, verbunden mit dem privaten Ganache-Netzwerk und einem der Konten über einen privaten Schlüssel
  • Dann eine Zahlung vom Konto von 5 eth vornehmen und ein anderes Konto als "Transaktionsdaten" in Metamask verwenden (siehe unten - der Zahlungsvertrag erwartet eine einzelne Adresse als Argument).

Dies ist der Fehler, den ich bekomme:

Geben Sie hier die Bildbeschreibung ein

So habe ich den Vertrag genannt:

Geben Sie hier die Bildbeschreibung ein

Pay.sol

pragma solidity ^0.4.17;

/// @title Pay - Facilitates payments.
contract Pay {
    event Payment(
        address _from,
        address _to,
        uint amount
    );

    /// @dev Makes a payment.
    /// @param _to Address to pay to.
    function pay(address _to) public payable {
        require(msg.value > 0);
        _to.transfer(msg.value);
        Payment(msg.sender, _to, msg.value);
    }
}

2_pay_migration.js

var Pay = artifacts.require("Pay");

module.exports = function(deployer) {
    deployer.deploy(Pay);
}
Bitte fügen Sie die vollständigen Transaktionsdaten hinzu, die in der Transaktion enthalten sind. ABI hilft auch

Antworten (1)

So funktionieren Transaktionsdaten nicht. Richtig datawären die ersten vier Bytes des keccak256-Hashes von "pay(address)", gefolgt von der Adresse, links aufgefüllt, um 32 Bytes breit zu sein. Wie Sie sich vorstellen können, ist es ungewöhnlich, diese Nutzlast von Hand zu konstruieren. :-)

Danke, ich konnte dies mit myetherwallet + Metamask tun.