Rede distribuída Jami

Conectividade

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

  • Nenhum ponto de falha,

  • Mais resistente à censura,

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

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

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 normalizados para a perfuração de NAT.

O Jami assenta em duas redes distribuídas distintas:

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

  • a blockchain JamiNS para fornecer registo de nomes distribuídos.

A rede OpenDHT

Veja 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 ligada através do conhecimento de qualquer nó já ligado à rede. Este nó irá então partilhar o seu conhecimento sobre outros nós na rede.

Os clientes Jami utilizam uma cache de nós persistente para se reconectarem à rede após uma primeira sessão. Um nó «bootstrap» configurável, conhecido e estável é utilizado para a primeira ligaçã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 Jami executa um nó OpenDHT, contribuindo para a rede e permitindo que o Jami seja escalável.

Os utilizadores do Jami podem ter total independência, executando o seu próprio nó OpenDHT estável e configurando-o como um nó de arranque no Jami, enquanto ajudam a melhorar a estabilidade, robustez e resiliência para todos os utilizadores 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 quaisquer dados e tem um limite de armazenamento na memória predefinido 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 espera-se que a sua arquitetura evolua.

Os clientes Jami não executam eles próprios nós de blockchain, mas comunicam com um servidor JamiNS utilizando HTTP para registo e consulta de nomes, com uma API REST. Isto deve-se ao facto de os recursos necessários para executar um nó de blockchain serem demasiado elevados para a maioria dos utilizadores finais.

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

Contribuir para a blockchain 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.

Executar um nó Jami

Prerequisites

  1. Geth 1.8.23+ (download from here)

  2. Jami genesis file (download from here)

Aderir à rede Jami

O processo de adesão à rede Jami é semelhante ao processo de adesão a uma rede Ethereum normal, com a diferença de que é utilizado o ficheiro genesis para inicializar o diretório de dados.

  1. Descarregue o ficheiro Jami genesis a partir do repositório Jami github

  2. Crie um diretório no seu computador que irá utilizar 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 geth para inicializar o diretório que criou em (2) executando ./geth --datadir /home/username/jamichain  init genes is.json

  4. Pode agora iniciar o geth com as opções de linha de comandos que precisa e especificando um dos bootnodes do Jami como se segue:

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

Isto irá iniciar um daemon geth com uma consola anexada que está agora a sincronizar com a rede da Jami.