Jami verspreid netwerk

Connectiviteit

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

  • Geen punt van falen.

  • Meer veerkrachtig tegen censuur,

  • Afhankelijk zijn van niets anders dan van hun gebruikers,

  • Vertrouwen tussen knooppunten is niet nodig.

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,

  • Gebruik van standaardprotocollen voor het doorbochten van gaten in NAT.

Jami is gebouwd op twee verschillende verspreide netwerken:

  • het OpenDHT kademlia-netwerk om gedistribueerde verbindingsinstallaties en berichtenverdeling te bieden,

  • De JamiNS blockchain om gedistribueerde naamregistratie te bieden.

Het OpenDHT-netwerk

Zie ook

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.

Een OpenDHT-netwerk kan worden aangesloten door kennis te hebben van elke knoop die al aan het netwerk is aangesloten.

Jami-clients gebruiken een persistente node cache om na een eerste sessie opnieuw verbinding te maken met het netwerk.

Jami-clients gebruiken momenteel bootstrap.jami.net:4222 als standaard (configureerbare) bootstrap-knop en netwerk-ID 0 (de standaard, openbaar OpenDHT-netwerk).

Bevordering van het OpenDHT-netwerk

Elke Jami-account heeft een OpenDHT-knop, waardoor Jami kan schaalvormen.

Jami-gebruikers kunnen volledige onafhankelijkheid hebben door hun eigen stabiele OpenDHT-knop te laten draaien en deze te configureren als een bootstrap-knop in Jami, terwijl ze helpen bij het verbeteren van de stabiliteit, robuustheid en veerkracht voor elke gebruiker van het openbare OpenDHT-netwerk.

Een standalone node kan worden uitgevoerd met behulp van de [dhtnode utility]https://github.com/savoirfairelinux/opendht/wiki/Running-a-node-with-dhtnode) opgenomen met OpenDHT. dhtnode blijft geen gegevens en heeft een standaard opslag limiet in het geheugen van 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.

Notitie

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

De JamiNS-blockchain

De JamiNS blockchain is experimentele en de architectuur zal naar verwachting evolueren.

Jami-clients voeren geen blockchain-knopen zelf uit, maar communiceren eerder met een JamiNS-server met HTTP voor naamregistratie en navraag, met een REST API.

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

Bevolgen van de 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.

Een Jami-knop laten draaien

Prerequisites

  1. Geth 1.8.23+ (download from here)

  2. Jami genesis file (download from here)

Ik sluit me aan bij het Jami-netwerk

Het proces van het aansluiten bij het Jami-netwerk is vergelijkbaar met het proces van het aansluiten bij een regulier ethereum-netwerk met het verschil dat het genesis-bestand wordt gebruikt om het data directory te initialiseren.

  1. Download het Jami genesis bestand van de Jami github repo

  2. Maak een directory op je computer waarmee je de Jami blockchain gegevens kunt opslaan

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

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

    • Voorbeeld voor Windows (C:\User\username\jamichain)

  3. Gebruik geth om het directory dat je hebt gemaakt in (2) te initialiseren door ./geth --datadir /home/username/jamichain init genes is.json

  4. Je kunt nu met de opties van de commandolijn beginnen en een van Jami’s startknopen als volgt vermelden:

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

Hiermee start een geth daemon met een aangesloten console die nu synchroniseert met Jami’s netwerk.