Jami distribuerat nätverk

Anslutningsbarhet

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

  • Ingen poäng med misslyckande.

  • Mer motståndskraftig mot censur,

  • De är inte beroende av något annat än sina användare.

  • Förtroende mellan knutor är inte nödvändigt.

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,

  • Användning av standardprotokoller för NAT-hålsprutning.

Jami bygger på två distinkta distribuerade nätverk:

  • OpenDHT kademlia-nätet för att tillhandahålla distribuerad anslutningsanläggning och meddelandefördelning,

  • JamiNS blockchain för att tillhandahålla distribuerad namnregistrering.

OpenDHT-nätverket

Se även

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.

Ett OpenDHT-nätverk kan anslutas genom att veta om alla noder som redan är anslutna till nätverket.

Jami-klienter använder en persistent node cache för att återansluta till nätverket efter en första session. En konfigurerbar, känd, stabil ”bootstrap” node används för den första anslutningen eller om cache-noder inte svarar.

Jami-klienter använder för närvarande bootstrap.jami.net:4222 som standard (konfigurerbar) bootstrap-knot och nätverks-ID 0 (de default, offentliga OpenDHT-nätverket).

Bidra till OpenDHT-nätverket

Varje Jami-konto har en OpenDHT-knod, vilket bidrar till nätverket och tillåter Jami att skala.

Jami-användare kan ha full självständighet genom att köra sin egen stabila OpenDHT-nöd och konfigurera den som en startnöd i Jami, samtidigt som de bidrar till att förbättra stabiliteten, robustheten och motståndskraften för varje användare av det offentliga OpenDHT-nätverket.

En fristående nod kan köras med hjälp av [dhtnode utility]https://github.com/savoirfairelinux/opendht/wiki/Running-a-node-with-dhtnode) som ingår med OpenDHT. dhtnode behåller inga data och har en standard lagringsgräns i minne på 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.

Observera

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

JamiNS-blockchain

JamiNS-blockchain är experimentellt och dess arkitektur förväntas utvecklas.

Jami-klienter kör inte blockkedja knutor själva utan kommunicerar snarare med en JamiNS-server med hjälp av HTTP för namnregistrering och förfrågan, med en REST API. Detta beror på att de resurser som behövs för att köra en blockkedja knut är för höga för de flesta slutanvändare.

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

Bidra till 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.

Att köra en Jami-knod

Prerequisites

  1. Geth 1.8.23+ (download from here)

  2. Jami genesis file (download from here)

Att bli medlem i Jami-nätverket

Processen att ansluta till Jami-nätverket liknar processen att ansluta till ett vanligt ethereum-nätverk med skillnaden att genesisfilen används för att initialisera datadata.

  1. Ladda ner Jami genesis-filen från Jami github repo

  2. Skapa en katalog på din dator som du kommer att använda för att lagra Jami blockchain data

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

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

    • Exempel för Windows (C:\User\username\jamichain)

  3. Använd geth för att initialisera den katalog du skapat i (2) genom att köra ./geth --datadir /home/username/jamichain init genes is.json

  4. Du kan nu börja geth med de befallningslinjer du behöver och ange ett av Jami: s startnoder som följer:

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

Det här startar en geth-daemon med en ansluten konsol som nu synkroniseras med Jami:s nätverk.