Meilenstein Softwaretechnologie - die Webentwicklungsagentur aus Hamburg

stash.

Kontext


Trotz steigendem Interesse an Kryptowährungen und deren Ökosystem sind viele User noch immer bei Börsen oder Portalen angemeldet, die wenig oder nur unvollständige Sicherheit gewährleisten.
Insbesondere sind Börsen und Wallets, bei denen die Crypto-Assets nicht durch den Endverbraucher selber, sondern durch den jeweiligen Dienstleister gespeichert und nur im Namen des Users verwaltet werden, eine Gefahr. So ist es bereits 2014 zu dem geläufigen Fall von Mt. Gox gekommen.
LOGO
Landing Screenshot

Ziel des Projektes


Die Plattform stash bietet eine Möglichkeit, die weltweit zehn beliebtesten digitalen Assets in nur einer einzigen Wallet zu verwalten und diese mit mehreren Endgeräten zu synchronisieren - dabei behält der User durch Dezentralisierung und Verschlüsselungsalgorithmik die vollständige Kontrolle über alle seine Daten.
Die Private Keys und Mnemoric Phrase können jederzeit exportiert werden und dadurch sogar in fremde Wallets importiert werden, sodass es stash unmöglich wird, über diese Wallets zu verfügen.

Probleme

1

Die Verwaltung der Kryptoanlagen soll soweit wie es nur möglich ist offline und clientseitig stattfinden.

2

Mehrere Kryptowährungen sollen für den Endverbraucher in einer Wallet verwaltbar sein. Trotz der Tatsache, dass für jeden Coin eine andere Blockchain verantwortlich ist muss sichergestellt werden, dass dies nahtlos und ohne extra Aufwand für den User geschieht.

3

Der User soll zugunsten seiner Anonymität jede Wallet nur ein einziges Mal verwenden, ohne ständig neue generieren und sich die private Keys notieren zu müssen.

4

Wallets müssen zum Komfort der User über mehrere Geräte erreichbar sein, wobei keine Daten gespeichert werden dürfen.

5

Trotz der Komplexität des Projektes soll der User die Anwendung mit Leichtigkeiten bedienen können.

Verwendete Technologien

React.js

React-Native

TypeScript

Landing Screenshot

Node.js

Express.js

Webpack

Lösung des Problemes

1
Um die offline-first Nutzung auch über den Browser zu ermöglichen, wird das Projekt in JavaScript realisiert. Damit wird der Code beim Öffnen der Seite vom Client heruntergeladen, sodass keine weitere Verbindung zum Server nötig ist. Als Datenbank wird eine lokale Graphendatenbank, die sich ebenfalls offline nutzen lässt, verwendet. Das ermöglicht eine Benutzerauthentifizierung, ohne Verbindung zu Servern.
2
Die Lösung hierfür ist eine sogenannte Mnemorig Phrase. Das ist eine Reihenfolge von zufällig genrierten Wörtern. Diese Mnemoric Phrase wird verschlüsselt und später als Verifizierung für das Erstellen einer neuen Wallet auf jeder beliebigen Blockchain verwendet.
3
Mithilfe der oben erwähnten Phrase können für jeden Index der Wallet Private und Public Keys erstellt werden, die sich wiederum zu Zahlungsadressen hashen lassen. Somit kann der User für beliebige Blockchains beliebig viele Adressen erstellen. Der aktuelle Index wird verschlüsselt und lokal gespeichert, um Konsistenz zu gewährleisten.
4
Da der User sich anfangs auf der Plattform registriert, ist er gezwungen ein Passwort zu auszuwählen. Ein Hash dessen wird verwendet um ein Asymmetrisches kryptographishces Keypair zu erzeugen, welches von nun an Daten in sogenannter "military grade encryption" verschlüsselt. Es wird davon ausgegangen, dass nur Quantencomputer über ausreichende Ressourcen verfügen, um die verwendete Art der Verschlüsselung zu umgehen. Sollte dieser Fall eintreten, wären jedoch ohnehin alle Assets die dem Proof of Work zugrundie liegen und die damit verbundenen Blockchains nichtig.
5
Durch schlankes UI Design mit großen Elementen und Fonts mit breitem Spacing auf den Haupteingabeflächen wirkt das Interface sehr unbeschwert und aufgeräumt. Durch großzügige Whitespaces erkennt man alle Funktionen der aktuell aufgerufenen Seite auf einen Blick. Animationen wurden nur eingesetzt, wenn diese einen tieferen Sinn haben, wie z.B. die Aufmerksamkeit des Users bei eingehender Zahlung zu erwecken.

stash.