Джами распределенная сеть

Связь

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

  • Нет смысла неудачи.

  • Более устойчивы к цензуре,

  • не зависит от чего-либо, кроме пользователей,

  • Доверие между узлами не обязательно.

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,

  • Использование стандартных протоколов для пробивания отверстий NAT.

Jami построена на двух различных распределенных сетях:

  • сеть OpenDHT kademlia для обеспечения распределенного установления связи и распространения сообщений,

  • блокчейн JamiNS для распределенной регистрации имен.

Сеть OpenDHT

См.также

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.

В сети OpenDHT можно присоединиться, зная о любых узлах, уже подключенных к сети.

Клиенты Jami используют постоянный узел-каш для восстановления связи с сетью после первой сессии. Для первого соединения используется конфигурируемый, известный, стабильный «bootstrap» узел или если кешированные узлы не отвечают.

Клиенты Jami в настоящее время используют bootstrap.jami.net:4222 в качестве дефолта (конфигурируемого) узла bootstrap и идентификатора сети 0 (дефолтная, общедоступная сеть OpenDHT).

Вклад в сеть OpenDHT

Каждый аккаунт Jami работает узлом OpenDHT, способствуя созданию сети и позволяет Jami масштабировать.

Пользователи Jami могут иметь полную независимость, запуская свой собственный стабильный узл OpenDHT и конфигурируя его в качестве узла загрузки в Jami, помогая при этом улучшить стабильность, надежность и устойчивость для каждого пользователя общественной сети OpenDHT.

Отдельный узел может быть запущен с помощью утилиты dhtnode, включённой в состав OpenDHT. dhtnode не сохраняет никаких данных и по умолчанию имеет лимит хранения в памяти 8 МиБ.

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.

Примечание

To add a community-run DHT node to the default bootstrap server list, please email contact@jami.net.

Блокчейн JamiNS

Блокчейн JamiNS экспериментальный и его архитектура, как ожидается, будет развиваться.

Клиенты Jami не сами запускают блокчейн-узлы, а скорее общаются с сервером JamiNS с использованием HTTP для регистрации имени и запроса с помощью REST API. Это связано с тем, что ресурсы, необходимые для запуска блокчейн-узла, слишком высоки для большинства конечных пользователей.

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

Вклад в блокчейн JamiNS

The default Jami name service is ns.jami.net, provided by Savoir-faire Linux Inc., connected to an Ethereum blockchain node; the goal being to give everyone the possibility (if they which so) to run their own blockchain node and HTTP service, mine some Ether, and use it to pay the transaction fee needed to register their username in Jami.

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

Запуск узла Jami

Prerequisites

  1. Geth 1.8.23+ (download from here)

  2. Jami genesis file (download from here)

Присоединение к сети Jami

Процесс присоединения к сети Jami похож на процесс присоединения к обычной сети Ethereum, с отличием того, что файл генезиса используется для инициализации каталога данных.

  1. Скачать файл Jami genesis из репо Jami github

  2. Создайте каталог на своем компьютере, который вы будете использовать для хранения данных блокчейна Jami

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

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

    • Пример для Windows (C:\User\username\jamichain)

  3. Используйте geth для инициализации каталога, который вы создали в (2) запуская ```./geth –datadir /home/username/jamichain init genes is.json ``

  4. Теперь вы можете начать Geth с нужных командных вариантов и указать один из узлов запуска Jami следующим образом:

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

Это запустит дэймон-гейт с прикрепленной консолью, которая сейчас синхронизируется с сетью Джами.