Rete distribuita di Jami

Connessione

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

  • Non c’è senso di fallimento.

  • Più resistente alla censura,

  • Non dipende da nulla di diverso da chi ne utilizza,

  • La fiducia tra i nodi non è necessaria.

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,

  • Uso di protocolli standard per il perforare i fori NAT.

Jami è costruita su due reti distinte distribuite:

  • la rete OpenDHT kademlia per fornire l’istituzione di connettività distribuita e la distribuzione dei messaggi,

  • la blockchain JamiNS per fornire la registrazione distribuita dei nomi.

La rete OpenDHT

Vedi anche

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 network OpenDHT può essere collegato conoscendo qualsiasi nodo già connesso alla rete.

I clienti Jami utilizzano un cache di nodo persistente per riconnettersi alla rete dopo una prima sessione. Un nodo configurabile, noto e stabile «bootstrap» viene utilizzato per la prima connessione o se i nodi in cache non rispondono.

I clienti Jami attualmente utilizzano bootstrap.jami.net:4222 come nodo di bootstrap predefinito (configurato) e ID di rete 0 (la rete OpenDHT pubblica predefinita).

Contribuire alla rete OpenDHT

Ogni account di Jami gestisce un nodo OpenDHT, contribuendo alla rete e permettendo a Jami di scalare.

Gli utenti di Jami possono avere piena indipendenza eseguendo il proprio nodo OpenDHT stabile e configurandolo come nodo di bootstrap in Jami, contribuendo al tempo stesso a migliorare la stabilità, la robustezza e la resilienza per ogni utente della rete pubblica OpenDHT.

Un nodo standalone può essere eseguito utilizzando l’utilità [dhtnode]https://github.com/savoirfairelinux/opendht/wiki/Running-a-node-with-dhtnode) incluso con OpenDHT. dhtnode non conserva dati e ha un limite di memorizzazione predefinito di 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.

Nota

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

La blockchain JamiNS

La blockchain JamiNS è sperimentale e si prevede che la sua architettura evolverà.

I clienti Jami non eseguono i nodi blockchain da soli, ma piuttosto comunicano con un server JamiNS utilizzando HTTP per la registrazione di nomi e la query, con un REST API. Questo è perché le risorse necessarie per eseguire un nodo blockchain sono troppo alte per la maggior parte degli utenti finali.

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

Contribuire alla blockchain JamiNS

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.

La gestione di un nodo Jami

Prerequisites

  1. Geth 1.8.23+ (download from here)

  2. Jami genesis file (download from here)

Unire la rete Jami

Il processo di unire la rete Jami è simile al processo di unire una rete etereo regolare con la differenza che il file genesi viene utilizzato per inizializzare la directory di dati.

  1. Scarica il file Jami genesis dal sito di registrazione di Jami github

  2. Crea una directory sul tuo computer che userai per memorizzare i dati della blockchain Jami

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

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

    • Esempio per Windows (C:\User\username\jamichain)

  3. Utilizzare geth per inizializzare la directory creata in (2) eseguendo ./geth --datadir /home/username/jamichain init genes is.json

  4. Ora puoi iniziare a geth con le opzioni di linea di comando di cui hai bisogno e specificare uno dei nodi di avvio di Jami come segue:

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

Questo avvierà un daemon Geth con una console collegata che ora si sincronizza con la rete di Jami.