Ich habe ein JavaScript-Snippet, um die letzte Transaktion zu/von einem Konto abzurufen. Nach dem Starten der Geth-Instanz habe ich dies in der interaktiven JS-Konsole getan:
jsFunction ist eine Funktion in filename.js
>loadScript("/path/to/file/filename.js")
true
>jsFunction(<parameters>)
<Returns the results as expected>
Aber wenn ich versuche, dasselbe im nicht interaktiven Modus zu tun, schlägt es fehl:
$ geth --exec 'loadScript("/path/to/file/filename.js")' attach ipc:/path/to/ipc
true
$ geth --exec 'jsFunction(<parameters>)' attach ipc:/path/to/ipc
ReferenceError: 'jsFunction' is not defined
at <anonymous>:1:1
Ich habe den gleichen Befehl (geth --exec) mit normalen web3.js-Funktionen wie eth.getTransaction , eth.getBlock ausgeführt und es funktioniert gut. Ich verstehe nicht, was an der Ausführung benutzerdefinierter Skripts falsch ist. Unterstützt der Geth-Client diese Funktionalität? Übersehe ich etwas?
PS: Ich betreibe eine private Blockchain, habe aber --datadir , --networkid und --genesis usw. in den obigen Befehlen aus Gründen der Lesbarkeit nicht erwähnt.
Jeder Geth- Exec startet einen Interpreter. Wenn Sie also eine Funktion in der ersten definieren, ist sie in der zweiten nicht verfügbar ... Bitte führen Sie sie in einer Exec zusammen:
Um zusammenzufassen:
geth --exec 'loadScript("/path/to/file/filename.js"); jsFunction(...)' attach
Das hat auch funktioniert:
geth --exec "loadscript(\"/path/to/file/filename.js\");jsFunction(<params>)" attach ipc:/path/to/ipc
Ismael
geth --exec 'loadscript("/path/to/file/filename.js"); jsFunction(<params>); ' attach ipc:/path/to/ipc
Ellis