Как Mist получает доступ ко всем учетным записям в частном узле блокчейна Geth?

У меня есть частный узел блокчейна, размещенный где-то в облаке. И я использую Mist для доступа к учетным записям внутри этого узла.

Поскольку это частный узел, я просто храню закрытый ключ внутри этого узла, и я полностью осознаю, что это небезопасно — для меня это просто игровая площадка. Конечно, я не собираюсь делать это для основной сети/производства.

Когда я запустил Mist с помощью следующей команды, Mist волшебным образом отобразил все учетные записи, которые у меня есть внутри этого узла (на нем работает Geth):

$ /Applications/Mist.app/Contents/MacOS/Mist --rpc http://xxx.xxx.xxx.xxx:8545 --swarmurl null

Из любопытства у меня следующие вопросы:

  1. Как Mist смог получить доступ ко всем учетным записям, которые у меня есть внутри этого узла?
  2. Означает ли это, что Mist также может видеть закрытые ключи внутри этого узла?
  3. Кроме флагов --rpcи --swarmurl, где я могу получить все доступные флаги Mist CLI?

Ответы (1)

Как Mist смог получить доступ ко всем учетным записям, которые у меня есть внутри этого узла?

Geth RPC предоставляет стандартное eth_*пространство имен методов, которое включает вызов eth_accounts . В нем перечислены все доступные учетные записи на узле.

Означает ли это, что Mist также может видеть закрытые ключи внутри этого узла?

Нет, это невозможно. Если указан пароль или учетная запись уже разблокирована, Mist может подписывать транзакции, но не может получить доступ к ключу.

Кроме флагов --rpc и --swarmurl, где я могу получить все доступные флаги Mist CLI?

Usage: /Applications/Mist.app/Contents/MacOS/Mist --help [Mist options] [Node
options]

Mist options:
  --mode, -m              App UI mode: wallet, mist.  [string] [default: "mist"]
  --node                  Node to use: geth, eth        [string] [default: null]
  --network               Network to connect to: main, test
                                                        [string] [default: null]
  --rpc                   Path to node IPC socket file OR HTTP RPC hostport (if
                          IPC socket file then --node-ipcpath will be set with
                          this value).                                  [string]
  --swarm                 Enable Swarm on start.                       [boolean]
  --swarmurl              URL serving the Swarm HTTP API. If null, Mist will
                          open a local node.
                                     [string] [default: "http://localhost:8500"]
  --gethpath              Path to Geth executable to use instead of default.
                                                                        [string]
  --ethpath               Path to Eth executable to use instead of default.
                                                                        [string]
  --ignore-gpu-blacklist  Ignores GPU blacklist (needed for some Linux
                          installations).                              [boolean]
  --reset-tabs            Reset Mist tabs to their default settings.   [boolean]
  --loglevel              Minimum logging threshold: info, debug, error, trace
                          (shows all logs, including possible passwords over
                          IPC!).                      [string] [default: "info"]
  --syncmode              Geth synchronization mode: [fast|light|full|nosync]
                                                                        [string]
  --version, -v           Display Mist version.                        [boolean]
  --skiptimesynccheck     Disable checks for the presence of automatic time sync
                          on your OS.                                  [boolean]

Node options:
  -  To pass options to the underlying node (e.g. Geth) use the --node- prefix,
     e.g. --node-datadir

Options:
  -h, --help  Show help                                                [boolean]