Go-Ethereum
通過非互動式控制台(geth –exec)執行自定義 JavaScript 片段
我有一個 JavaScript 片段來獲取與帳戶之間的最新交易。啟動 geth 實例後,我在互動式 JS 控制台中執行此操作:
jsFunction 是 filename.js 中的一個函式
>loadScript("/path/to/file/filename.js") true >jsFunction(<parameters>) <Returns the results as expected>
但是當我嘗試使用非互動模式做同樣的事情時,它失敗了:
$ 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
我用普通的 web3.js 函式(如eth.getTransaction、eth.getBlock)執行了相同的命令(geth –exec),它執行良好。我不明白執行自定義腳本有什麼問題。geth 客戶端是否支持此功能?我錯過了什麼嗎?
PS:我正在執行一個私有區塊鏈,但為了便於閱讀,在上述命令中沒有提到*–datadir*、–networkid和*–genesis等。*
每個 geth exec啟動一個解釋器。因此,如果您將一個函式定義為第一個函式,則第二個函式將不可用…請將它們合併到一個 exec 中:
總結一下:
geth --exec 'loadScript("/path/to/file/filename.js"); jsFunction(...)' attach
這也有效:
geth --exec "loadscript(\"/path/to/file/filename.js\");jsFunction(<params>)" attach ipc:/path/to/ipc