Можно ли разблокировать гет-кошелек через JSON RPC? [дубликат]

В настоящее время я разрабатываю приложение поверх Ethereum JSON RPC. Я хотел бы иметь возможность разблокировать и заблокировать кошелек по мере необходимости, подобно тому, как это делает Биткойн. Однако похоже, что на данный момент гет-кошелек можно разблокировать только через консоль через personal.unlockAccount. Мне интересно - это единственный способ разблокировать гет-кошелек, или есть способ сделать это каким-то другим способом, в идеале с помощью JSON RPC?

Ответы (2)

Безопаснее использовать Go Ethereum — Management APIs — personal_sendTransaction API, чтобы разблокировать свою учетную запись и одновременно отправить транзакцию:

personal_sendТранзакция

Подтвердите данную парольную фразу и отправьте транзакцию.

Транзакция является тем же аргументом, что и для eth_sendTransaction, и содержит адрес отправителя. Если парольную фразу можно использовать для расшифровки закрытого ключа, передаваемого в tx.from, транзакция проверяется, подписывается и отправляется в сеть. Учетная запись не разблокирована глобально в узле и не может использоваться в других вызовах RPC.

Client    Method invocation
Console   personal.signAndSendTransaction(tx, passphrase)
RPC       {"method": "personal_sendTransaction", "params": [tx, string]}

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

Примеры

var tx = {from: "0x391694e7e0b0cce554cb130d723a9d27458f9298", to: "0xafa3f8684e54059998bc3a7b0d2b0da075154d66", value: web3.toWei(1.23, "ether")}
undefined
personal.sendTransaction(tx, "passphrase")
0x8474441674cdd47b35b875fd1a530b800b51a5264b9975fb21129eeb8c18582f

Ваша учетная запись разблокирована только для указанной транзакции.

Вам нужно будет включить личный API через интерфейс RPC, используя gethопцию API:

geth --rpc --rpcapi "eth,net,web3,personal" [other option] console

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



Обновление от 21.07.2016 - Ответ на комментарий ниже

Я искал gethрепозиторий github personal_sendTransactionи не смог найти текст. Однако я нашел internal/web3ext/web3ext.go#L435-L440 :

new web3._extend.Method({
    name: 'signAndSendTransaction',
    call: 'personal_signAndSendTransaction',
    params: 2,
    inputFormatter: [web3._extend.formatters.inputTransactionFormatter, null]
})

Как вы сказали, документация кажется устаревшей.

Хм, я попробовал ваш метод, и он не сработал - я получил ошибку The method personal_sendTransaction does not exist/is not available. Тем не менее, мне удалось использовать personal_listAccountsand personal_unlockAccount- я не совсем уверен, что заставит их работать, но не sendTransaction...
Хм, похоже personal_signAndSendTransaction, работает - документ API управления кажется устаревшим...
Просто используйте вызов API sendRawTransaction

Да, используя вызов API "personal_unlockAccount"

{
    'jsonrpc':'2.0',
    'method':'personal_unlockAccount',
    'params':[address, password, seconds],
    'id':1
};