Rete distribuita di Jami
Connessione
Jami si basa su un [rete distribuita] (tutoriali/rete distribuita di Jami), che offre molti vantaggi rispetto alle reti federate:
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.
Il progetto di sviluppo di una rete di servizi di assistenza tecnica (network-topo) è stato pubblicato su www.net.jami.net/savoirfairelinux/jami-project/uploads/9b725e440c2705a2a3c4d0a3df092066/Network-topo.png)
Questa rete forma una tabella hash distribuita (DHT)
Il problema principale dei sistemi di comunicazione distribuiti è la connettività tra pari, Jami lo raggiunge attraverso due elementi:
Anunci crittografati su DHT,
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
Per maggiori informazioni su OpenDHT, che fornisce un database chiave-valore distribuito per l’istituzione di connettività (con ICE) e la distribuzione dei messaggi a 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.
I nodi DHT stabili gestiti dalla comunità verranno aggiunti alla lista di bootstrap predefinita su richiesta del loro proprietario, poiché più nodi di bootstrap significano una rete più resistente e indipendente.
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.
Il name server può essere configurato in base all’account di Jami, consentendo di connettere i clienti di Jami a varie directory di utenti più o meno centralizzate.
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 : 1
La gestione di un nodo Jami
Prequisitissimi:
Geth 1.8.23+ (download da [QUESTO]
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.
Scarica il file Jami genesis dal sito di registrazione di Jami github
Crea una directory sul tuo computer che userai per memorizzare i dati della blockchain Jami
Esempio per MacOS (/User/username/jamichain)
Esempio per Linux (/home/username/jamichain)
Esempio per Windows (C:\User\username\jamichain)
Utilizzare geth per inizializzare la directory creata in (2) eseguendo
./geth --datadir /home/username/jamichain init genes is.json
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.