Джами распределенная сеть
Связь
Jami опирается на распределённую сеть, которая даёт множество преимуществ по сравнению с федеративными сетями:
Нет смысла неудачи.
Более устойчивы к цензуре,
не зависит от чего-либо, кроме пользователей,
Доверие между узлами не обязательно.
[Сеть-топо]https://git.jami.net/savoirfairelinux/jami-project/uploads/9b725e440c2705a2a3c4d0a3df092066/Сеть-топо.png)
Эта сеть образует распределенную хэш-таблицу (DHT)
Основная проблема распределенных систем связи - это подключение сверстников, которое Джами достигает через два элемента:
Зашифрованные объявления на DHT,
Использование стандартных протоколов для пробивания отверстий NAT.
Jami построена на двух различных распределенных сетях:
сеть OpenDHT kademlia для обеспечения распределенного установления связи и распространения сообщений,
блокчейн JamiNS для распределенной регистрации имен.
Сеть OpenDHT
См. https://github.com/savoirfairelinux/opendht> для получения дополнительной информации об OpenDHT, который предоставляет распределенный хранилище данных ключевых значений для установки подключения (с ICE) и распространения сообщений в Jami.
В сети OpenDHT можно присоединиться, зная о любых узлах, уже подключенных к сети.
Клиенты Jami используют постоянный узел-каш для восстановления связи с сетью после первой сессии. Для первого соединения используется конфигурируемый, известный, стабильный «bootstrap» узел или если кешированные узлы не отвечают.
Клиенты Jami в настоящее время используют bootstrap.jami.net:4222 в качестве дефолта (конфигурируемого) узла bootstrap и идентификатора сети 0 (дефолтная, общедоступная сеть OpenDHT).
Вклад в сеть OpenDHT
Каждый аккаунт Jami работает узлом OpenDHT, способствуя созданию сети и позволяет Jami масштабировать.
Пользователи Jami могут иметь полную независимость, запуская свой собственный стабильный узл OpenDHT и конфигурируя его в качестве узла загрузки в Jami, помогая при этом улучшить стабильность, надежность и устойчивость для каждого пользователя общественной сети OpenDHT.
Отдельный узел может быть запущен с помощью утилиты dhtnode, включённой в состав OpenDHT. dhtnode не сохраняет никаких данных и по умолчанию имеет лимит хранения в памяти 8 МиБ.
Стабильные узлы DHT, управляемые сообществом, будут добавлены в список по умолчанию по запросу их владельца. Чем больше серверов начальной загрузки, тем более устойчива и независима сеть.
Блокчейн JamiNS
Блокчейн JamiNS экспериментальный и его архитектура, как ожидается, будет развиваться.
Клиенты Jami не сами запускают блокчейн-узлы, а скорее общаются с сервером JamiNS с использованием HTTP для регистрации имени и запроса с помощью REST API. Это связано с тем, что ресурсы, необходимые для запуска блокчейн-узла, слишком высоки для большинства конечных пользователей.
Наменный сервер может быть настроен на подсчет в Jami, что позволяет подключить клиентов Jami к различным более или менее централизованным каталогам пользователей.
Вклад в блокчейн 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 : 1
Запуск узла Jami
Предварительные условия:
Geth 1.8.23+ (загрузить с [ТУДЕ]https://geth.ethereum.org/downloads/))
Jami genesis file (download from HERE)
Присоединение к сети Jami
Процесс присоединения к сети Jami похож на процесс присоединения к обычной сети Ethereum, с отличием того, что файл генезиса используется для инициализации каталога данных.
Скачать файл Jami genesis из репо Jami github
Создайте каталог на своем компьютере, который вы будете использовать для хранения данных блокчейна Jami
Пример для MacOS (/User/username/jamichain)
Пример для Linux (/home/username/jamichain)
Пример для Windows (C:\User\username\jamichain)
Используйте geth для инициализации каталога, который вы создали в (2) запуская ```./geth –datadir /home/username/jamichain init genes is.json ``
Теперь вы можете начать Geth с нужных командных вариантов и указать один из узлов запуска Jami следующим образом:
geth --datadir=/home/username/jamichain --syncmode=full --networkid 1551 --bootnodes "enode://11ba6d3bfdc29a8afb24dcfcf9a08c8008005ead62756eadb363523c2ca8b819efbb264053db3d73949f1375bb3f03090f44cacfb88bade38bb6fc2cb3d890a5@173.231.120.228:30301" console
Это запустит дэймон-гейт с прикрепленной консолью, которая сейчас синхронизируется с сетью Джами.