Redes distribuidas de Jami

Conectividad

Jami se basa en un [red distribuida] (tutoriales/red distribuida de Jami), que trae múltiples ventajas en comparación con las redes federales:

  • 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.

Tópicos de red

Esta red forma una tabla de hash distribuida (DHT)

El problema principal de los sistemas de comunicación distribuidos es la conectividad entre pares, Jami lo logra a través de dos elementos:

  • Anuncios encriptados en DHT,

  • 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

Consulte https://github.com/savoirfairelinux/opendht> para obtener más información sobre OpenDHT, que proporciona un almacén de datos de clave distribuido para el establecimiento de conectividad (con ICE) y la distribución de mensajes en 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.

Los nodos DHT estable gestionados por la comunidad se agregarán a la lista de arranque predeterminado a petición de su propietario, ya que más nodos de arranque significan una red más resistente e independiente.

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.

El servidor de nombres se puede configurar en la cuenta de Jami, permitiendo conectar a los clientes de Jami a varios directorios de usuarios más o menos centralizados.

Contribuir a la cadena de bloques JamiNS

El servicio de nombre predeterminado de Jami es ns.jami.net, proporcionado por Savoir-faire Linux, conectado a un nodo de cadena de bloques Ethereum; el objetivo es dar a todos la posibilidad (si lo hacen) de ejecutar su propio nodo de cadena de bloques y servicio HTTP, extraer algo de Ether y usarlo 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 : 1

Ejecutar un nodo de Jami

Los requisitos previos:

  1. Geth 1.8.23+ (descargar desde aquí)

  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

  • Ejemplo para MacOS (/User/username/jamichain)

  • Ejemplo para Linux (/home/username/jamichain)

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

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

  2. 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.