Redes distribuidas de Jami

Conectividad

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

  • No hay punto de fracaso.

  • Más resistente a la censura,

  • No depender de nada más que de sus usuarios,

  • La confianza entre los nodos no es necesaria.

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,

  • Uso de protocolos estándar para perforar agujeros NAT.

Jami está construida sobre dos redes distribuidas distintas:

  • la red de kademlia OpenDHT para proporcionar establecimiento de conectividad distribuida y distribución de mensajes,

  • la cadena de bloques JamiNS para proporcionar registro distribuido de nombres.

La red OpenDHT

Ver también

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.

Un nodo OpenDHT puede unirse al conocimiento de cualquier nodo ya conectado a la red.

Los clientes Jami utilizan un nudo persistente en caché para volver a conectarse a la red después de una primera sesión.

Los clientes de Jami actualmente utilizan bootstrap.jami.net:4222 como nodo de bootstrap predeterminado (configurable) y ID de red 0 (la red OpenDHT pública predeterminada).

Contribuir a la red OpenDHT

Cada cuenta de Jami ejecuta un nodo OpenDHT, contribuyendo a la red y permitiendo a Jami escalar.

Los usuarios de Jami pueden tener plena independencia ejecutando su propio nodo OpenDHT estable y configurándolo como un nodo de arranque en Jami, mientras que ayudan a mejorar la estabilidad, robustez y resiliencia para cada usuario de la red pública OpenDHT.

Un nodo independiente se puede ejecutar utilizando la [dhtnode utility] (https://github.com/savoirfairelinux/opendht/wiki/Running-a-node-with-dhtnode) incluida con OpenDHT. dhtnode no persiste ningún dato y tiene un límite de almacenamiento predeterminado en memoria 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.

La cadena de bloques JamiNS

La cadena de bloques JamiNS es experimental y se espera que su arquitectura evolucione.

Los clientes de Jami no ejecutan nodos de cadena de bloques ellos mismos, sino que se comunican con un servidor de JamiNS utilizando HTTP para el registro de nombres y la consulta, con una API REST. Esto se debe a que los recursos necesarios para ejecutar un nodo de cadena de bloques son demasiado altos para la mayoría de los usuarios finales.

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

Contribuir a la cadena de bloques JamiNS

El servicio de nombre Jami predeterminado es ns.jami.net, proporcionado por Savoir-faire Linux Inc., conectado a un nodo de bloquechain Ethereum; el objetivo es darle a todos la posibilidad (si así lo desean) de ejecutar su propio nodo de blockchain y servicio HTTP, minar algo de éter, y utilizarlo para pagar la tarifa de transacción necesaria para registrar su nombre de usuario en Jami.

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

Ejecutar un nodo de Jami

Prerequisites

  1. Geth 1.8.23+ (download from here)

  2. Jami genesis file (download from here)

Unirse a la red Jami

El proceso de unirse a la red Jami es similar al proceso de unirse a una red ethereum regular con la diferencia de que el archivo genesis se utiliza para iniciar el directorio de datos.

  1. Descarga el archivo de la genesis de Jami desde el repositorio de Github de Jami

  2. Crea un directorio en tu computadora que usará para almacenar los datos de la cadena de bloques Jami

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

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

    • Ejemplo para Windows (C:\User\username\jamichain)

  3. Utilice geth para iniciar el directorio que creó en (2) ejecutando ./geth --datadir /home/username/jamichain init genes is.json

  4. Ahora puedes comenzar geth con las opciones de línea de comandos que necesitas y especificar uno de los nodos de arranque de Jami como sigue:

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

Esto iniciará un daemon de Geth con una consola conectada que ahora está sincronizando con la red de Jami.