как разблокировать аккаунт с помощью geth?

когда я использую интерфейс web3 для входа в сообщения, он говорит мне, что учетная запись должна быть разблокирована, как я могу управлять этим с помощью geth и что именно означает разблокировка?

Я попробовал эту команду geth --unlock "ACCOUNT_PUBLIC_ADDRESS" --password "PASSWORD" и получил ошибку: разблокировка учетной записи с доступом по http запрещена Затем я попытался разблокировать учетную запись, введя эту команду personal.unlockAccount(eth.accounts[0], «1234», 9000) на консоли javascript, но по-прежнему возникает та же ошибка: разблокировка учетной записи с доступом по http запрещена

Ответы (3)

По умолчанию ваши учетные записи в Geth «заблокированы», что означает, что вы не можете отправлять транзакции с них. Вам нужно разблокировать учетную запись, чтобы отправлять транзакции с нее через Geth напрямую или через RPC (хотя web3 этого не поддерживает). Чтобы разблокировать учетную запись, вам необходимо указать пароль, который используется для расшифровки закрытого ключа, связанного с вашей учетной записью, что позволяет вам подписывать транзакции.

С учетом сказанного, как вы разблокируете учетную запись? Есть несколько разных способов сделать это, которые выделены в документации Geth . Предоставлю обзор:

  1. Разблокируйте учетную запись при запуске Geth. Параметр пароля является необязательным. Если вы его не предоставите, вам будет предложено ввести пароль.

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

  2. Разблокируйте учетную запись с помощью интерактивной консоли Javascript Geth. Опять же, пароль не является обязательным. Если вы его не укажете, вам будет предложено ввести его. Обратите внимание, что в более ранних версиях Geth указание пароля в качестве параметра приводило к тому, что пароль отображался в журнале Geth, что может быть проблемой безопасности. .

    personal.unlockAccount(address, "password")

Следует отметить, что ввод пароля неинтерактивно сохраняет пароль в открытом виде в истории консоли. Это действительно не следует использовать, поскольку это открывает вектор атаки.
geth --unlockэто способ сделать это, я думаю web3, все ваши входные данные будут регистрироваться в журнале
Я делаю команду вроде этой «geth --unlock (0x3b3F14690C8Fb8b1B333Ff38961bdEEa658a3873)», но она говорит мне, что «неверный адрес или индекс учетной записи» (0x3b3F14690C8Fb8b1B333Ff38961bdEEa658a3873)», почему?
удалите скобки, тогда это должно работать: geth --unlock 0x3b3F14690C8Fb8b1B333Ff38961bdEEa658a3873не то чтобы это запрашивает пароль, и запрос пароля может быть скрыт где-то в массе вывода во время запуска geth, например 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(попробуйте найти слово Passphraseв приведенном выше выводе;) )
вы также можете использовать файл для своего пароля, например: --unlock "0x4ae4ddbf073ff57e5861490d72f9177d9039428a" --password "d:\\p.txt"
Правильный способ разблокировать учетную запись в geth geth unlock 0x4ae4ddbf073ff57e5861490d72f9177d9039428a,0x4ae4ddbf073ff57e5861490d72f9177d9039428b,0x4ae4ddbf073ff57e5861490d72f9177d9039428c--password <passwordFile> . passwordFile должен содержать пароль, по одному паролю в каждой строке.
Итак, если вы можете разблокировать его, как вы снова его заблокируете? :п
@Kebman, вы можете указать время, когда он будет разблокирован.
@kebman с помощью присоединения или консоли: personal.unlockAccount(address, "password", 0)оставить разблокированным, пока вы не заблокируете его вручную. personal.unlockAccount(address, "password", 300)для автоматической блокировки через 300 секунд. Вы, конечно, можете добавить пароль, но это не рекомендуется. (И не оставлять его разблокированным на неопределенный срок.) personal.lockAccount()В наши дни обычно работает блокировка вручную.
@bshea Обратите внимание: если вы хотите использовать автоматическую блокировку, но не хотите передавать свой пароль в качестве параметра, вы также можете использоватьpersonal.unlockAccount("address", undefined, 300)
Примечание: если вы получили сообщение "Разблокировка учетной записи с HTTP-доступом запрещена!" Вы должны запустить узел Geth через https или (НЕ ДЛЯ ПРОИЗВОДСТВА) запустить с дополнительным параметром:--allow-insecure-unlock

Просто чтобы добавить к отличному принятому ответу.

Вы также можете разблокировать учетную запись напрямую из Web3:

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

И заблокируйте его обратно:

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

Для более подробной информации обратитесь к web3-eth-personalмодулю.

что именно означает разблокировка?

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

⚠ Это означает, что вы должны проявлять особую осторожность, чтобы никому не позволять доступ к вашему узлу Geth через HTTP-RPC, WS-RPC или IPC, потому что эти интерфейсы позволяют передавать эфир с любого разблокированного аккаунта ! ⚠

web3.personal.unlockAccount('prviatekey');должен работать без параметра адреса