Как я могу создать учетную запись в Ruby без использования JSON-RPC?

Я хотел бы создать приложение с рельсами. Я хочу создать аккаунт через Ruby. Я получил совет , что для создания учетной записи я не должен использовать JSON-RPC для безопасности. Вместо этого я должен использовать IPC и API javascript, но я не хочу использовать javascript. Я хочу писать только на Ruby. Не могли бы вы сказать мне, есть ли способ сделать это?

Ответы (2)

В вашем вопросе много путаницы. Давайте сначала проясним понятия.

JSON — это формат сериализации данных, который используют все конечные точки API, независимо от того, как вы передаете этот запрос Geth. Все различные конечные точки, предоставляемые Geth, используют один и тот же протокол JSON-RPC для вызова методов. Это не зависит от языка программирования, если вы можете сгенерировать строку JSON и проанализировать ответ JSON, вы можете реализовать его на любом языке, который вы хотите.

Разница, о которой говорят некоторые люди, заключается в транспорте, через который эти запросы могут попасть в Geth и обратно к вам. Там у вас есть 3 варианта: HTTP, WebSockets (доступно только в разработке) и IPC. Все они «говорят» на одном и том же протоколе JSON-RPC, с той лишь разницей, что по умолчанию некоторые методы API доступны только через канал IPC. Причина в том, что любая программа, работающая в вашем браузере, может получить доступ к вашим локальным конечным точкам HTTP/WebSocket, тогда как только программы, работающие на вашем компьютере, могут получить доступ к конечной точке IPC.

Управление учетными записями — это одна из таких вещей, которая не отображается на конечной точке HTTP, чтобы предотвратить попытки произвольных веб-сайтов возиться с вашими учетными записями. Вот почему люди предлагали вам использовать IPC.

PS: Ни один из них не имеет ничего общего с JavaScript. Ethereum предоставляет библиотеку JavaScript для взаимодействия с этими конечными точками RPC, но вы можете обращаться к ним напрямую (на самом деле многие проекты делают это, используя свои собственные языки программирования).

Вы можете создавать закрытые ключи и создавать/подписывать транзакции с помощью ethereum-tx . Вы можете сгенерировать этот ключ в автономном режиме или в любом месте, где работает ruby, тогда вам просто нужно отправить адрес тому, кому вы хотите отправить вам эфир. Затем вы можете подписать и отправить необработанный шестнадцатеричный код транзакции любому из обозревателей блоков, которые его принимают, или использовать свой собственный API JSON-RPC на узле, которым вы управляете.

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