Mist

如何將 Mist 連接到遠端專用網路?

  • April 15, 2016

我在這裡看到了將 Mist 連接到私人網路的選項

geth --networkid 1234 --ipcpath /Users/you/Library/Ethereum/geth.ipc

看起來路徑在程式碼中的某處被硬編碼。

如何將 Mist 連接到遠端的專用網路?

看起來路徑在程式碼中的某處被硬編碼。

是的。Mist 連接被硬編碼為僅使用 IPC,而不是 RPC。

user@Kumquat:~/EthereumSource/mist$ find . -iname '*ipc*'
./tests/mocha-in-browser/spec/ipc-spec.js
./modules/ipc
./modules/ipc/ipcProviderBackend.js
./modules/ipc/ipcProviderWrapper.js
./modules/ipc/getIpcPath.js
./modules/ipcCommunicator.js
user@Kumquat:~/EthereumSource/mist$ find . -iname '*rpc*'
./nodes/eth/darwin-x64/libjsonrpccpp-client.0.dylib
./nodes/eth/darwin-x64/libjsonrpccpp-server.0.dylib
./nodes/eth/darwin-x64/libjsonrpccpp-common.0.dylib
./nodes/eth/darwin-x64/libweb3jsonrpc.dylib

您的 IPC 路徑可以在modules/ipc/getIpcPath.js 第 7 到 24 行中找到

module.exports = function() {
   var p = require('path');
   var path = global.path.HOME;

   if(process.platform === 'darwin')
       path += '/Library/Ethereum/geth.ipc';

   if(process.platform === 'freebsd' ||
      process.platform === 'linux' ||
      process.platform === 'sunos')
       path += '/.ethereum/geth.ipc';

   if(process.platform === 'win32')
       path = '\\\\.\\pipe\\geth.ipc';

   console.log('CONNECT to IPC PATH: '+ path);
   return path;
};

通過在本地電腦上打開一個文件描述符,通過 IPC 進行Mist 和geth通信,然後通過該文件描述符相互發送消息。所以目前沒有遠端連接。


如何將 Mist 連接到遠端的專用網路?

您可以嘗試使用 P2P 協議將本地實例連接到geth遠端geth節點,然後geth使用 IPC 將 Mist 連接到本地實例。

換句話說,只需讓您的本地電腦成為​​您專用網路中的另一個節點。

您可以安裝單獨安裝的 副本geth,或使用geth與 Mist 一起打包的,可在以下目錄中找到:

  • {MISTINSTALLDIRECTORY}/resources/node/geth/geth適用於 Linux 和 Mac OS X
  • {MISTINSTALLDIRECTORY}\resources\node\geth\geth.exe適用於 Windows

如果您的專用網路具有 –networkid {xyz} 和自定義創世文件,請使用--networkid {xyz}and --genesis {custom genesis file}

接下來是讓您的本地geth節點與您的專用網路節點對話。這必須使用--bootnodes或創建文件static-nodes.jsontrusted nodes在您的數據目錄中完成。請記住添加--maxpeers {x}一個非零 {x},因為從命令行省略它似乎會阻止建立連接。

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