Im Laufe der Jahre haben viele Entwickler in unserem Ökosystem unsere Client-Bibliotheken verwendet, um IOTA in ihre Anwendungen zu integrieren. Verfügbar in vielen verschiedenen Programmiersprachen, sowohl offiziell unterstützte als auch von der Community betriebene Projekte machten es möglich, den IOTA-Wirrwarr in vielen Projekten zu nutzen: Von IoT-Geräten, die die C-Bibliothek nutzen, bis hin zu Webanwendungen in Node.js, Go oder Python.
Anfang 2020 begannen wir, Pläne zu schmieden, um diese Erfahrung mit den Erkenntnissen aus den letzten Jahren zu verbessern.
Wir haben uns einen soliden Plan ausgedacht und beschlossen, dass das Chrysalis-Release mit dem Fokus auf ein produktionsreifes und benutzerfreundliches IOTA der ideale Zeitpunkt ist, um unsere bestehenden Bibliotheken zu ersetzen und mit einer einfacheren, robusteren, nachhaltigeren und standardisierten Lösung voranzukommen, die wir jetzt, angesichts der „Neuen Ära“ von IOTA, einführen.
Die Kernprinzipien der neuen Bibliotheken
Nachdem wir mehrere Jahre mit den bestehenden Client-Bibliotheken gearbeitet und unzählige Community-Entwickler bei ihren Projekten unterstützt hatten, hatten wir eine ziemlich gute Vorstellung davon, welche Aspekte wir verbessern könnten.
Einige der Dinge, die wir oft hörten, waren Aussagen wie „Es gibt zu viele Dinge, die ich über IOTA lernen muss, bevor ich loslegen kann“ oder „Feature X wird nur in Sprache Y unterstützt„.
Wir sammelten alle unsere eigenen Erfahrungen und das Feedback der Community und der Unternehmen und kamen auf eine Reihe von Kernprinzipien für die neuen Client-Bibliotheken:
Bindings, eine einzige Quelle der Wahrheit
Bis jetzt hatte jede Sprache ihren eigenen Satz an unterstützten IOTA-Features und Möglichkeiten, bestimmte Aufgaben zu erfüllen. Dies konnte manchmal zu Verwirrung zwischen verschiedenen Implementierungen führen und war eindeutig suboptimal.
Mit den neuen Bibliotheken haben wir uns entschieden, dass es nur eine Referenzimplementierung für die Client-Bibliotheken geben sollte (wir haben dafür Rust gewählt) und alle anderen Implementierungen sollten dieser Referenzimplementierung in Bezug auf Namensgebung und Funktionalität folgen.

Um dies zu erzwingen und um die Sicherheitsmerkmale und die Leistung von Rust zu nutzen, haben wir beschlossen, dass die neuen Bibliotheken die Rust-Referenz durch Bindungen nutzen sollten, um das exakt gleiche Verhalten und die exakt gleiche Funktionalität in jeder unterstützten Sprache zu gewährleisten. Das bedeutet, dass Sie unsere Rust-Bibliotheken direkt aus Ihrer Lieblingssprache in Ihrer Lieblingssyntax verwenden können und so die Leistungsfähigkeit unserer Rust-basierten Bibliothek in die Sprache Ihrer Wahl bringen. Im Moment haben wir Bindungen für Node.js und Python verfügbar und entwickeln aktiv zusätzliche Bindungen für Java und andere Sprachen.
Einfach zu bedienen, aber so fortgeschritten, wie Sie es brauchen
Die bisherigen Bibliotheken wurden mit Blick auf maximale Flexibilität erstellt. Buchstäblich jede Option, die im Protokoll verfügbar ist, konnte von den Clients aus genutzt werden, aber das bedeutete auch, dass man eine Menge darüber wissen musste, wie das Protokoll selbst funktioniert, bevor man es in vollem Umfang nutzen konnte.
Mit Chrysalis haben wir uns entschlossen, diese Erfahrung zu verbessern und so viele sinnvolle Voreinstellungen wie möglich vorzunehmen. Bisher mussten Sie manuell Ihre Knoten-URL angeben, Ihre Transaktion konvertieren/kodieren und Optionen wie „minimale Gewichtsgröße“ (MWM) und „Tiefe“ einrichten, bevor Sie die Bibliotheken nutzen konnten. In der neuen Version hingegen werden all diese Dinge standardmäßig unter der Annahme bereitgestellt, dass Sie mit dem Mainnet arbeiten wollen, die Standardparameter für das Mainnet verwenden und Ihre Daten in (utf-8) Bytes kodieren. Dies führt zu einer viel einfacher zu bedienenden Bibliothek für jeden, auch wenn Sie noch nie mit IOTA gearbeitet haben.
Wenn Sie kein spezifisches Argument angeben, wird der Standard verwendet; wenn Sie das Standardverhalten nicht wollen, können Sie dieses Verhalten überschreiben, um auch alle fortgeschrittenen Anwendungsfälle zu ermöglichen. Dies ermöglicht es uns, eine neue Bibliothek anzubieten, die sowohl einfach zu bedienen ist, als auch alle Funktionen eingebaut hat, die Sie jemals brauchen werden.
Hilfsfunktionen
Es gibt einige Muster bei der Entwicklung mit IOTA, die recht häufig vorkommen; zum Beispiel das Finden eines öffentlichen Knotens, der verwendet werden soll. Dies war früher eine manuelle Aufgabe, aber mit den neuen Client-Bibliotheken können Sie einfach sagen, dass Sie ‚mainnet‘ oder ‚testnet‘ verwenden sollen und es wird automatisch einen synchronisierten öffentlichen Knoten für Sie durch unsere Hilfsfunktion finden. Eine weitere nette Hilfsfunktion, die wir anbieten, ist die Abstraktion von Ereignissen.
In der Vergangenheit mussten Sie eine separate Bibliothek eines Drittanbieters verwenden, um sich mit dem MQTT/ZMQ-Feed der Knoten für Ereignisse zu verbinden. Jetzt haben Sie einfach die Möglichkeit, auf Ereignisse direkt von den Client-Bibliotheken zu hören, indem Sie Ihre eigene Callback-Funktion bereitstellen, wenn ein Ereignis ausgelöst wird.
Diese und weitere Helfer stehen bereits jetzt zur Verfügung, um mit den neuen Client-Bibliotheken eine weitere Ebene des Komforts für IOTA-Entwickler zu erreichen.
Eine Wallet-Bibliothek, die alle beherrscht
Bisher hat jede IOTA-Implementierung, die mit IOTA-Token arbeitet, ihre eigene Implementierung mit Hilfe der Kern-Client-Bibliotheken vorgenommen, die ziemlich low-level ist. Dies war ein ziemlicher Aufwand und da jede Implementierung anders ist, führte dies manchmal zu falschen Implementierungen.
Um dieses Problem ein für alle Mal zu beheben, haben wir eine weitere brandneue Client-Bibliothek eingeführt, wallet.rs. Wallet.rs ist im Wesentlichen eine programmierbare Brieftasche, die wir für jede Implementierung, die IOTA-Token handhabt, empfehlen zu verwenden. Diese zustandsbehaftete Bibliothek kümmert sich um alles für Sie, einschließlich Dingen wie Synchronisation und Sicherheit. Wallet.rs ist bereits in die neue Firefly-Wallet, die Command-Line-Wallet und das Testnet-Faucet integriert und erlaubt jedem Entwickler, eine eigene Wallet zu implementieren, bei der die kritischen Kernkomponenten von der Bibliothek übernommen werden.
Einige der Highlights von wallet.rs sind:
- Es ist zustandsbehaftet, also schnell zu benutzen, auch wenn Sie viele Adressen und Konten haben
- Sie können beliebig viele Konten mit eigenen Optionen anlegen; Sie können sowohl Test- als auch Mainnet-Konten in einem einzigen wallet.rs-Setup verwalten, wenn Sie möchten
- Es ist standardmäßig sicher, da Stronghold für die Verwaltung der Geheimnisse verwendet wird
- Das Senden und Empfangen von Geldern ist einfach, und wenn ein erneutes Anlegen erforderlich ist, wird es für Sie erledigt
- Das Sichern und Wiederherstellen des Status ist eine eingebaute Funktion
Die gleichen Prinzipien, die für die Kernbibliothek gelten, gelten auch für wallet.rs. Die Bibliothek ist einfach zu bedienen mit sinnvollen Voreinstellungen und hat Bindungen für Node.js, Python und Java mit weiteren potentiellen Sprachen, die später hinzugefügt werden.
Andere Bibliotheken
Unabhängig davon, wie sehr wir unseren neuen Ansatz mögen, ist es keine Lösung, die in jeder möglichen Situation ideal ist. Für diese Fälle haben wir auch andere Bibliotheken zur Verfügung, allerdings mit eingeschränkterer Funktionalität:
C-Bibliotheken für Geräte mit geringer Leistung
C ist eine hochperformante Low-Level-Sprache, die häufig in Embedded-Geräten mit begrenzten Ressourcen verwendet wird. Aufgrund einiger Einschränkungen, die Rust-Bindings für eingebettete Geräte mit sich bringen, haben wir uns entschieden, trotzdem eine separate Bibliothek für C zu erstellen. Diese Bibliothek behandelt alle grundlegenden Interaktionen, bietet aber keine wallet.rs-ähnliche Funktionalität oder die meisten der Hilfsfunktionen von iota.rs.
Native Go- und TypeScript-Bibliothek
Wir bieten auch eine native Go- und TypeScript-Bibliothek an, die nicht die Rust-Bindings verwenden. Das hat damit zu tun, dass wir diese Bibliotheken bereits nutzen mussten, bevor iota.rs verfügbar war. Wir erwägen, zu einem späteren Zeitpunkt auch Bindings für beide anzubieten, aber diese Bibliotheken können schon jetzt verwendet werden, wenn Sie die IOTA-Technologie mit Go oder in einem Web-Browser nutzen möchten.
Sehen Sie sich das Video über die neuen Client-Bibliotheken an!
Fazit
Mit den neuen Client-Bibliotheken bringen wir ein ganz neues Niveau an Benutzerfreundlichkeit, Flexibilität, Leistung und Professionalität in das IOTA-Ökosystem, so dass es eine wahre Freude ist, mit ihnen zu arbeiten. Sie sind ab sofort für den Einsatz in unserem Chrysalis-Testnetz verfügbar und werden die bestehenden Bibliotheken ersetzen, sobald wir Chrysalis im Mainnet starten.
Die Client-Bibliothek einschließlich der Bindings finden Sie hier, mit einer ersten Dokumentation hier. Für die Wallet-Bibliothek finden Sie das wallet.rs Repository auf GitHub und die anfängliche Dokumentation dazu.
Wir können es nicht erwarten, dass Sie sie ausprobieren! Wenn Sie Fragen haben, können Sie gerne unserem Discord beitreten und mit uns chatten.
Original by Dave de Fijter: https://blog.iota.org/the-new-iota-client-libraries-harder-better-faster-stronger/
Schreibe einen Kommentar