Javascript Electrum Library

0 8
Avatar for ash15
Written by
3 years ago

In den letzten Monaten habe ich an einem dezentralen Finanzprodukt für ein aufstrebendes Unternehmen gearbeitet, das Bitcoin Cash-Anwendungen erstellt. Zuverlässigkeit ist für uns sehr wichtig, aber ich hatte einige Probleme mit der öffentlichen und kostenlosen bitcoin.com-Rest-API.

Anfangs war mein Gedanke, das Backend zu replizieren und intern auszuführen, aber es war relativ schwierig einzurichten und zu verwalten, was mich dazu veranlasste, nach Alternativen zu suchen. Ich wollte etwas Einfaches und Zuverlässiges mit möglichst wenigen Abhängigkeiten und Einrichtungskosten und vorhandenen Bibliotheken, die auf NPM verfügbar sind, damit ich mich problemlos in den Rest meines Stacks integrieren kann.

Da ich wusste, dass es die Electron Cash-Brieftasche schon lange gibt und Bitcoin Unlimited ein Electrum-Backend für die Verwendung mit der Knotensoftware entwickelt, entschied ich mich, nach Bibliotheken auf NPM zu suchen. Es gab mehr als eine Handvoll und viele von ihnen gaben an, dass sie völlig frei von Abhängigkeiten seien.

Aber ... nichts hat wirklich für mich funktioniert.

Ich habe eine Reihe von Bibliotheken ausprobiert, aber aufgrund verschiedener Probleme schien nichts wirklich zu funktionieren. Die NPM-Statistiken, die für die meisten Bibliotheken nur eine Handvoll Downloads pro Woche anzeigen, wobei die Codequalität konstant niedrig bewertet wird und die meisten von ihnen alt und nicht gewartet sind, sprechen für sich.

Der Funktionsumfang ist ebenfalls sehr umfangreich und überschneidet sich stark mit den meisten Bibliotheken, die die meisten Funktionen unterstützen, aber keine unterstützt wirklich alle, wie verschlüsselte Verbindungen, dauerhafte Verbindungen, Benachrichtigungsabonnement, Versionsunterstützung usw.

Wie schwer kann es sein? Lass uns einfach meine eigenen bauen!

Das Protokoll schien ziemlich gut dokumentiert zu sein, und obwohl keine der vorhandenen Bibliotheken meinen Anforderungen entsprach, hatte ich viel Code zum Lernen und Nachschlagen, sodass ich anfing.

Es hat eine Weile gedauert, aber jetzt habe ich eine Bibliothek, die einfach zu bedienen, standardmäßig verschlüsselt und sauberen und leicht lesbaren Code enthält. Lassen Sie uns einige Beispiele durchgehen und zeigen, wie es funktioniert.

Wie man anfängt

Die Bibliothek ist Open Source und wird unter dem Namen electrum-cash in NPM veröffentlicht, sodass Sie sie wie jede andere NPM-Bibliothek installieren können:

npm installiere electrum-cash

Sie können den Quellcode und die technische Dokumentation auf gitlab lesen.

You can read the source code and technical documentation on gitlab.

Sie können den Quellcode und die technische Dokumentation auf gitlab lesen.

Standalone-Client

Am einfachsten ist es, eine Verbindung zu einem einzelnen Server Ihrer Wahl herzustellen. Dies sieht zwar sehr einfach aus, aber unter der Haube erhalten Sie tatsächlich eine dauerhafte, verschlüsselte Netzwerkverbindung mit automatischen Keep-Alive-Nachrichten und integrierter Versionsverhandlung und -durchsetzung.

Failover

Mit einem Cluster können Sie mehr als einen Server hinzufügen. Wenn ein Server ausfällt, markiert die Bibliothek den Server automatisch als nicht verfügbar und sendet Ihre Anforderungen an verschiedene Server in Ihrer Serverliste.

Wenn der Server wieder verfügbar ist, wird er automatisch wieder aktiviert.

Geringe Wartezeit

Wenn für Ihre Anwendung gleichbleibend kurze Antwortzeiten erforderlich sind, mehrere Server hinzugefügt und gleichzeitig Daten von ihnen angefordert werden, können Sie Ihre Anwendung mithilfe der ersten verfügbaren Antwort jederzeit mit der Latenz des schnellsten Servers ausführen.

Hohe Integrität

Wenn Sie keine eigenen Server betreiben oder Ihre Anforderungen sehr streng sind, können Sie den Cluster so konfigurieren, dass mehrere Serverantworten überprüft werden, bevor Sie sie an Ihre Anwendung übergeben.

Auf diese Weise stellen Sie sicher, dass kein einzelner Server Sie mit betrügerischen Daten versorgen kann. Die Latenz der Antwort ist jedoch länger, da wir warten müssen, bis weitere Server antworten, bevor wir die Daten an Ihre Anwendung weitergeben.

Blinde Privatsphäre

Die Verwendung eines einzelnen Servers hat den Datenschutzvorteil, dass Sie Informationen nur an einen einzelnen Peer weitergeben. Für Cluster würden Sie stattdessen eine große Anzahl von Servern verwenden, um Ihre Anforderungen zu verbreiten, sodass es für jeden einzelnen Server schwierig ist, den Kontext für Ihre Aktionen zu bestimmen.

Bringen Sie es zusammen, um ein zuverlässiges, performantes Setup zu erstellen

Wenn Sie keine spezifischen Anforderungen haben und nur möchten, dass das Backend funktioniert und Ihnen aus dem Weg geht, können Sie ein Gleichgewicht zwischen Zuverlässigkeit und Leistung herstellen, indem Sie alle guten Dinge zusammenbringen.

Konfigurieren Sie den Cluster so, dass mindestens zwei Server konsistent sind. Stellen Sie ihn so ein, dass eine Handvoll Server abgefragt werden, und fügen Sie dann so viele Server hinzu, wie Sie für die Sicherung benötigen. Die Standardstrategie für die Auswahl der abzufragenden Server ist zufällig, sodass Sie automatisch auch einen Lastausgleich erhalten.

1
$ 0.00
Avatar for ash15
Written by
3 years ago

Comments