Esta es una pregunta tan básica, pero no puedo entender cómo importar una clave privada simple y sin cifrar en geth o mist.
Lo intenté geth account import 7[......]bla
, pero parece que este comando siempre está buscando un archivo de claves sin cifrar.
¿Algunas ideas?
Pegue la clave en un archivo de texto, guárdelo en el disco y use la ruta a ese archivo con geth account import
. Aquí hay algunos ejemplos de instrucciones de Windows que pueden ayudar:
nothing_special_delete_me.txt
enC:\
geth account import C:\nothing_special_delete_me.txt
C:\nothing_special_delete_me.txt
Si aún no tiene instalado geth, realice los siguientes pasos después del paso 3 y continúe con el paso 4:
cd c:\Ethereum-Wallet-win64-0-7-3\resources\node\geth
(inserte su ruta correcta allí)Use el siguiente comando en la consola geth
web3.personal.importRawKey("<Private Key>","<New Password>")
personal
métodos. Consulte ethereum.stackexchange.com/questions/1413/… para obtener más información
.Mist no tiene forma de importar a través de GUI, por lo que debe importar usando la línea de comando ( geth
). Aparecerá en tu Niebla inmediatamente.
Para Mac:
Texto abiertoEditar
Pegue la clave en TextEdit sin caracteres ni comillas adicionales
Guarde el archivo como nothing_special_delete_me.txt
en su escritorio
Abra la Terminal, ejecute el comando:
geth account import ~/Desktop/nothing_special_delete_me.txt
Después de una importación exitosa, elimine el archivo de su escritorio.
bash
Usuarios : una respuesta de un solo paso está aquí .Para Linux:
cuando descargue la billetera de niebla, obtendrá una carpeta. Dentro de la carpeta es donde está la billetera de niebla. Después de ejecutar la billetera de niebla, debe ingresar a cli.
Ir a /whereveryousavedtheetherumfolder/node/resource/geth/
continuación, ejecutar ./geth account import privekey-file.txt
.
Fatal: keyfile must be given as argument
> Todavía no puedo resolverlo.Teniendo en cuenta la popularidad de esta pregunta, seguí adelante y construí una herramienta de tal manera que si tiene su clave privada sin procesar, puede convertirla fácilmente en su contraparte de clave pública y la dirección Ethereum derivada.
Luego puede exportar la clave en el formato apropiado como se define aquí , de modo que se pueda utilizar con Geth o Parity.
Dicho esto, creo que vale la pena señalar que, de todos modos, no debería trabajar directamente con su clave privada. Su clave privada controla el acceso a su cuenta.
Solo use este método para cuentas de prueba desechables, ya que su clave se almacenará en el historial de su shell (gracias a @tayvano).
Usando bash
, ¿dónde abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabca
está su clave privada?
geth account import <(echo abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabca)
Con Geth
, puede importar direcciones predefinidas (pares de claves) usando la --preload
opción de geth console
comando.
Para un entorno que no sea de producción , podría ser conveniente agregar/importar direcciones predefinidas, asignar suficientes saldos iniciales y desbloquear automáticamente esas cuentas. Puede usar alloc
la propiedad del objeto génesis, --preload
opción con la API de la consola geth para este propósito.
Por ejemplo, si tiene las siguientes direcciones predefinidas generadas anteriormente (puede usar generadores en línea o bibliotecas como eth-account
en Python.
private-key, address
ba75c5fd16ae1151dc9f961e94e219994c6335a5b4148c624142243fb76306d6, 0xd3ae0500e21008c89ca4746be7522340c67f5730
097dd6aedb87b3b5e541cfb9ef8d4beb7a66084dd80d99c2e51aeabeae320980, 0x76aaacd6169017644ba7530b7d956e1fcc0178ad
abae82647f5881a398f7eede8910803d65470a7cbaee9ddda90dcdcdc8dcdacf, 0xeb875bb0eec43d779c4d539ca34e89fb0868d867
cc1af47cbc9de0c9a1e1049c1a62ddb9e08440d16093803d74e93f1cea3458ee, 0x0ccca39f9c169996c8380bf7c529dc3b9ff6198a
3e48c4e748b8f5baf6f870c5c4d2a0147390c94e778a9ca67de945bffeb2f72a, 0xd738b71007cffbec9b0a7e99088b132858f5e270
A continuación se muestra el script para importar las cuentas anteriores (claves/direcciones), para desbloquearlas y para iniciar un minero con la primera cuenta.
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]);
En el script anterior, personal.listAccounts
, personal.importRawKey()
, personal.unlockAccount()
, miner.setEtherbase()
y miner.start
son las API de la consola de geth.
personal.importRawKey()
La API importa la clave y la dirección especificadas de forma persistente, por lo que es suficiente para llamarla una vez. Pero, personal.unlockAccount()
no es persistente pero es válido hasta la instancia actual de geth. Por lo tanto, el desbloqueo es necesario cada vez que se inicia un geth.
Para ejecutar el script anterior ( geth-setup.js
) cada vez que se ejecuta geth, --preload
se puede usar la opción.
$ 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
No te pierdas --allow-insecure-unlock
la opción, para evitar el error de permiso de personal.unlockAccount()
.
Las cuentas se pueden importar y desbloquear como se indica arriba, pero aún no tienen saldo. Para asignar suficiente éter a esas cuentas, podemos usar alloc
la propiedad de configuración de génesis ( genesis.json
). Con el ejemplo actual, genesis.json
sería como el siguiente.
{
"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" }
}
}
Este bloque de génesis se utiliza antes de la importación de cuentas. Pero la alloc
configuración (que es para las cuentas que aún no se han importado o creado cuando se crea el bloque de génesis) entrará en vigor más adelante cuando se importen las cuentas.
Prashant Prabhakar Singh
Fatal: keyfile must be given as argument
mientras hago lo mismo. PD: Estoy corriendo en linux macine.