Документация по личному API для JSON RPC

Есть ли документация и примеры использования личного API через JSON-RPC?

Я нашел это .

Однако не сказано, каким будет метод в JSON-RPC.

Ответы (3)

Спецификация Ethereum JSON-RPC https://github.com/ethereum/wiki/wiki/JSON-RPC не содержит личных API, поскольку персональные API являются расширением Geth .

Спецификация JSON-RPC представляет то, что должен реализовать совместимый клиент Ethereum.

@BokkyPooBah ссылается на другие полезные ответы, в которых упоминаются риски управления учетными записями через JSON-RPC и, вероятно, причина, по которой спецификация не поддерживает их реализацию всеми совместимыми клиентами (такими как cpp-ethereum, pyethapp).

Причина, по которой «персональные» методы не перечислены в спецификации JSON-RPC, заключается в том, что они не являются «официальными» методами API, т. е. они не обязательно реализованы во всех клиентах.

То, что вам нужно, — это API управления клиентом GO-Ethereum , который включает в себя «личные» команды. Обратите внимание, что это относится только к geth и не обязательно поддерживается одинаковым образом для всех клиентов.

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

Если вы уверены, что знаете, что делаете, вы можете включить RPC-доступ к командам управления, используя --rpcapiфлаг в geth.

Как только они включены, вы можете получить к ним доступ так же, как и к любому методу через RPC, например:

curl -X POST --data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params":["0x4bb96091ee9d802ed039c4d1a5f6216f90f81b01","myPassword"],"id":1}' localhost:8545`
Не все это полезно, кроме просмотра '{"jsonrpc":"2.0","method":"personal_newAccount","params":["password"],"id":1}', которое показывает, что формат метода rpc для личные звонки.
Я также не согласен с идеей, что делать это небезопасно и, следовательно, недостаточно документировано. Многим системам требуется эта функциональность, и хотя я бы не включил ее по умолчанию, я думаю, что она должна быть более открытой и документированной.
Я задавался вопросом о безопасности, так как включение API RPC через 127.0.0.1 разрешает подключения только с локального компьютера, откуда API IPC также обеспечивает доступ. Одно из отличий заключается в том, что к RPC API можно получить доступ с разных веб-страниц в браузере, а к IPC API будет сложнее получить доступ из-за песочницы браузера. Но в контролируемой серверной среде и RPC API, и IPC API предоставляют одинаковый доступ. Однако это ускорение помогает защитить пользователей, менее знакомых с последствиями безопасности JSON-RPC API.
Одна из проблем заключается в том, что пароли, отправляемые через RPC, не шифруются, поэтому использование личных команд может оставить пароли видимыми, если вы не будете осторожны.