Как импортировать простой закрытый ключ в geth или Mist?

Это такой простой вопрос, но я не могу понять, как импортировать простой незашифрованный закрытый ключ в гет или туман?

Я пробовал geth account import 7[......]bla, но кажется, что эта команда всегда ищет незашифрованный ключевой файл.

Любые идеи?

Ответы (7)

Вставьте ключ в текстовый файл, сохраните его на диск и используйте путь к этому файлу с расширением geth account import. Вот несколько примеров инструкций для Windows, которые могут помочь:

  1. Открыть Блокнот
  2. Вставьте ключ в блокнот без лишних символов и кавычек
  3. Сохраните файл как nothing_special_delete_me.txtвC:\
  4. Запустите команду,geth account import C:\nothing_special_delete_me.txt
  5. После успешного импорта удалите файл по адресуC:\nothing_special_delete_me.txt

Если вы еще не установили geth, выполните следующие шаги после шага 3 и перейдите к шагу 4:

  • Откройте командную строку (cmd.exe).
  • В командной строке введите следующую команду, чтобы перейти в папку, содержащую файл Geth.exe: cd c:\Ethereum-Wallet-win64-0-7-3\resources\node\geth(вставьте правильный путь)
Я получаю Fatal: keyfile must be given as argument, делая то же самое. PS: я работаю на Linux Macine.

Используйте следующую команду в консоли geth

web3.personal.importRawKey("<Private Key>","<New Password>")
По умолчанию web3.js не включает personalметоды. См. ethereum.stackexchange.com/questions/1413/… для получения дополнительной информации .

У Mist нет возможности импортировать через графический интерфейс, поэтому вам нужно импортировать с помощью командной строки ( geth). Он сразу же появится в вашем тумане.

Для Mac:

  1. Открыть текстПравить

  2. Вставьте ключ в TextEdit без лишних символов и кавычек

  3. Сохраните файл как nothing_special_delete_me.txtна рабочий стол

  4. Откройте терминал, выполните команду:

    geth account import ~/Desktop/nothing_special_delete_me.txt
    
  5. После успешного импорта удалите файл с рабочего стола.

«Вставьте ключ в текстовый файл»… как я могу увидеть свой закрытый ключ, прежде чем копировать/вставлять его куда-нибудь? В Тумане нет возможности взять такую ​​информацию?
@metafl - если у вас есть учетная запись в тумане, вам не нужно импортировать ее в geth. Это уже есть. это объясняет, где находятся ваши туманные ключи, но это не необработанные закрытые ключи, а зашифрованные файлы хранилища ключей. эфириум.stackexchange.com/questions/946/…
bashпользователи : одношаговый ответ здесь .
@TomHale Причина, по которой рекомендуется использовать внешний файл, заключается в том, что при таком способе ваш закрытый ключ будет сохранен в вашем .bash_history, что для большинства неожиданно и потенциально плохо.

Для Linux:

когда вы загрузите кошелек тумана, вы получите папку. Внутри папки находится туманный кошелек. После того, как вы запустите кошелек тумана, вам нужно войти в cli.

Иди, /whereveryousavedtheetherumfolder/node/resource/geth/а потом беги ./geth account import privekey-file.txt.

Это не работает в моем случае, я получаю Fatal: keyfile must be given as argument> я все еще не могу решить эту проблему.

Отметив популярность этого вопроса, я пошел дальше и создал инструмент, с помощью которого, если у вас есть необработанный закрытый ключ, вы можете легко преобразовать его в аналог открытого ключа и производный адрес Ethereum.

Затем вы можете экспортировать ключ в соответствующем формате, определенном здесь , чтобы его можно было использовать с Geth или Parity.

Введите свой закрытый ключ введите описание изображения здесь

Экспортируйте свой ключевой файл введите описание изображения здесь

Тем не менее, я думаю, стоит отметить, что вы все равно не должны работать со своим закрытым ключом напрямую. Ваш закрытый ключ контролирует доступ к вашей учетной записи.

ПРИМЕЧАНИЕ. При использовании подобных инструментов отправка вашего закрытого ключа любому третьему лицу дает им полный доступ к содержимому вашего кошелька.
Это не совсем так. Если бы мы сохранили ваш закрытый ключ, то получили бы доступ к вашей учетной записи. Мы НЕ сохраняем ваш закрытый ключ. Тем не менее, пункт остается в силе - вы всегда должны быть осторожны и осторожны со своим закрытым ключом.

Используйте этот метод только для одноразовых тестовых учетных записей, так как ваш ключ будет храниться в истории вашей оболочки (спасибо @tayvano).

Используя bash, где abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcaваш закрытый ключ:

geth account import <(echo abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabca)
Причина, по которой рекомендуется использовать внешний файл, заключается в том, что при таком способе ваш закрытый ключ будет сохранен в вашем .bash_history, что для большинства неожиданно и потенциально плохо.

С помощью Gethвы можете импортировать предварительно определенные адреса (пары ключей), используя --preloadопцию geth consoleкоманды.

Для непроизводственной среды может быть удобно добавлять/импортировать предварительно определенные адреса, выделять достаточно начальных балансов и автоматически разблокировать эти учетные записи. Для этой цели вы можете использовать allocсвойство объекта генезиса, --preloadопцию с API консоли geth.

Например, если у вас есть следующие предварительно определенные адреса, сгенерированные ранее (вы можете использовать онлайн-генераторы или библиотеки, такие как eth-accountв Python.

private-key, address
ba75c5fd16ae1151dc9f961e94e219994c6335a5b4148c624142243fb76306d6, 0xd3ae0500e21008c89ca4746be7522340c67f5730
097dd6aedb87b3b5e541cfb9ef8d4beb7a66084dd80d99c2e51aeabeae320980, 0x76aaacd6169017644ba7530b7d956e1fcc0178ad
abae82647f5881a398f7eede8910803d65470a7cbaee9ddda90dcdcdc8dcdacf, 0xeb875bb0eec43d779c4d539ca34e89fb0868d867
cc1af47cbc9de0c9a1e1049c1a62ddb9e08440d16093803d74e93f1cea3458ee, 0x0ccca39f9c169996c8380bf7c529dc3b9ff6198a
3e48c4e748b8f5baf6f870c5c4d2a0147390c94e778a9ca67de945bffeb2f72a, 0xd738b71007cffbec9b0a7e99088b132858f5e270

Ниже приведен скрипт для импорта вышеуказанных учетных записей (ключей/адресов), их разблокировки и запуска майнера с использованием первой учетной записи.


var passphrase = 'none';
var accts = personal.listAccounts;
if (accts.length == 0){

  var keys = [
    "ba75c5fd16ae1151dc9f961e94e219994c6335a5b4148c624142243fb76306d6",
    "097dd6aedb87b3b5e541cfb9ef8d4beb7a66084dd80d99c2e51aeabeae320980",
    "abae82647f5881a398f7eede8910803d65470a7cbaee9ddda90dcdcdc8dcdacf",
    "cc1af47cbc9de0c9a1e1049c1a62ddb9e08440d16093803d74e93f1cea3458ee",
    "3e48c4e748b8f5baf6f870c5c4d2a0147390c94e778a9ca67de945bffeb2f72a"
  ]

  for(var i = 0; i < keys.length; i++){ 
    personal.importRawKey(keys[i], passphrase);
  }
  
  console.log('Successfully imported ', keys.length, ' keys into the keystore');
  accts = personal.listAccounts;
}

for(var i = 0; i < accts.length; i++){
  personal.unlockAccount(accts[i], passphrase);
}
console.log('Successfully unlocked ', accts.length, ' accounts');

miner.setEtherbase(accts[0])
miner.start(1)
console.log('Miner started for ', accts[0]);

В приведенном выше скрипте , , personal.listAccounts, personal.importRawKey()и являются консольными API geth.personal.unlockAccount()miner.setEtherbase()miner.start

personal.importRawKey()API постоянно импортирует указанный ключ и адрес, поэтому его достаточно вызвать один раз. Но personal.unlockAccount()не является постоянным, а действует до текущего экземпляра geth. Таким образом, разблокировка необходима всякий раз, когда гет запускается.

Чтобы выполнять приведенный выше скрипт( geth-setup.js) каждый раз при запуске geth, --preloadможно использовать опцию.

$ geth --datadir ./data --nodiscover --verbosity 2 --allow-insecure-unlock \
     --preload ./scripts/geth-setup.js \
     --http --http.addr localhost --http.port 8545 console >> geth.log 2>&1

Не пропустите --allow-insecure-unlockвариант, чтобы избежать ошибки разрешения от personal.unlockAccount().

Аккаунты можно импортировать и разблокировать, как описано выше, но на них еще нет баланса. Чтобы выделить достаточное количество эфира для этих учетных записей, мы можем использовать allocсвойство конфигурации генезиса ( genesis.json). В текущем примере это genesis.jsonбудет выглядеть следующим образом.

{
  "config": {
    "chainId": 2021,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,    
    "muirglacierblock": 0,
    "ethash": {
      "fixeddifficulty": 100
    }
  },
  "nonce": "0x0",
  "difficulty": "0x60",
  "gasLimit": "0x1fffffffffffff",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {
    "d3ae0500e21008c89ca4746be7522340c67f5730": { "balance": "10000000000000000000000" },
    "76aaacd6169017644ba7530b7d956e1fcc0178ad": { "balance": "10000000000000000000000" },
    "eb875bb0eec43d779c4d539ca34e89fb0868d867": { "balance": "10000000000000000000000" },
    "0ccca39f9c169996c8380bf7c529dc3b9ff6198a": { "balance": "10000000000000000000000" },
    "d738b71007cffbec9b0a7e99088b132858f5e270": { "balance": "10000000000000000000000" }
  }
}

Этот блок генезиса используется перед импортом учетных записей. Но allocконфигурация (которая предназначена для учетных записей, еще не импортированных или созданных при создании блока генезиса) вступит в силу позже, когда учетные записи будут импортированы.