Bee Rust-Framework

Warum wurde für Bee die Programmiersprache Rust ausgewählt?

 

Rust ist eine Multiparadigmen-Systemprogrammiersprache, die von Mozilla Research mit dem Ziel besonders sicher und praxisnah zu sein entwickelt wurde. Rust vereint Ansätze aus verschiedenen Programmierparadigmen, unter anderem aus der funktionalen, der objektorientierten und der nebenläufigen Programmierung und erlaubt so ein hohes Abstraktionsniveau.

Die IOTA Foundation hat sich zum Ziel gesetzt, Maschinen aller Leistungsklassen in das IOTA-Netzwerk einzubinden: von Mikrocontrollern über Telefone bis hin zu Servern. Einige dieser Systeme verfügen über minimale Ressourcen und über kein eigenes Betriebssystem. Abgesehen von den Mikrocontrollern setzt die IF auch auf Energieeffizienz, hohe Leistung und eine hervorragende Benutzer- und Entwicklererfahrung. Von der verfügbaren Sprachauswahl war die IF der Meinung, dass Rust am besten geeignet ist. Rust ist eine Systemprogrammiersprache und arbeitet mit einem hohen Leistungsniveau bei gleichzeitig hoher Speichersicherheit. Zusammen mit seinen gut integrierten modernen Werkzeugen hilft Rust dabei schneller auf den IOTA Designs zu arbeiten und gleichzeitig sicherer zu sein, dass der Code das tut, was die IF beabsichtigt. Rust ist eine relativ neue Systemprogrammiersprache, mit vielen treuen Fans in der Entwicklergemeinschaft und eine sicherere Alternative zu Sprachen wie C und C ++, aber auch eine schnellere Alternative zu Sprachen wie Python und Ruby.

 

 

Das Bee Framework

Bee ist ein in der Programmiersprache Rust geschriebenes Framework zum Aufbau von IOTA Nodes und Tools, die mit dem IOTA Netzwerk interagieren. Das Endprodukt soll eine äußerst modulare Sammlung grundlegender [i] Rust- Crates sein, die kombiniert und erweitert werden können. Dazu werden auch die verschiedenen Bibliotheken der IOTA Foundation in Rust-Crates zusammengeführt. Bee wird zudem Fremdfunktionsschnittstellen (FFI, foreign function interface) ermöglichen, die in höherwertigen Sprachen verwendet werden können, diese bilden die Grundlage für Client-APIs.

[i] Crates sind die grundlegende Kompilierungseinheit des Rust Codes und können als Bibliotheken oder Projekte betrachtet werden.

 

Der Einstieg in das IOTA-Entwickler-Ökosystem sollte so einfach wie möglich sein, damit die Menschen mit dem Bee Framework ihre Ideen für das IOTA-Netzwerk einbringen, erweitern und aufbauen können. Bee wird eine zentrale Referenzimplementierung der wichtigsten Datenstrukturen und Algorithmen bereitstellen, die verifiziert und schließlich zertifiziert wird. Durch diesen Ansatz wird erwartet, dass sich Verbesserungen in allen Kernkomponenten schnell auf alle anderen Bibliotheken übertragen, die auf ihnen aufbauen, dies wird verhindern das jede zukünftige Implementierung korrigiert bzw. repariert werden muss.

Die IOTA Foundation will es Maschinen aller Leistungsklassen ermöglichen, dem Netzwerk beizutreten, von Mikrocontrollern und Single-Board-Computern über Telefone, Webbrowser, Desktop-Maschinen und Server. Dafür sollen die Bee-Komponentenbibliotheken von Grund auf implementiert werden. Damit jede Bibliothek einzeln importiert werden kann, sollen diese so wenig Abhängigkeiten wie möglich aufweisen. Mit Blick auf Mikrocontroller sollen sich diese Bibliotheken nicht auf eine Laufzeit (runtime) verlassen - dazu gehören Language runtimes wie die Garbage Collection, aber auch die Betriebssystemintegration (die im Falle von Rust durch die libstd-Standardbibliothek bereitgestellt wird).

 

 

Meilensteine

Der Bee Framework wurde in erster Linie zur Unterstützung der Umsetzung des IOTA Coordicide entwickelt. Die IF möchte auf dem Weg zu Coordicide dieses Framework so offen, überprüfbar und nutzbar wie möglich gestalten, indem die Erstellung von Tools, Clients, Nodes.... unterstützt wird. Die folgenden vier Meilensteine wurden von der IF gesetzt:

 

  1. Fundamentale crates: Spezifikation und Implementierung der Bee Fundamentale crates Bee-trinary, Bee-model und Bee-crypto. Dies sind die wesentlichen Bausteine für die IOTA-Entwicklung.
  2. FFI: Foreign Function Interface, um die Bee Crates für andere Sprachen verfügbar zu machen. Das erste Projekt, das sich auf Bee Crates durch FFI stützt, wird Trinity v2 sein. Wir werden auch untersuchen, inwieweit WebAssembly, wasm, ein Zwischenziel sein könnte.
  3. Rust IRI: Spezifikation und Implementierung der nodenspezifischen Crates Bee-Network, Bee-Tangle, Bee-Api, Bee-Konsens und Bee-Gossip. Um die Modularität und Robustheit des Bee Frameworks zu demonstrieren, wird ein Node für das aktuelle Mainnet implementiert. Einige dieser Crates werden für den Coordicide Node wiederverwendet.
  4. Coordicide: Spezifikation und Implementierung neuer Coordicide nodenspezifischer Crates nach der Übergabe der Forschungsspezifikationen.