Documentación de API personal para JSON RPC

¿Hay documentación y ejemplos para usar la API personal a través de JSON-RPC?

Encontré esto .

Sin embargo, no dice cuál sería el método en JSON-RPC.

Respuestas (3)

La especificación JSON-RPC de Ethereum https://github.com/ethereum/wiki/wiki/JSON-RPC no contiene las API personales, porque las API personales son una extensión de Geth .

La especificación JSON-RPC representa lo que debe implementar un cliente Ethereum compatible.

@BokkyPooBah se ha vinculado a otras respuestas útiles, que mencionan los riesgos de administrar cuentas a través de JSON-RPC, y probablemente la razón por la cual la especificación no recomienda su implementación por parte de todos los clientes compatibles (como cpp-ethereum, pyethapp).

La razón por la que los métodos "personales" no se enumeran en la especificación JSON-RPC es que no son métodos API "oficiales", es decir, no se implementan necesariamente en todos los clientes.

Lo que está buscando es la API de administración del cliente GO-Ethereum , que incluye los comandos "personales". Tenga en cuenta que esto solo se aplica a geth y no necesariamente se admite de la misma manera en todos los clientes.

Por lo general, no se recomienda exponer estos comandos a través de RPC, ya que las aplicaciones locales pueden comunicarse a través de IPC, y los clientes remotos, posiblemente no autorizados, pueden acceder a RPC, y debido a que se transmite a través de HTTP de texto sin formato, las contraseñas deben manejarse con cuidado.

Si está seguro de que sabe lo que está haciendo, puede habilitar el acceso de RPC a los comandos de administración usando la --rpcapibandera en geth.

Una vez que están habilitados, puede acceder a ellos de la misma manera que accedería a cualquier método a través de RPC, por ejemplo:

curl -X POST --data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params":["0x4bb96091ee9d802ed039c4d1a5f6216f90f81b01","myPassword"],"id":1}' localhost:8545`

Las respuestas a su pregunta están disponibles en las siguientes preguntas y respuestas:

No es tan útil aparte de ver '{"jsonrpc":"2.0","method":"personal_newAccount","params":["password"],"id":1}' que muestra que el formato del método rpc para llamadas personales
Tampoco estoy de acuerdo con la idea de que hacer esto no es seguro y, por lo tanto, no está bien documentado. Muchos sistemas requieren esta funcionalidad y, aunque no la tendría habilitada de forma predeterminada, creo que debería ser más abierta y documentada.
Me he estado preguntando acerca de la seguridad, ya que habilitar la API de RPC sobre 127.0.0.1 solo permite conexiones desde la máquina local, que es desde donde la API de IPC también brinda acceso. Una diferencia es que se puede acceder a la API RPC desde diferentes páginas web dentro del navegador a las que sería más difícil acceder a la API IPC debido al espacio aislado del navegador. Pero en un entorno de servidor controlado, tanto la API RPC como la API IPC brindan el mismo acceso. Sin embargo, este aumento de velocidad ayuda a proteger a los usuarios menos familiarizados con las implicaciones de seguridad de la API JSON-RPC.
Uno de los problemas es que las contraseñas enviadas a través de RPC no están encriptadas, por lo que el uso de comandos personales podría dejar las contraseñas visibles si no tiene cuidado.