Wie kann ich ein Konto in Ruby erstellen, ohne JSON-RPC zu verwenden?

Ich möchte eine Anwendung mit Schienen erstellen. Ich möchte ein Konto über Ruby erstellen. Ich bekam den Rat , dass ich, um ein Konto zu erstellen, aus Sicherheitsgründen kein JSON-RPC verwenden sollte. Stattdessen sollte ich IPC und die Javascript-API verwenden, aber ich möchte kein Javascript verwenden. Ich möchte nur mit Ruby schreiben. Können Sie mir sagen, ob es eine Möglichkeit gibt, das zu tun?

Antworten (2)

Es gibt eine Menge Verwechslungen in Ihrer Frage. Lassen Sie uns zuerst die Konzepte klären.

JSON ist das Datenserialisierungsformat, das alle API-Endpunkte verwenden, unabhängig davon, wie Sie diese Anfrage an Geth übermitteln. Alle verschiedenen Endpunkte, die von Geth verfügbar gemacht werden, verwenden genau dasselbe JSON-RPC- Protokoll, um Methoden aufzurufen. Dies ist unabhängig von der Programmiersprache, solange Sie eine JSON-Zeichenfolge generieren und eine JSON-Antwort analysieren können, können Sie sie in jeder gewünschten Sprache implementieren.

Der Unterschied, über den manche Leute sprechen, ist der Transport, durch den diese Anfragen zu Geth und zurück zu Ihnen gelangen können. Dort haben Sie 3 Optionen: HTTP, WebSockets (nur in der Entwicklung verfügbar) und IPC. All diese "sprechen" genau das gleiche JSON-RPC-Protokoll, mit dem einzigen Unterschied, dass einige API-Methoden standardmäßig nur über den IPC-Kanal verfügbar gemacht werden. Der Grund dafür ist, dass jedes Programm, das in Ihrem Browser ausgeführt wird, auf Ihre lokalen HTTP/WebSocket-Endpunkte zugreifen kann, während nur Programme, die nativ auf Ihrem Computer ausgeführt werden, auf den IPC-Endpunkt zugreifen können.

Kontoverwaltung ist eine solche Sache, die nicht auf dem HTTP-Endpunkt verfügbar gemacht wird, um zu verhindern, dass beliebige Websites mit Ihren Konten herumspielen. Aus diesem Grund haben die Leute vorgeschlagen, dass Sie IPC verwenden.

PS: All das hat nichts mit JavaScript zu tun. Ethereum stellt eine JavaScript-Bibliothek bereit, um mit diesen RPC-Endpunkten zu kommunizieren, aber es steht Ihnen frei, direkt mit ihnen zu kommunizieren (tatsächlich verwenden viele Projekte ihre eigenen Programmiersprachen).

Sie können mit ethereum-tx private Schlüssel erstellen und Transaktionen erstellen/signieren . Sie können diesen Schlüssel offline generieren oder überall dort, wo Ruby läuft, dann müssen Sie nur die Adresse an wen auch immer Sie Ether senden möchten senden. Sie können dann rohes Transaktions-Hex signieren und an jeden der Block-Explorer senden, der es akzeptiert, oder Ihre eigene JSON-RPC-API auf einem von Ihnen kontrollierten Knoten verwenden.

Alternativ ist eine Ruby-Full-Node-Implementierung in Arbeit. Sie sind sich nicht sicher, welche APIs Ruby-spezifisch sind, aber Sie könnten das Gem einschließen und dann den vollständigen Knoten in Ihrer Ruby-App ausführen.