Как разблокировать учетную запись с помощью закрытого ключа вместо пароля

Я работаю с https://github.com/ethereum/wiki/wiki/JSON-RPCAPI + curl.

И реализация пользовательского API с использованием этой php-библиотеки: https://github.com/Achse/geth-jsonrpc-php-client .

ниже метод отлично работает для разблокировки перед транзакцией:

$ curl -X POST --data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params":["0x7642b...", "password", 3600],"id":67}' http://localhost:8545

Но я хочу разблокировать аккаунт, используя private keyне password. Так есть ли способ unlock accountи сделать транзакцию с использованием private key.

вместо этого используйте необработанную транзакцию
@BadrBellaj, не могли бы вы привести пример, как я могу использовать его с curl + json rpc

Ответы (2)

вы можете сгенерировать необработанную транзакцию, как описано здесь, или использовать myetherwallet, чтобы получить подписанную необработанную транзакцию, а затем вызвать

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[{raw_transaction}],"id":1}'

// Result
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

как объяснено здесь

кроме того, как @yogesh упомянул в своем комментарии ниже , сборка Ethereumjs для браузера может использоваться для создания необработанной транзакции (на стороне клиента).

Я использую curl + json rpc, так как я могу этого добиться?
нет, я не хочу использовать третье лицо, такое как myetherwallet, поэтому я ищу решение для создания raw_transaction с помощью API.
в своем ответе я сослался на сообщение в блоге, объясняющее, как это сделать, используя некоторый Apis medium.com/blockchain-musings/…
это библиотека js, так как я могу подключиться к php-коду.
Спасибо за вашу поддержку @Badr Я использовал следующую библиотеку для сборки браузера github.com/ethereumjs/browser-builds и получил хеш для необработанной транзакции. просто обновите свой ответ этими данными, чтобы я мог принять ваш ответ, чтобы другой разработчик получил за него выгоду.
@YogeshKarodiya приятно это слышать, я добавлю вашу ссылку
@BadrBellaj - Вы можете видеть в сообщении medium.com, на которое вы ссылались, что код для создания необработанной транзакции должен быть подписан закрытым ключом, а закрытый ключ получен из файла ключей с помощью кода в предыдущий блок, в котором используется пароль. Таким образом, если у OP уже есть незашифрованный закрытый ключ, импортированный из файла ключей, пароль необходим для подписи транзакции.
кто предположил, что закрытый ключ зашифрован? вы прочитали это в вопросе?
Я могу ошибаться, но, судя по рейтингу репутации OP, он кажется новым, что заставляет меня думать, что он может не понимать, что просто наличие файла ключа не означает, что у вас есть закрытый ключ. По крайней мере, мы должны попросить проверить, может ли OP подтвердить, что у него есть незашифрованный закрытый ключ. Он сказал, что он не зашифрован? (Вы старший участник, поэтому я не ожидал грубого тона в вашем комментарии)
@AjoyBhatia, мой друг, я не хотел показаться грубым, извини, если это прозвучало для тебя так. мне просто интересно, если я что-то пропустил.

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

Вы можете использовать myetherwallet.com или ethychat.io для совершения транзакций с использованием вашего закрытого ключа.

Если вы хотите совершать транзакции, используя JSON-RPC и свой закрытый ключ, вам, вероятно, придется создать подписанную транзакцию и отправить ее с помощью eth_sendRawTransaction.

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