Förderjahr 2017 / Project Call #12 / ProjektID: 2387 / Projekt: SmartRaise
In den letzten Wochen war das Bauen des Frontends eines der zentralen Aufgaben. Weil wir hier auf besondere Technologien aufbauen, müssen einige Punkte auch in der Umsetzung besonders berücksichtigt werden.
Denzentrales Hosting
Eines der wichtigsten Ziele ist es, Smart Raise dezentral zu machen. Das schützt vor einer Abhängigkeit von einem zentralen Server oder Betreiber. Dafür wird das Frontend (quasi die Website) nicht auf einem Webserver gespeichert, sondern über ein verteiltes Netzwerk namens IPFS ausgeliefert.
IPFS
Die Technologie von IPFS hat sich in den letzten Monaten gut entwickelt, und kommt auch bei uns zum Einsatz. Es basiert auf verteilten Servern ("Nodes"), und ähnlich wie bei einer Musiktauschbörse kann jeder Benutzer Dateien zur Verfügung stellen, und Dateien von anderen hosten. Damit sind die Daten gegen Ausfälle gesichert, aber auch gegen Manipulation und Zensur.
Jeder, der Smart Raise unterstüzten möchte oder ein eigenes Projekt erstellt hat, kann das Programm im Hintergrund laufen lassen, das die entsprechenden Dateien vorhält. Damit kann jeder mithelfen, dass die Daten verfügbar und die Ladezeiten möglichst kurz sind.
Ladezeiten
Sowohl beim Laden von Daten aus der Blockchain, als auch beim Laden von Dateien von IPFS entstehen verhältnismäßig lange Wartezeiten. (häufig bis zu 300ms). Das hat großen Einfluss auf das gesamte Design. Die Seite muss minimalistisch gehalten werden, sowohl was grafische Elemente, als auch Programm-Bibliotheken angeht. Gleichzeitig werden soweit wie möglich Bibliotheken nicht von IPFS ausgeliefert, sondern von schnellen CDN Internet-Quellen eingebunden, damit sie nicht im langsamen IPFS System dupliziert werden müssen.
Pre-Caching / Lazy Loading
Diese Gegebenheiten stellen auch besondere Anforderungen daran, wann bestimmte Informationen geladen werden. Um lange Wartezeiten nach jedem Wischen zu verhindern, ist ein Pre-Caching Mechanismus wichtig, der Daten vorlädt.
Dynamische Grafiken mit SVG
Unsere Grafik zur Anzeige der Projektphasen und Finanzierungsfortschritt würde klassicherweise auf einem Server gerendert, und mit ausgeliefert. Nachdem wir durch den dezentralen Charakter keinen Server verwenden können, werden diese Grafiken im Browser mit SVG erstellt. Das ist eine schlagkräftige, moderene Technologie, die auch gute Unterstzütung genießt, aber nur selten verwendet wrid. Für unseren Use Case ist SVG aber perfekt.
Erfahrungen in der Umsetzung
Diese Eigenschaften stellen eine besondere Herausfordung dar, und erfordern ein Umdenken und hohes Umsetzungsniveau durch die Entwickler voraus. Es hat sich gezeigt, dass regelmäßige Code-Reviews und Umbauten notwendig sind, um den Code besonders schlank zu halten, und dennoch die Funktionalität sicher zu stellen.
Als nächstes wird für das Frontend die erste Anbindung an die Smart Contracts sowie die Admin-Seiten auf der Tagesordnung stehen.