Rede distribuída de Jami

Conectividade

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

  • Não há ponto de falha.

  • Mais resistente à censura,

  • Não depender de nada além dos seus utilizadores,

  • A confiança entre nós não é necessária.

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,

  • Utilização de protocolos padrão para perforar buracos NAT.

Jami é construída em duas redes distribuídas distintas:

  • A rede OpenDHT kademlia para fornecer estabelecimento de conectividade distribuída e distribuição de mensagens,

  • O sistema de blocos JamiNS para fornecer registro distribuído de nomes.

A rede OpenDHT

Ver também

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.

Uma rede OpenDHT pode ser conectada conhecendo qualquer nó já conectado à rede.

Os clientes Jami usam um cache de nós persistente para se reconectar à rede após uma primeira sessão. Um nó configurável, conhecido e estável “bootstrap” é usado para a primeira conexão ou se os nós em cache não responderem.

Os clientes Jami atualmente usam bootstrap.jami.net:4222 como o nó de bootstrap padrão (configurável) e o ID de rede 0 (a rede OpenDHT pública padrão).

Contribuir para a rede OpenDHT

Cada conta da Jami tem um nó OpenDHT, contribuindo para a rede e permitindo que a Jami se escale.

Os usuários de Jami podem ter total independência executando seu próprio nó OpenDHT estável e configurando-o como um nó bootstrap em Jami, ajudando a melhorar a estabilidade, robustez e resiliência para cada usuário da rede pública OpenDHT.

Um nó independente pode ser executado usando o utilitário dhtnode incluído com o OpenDHT. o dhtnode não persiste em dados e tem um limite de armazenamento na memória padrão de 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.

A blockchain JamiNS

A blockchain JamiNS é experimental e sua arquitetura deve evoluir.

Os clientes da Jami não executam nós blockchain por si mesmos, mas sim se comunicam com um servidor da JamiNS usando HTTP para registro de nome e consulta, com uma API REST. Isso ocorre porque os recursos necessários para executar um nodo blockchain são muito altos para a maioria dos usuários finais.

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

Contribuir para o bloco de blocos JamiNS

O serviço de nomes padrão do Jami é o ns.jami.net, fornecido pela Savoir-faire Linux Inc., ligado a um nó de blockchain Ethereum; o objetivo é dar a todos a possibilidade (se assim o desejarem) de executar o seu próprio nó de blockchain e serviço HTTP, minerar algum Ether, e usá-lo para pagar a taxa de transação necessária para registar o seu nome de utilizador no Jami.

Code of the Ethereum contract, the blockchain genesis file, and the NodeJS module (HTTP server) can be found here.

A execução de um nó Jami

Prerequisites

  1. Geth 1.8.23+ (download from here)

  2. Jami genesis file (download from here)

Acompanhando a Rede Jami

O processo de ingressão na rede Jami é semelhante ao processo de ingressão em uma rede ethereum regular com a diferença de que o arquivo genesis é usado para inicializar o diretório de dados.

  1. Faça o download do arquivo Jami genesis do repo do Jami github

  2. Crie um diretório no seu computador que você usará para armazenar os dados da blockchain Jami

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

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

    • Exemplo para Windows (C:\Users\username\jamichain)

  3. Use o geth para inicializar o diretório que você criou no passo (2) executando ./geth --datadir /home/username/jamichain init genes is.json

  4. Agora você pode começar a geth com as opções de linha de comando que você precisa e especificar um dos nós de inicialização de Jami como segue:

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

Esta ação iniciará um daemon geth com um console anexado, que agora está sincronizando com a rede Jami.