Go-Ethereum
在不下載區塊鏈的情況下執行霧
如何防止
mist
下載區塊鏈?我有一個小硬碟,買不起磁碟空間。
使用
parity
您可以通過執行
parity
emulategeth
的 IPC(即假裝是geth
):parity --light --geth
如果你想偷懶,你可以添加到你的配置文件中:
[parity] light = true geth = true
然後開始霧:
mist --syncmode light
如果
mist
載入時出現空白螢幕,請參見此處。
使用
geth
執行
geth --light
不會下載區塊鏈,而是向其他節點查詢區塊鏈中包含的任何資訊。我花了很多時間研究如何使用
mist
withgeth --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
- 確保我不需要清理任何部分下載的區塊鏈數據。