Réseau distribué Jami

Connectivité

Jami s’appuie sur un [réseau distribué] (tutorials/réseau distribué de Jami), qui présente plusieurs avantages par rapport aux réseaux fédérés:

  • 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.

Le projet de développement de la communauté internationale de la pêche (JEM) a été lancé en juin dernier.

Ce réseau forme une table hash distribuée (DHT)

Le problème principal des systèmes de communication distribués est la connectivité entre pairs, Jami l’accomplit à travers deux éléments:

  • Des annonces cryptées sur DHT,

  • 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 https://github.com/savoirfairelinux/opendht> pour plus d’informations sur OpenDHT, qui fournit un magasin de données de valeur clé distribué pour l’établissement de connectivité (avec ICE) et la distribution de messages à 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.

Les nœuds DHT stables gérés par la communauté seront ajoutés à la liste de démarrage par défaut à la demande de leur propriétaire, car plus de nœuds de démarrage signifient un réseau plus résilient et indépendant.

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.

Le serveur de noms peut être configuré sous-compte dans Jami, permettant de connecter les clients Jami à divers répertoires d’utilisateurs plus ou moins centralisés.

Contribuer à la blockchain JamiNS

Le service de nom par défaut Jami est ns.jami.net, fourni par Savoir-faire Linux, connecté à un nœud blockchain Ethereum; l’objectif est de donner à tout le monde la possibilité (si elles le font) d’exécuter leur propre nœud blockchain et service HTTP, de extraire de l’Ether et de l’utiliser pour payer les frais de transaction nécessaires pour enregistrer leur nom d’utilisateur dans Jami.

Le code du contrat Ethereum, le fichier génésique de la blockchain et le module NodeJS (serveur HTTP) peuvent être trouvés ici: 1

Exécuter un nœud Jami

Pré-réquis:

  1. Geth 1.8.23+ (télécharger à partir de [CEI]

  2. Le fichier Jami genesis (télécharger à partir de 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

  • Exemple pour MacOS (/Users/username/jamichain)

  • Exemple pour Linux (/Users/username/jamichain)

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

  1. 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

  2. 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.