Redes distribuidas de Jami
Conectividad
Jami se basa en una red distribuida, lo que aporta múltiples ventajas en comparación con las redes federadas:
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.
Esto forma una red de Tablas Hash distribuidas (DHT).
El problema central de los sistemas de comunicación distribuidos es la conectividad entre pares. Jami lo logra a través de dos elementos:
Anuncios cifrados en la red 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
Ver también
Visitar la página <https://github.com/savoirfairelinux/opendht > para más información sobre OpenDHT. OpenDHT proporciona un almacén de datos de clave-valor 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 estables administrados por la comunidad se agregarán a la lista predeterminada de servidores de arranque a solicitud de su propietario, ya que más nodos de arranque significan una red más resistente e independiente.
Nota
Para agregar un nodo DHT administrado por la comunidad a la lista predeterminada de servidores de arranque, enviar un correo electrónico a 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.
El servidor de nombres se establece en el nivel de cuenta. Esto permite que el cliente Jami se conecte simultáneamente a múltiples directorios de usuarios.
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.
El código del contrato Ethereum, el archivo blockchain genesis y el módulo NodeJS (servidor HTTP) se pueden encontrar aquí.
Ejecutar un nodo de Jami
Requisitos Previos
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.
Descarga el archivo de la genesis de Jami desde el repositorio de Github de Jami
Crea un directorio en tu computadora que usará para almacenar los datos de la cadena de bloques Jami
Ejemplo para GNU/Linux (/home/username/jamichain)
Ejemplo para macOS (/Users/username/jamichain)
Ejemplo para Windows (C:\User\username\jamichain)
Utilice geth para iniciar el directorio que creó en (2) ejecutando
./geth --datadir /home/username/jamichain init genes is.json
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.