Ejecutar niebla sin descargar blockchain

¿Cómo evito mistdescargar la cadena de bloques?

Tengo un disco duro pequeño y no puedo pagar el espacio en disco.

Respuestas (2)

Usandoparity

Puede parityemular gethel IPC de (es decir, pretender ser geth), ejecutando:

parity --light --geth

Si quieres ser perezoso, puedes agregar a tu archivo de configuración :

[parity]
light = true
geth = true

Luego comience la niebla como:

mist  --syncmode light

Si obtiene una pantalla en blanco cuando se mistcarga, consulte aquí .

Usandogeth

La ejecución geth --lightno descargará la cadena de bloques, sino que consultará otros nodos en busca de cualquier información contenida en la cadena de bloques.

Me tomó un poco de investigación averiguar cómo usar mistwith geth --light, pero la respuesta es comenzar primero geth:

geth --light

Luego inicia la niebla, diciéndole que use el nodo en modo de luz:

mist  --syncmode light

Debería poder simplemente ejecutar , pero este problema actualmente lo impide .mist --node-light

Como una solución alternativa para los usuarios de Linux, basada en el script de @pparent76 , se me ocurrió:

#!/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

Llame al script "emist" para que no se llame a sí mismo recursivamente :)


Cinturón de seguridad extra:

Dado que geth no admite un archivo de inicio , es posible que desee asegurarse de que geth no se inicie sin usar --light.

Asegúrese de que geth no pueda crear un archivo de bloqueo en la base de datos de blockchain:

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

Esto eliminará cualquier dato de blockchain ya descargado y volverá a crear el directorio sin permisos de escritura.

En Windows, puede eliminar los permisos de escritura para el usuario actual haciendo clic con el botón derecho en el directorio chaindata, seleccionando "Propiedades" y luego "Permisos" y desmarcando los permisos de "escritura" para el usuario actual.

Si luego trato de ejecutar gethsin --light, obtengo:

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

Esto es deseable porque:

  • Evita cualquier descarga de blockchain
  • Me recuerda a correr gethcon--light
  • Asegura que no necesito limpiar ningún dato de cadena de bloques descargado parcialmente.