Using geth

Running geth --light will not download the blockchain, but instead query other nodes for any information contained in the blockchain.

It took me quite a bit of investigation to work out how to use mist with geth --light , but the answer is to first start geth :

geth --light

Then start mist, telling it to use the node in light mode:

mist --syncmode light

You should be able to just run mist --node-light , but this issue is currently preventing it.

As a work-around for linux users, based on @pparent76's script, I came up with:

#!/bin/bash # Work around for issues: # https://github.com/ethereum/mist/issues/2254 # https://github.com/ethereum/mist/issues/2372 # https://github.com/ethereum/mist/issues/2999 set -eu # For script robustness geth=$(which geth) mist=$(which mist) # Change to explicit path if you call this script "mist" # Use pidof as procps' pgrep is broken: # sleep 1& pgrep -ax '^sleep$' should return null if ! geth_pid=$(pidof geth); then echo "Starting $geth." "$geth" --syncmode light & else echo "Geth is already running with PID(s): $geth_pid" fi if ! mist_pid=$(pidof mist); then echo "Starting $mist." "$mist" --light-node else echo "Mist is already running with PID(s): $mist_pid" fi

Call the script "emist" so it doesn't recursively call itself :)

Bonus safety seatbelt:

Since geth doesn't support a startup file, you may want to ensure that geth will not start without using --light .

Ensure geth cannot create a lock file on the blockchain database:

rm -rf ~/.ethereum/geth/chaindata/ && mkdir -m 000 ~/.ethereum/geth/chaindata/

This will remove any already downloaded blockchain data, and recreate the directory without write permissions.

In Windows, you can remove the write permissions for the current user by right-clicking on the chaindata directory, selecting "Properties" then "Permissions" and unticking "write" permissions for the current user.

If I then try to run geth without --light , I get:

Fatal: Error starting protocol stack: open /home/ravi/.ethereum/geth/chaindata/LOCK: permission denied

This is desirable because it: