Jami verteilte Netzwerk

Verbindung

Jami relies on a distributed network, which brings multiple advantages when compared to federated networks:

  • Es gibt keinen Punkt zum Scheitern.

  • Mehr widerstandsfähiger gegenüber Zensur,

  • Sie sind nicht von anderen als ihren Nutzern abhängig,

  • Vertrauen zwischen Knoten ist nicht notwendig.

Network topographies

This forms a Distributed Hash Table (DHT) network.

The core problem of distributed communication systems is peer connectivity. Jami achieves it through two elements:

  • Encrypted announcements on the DHT network,

  • Verwendung von Standardprotokollen für das Lochschlagen von NAT-Löchern.

Jami basiert auf zwei verschiedenen Netzwerken:

  • das OpenDHT-Kademlia-Netzwerk zur Bereitstellung von verteilten Verbindungsstellen und der Nachrichtenverteilung,

  • Die JamiNS-Blockchain zur Verfügung stellt eine verteilte Namensregistrierung.

Das OpenDHT-Netzwerk

Siehe auch

Visit the https://github.com/savoirfairelinux/opendht page for more information about OpenDHT. OpenDHT provides a distributed key-value datastore for connectivity establishment (with ICE) and message distribution in Jami.

Ein OpenDHT-Netzwerk kann durch Kenntnis von jedem Knoten, der bereits mit dem Netzwerk verbunden ist, verbunden werden. Dieser Knoten wird dann sein Wissen über andere Knoten im Netzwerk teilen.

Jami-Kunden verwenden einen persistenten Knoten-Cache, um nach einer ersten Sitzung wieder mit dem Netzwerk zu verbinden. Ein konfigurierbarer, bekannter, stabiler „Bootstrap“ Knoten wird für die erste Verbindung verwendet oder wenn die in Cache gespeicherten Knoten nicht antworten.

Jami-Kunden verwenden derzeit bootstrap.jami.net:4222 als Standard (konfigurerbar) Bootstrap-Node und Netzwerk-ID 0 (das Standard-öffentliche OpenDHT-Netzwerk).

Beitrag zum OpenDHT-Netzwerk

Jedes Jami-Konto führt einen OpenDHT-Knoten, der zum Netzwerk beiträgt und Jami zum Skalieren ermöglicht.

Jami-Benutzer können vollständige Unabhängigkeit haben, indem sie ihren eigenen stabilen OpenDHT-Node ausführen und ihn in Jami als Bootstrap-Node konfigurieren, und gleichzeitig die Stabilität, Robustheit und Widerstandsfähigkeit für jeden Benutzer des öffentlichen OpenDHT-Netzwerks verbessern.

Ein eigenständiger Knoten kann mit dem [dhtnode Utility] (https://github.com/savoirfairelinux/opendht/wiki/Running-a-node-with-dhtnode) ausgeführt werden, der mit OpenDHT enthalten ist.

Stable community-run DHT nodes will be added to the default bootstrap server list at the request of their owner, as more bootstrap nodes means a more resilient, independent network.

Bemerkung

To add a community-run DHT node to the default bootstrap server list, please email contact@jami.net.

Die JamiNS-Blockchain

Die JamiNS-Blockchain ist experimentell und die Architektur wird voraussichtlich weiterentwickelt.

Jami-Kunden führen keine Blockchain-Knoten selbst aus, sondern kommunizieren mit einem JamiNS-Server mit HTTP für Namensregistrierung und Abfrage, mit einer REST-API. Dies liegt daran, dass die Ressourcen, die für den Betrieb eines Blockchain-Knodes benötigt werden, für die meisten Endbenutzer zu hoch sind.

The name server is set at the account level. This enables the Jami client to connect simultaneously to multiple user directories.

Beitrag zur JamiNS-Blockchain

The default Jami name service is ns.jami.net, provided by Savoir-faire Linux Inc., connected to an Ethereum blockchain node; the goal being to give everyone the possibility (if they which so) to run their own blockchain node and HTTP service, mine some Ether, and use it to pay the transaction fee needed to register their username in Jami.

Code of the Ethereum contract, the blockchain genesis file, and the NodeJS module (HTTP server) can be found here.

Ein Jami-Knoten

Prerequisites

  1. Geth 1.8.23+ (download from here)

  2. Jami genesis file (download from here)

Mit dem Jami-Netzwerk verbunden

Der Prozess der Verbindung zum Jami-Netzwerk ist ähnlich wie der Prozess der Verbindung zu einem regulären Ethereum-Netzwerk, mit dem Unterschied, dass die Genesis-Datei verwendet wird, um das Datenverzeichnis zu initialisieren.

  1. Laden Sie die Jami genesis Datei aus dem Jami github Repo herunter

  2. Erstellen Sie ein Verzeichnis auf Ihrem Computer, mit dem Sie die Jami Blockchain-Daten speichern

    • Example for GNU/Linux (/home/username/jamichain)

    • Example for macOS (/Users/username/jamichain)

    • Beispiel für Windows (C:\Benutzer\Name\jamichain)

  3. Geth ist ein einfacher Weg, um das von Ihnen erstellte Verzeichnis zu initialisieren, indem Sie ./geth --datadir /home/username/jamichain init genes is.json

  4. Sie können jetzt mit den Befehlszeilen beginnen und einen der Bootknoten von Jami wie folgt angeben:

geth --datadir=/home/username/jamichain --syncmode=full --networkid 1551 --bootnodes "enode://11ba6d3bfdc29a8afb24dcfcf9a08c8008005ead62756eadb363523c2ca8b819efbb264053db3d73949f1375bb3f03090f44cacfb88bade38bb6fc2cb3d890a5@173.231.120.228:30301" console

Damit startet ein Geth-Demon mit einer angeschlossenen Konsole, die jetzt mit Jami’s Netzwerk synchronisiert wird.