como desbloquear la cuenta con geth?

cuando uso la interfaz web3 para iniciar sesión en msgs, me dice que la cuenta debe desbloquearse, ¿cómo puedo manejar esto con geth y qué significa exactamente desbloquear?

Probé este comando geth --unlock "ACCOUNT_PUBLIC_ADDRESS" --password "PASSWORD" y obtuve el error: el desbloqueo de la cuenta con acceso http está prohibido Luego traté de desbloquear la cuenta escribiendo este comando personal.unlockAccount(eth.accounts[0], '1234', 9000) en la consola de javascript pero aún recibí el mismo error: el desbloqueo de cuenta con acceso http está prohibido

Respuestas (3)

De manera predeterminada, sus cuentas en Geth están "bloqueadas", lo que significa que no puede enviar transacciones desde ellas. Debe desbloquear una cuenta para enviar transacciones desde ella a través de Geth directamente o mediante RPC (aunque web3 no admite esto). Para desbloquear una cuenta, deberá proporcionar la contraseña, que se utiliza para descifrar la clave privada asociada con su cuenta, lo que le permite firmar transacciones.

Dicho esto, ¿cómo se desbloquea una cuenta? Hay un par de formas diferentes de hacerlo, que se destacan en la documentación de Geth . Voy a proporcionar una descripción general:

  1. Desbloquea la cuenta cuando ejecutas Geth. El parámetro de contraseña es opcional. Si no la proporciona, se le pedirá que escriba la contraseña.

    geth --unlock <YOUR_ACCOUNT_ADDRESS> --password <YOUR_PASSWORD>

  2. Desbloquee la cuenta desde la consola Javascript interactiva de Geth. De nuevo, la contraseña es opcional. Si no la proporciona, se le pedirá que la escriba. Tenga en cuenta que en versiones anteriores de Geth, proporcionar la contraseña como parámetro haría que la contraseña apareciera en el registro de Geth, lo que puede ser un problema de seguridad. .

    personal.unlockAccount(address, "password")

Cabe señalar que al ingresar la contraseña de forma no interactiva, se almacena la contraseña en texto sin formato en el historial de la consola. Esto realmente no debería usarse ya que abre un vector de ataque.
geth --unlockes la forma de hacerlo, supongo web3que registrará todas sus entradas en el registro
Hago el comando así "geth --unlock (0x3b3F14690C8Fb8b1B333Ff38961bdEEa658a3873)", pero me dice que "dirección de cuenta o índice no válido' (0x3b3F14690C8Fb8b1B333Ff38961bdEEa658a3873)'", ¿por qué?
elimine los corchetes, entonces debería funcionar: geth --unlock 0x3b3F14690C8Fb8b1B333Ff38961bdEEa658a3873no es que esto le solicite una contraseña y la solicitud de contraseña podría estar oculta en algún lugar en la masa de salida durante el inicio de geth, por ejemplo Unlocking account 0xb2... | Attempt 1/3 Passphrase: I0522 12:30:46.360237 node/node.go:298] IPC endpoint opened: /home/someone/.ethereum/geth.ipc I0522 12:30:46.836509 p2p/nat/nat.go:111] mapped network port tcp:30303 -> 30303 (ethereum p2p) using UPNP IGDv1-IP11(Intente encontrar la palabra Passphraseen la salida anterior;) )
también puede usar un archivo para su contraseña como: --unlock "0x4ae4ddbf073ff57e5861490d72f9177d9039428a" --password "d:\\p.txt"
La forma correcta de desbloquear una cuenta en geth es geth unlock 0x4ae4ddbf073ff57e5861490d72f9177d9039428a,0x4ae4ddbf073ff57e5861490d72f9177d9039428b,0x4ae4ddbf073ff57e5861490d72f9177d9039428c--password <passwordFile> . passwordFile debe contener la contraseña, una contraseña en cada línea.
Entonces, si puedes desbloquearlo, ¿cómo lo vuelves a bloquear? :pags
@Kebman puede especificar el tiempo para mantenerlo desbloqueado
@kebman usando Attach o Console: personal.unlockAccount(address, "password", 0)para dejarlo desbloqueado hasta que lo vuelvas a bloquear manualmente. personal.unlockAccount(address, "password", 300)para bloquearse automáticamente después de 300 segundos. Por supuesto, puede agregar una contraseña, pero no se recomienda. (Tampoco mantenerlo desbloqueado indefinidamente). personal.lockAccount()Por lo general, estos días funciona para bloquear manualmente.
@bshea Tenga en cuenta que si desea usar el bloqueo automático pero no quiere pasar su contraseña como parámetro, también puede usarpersonal.unlockAccount("address", undefined, 300)
Nota: si obtuviste "El desbloqueo de cuenta con acceso HTTP está prohibido". Debe ejecutar el nodo Geth sobre https o (NO PARA PRODUCCIÓN) ejecutar con un parámetro adicional:--allow-insecure-unlock

Solo para agregar a la excelente respuesta aceptada.

También puedes desbloquear la cuenta desde Web3 directamente:

web3.personal.unlockAccount('0xE0ca...c1f7', 'mypass')

Y bloquearlo de nuevo:

web3.personal.lockAccount('0xE0ca...c1f7')

Para más detalles, consulte el web3-eth-personalmódulo.

¿Qué significa exactamente desbloquear?

Una implementación de nodo Geth contiene una gestión de cuentas integrada, es decir, mantiene la clave privada de la cuenta , que se almacena en el disco de forma cifrada. Desbloquear una cuenta significa descifrar su clave privada y almacenarla en la memoria (nunca se almacena descifrada en el disco).

⚠ ¡Esto significa que debe tener mucho cuidado de no permitir que nadie acceda a su nodo Geth a través de HTTP-RPC, WS-RPC o IPC, ya que estas interfaces permiten transferir ether desde cualquier cuenta desbloqueada ! ⚠

web3.personal.unlockAccount('prviatekey');debería funcionar sin el parámetro de dirección