Jami verspreid netwerk

Connectiviteit

Jami staat op een [distribueerd netwerk] (tutorials/Jami-distribueerd netwerk), dat meerdere voordelen biedt in vergelijking met federaal netwerk:

  • Geen punt van falen.

  • Meer veerkrachtig tegen censuur,

  • Afhankelijk zijn van niets anders dan van hun gebruikers,

  • Vertrouwen tussen knooppunten is niet nodig.

Het is een van de belangrijkste onderwerpen van de Europese Unie.

Dit netwerk vormt een gedistribueerde hashtabel (DHT)

Het kernprobleem van gedistribueerde communicatiesystemen is peer connectiviteit, Jami bereikt het door middel van twee elementen:

  • Gecodeerde aankondigingen op DHT,

  • 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 https://github.com/savoirfairelinux/opendht> voor meer informatie over OpenDHT, die een gedistribueerde databank met sleutelwaarden biedt voor het opzetten van verbindingen (met ICE) en de verspreiding van berichten 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.

Stabele community-run DHT-knopen worden op verzoek van hun eigenaar toegevoegd aan de standaard-bootstraplijst, omdat meer bootstrap-knopen een meer veerkrachtig, onafhankelijk netwerk betekenen.

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.

De naamserver kan worden geconfigureerd via een bij-account in Jami, waardoor Jami-clients kunnen worden verbonden met verschillende meer of minder gecentraliseerde gebruikerslijsten.

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

Een Jami-knop laten draaien

Voorwaarden:

  1. Geth 1.8.23+ (download van [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

  • Voorbeeld voor MacOS (/User/username/jamichain)

  • Voorbeeld voor Linux (/home/username/jamichain)

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

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

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