Metamask Transaktionen können nicht an das private Ethereum-Netzwerk gesendet werden

Ich verwende die Metamask.io-Erweiterung in Google Chrome. Metamask.io wurde mithilfe der Socket-Adresse (IP:Portnummer) korrekt mit dem privaten Netzwerk verbunden, das auf der AWS EC2-Instanz gehostet wird. Basic Contract wurde auf der Blockchain mit Remix IDE für Solidity-Programmierung bereitgestellt. Ich kann die Informationen abrufen (Funktion getInstructor). Die neuen Dozenteninformationen können jedoch nicht eingestellt werden.

Schritte -

  1. In der Remix IDE rufe ich die Funktion auf.
  2. Es öffnet das Metamask-Popup und ich verwende den Standardgaspreis.
  3. Die Transaktion wird nie ausgeführt.

Auf dem privaten Blockchain-Knoten von Ethereum habe ich versucht, ausstehende Transaktionen zu finden, aber es gab keine. Wie gezeigt,

> eth.pendingTransactions
[]

Wenn Sie dies jedoch versuchen,

web3.eth.getBlock("pending")
{
  difficulty: 25082169,
  extraData: "0xd583010701846765746885676f312e39856c696e7578",
  gasLimit: 4712388,
  gasUsed: 0,
  hash: null,
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  miner: null,
  mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  nonce: null,
  number: 1557557,
  parentHash: "0xf84ce5ff7845f399eb698bfc33abeb24a8e459096d7ad9c097de3eb6130a6360",
  receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  size: 537,
  stateRoot: "0x017184c9d24daab688c39468af064cd3ab748f5adc9c5b1fd3c5bcc2f3a318a0",
  timestamp: 1523753000,
  totalDifficulty: 0,
  transactions: [],
  transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  uncles: []
}

Vor ein paar Tagen konnte ich diese grundlegende Transaktion durchführen, aber jetzt bin ich es nicht mehr. Kann nicht verstehen, was das Problem ist.

Mögliche Fehler -

Nach diesen Diskussionen

Da Miner-Knoten und Transaktionen nicht gesendet wurden , habe ich versucht, ein anderes persönliches Konto zu erstellen und es mir zu überlassen (das ist fehlgeschlagen).

Minen Sie in Ihrem Node? dh bist du gelaufen mine.start(1)oder ähnliches. Von Ihrem ausstehenden Block hat es die Nummer 1557557, was für ein privates Testnet ziemlich hoch ist, was gibt es eth.blockNumberzurück? Sind Sie sicher, dass Sie sich mit dem richtigen Netzwerk verbinden?
Ich habe in meinem Knoten geschürft. Ja, ich bin mir absolut sicher, dass ich mich mit dem richtigen Netzwerk verbunden habe (mein privates Testnetzwerk mit entsprechendem IP:Port). Hier ist die Blocknummer-Info -> eth.blockNumber 1558456

Antworten (3)

Das „übliche“ Setup für die Entwicklung besteht darin, Metamask nicht mit Ihrem AWS-Knoten zu verbinden, da Sie diesem Knoten keine APIs zur Verfügung stellen möchten. Ich vermute, Sie verwenden POA richtig?

Lassen Sie einfach einen lokalen Knoten auf Ihrem Computer laufen und verbinden Sie Metamask mit localhost.

Standardmäßig akzeptiert der Knoten nur Verbindungen von localhost. Sie können dies ändern, um Verbindungen von jedem zu akzeptieren mit: --rpcaddr "0.0.0.0".

Bitte beachten Sie, dass jedes Mal, wenn ein privater Schlüssel freigeschaltet wird, jeder im Internet diesen Schlüssel verwenden kann, indem er Ihren RPC-Server abfragt und Transaktionen sendet.

Klingt, als hätten Sie dieses Problem: https://github.com/MetaMask/metamask-extension/issues/1722

chainIdVersuchen Sie, und networkIdauf denselben Wert einzustellen , damit MetaMask EIP-155-konform bleibt.

Eine Anleitung zur Verwendung eines benutzerdefinierten Knotens mit MetaMask finden Sie hier: https://github.com/MetaMask/faq/blob/master/USERS.md#using-a-local-node

Die Tatsache, dass ich zuvor Transaktionen senden konnte, hilft mir zu sagen, dass ich höchstwahrscheinlich keine Probleme damit habe, dass MetaMask EIP-155-konform bleibt (denn wenn dies der Fall wäre, hätte ich zuvor keine Transaktionen senden können). Ich habe networkId beim Spinnen des privaten Netzwerks auf einen bestimmten Wert gesetzt und es sieht korrekt aus. Ich denke, das Problem, mit dem ich konfrontiert bin, hat damit zu tun, dass derzeit nur ich zu Testzwecken im Netzwerk bin und viele Transaktionen ausprobiert habe. Daher ist jetzt Geschwindigkeit ein Problem geworden. Bin mir nicht sicher, ob ich 100% richtig liege. Aber rate mal.
Ich habe keinen EIP155-Block in meiner custom-genesis.json festgelegt, außerdem ist meine Netzwerk-ID 1205, die während der Erstellung des Mehrbenutzer-Geth-Dienstes festgelegt wurde, was sich von der Einrichtung von chainId = 0 in Genesis unterscheidet.

Ich hatte ein ähnliches Problem. Grundsätzlich hatte mein Smart Contract in der Funktion, in der Sie Ethereum senden, kein "zahlbar". Sie sagen, dass alles korrekt funktioniert, Sie können abrufen, die Metamaske öffnet sich, sendet aber kein Ethereum. Versuchen Sie, "zahlbar" hinzuzufügen, und lassen Sie mich wissen, ob das funktioniert hat, damit ich weiß, dass ich mich eingehender mit Ihrem Problem befassen muss.