Interactive use: the JSRE REPL Console
ethereum CLI executable
attach subcommand. The
console subcommands starts the geth node and then opens the console. The
attach subcommand will not start the geth node but instead tries to open the console on a running geth instance.
$ geth console $ geth attach
The attach node accepts an endpoint in case the geth node is running with a non default ipc endpoint or you would like to connect over the rpc interface.
$ geth attach /some/custom/path.ipc $ geth attach http://188.8.131.52:8545 $ geth attach ws://184.108.40.206:8546
Note that by default the geth node doesn’t start the http and weboscket service and not all functionality is provided over these interfaces due to security reasons. These defaults can be overridden when the
--wsapi arguments when the geth node is started, or with admin.startRPC and admin.startWS.
If you need log information, start with:
$ geth --verbosity 5 console 2>> /tmp/eth.log
Otherwise mute your logs, so that it does not pollute your console:
$ geth console 2> /dev/null
$ geth --verbosity 0 console
--preload argument. This can be used to load often used functions, setup web3 contract objects, or …
geth --preload "/my/scripts/folder/utils.js,/my/scripts/folder/contracts.js" console
Non-interactive use: JSRE script mode
attach subcommand accept the
$ geth --exec "eth.blockNumber" attach
This prints the current block number of a running geth instance.
Or execute a local script with more complex statements on a remote node over http:
$ geth --exec 'loadScript("/tmp/checkbalances.js")' attach http://220.127.116.11:8545 $ geth --jspath "/tmp" --exec 'loadScript("checkbalances.js")' attach http://18.104.22.168:8545
--jspath <path/to/my/js/root> to set a libdir for your js scripts. Parameters to
loadScript() with no absolute path will be understood relative to this directory.
You can exit the console cleanly by typing
exit or simply with
The go-ethereum JSRE uses the Otto JS VM which has some limitations:
"use strict"will parse, but does nothing.
- The regular expression engine (re2/regexp) is not fully compatible with the ECMA5 specification.
Note that the other known limitation of Otto (namely the lack of timers) is taken care of. Ethereum JSRE implements both
setInterval. In addition to this, the console provides
admin.sleep(seconds) as well as a “blocktime sleep” method
web3.js uses the
bignumber.js library (MIT Expat Licence), it is also autoloded.
In addition to the full functionality of JS (as per ECMA5), the ethereum JSRE is augmented with various timers. It implements
clearTimeout you may be used to using in browser windows. It also provides implementation for
admin.sleep(seconds) and a block based timer,
admin.sleepBlocks(n) which sleeps till the number of new blocks added is equal to or greater than
n, think “wait for n confirmations”.
Beside the official DApp API interface the go ethereum node has support for additional management API’s. These API’s are offered using JSON-RPC and follow the same conventions as used in the DApp API. The go ethereum package comes with a console client which has support for all additional API’s.