Hier: http://solidity.readthedocs.io/en/v0.4.21/units-and-global-variables.html , heißt es
Es kann sein, dass Sie auf einer privaten Blockchain auf Out-of-Gas für sha256, ricemd160 oder ecrecover stoßen . Der Grund dafür ist, dass diese als sogenannte vorkompilierte Verträge implementiert sind und diese Verträge erst wirklich existieren, nachdem sie die erste Nachricht erhalten haben (obwohl ihr Vertragscode fest codiert ist). Nachrichten zu nicht existierenden Kontrakten sind teurer und somit läuft die Ausführung in einen Out-of-Gas-Error. Eine Problemumgehung für dieses Problem besteht darin, zuerst z. B. 1 Wei an jeden der Verträge zu senden, bevor Sie sie in Ihren eigentlichen Verträgen verwenden. Dies ist kein Problem im offiziellen oder Testnetz.
Auch auf Ropsten geht das Gas aus, ich rufe eine Funktion auf, die ecrecover
daran beteiligt ist, und sie wird nicht ausgeführt.
Obwohl die gleiche Funktion beim Trüffeltest gut funktionierte. Dieselbe Funktion auf Remix ausführen , get
Fehlerhafte Gasschätzung mit folgender Meldung (siehe unten). Die Ausführung der Transaktion wird wahrscheinlich fehlschlagen. Möchten Sie das Senden erzwingen? Fehler: Benötigtes Gas übersteigt Freibetrag oder Transaktion schlägt immer fehl
Etherscan Tx: https://ropsten.etherscan.io/tx/0x229a4e16f4464809181a24a16e1db2acb82b11ac160c26a1aa5e692495fb4d4a
Wie kann ich diese Funktion mit Ropsten zum Laufen bringen?
Ich habe es geschafft. Das Problem war mit einem Präfix in der Signatur, dh \x19Ethereum Signed Message:\n32
. Weitere Einzelheiten zum Problem finden Sie hier: https://github.com/OpenZeppelin/zeppelin-solidity/issues/644
Ismael
Aniket
medwedew1088
hextet