Réseau distribué Jami

Connectivité

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

  • Pas de problème.

  • Plus résistant à la censure,

  • Ne dépend pas de quoi que ce soit d’autre que de ses utilisateurs,

  • La confiance entre les nœuds n’est pas nécessaire.

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,

  • Utilisation de protocoles standard pour le perforation des trous NAT.

Jami est construit sur deux réseaux distincts:

  • le réseau OpenDHT kademlia pour fournir un établissement de connectivité distribuée et la distribution de messages,

  • la blockchain JamiNS pour fournir un enregistrement distribué de noms.

Le réseau OpenDHT

Voir aussi

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.

Un réseau OpenDHT peut être rejoint en sachant à propos de tout nœud déjà connecté au réseau. Ce nœud partagera ensuite ses connaissances sur d’autres nœuds du réseau.

Les clients Jami utilisent un cache de nœud persistant pour se reconnecter au réseau après une première session. Un nœud configurable, connu et stable « bootstrap » est utilisé pour la première connexion ou si les nœuds en cache ne répondent pas.

Les clients Jami utilisent actuellement bootstrap.jami.net:4222 comme nœud de bootstrap par défaut (configurable) et ID réseau 0 (le réseau OpenDHT public par défaut).

Contribuer au réseau OpenDHT

Chaque compte Jami exploite un nœud OpenDHT, contribuant au réseau et permettant à Jami de faire évoluer.

Les utilisateurs de Jami peuvent avoir une pleine indépendance en exécutant leur propre nœud OpenDHT stable et en le configurant comme un nœud de démarrage dans Jami, tout en contribuant à améliorer la stabilité, la robustesse et la résilience de chaque utilisateur du réseau public OpenDHT.

Un nœud autonome peut être exécuté à l’aide de l’utilitaire [dhtnode]https://github.com/savoirfairelinux/opendht/wiki/Running-a-node-with-dhtnode) inclus avec OpenDHT. dhtnode ne persiste pas de données et a une limite de stockage par défaut en mémoire de 8 MiB.

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.

Note

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

La blockchain JamiNS

La blockchain JamiNS est expérimentale et son architecture devrait évoluer.

Les clients Jami ne gèrent pas eux-mêmes les nœuds de blockchain mais communiquent plutôt avec un serveur JamiNS en utilisant HTTP pour l’enregistrement de noms et la requête, avec une API REST.

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

Contribuer à la blockchain JamiNS

Le service de noms par défaut de Jami est ns.jami.net, fourni par Savoir-faire Linux Inc. et connecté à un nœud de blockchain Ethereum ; l’objectif étant de donner à chacun la possibilité (s’il le souhaite) d’exécuter son propre nœud de blockchain et son propre service HTTP, de miner un peu d’Ether et de l’utiliser pour payer les frais de transaction nécessaires à l’enregistrement de son nom d’utilisateur dans Jami.

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

Exécuter un nœud Jami

Prerequisites

  1. Geth 1.8.23+ (download from here)

  2. Jami genesis file (download from here)

Joindre le réseau Jami

Le processus de rejoindre le réseau Jami est similaire au processus de rejoindre un réseau ethérique régulier avec la différence que le fichier génèse est utilisé pour initialiser le répertoire de données.

  1. Téléchargez le fichier Jami genesis depuis le repositorium Jami github

  2. Créez un répertoire sur votre ordinateur que vous utiliserez pour stocker les données de la blockchain Jami

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

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

    • Exemple pour Windows (C:\User\username\jamichain)

  3. Utilisez geth pour initialiser le répertoire que vous avez créé dans (2) en exécutant ./geth --datadir /home/username/jamichain init genes is.json

  4. Vous pouvez maintenant commencer Geth avec les options de ligne de commande dont vous avez besoin et spécifier l’un des nœuds de démarrage de Jami comme suit:

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

Cela va démarrer un daemon geth avec une console attachée qui est maintenant synchronisé avec le réseau de Jami.