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.
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
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.
Descarregue o ficheiro Jami genesis a partir do repositório Jami github
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)
Use geth para inicializar o diretório que criou em (2) executando
./geth --datadir /home/username/jamichain init genes is.json
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.