Go-Ethereum

如何在不影響我硬分叉的乙太坊鏈的情況下將乙太坊錢包和/或 geth 同步到乙太坊經典鏈?

  • May 18, 2017

geth我通常在硬分叉鏈上執行乙太坊錢包。對於DAO ETC提現,我也想同步乙太經典鏈。

如何在geth不影響我硬分叉的乙太坊鏈的情況下同步乙太坊錢包和/或乙太坊經典鏈?

密鑰庫

對於下面除最後一種之外的所有不同設置方法,將硬分叉鏈數據目錄下的密鑰庫目錄中的內容複製到經典鏈數據目錄。然後,您來自硬分叉鏈的帳戶應該會出現在您的 Ethereum Classic 鏈中。


用於“臨時”安裝的 Geth 執行檔

LinuxOS/X中,geth與 Ethereum Wallet 一起打包在 Ethereum Wallet install 目錄下的子目錄下resources/node/geth/geth

Linux中,我使用如下所示的軟連結,這樣我geth只需鍵入以下內容即可執行geth

ln -s /home/user/Ethereum-Wallet-linux64-0.8.1/resources/node/geth/geth /home/user/bin/geth

Windows中,geth.exe執行檔是resources\node\geth\geth.exe. 所以要開始geth.exe你必須執行:

C:\Ethereum\Ethereum-Wallet-win64-0-8-2\resources\node\geth\geth.exe [parameters]

不同的電腦或同一台電腦上的不同使用者

同步到經典鏈的最簡單方法是執行乙太坊錢包和/或geth在與硬分叉鏈不同的電腦上執行,或者在同一台電腦上以不同使用者身份執行。然後,您的鏈數據將保持分離。

正如 thedao.slack.com/messages/withdraw_support 上的@usukan提醒我的那樣,如果您在同一台電腦上使用不同的電腦或不同的使用者,您可以啟動乙太坊錢包,它會詢問您想要哪個鏈同步到。由於您在不同的電腦或不同使用者的目錄結構上,因此您不會破壞硬分叉的鏈數據。


geth使用不同的目錄執行

如果要同步geth到不同鏈目錄中的 Classic 鏈,只需指定以下參數:

geth --oppose-dao-fork --datadir ~/classicchain --fast console

初始同步後,您不必指定--fast--oppose-dao-fork參數。要確認您在 Classic 鏈上,您應該在啟動時看到以下消息geth

I0830 18:53:42.598087 cmd/utils/flags.go:843] Geth 目前配置為反對 DAO 硬分叉!


geth使用不同的目錄執行乙太坊錢包

這裡的重要因素是乙太坊錢包geth使用 IPC(程序間通信)文件進行通信。

Linux

在 Linux 上,您可以geth使用不同的鏈目錄執行,但您必須指定geth.ipc文件的預設位置。

geth --oppose-dao-fork --datadir ~/classicchain --fast --ipcpath ~/.ethereum/geth.ipc console

啟動乙太坊錢包。然後它將geth通過 IPC 文件進行通信。通過執行確認這一點ps -ef | grep geth,您應該只看到一次geth執行實例。

作業系統/X

與 Linux 相同,不同之處在於 for 的位置geth.ipc~/Library/Ethereum

視窗

乙太坊錢包geth在 Windows 上使用標準路徑進行通信,因此您不必為 IPC 文件指定路徑。

geth.exe從以下參數開始:

geth --oppose-dao-fork --datadir C:\ClassicChain --fast console

然後啟動乙太坊錢包。


重命名您的chaindata子目錄

在 Linux 中,如果您在硬分叉鏈上執行節點,請將節點切換到經典鏈:

user@Kumquat:~$ cd .ethereum
# Running hard-forked chain, syncing to Classic chain the first time
user@Kumquat:~/.ethereum$ mv chaindata chaindata_hardforked
user@Kumquat:~/.ethereum$ geth --oppose-dao-fork --fast console

# Switch back to the hard-forked chain
user@Kumquat:~/.ethereum$ mv chaindata chaindata_classic
user@Kumquat:~/.ethereum$ mv chaindata_hardforked chaindata
user@Kumquat:~/.ethereum$ geth console

# Switch to the Classic chain
user@Kumquat:~/.ethereum$ mv chaindata chaindata_hardforked
user@Kumquat:~/.ethereum$ mv chaindata_classic chaindata
user@Kumquat:~/.ethereum$ geth console

在 OS/X 中,您可以使用上面的說明,但乙太坊鏈數據子目錄的位置在~/Library/Ethereum

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