Go-Ethereum

在不下載區塊鏈的情況下執行霧

  • September 25, 2017

如何防止mist下載區塊鏈?

我有一個小硬碟,買不起磁碟空間。

使用parity

您可以通過執行parityemulategeth的 IPC(即假裝是geth):

parity --light --geth

如果你想偷懶,你可以添加到你的配置文件中

[parity]
light = true
geth = true

然後開始霧:

mist  --syncmode light

如果mist載入時出現空白螢幕,請參見此處

使用geth

執行geth --light不會下載區塊鏈,而是向其他節點查詢區塊鏈中包含的任何資訊。

我花了很多時間研究如何使用mistwith geth --light,但答案是首先開始geth

geth --light

然後啟動mist,告訴它在light模式下使用節點:

mist  --syncmode light

應該可以執行mist --node-light,但這個問題目前正在阻止它。

作為 linux 使用者的解決方法,基於@pparent76’s script,我想出了:

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

呼叫腳本“emist”,這樣它就不會遞歸呼叫自己:)


額外安全安全帶:

由於geth 不支持啟動文件,您可能需要確保 geth 在不使用--light.

確保 geth 無法在區塊鏈數據庫上創建鎖定文件:

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

這將刪除任何已下載的區塊鏈數據,並在沒有寫入權限的情況下重新創建目錄。

在 Windows 中,您可以通過右鍵點擊 chaindata 目錄,選擇“屬性”然後選擇“權限”並取消選中目前使用者的“寫入”權限來刪除目前使用者的寫入權限。

如果我嘗試在geth沒有的情況下執行--light,我會得到:

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

這是可取的,因為它:

  • 阻止任何區塊鏈下載
  • 提醒我一起geth跑步--light
  • 確保我不需要清理任何部分下載的區塊鏈數據。

引用自:https://ethereum.stackexchange.com/questions/26992