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.
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
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.
Faça o download do arquivo Jami genesis do repo do Jami github
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)
Use o geth para inicializar o diretório que você criou no passo (2) executando
./geth --datadir /home/username/jamichain init genes is.json
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.