¿Cómo puedo crear una cuenta en Ruby sin usar JSON-RPC?

Me gustaría construir una aplicación con rieles. Quiero crear una cuenta a través de Ruby. Recibí el consejo de que, para crear una cuenta, no debería usar JSON-RPC por seguridad. En su lugar, debería usar IPC y la API de javascript, pero no quiero usar javascript. Quiero escribir solo con Ruby. ¿Me podría decir si hay una manera de hacer eso?

Respuestas (2)

Hay mucha confusión en tu pregunta. Primero aclaremos los conceptos.

JSON es el formato de serialización de datos que utilizan todos los puntos finales de API, independientemente de cómo envíe esa solicitud a Geth. Todos los diversos puntos finales expuestos por Geth usan exactamente el mismo protocolo JSON-RPC para invocar métodos. Esto es independiente del lenguaje de programación, siempre que pueda generar una cadena JSON y analizar una respuesta JSON, puede implementarla en el lenguaje que desee.

La diferencia de la que algunas personas hablan es el transporte a través del cual estas solicitudes pueden llegar a Geth y volver a ti. Allí tienes 3 opciones: HTTP, WebSockets (solo disponible en desarrollo) e IPC. Todos estos "hablan" exactamente el mismo protocolo JSON-RPC, con la única diferencia de que, de manera predeterminada, algunos métodos API solo se exponen a través del canal IPC. La razón es que cualquier programa que se ejecute en su navegador puede acceder a sus puntos finales HTTP/WebSocket locales, mientras que solo los programas que se ejecutan en su computadora de forma nativa pueden acceder al punto final de IPC.

La administración de cuentas es una de esas cosas, que no está expuesta en el punto final HTTP para evitar que sitios web arbitrarios alteren sus cuentas. Es por eso que la gente sugería que usara IPC.

PD: Ninguno de estos tiene nada que ver con JavaScript. Ethereum proporciona una biblioteca de JavaScript para hablar con estos puntos finales de RPC, pero puede hablar con ellos directamente (de hecho, muchos proyectos lo hacen usando sus propios lenguajes de programación).

Puede crear claves privadas y crear/firmar transacciones con ethereum-tx . Puede generar esa clave sin conexión, o en cualquier lugar que ejecute ruby, luego solo tiene que enviar la dirección a quien quiera que le envíe Ether. Luego puede firmar y enviar transacciones hexadecimales sin procesar a cualquiera de los exploradores de bloques que lo acepten, o usar su propia API JSON-RPC en un nodo que controle.

Alternativamente, hay una implementación de nodo completo de Ruby en proceso. No estoy seguro acerca de las API que son específicas de Ruby, pero podría incluir la gema y luego ejecutar el nodo completo desde dentro de su aplicación de Ruby.