ER721Token-Vertragsfunktionen, die alle in Remix funktionieren, aber nicht in der Geth --dev-Konsole mit Web3-Befehlen?

Ich verwende den folgenden Vertrag mit allen Abhängigkeiten.

MasteringEthereum/code/auction_dapp/backend/contracts/ERC721/ERC721Token.sol

Bei der Bereitstellung in Remix funktionieren die Vertragsfunktionen einwandfrei, alle werden ausgeführt und die Daten werden an den richtigen Stellen gespeichert (dh Arrays und Mappings). Wenn ich jedoch auf einer lokalen Konsole bereitstelle, werden die folgenden Funktionen ausgeführt, aber der Status des Vertrags ändert sich geth --devnicht

erc721token.mint(acct1, 9000 {from: acct1})

erc721token.totalSupply()

erc721token.tokenByIndex([0])

erc721token.balanceOf(acct1)

erc721token.exists(9000) 

erc721token.ownerOf(9000)

???

Jede Hilfe wäre fantastisch.

Haben Sie den Transaktionsbeleg überprüft, um den Ausführungsstatus zu bestätigen? Remix berechnet die Schätzung des Transaktionsgases, die Geth-Konsole jedoch nicht und verwendet ein Standardgas, das möglicherweise nicht ausreicht, um die Transaktion auszuführen. Versuchen Sie, ein explizites Gaslimit festzulegen { gas: 1000000, from: acc1 }.

Antworten (1)

Danke Ismael. Mit deinem Vorschlag ist das Problem behoben.

Problem war

erc721token.mint(acct1, 9000 {von: acct1})

Transaktion hat kein neues Token geprägt, obwohl eine Transaktion geschürft wurde.

Gasverbrauch: 100000,

deedrepository.mint(eth.accounts[0], 1000, {gas: 1000000, from: eth.accounts[0]})

GasGebraucht: 157938,

Aufruf der gleichen Funktion mit einem höheren Gaslimit als Transaktionsparameter Problem gelöst, da die Funktion einen höheren Gaspreis benötigt, damit die Berechnung von der EVM vollständig ausgeführt werden kann.

HINWEIS: „0x0“ im Transaktionsbeleg weist auf einen Transaktionsfehler hin. "0x1" im Transaktionsempfang bei Transaktionserfolg.

Für Leute, die auf diese Antwort stoßen, meinen Sie eher "höheres Gaslimit" als "höherer Gaspreis".