Текстовый вариант Лекции №3 Nym Shipyard Academy на русском языке

Pavel T.
25 min readNov 29, 2022

--

Создано на основе русскоязычных субтитров к видеозаписи Лекции №3 Shaipyard Academy на официальном Youtube-канале плюс ручная корректировка текста с прослушиванием на языке оригинала. Возможно, кому-то текстовый вариант тоже покажется достаточно удобным. По возможности сохранено полное содержание.

Качество аудио местами откровенно “хромало”, поэтому некоторые места, которые отсутствовали, которые было плохо слышно и/или было тяжело перевести, опущены и обозначены (…). В основном это касается разделов “вопрос-ответ” (Q&A). По этой же причине ряд предложений переформулирован именно с точки зрения русского языка для удобства восприятия. Термины, которые не удалось 100%-но идентифицировать, помечены знаками вопроса (??).

Разделы “вопрос-ответ” (Q&A) можно пропустить без потери общности рассмотрения.

Приятного ознакомления!

Выступление, которое я собираюсь провести сегодня, называется «Обзор сети Nym», а точнее, мы собираемся рассмотреть что-то вроде архитектуры различных типов программного обеспечения, из которых состоит Nym, почему они все подходят друг к другу и работают в связке.

Я собираюсь пробежаться по различным технологиям, которые использует Nym, сделать поверхностный обзор архитектуры. И я собираюсь как бы разделить фокус, фокусируясь на разных компонентах Nym, каждый из которых — это своего рода последовательное погружение немного глубже.

Nym на самом деле представляет собой пару перекрывающихся систем, которые взаимно поддерживают друг друга, поэтому мы посмотрим, как это сочетание работает. Далее мы посмотрим, как через микснет проходит трафик — это основной компонент понимания того, как система работает. И затем, наконец, мы рассмотрим другой вид сетевого компонента — блокчейн Nyx.

Nym в общих чертах представляет собой платформу конфиденциальности, которая обеспечивает две основные вещи:

  • Сильную конфиденциальность на сетевом уровне, уровне отправки трафика между разными машинами, подключенными к Интернету. Снова рассматриваются изощренные сквозные злоумышленники, которые могут перехватывать трафик Глобальной сети (очень значимое событие в том, что АНБ было раскрыто Эдвардом Сноуденом), прослушивание подводных кабелей, перекачка интернет-трафика и поиск закономерностей в нем. По сути, это своего рода слежка и разделение людей, основанное на поиске определенных шаблонов в метаданных.
  • Вторая вещь, которую Nym обеспечивает как своего рода достаточно крупная платформа — это связь как набор видов конфиденциальности. Технологии также обеспечивают наш анонимный контроль доступа. Что такое анонимный контроль доступа с использованием «слепых», повторно рандомизируемых, децентрализованных учетных данных, больше известных как учетные данные Coconut, о которых, я уверен, вы слышали. Если вы используете микснет для анонимизации себя на сетевом уровне, на уровне отправки трафика между ящиками, тогда учетные данные Coconut могут позволить вам, например, заменить схему входа в систему чем-то иным, сохраняющим конфиденциальность.

Мы пытаемся предоставить полный стек инструментов, охватывающий конфиденциальность. Цель состоит в том, чтобы позволить разработчикам создавать новые или обновлять существующие приложения на основе функций конфиденциальности, чтобы мы могли вернуть всем конфиденциальность или даже просто предоставить ее впервые, потому что на самом деле, возможно, ее и не было.

Я думаю, что стоит повторить, в чем проблема — что мы на самом деле притворяемся, что защищаем людей от проблемы. Вы знаете, что есть существующие технологии конфиденциальности: Tor и Signal хороши, они своего рода канонические примеры этого, у вас также есть такие вещи, как ITP, а если вы какое-то время были в сообществе Эфириума и блокчейна, тогда вы знаете о доказательстве с нулевым разглашением (см. zero-knowledge proofs).

Все эти существующие технологии конфиденциальности, хотя у них также есть какие-то преимущества, в конечном счете, допускают утечку метаданных всякий раз, когда вы их используете.

Что такое метаданные — это данные о данных. Как вы можете видеть на слайдах, это такие вещи, как IP-адрес отправителя, точное время отправки и получения сообщений, и, возможно, это также другая информация о соединении или даже оборудовании, которое использовалось для отправки этих сообщений. Если вы попробуете поиграть с такими инструментами, как Wireshark, или множеством других подобных инструментов, анализирующих канал на сетевом уровне (см. network protocol analyzer), вы, наверное, удивитесь тому, какое количество данных можно получить.

Я не знаю, сколько людей это видели, но сегодня было объявление о том, что Metamask изменился. Они собираются изменить свои условия: каждый раз, когда вы используете Metamask, будет фиксироваться ваш IP-адрес и т.п. Очевидно, это много данных, которые могут быть собраны о людях, поэтому, даже если вы используете зашифрованный обмен сообщениями или знаете, что отправляете транзакции… Давайте вернемся к примеру с Metamask. Когда вы отправляете транзакции, вы и получатель имеете две псевдонимные учетные записи, которые не доксированы (см. doxing), они не связаны с какой-либо личностью в реальном мире. Вы «сливаете» данные, которые могут быть использованы для вашей деанонимизации с помощью машинного обучения. Если посмотреть на IP-адрес, то его можно довольно легко геолоцировать. Поэтому, даже если вы отправляете зашифрованные сообщения, видно, кто эти две вовлеченные стороны и где они. Что мы можем тогда узнать о них, учитывая также время отправки сообщений? Если есть два человека, которые отправляют сообщения друг другу только поздно ночью, что вы можете из этого почерпнуть? И даже размер пересылаемых пакетов каким-то образом характеризует тип схемы сетевого трафика. И если вы отправляете что-то зашифрованное, через зашифрованный туннель, можно строить предположения о том, какой тип трафика проходит: возможно, что это видео, а возможно, что это графическое сообщение, — и все эти вещи, взятые вместе, могут дать достаточно информации для составления шаблонов на основе потока трафика, потока метаданных. Таким образом, вас можно корректно деанонимизировать (идентифицировать), и это как раз та проблема, от которой Nym пытается защитить пользователей.

Это подводит меня к ключевому моменту первого раздела: каковы технологии, которые могут предоставить функции конфиденциальности пользователям приложений и разработчикам? Для этого у нас есть несколько вещей. Вероятно, наиболее известная из них — это микснет, который представляет собой оверлейную сеть (поверх существующей сети), которая шифрует и смешивает пакетный трафик Sphinx, так что невозможно определить, кто с кем общается в этой сети, и он основан на модифицированной версии дизайна Loopix. Вторая вещь, о которой я уже говорил, это фирменная схема доступа, называющаяся Coconut. В основном Coconut позволяет вам управлять доступом, например, войти в систему, но вместо того, чтобы использовать парадигму, основанную на идентификации, которая подразумевает вход в систему с именем пользователя и паролем (это идентификатор, который является вашим «удостоверением личности»), переходит к модели, в которой вы можете войти в систему, просто используя учетные данные, и эти учетные данные говорят, что этот человек имеет право на доступ к этому контенту, имеет право войти здесь, не говоря ни слова. Это кажется довольно небольшим, довольно тонким изменением, но на самом деле, когда вы начинаете думать о влиянии этого, становится понятно, что на самом деле это довольно мощная технология.

Sphinx в основном представляет собой формат пакетов, который мы используем для анонимизации размера трафика, а также для смешивания трафика, о чем я расскажу чуть позже. Так что все, что вам нужно знать — это формат зашифрованного пакета, который мы используем в микснете в настоящее время; он также используется в сети Lightning Network и т.п. Также у нас есть блокчейн Nyx, который является универсальной платформой для смарт-контрактов с поддержкой Cosmos, и это, по сути, «дом» для смарт-контрактов, которые отслеживают микснет, а также для самих токенов, и в будущем также будет «домом» для Coconut.

Q&A

Прежде чем мы перейдем к архитектуре, я собираюсь сделать паузу и взглянуть на некоторые вопросы:

В: Учетные данные Coconut — это система входа только для использования микснета, или вы могли бы ее использовать для любого osflow(??) независимо от них?

О: Это действительно хороший вопрос, и да, в основном идея заключается в том, что это не специфика именно микснета, просто первое использование будет связано с микснетом, Представьте, что это замена чего-то вроде oauth, так что вместо того, чтобы иметь вместо веб-токена JavaScript(??), в котором находятся ваши учетные данные для входа в Google, вы имеете другой токен, который был бы таким: «О, носитель этого токена может получить доступ к этому сайту прямо сейчас!»

В: Можете ли вы также объяснить, что такое oauth и какие проблемы с ним? Я думаю, что это важная проблема здесь.

О: В основном это сокращение от права открытой авторизации, это просто стандарт, который используется как способ, которым все веб-сайты или интернет-приложения могут получить доступ к своей информации на других сайтах, но без использования паролей, так что, если вы хотите, вы можете войти, например, в учетную запись Google один раз. И если бы вы хотели авторизовать учетную запись вашей учетной записи Google на другом веб-сайте вместо того, чтобы вводить свои учетные данные на этом веб-сайте, вы можете использовать oauth, чтобы делегировать доступ к нему. Это сайт, которому вы, возможно, не доверяете, но вы хотите войти в свою учетную запись Google, потому что вы не хотите подписываться на новую учетную запись на этом сайте. Вы можете делегировать доступ через oauth и сказать, что я хочу войти в свою учетную запись Google, но при этом я не собираюсь давать им свои учетные данные, я собираюсь использовать oauth, чтобы сказать: «Эй, этот человек тот, за кого он себя выдает».

Может быть, это был более сложный пример, чем я хотел использовать. Я имею в виду, представьте, что более есть простой порядок действий вместо того, чтобы вводить пароль и адрес электронной почты на веб-сайте VPN для оплаты, тогда вы могли бы использовать учетные данные вместо этого, которые доказывают, что вы заплатили за это, но вы не связываете свой логин и вашу личную информацию, например, такую, ​​​​как ваша личная платежная информация.

…краткий ответ — да, его (Сoconut ??) можно использовать для другого потока, независимого от Nym, и вы также можете использовать его для других вещей, таких как частные системы голосования или даже частные валюты или что-то в этом роде, в основном, до тех пор, пока вы можете сделать доказательство этого, как доказательство диапазона, для которого придется сильно углубиться в Coconut. Но если вы хотите покопаться, просто отправьте мне пинг в Discord, и мы можем поговорить об этом.

В: …

О:…cgi-bin (никнейм), я не уверен, что вы имеете в виду под правдоподобным отрицанием имени ZK, не могли бы вы перефразировать свой вопрос… подождите… Coconut эквивалентен ZK Nym, пришло … я не уверен, как это полностью связано, но, может быть, нам следует поговорить об этом, например, в автономном режиме и вне разговора, на одном из технических каналов и в Discord.

Это немного пугающая диаграмма из нашей документации, которая показывает поток трафика и тип общей архитектуры микснета. Сеть Nym включает в себя микснет, который представляет собой такую ​​​​маленькую многослойную структуру в левом верхнем углу. Также изображен блокчейн Nyx рядом с ней, с правой стороны. Маленькие человечки внизу являются пользователями, и на данный момент мы считаем, что вам не обязательно понимать всю эту диаграмму в деталях. Если вы заинтересованы в поиске этой архитектуры в виде схемы, вы можете найти ее в документации.

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

Микснет, который, как вы знаете, представляет оверлейную сеть, которая отправляет и смешивает зашифрованные пакеты, это своего рода посредник. Если бы я захотел общаться с Саймоном через микснет сейчас, то отправленные мной пакеты могут идти с моей любой машины, которую я использую, будь то десктоп или мобильный телефон. Они пройдут через микснет к Саймону, и по пути с ними происходит своего рода нарушение длины метаданных.

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

Первый из этих типов — это миксноды, и опять же, это, вероятно, самые известные или, по крайней мере, наиболее обсуждаемые узлы в настоящее время в сети Nym.

Они являются чем-то вроде основы микснета. Как следует из названия, это узлы, которые смешивают пакеты. Способ, которым они смешивают эти пакеты, «разрушает» связи между отправителями и получателями, и это делает статистический анализ трафика очень сложным. У вас есть 240 микснод: 80 на первом уровне (слое), 80 на втором, 80 на третьем. Когда пакет отправляется с моей машины, он зашифрован как Sphinx пакет, затем он идет к шлюзу, о котором я расскажу чуть позже, а затем он идет к миксноде на первом уровне, миксноде на втором уровне, миксноде на третьем уровне, а затем выходит на другую сторону микснета. Каждая из этих микснод делает на каждом слое одно и то же: они получают пакет от шлюза или другой миксноды, расшифровывают внешний слой пакета Sphinx, внутри будет другой пакет Sphinx, который они уже не могут корректно расшифровать, затем отправляют его следующему узлу, который снова является либо микснодой, либо шлюзом. Это своего рода прокси-сервер с несколькими переходами для отправки трафика между множеством разных мест, пока он не достигнет конечного пункта назначения. Узлы после получения пакетов удерживают их в течение переменного (регулируемого) периода времени. Также никогда не бывает просто нескольких отдельных пакетов, проходящих через микснет: существует постоянный поток смешанного сетевого трафика, независимо от того, сколько людей на самом деле его использует, и это потому, что все узлы и клиенты также отправляют друг другу то, что мы называем фиктивным (ложным) трафиком, который скрывает, когда в микснете на самом деле происходит какая-то реальная активность.

Если вернуться к одному из более ранних примеров, о которых я говорил, т.е. если у вас есть кто-то вроде Глобального Пассивного Противника, который может контролировать всю сеть, тогда не имеет значения, насколько я смешиваю пакеты. Если сеть использует только 10 человек, тогда другие люди могут видеть, что есть активность, идущая, например, от меня к Саймону, что, очевидно, не очень хорошо, если вы хотите быть полностью анонимным. Цель микснета состоит в том, чтобы иметь возможность создать ситуацию, в которой даже если кто-то может отслеживать весь трафик, проходящий через него, он не может точно сказать, кто с кем разговаривает, и он также не может сказать, когда люди разговаривают друг с другом, и именно поэтому между всеми узлами отправляется фиктивный трафик (ложный трафик). Но все пакеты зашифрованы так же, как пакеты Sphinx, так что для наблюдателя все выглядит одинаково, и единственные люди, которые могут расшифровать один из слоев, чтобы узнать, куда отправить пакет, — это люди, у которых есть ключи от этих пакетов.

Так что даже если бы наблюдатель каким-то образом мог сидеть между двумя смешанными узлами, то и в этом случае он все равно не смог бы проанализировать трафик и расшифровать пакеты, так как он видит множество Sphinx пакетов, которые выглядят идентично. Нельзя определить, настоящие ли они, но также нельзя сказать, фиктивные ли они, потому что вы можете сказать это только тогда, когда пакет выйдет с принимающей стороны и кто-то расшифрует этот последний слой шифрования, чтобы увидеть, есть ли в нем что-то или нет. И когда у вас есть эта функция в сочетании с тем фактом, что миксноды будут принимать пакет, а затем удерживать его в течение определенного периода времени, при этом также получая много других пакетов от других узлов, это означает, нельзя проследить за пакетом через микснет, или, по крайней мере, это становится статистически намного более сложным, потому что неизвестно, в каком порядке отправляются эти пакеты.

Например, я хочу отправить Саймону приветственное сообщение. Я пишу его на карточке, которая затем помещается в колоду карт, которые отправляются на шлюз, перетасовываются, отправляются на миксноду, перетасовываются в другой пакет карт и т.д. Так что у вас есть как бы этот кумулятивный процесс, когда становится статистически намного сложнее даже просто отслеживать пакеты через микснет, не говоря уже о том, чтобы начать что-то вроде поиска паттернов, шаблонов активности в потоке трафика. Так что это действительно основа микснета, теперь вы можете понять, почему они те, кто знает миксмайнинг, и они вознаграждаются за качество их работы, как они это делают, в токенах Nym, потому что микснет — это стимулируемый микснет. Мы хотим, чтобы людям платили за эксплуатацию этой инфраструктуры, и мы также думаем, что тот факт, что людям за это платят, и есть какой-то рынок. Возможно, это сделает его более защищенным от злоумышленников, но при этом он также будет иметь более высокое качество обслуживания в целом.

Я уже упоминал этих ребят — шлюзы ))) Что они делают? Их название предполагает, что они являются буквально входом в микснет, через который должны пройти все данные, прежде чем они будут перенаправлены на миксноды.

…(возвращаемся к схеме сети)… вы можете видеть, что все данные исходят от Алисы, Боба и Кэрол, единственных трех человек в мире, которые используют криптографию (:D). Как вы можете видеть, весь трафик будет идти от клиента, с их локальной машины, какое бы приложение они ни использовали, может быть, они используют NуmConnect. Далее трафик пойдет к шлюзу, потом есть три слоя микснод, о которых я уже говорил, а затем он вернется и пойдет к другому шлюзу.

Зачем нужен шлюз, почему мы просто добавляем дополнительные шаги, почему мы не можем просто отправлять пакеты прямо в миксноды? По двум причинам. Прямо сейчас микснет можно использовать бесплатно. В будущем это может быть не так, и шлюз является своего рода разрешением, контрольно-пропускным пунктом, чтобы увидеть, есть ли у клиента разрешение на отправку трафика через микснет. Может быть, они заплатили за меня или кто-то еще платит за это от их имени, что-то вроде этого права, так что это буквально шлюз, который может как бы открываться или закрываться в зависимости от того, может или должен кто-то отправлять трафик через микснет. Но у них также есть более важная функция с точки зрения помощи в удобстве использования микснета сейчас, потому что одна проблема, которая существует со многими типами программного обеспечения для микширования, заключается в том, что я не знаю, находится ли Саймон офлайн, когда я пытаюсь отправить ему сообщение. В этом случае я не знаю, куда идет сообщение и могу ли я вообще отправить ему сообщение, если он не в сети. Шлюзы позволяют нам это сделать: если я отправлю сообщение Саймону, оно идет с моего компьютера, проходит через микснет, а затем оно приходит к шлюзу, на котором Саймон должным образом зарегистрирован. Вы как бы подписываетесь на использование шлюза, может быть, для определенного вида трафика или на определенный период времени, и если кто-то не в сети, тогда его шлюз будет работать и хранить сообщения для последующей отправки адресату. И как только Саймон вернется в сеть, шлюз просто отправит все эти сообщения Саймону для расшифровки, в данном случае он будет работать как почтовый ящик. И это означает, что микснет может сохранять тот уровень свойств сохранения конфиденциальности, который мы хотим, но без ущерба для удобства использования, что обычно является проблемой при создании таких сетей. Кроме того, шлюзы также отправляют фиктивные пакеты (маскирующий трафик), чтобы поддерживать этот постоянный уровень сетевого трафика. Таким образом, создается статистический белый шум, внутри которого настоящие пакеты как бы скрыты.

Теперь последний третий и последний тип узлов — это сервисы (службы).

Вы хотите использовать микснет, чтобы обеспечить свою конфиденциальность, но, очевидно, вы хотите использовать ее для чего-то полезного, вы что-то хотите сделать с ее помощью . Сервис — это в основном просто код приложения, который слушает сообщения и отправляет сообщения в микснет. Сервисы делают это, используя один из нескольких типов клиентов (показаны на следующем слайде). Клиент — это просто способ, которым вы подключаетесь к микснету и отправляете сообщения в него и из него.

Некоторые примеры видов сервисов: у вас может быть что-то вроде частного хранилища файлов, поэтому вы отправляете зашифрованные файлы через микснет в сервис, который затем будет управлять этими файлами, затем сохранит их, возможно, в ipfs (??). Если все обратятся к нашей документации и проверят что-то, называемое Nуm Drive, … это то, что у нас осталось с хакатона, правильный вид зашифрованного Dropbox …

Вы отправляете файл через микснет к сервису, сервис не знает, кто вы, и этот сервис затем сохраняет файл анонимно для вас. Представьте, что это очень-очень частный зашифрованный Dropbox.

Другой тип сервиса анонимно отправит вашу криптотранзакцию. одну из серьезных проблем? Если даже вы используете что-то вроде Zcash или Monero, то, когда вы обмениваетесь данными с локальным узлом, если вы отправите свою транзакцию напрямую к узлу, этот узел будет иметь доступ к некоторым метаданным о вас. Он будет знать, например, когда получил это сообщение, или, возможно, знать ваш IP-адрес.

… Вы можете «отформатировать» подписанный пакет криптовалюты, а транзакцию Monero отправить через микснет на сервис, который получит ее, не зная, кто вы, а затем мы будем транслировать ее для вас.

Один из примеров сервиса — обеспечение доступа к частной электронной почте (это первоначальный вариант использования, о котором Дэвид Чаум написал в своей работе 1981 г.). Вы можете получить доступ к вашему зашифрованному серверу электронной почты, не раскрывая свой IP-адрес, …или даже обязательно раскрывая, что вы получаете доступ к своей электронной почте, потому что, опять же, весь ваш трафик как бы скрыт в этом постоянном потоке из одинаковых зашифрованных фиксированных пакетов одинакового размера.

Q&A

Я вернусь в Discord и просто посмотрю, есть ли у нас какие-либо вопросы. Еще один хороший вопрос от Аморфа (??) (я не совсем уверен, как это произнести, но это псевдоним).

В: Сколько дней шлюз хранит информацию, которая собирается для отправления, когда кто-то не в сети, и как решается проблема наполненности и переполнения шлюзов?

О: Я считаю, что шлюз будет хранить эти данные до того момента, как полностью заполнится, далее он просто остановится и удалит самые старые данные. Прямо сейчас нет способа защититься от этого, но это также не одна из тех проблем, с которыми мы имеем дело прямо сейчас. Когда смешанная сеть будет платной, тогда, очевидно, если бы я атаковал спамом для загрузки шлюзов и хранения на них большого количества данных, тогда я должен был бы платить за это право, так что это своего рода дестимулирование для меня. И да, может быть много подобных случаев, тогда этот аспект остается на усмотрение операторов шлюза. Так что в будущем это очень похоже на то, как сейчас работают операторы микснод. Они продвигают свои миксноды, рекламируют себя и говорят: «Эй, ты знаешь, что у нас есть эта услуга!» Шлюз, возможно, будет предлагать конкретную услугу: «Эй, у нас есть решения для долгосрочного хранения!». Или, может быть, наоборот: если содержимое не использовалось в течение шести часов — бум, оно исчезло. Это те аспекты, которые сами операторы шлюзов смогут устанавливать.

Клиент — это программное обеспечение, которое позволяет пользователям и приложениям получать доступ к микснету, чтобы отправлять и получать пакеты. На самом деле вы общаетесь с микснетом напрямую, так что клиенты делают “под капотом” чертовски много вещей, и все это как бы максимально абстрагировано от пользователей и разработчиков, поэтому они такие простые и их так приятно использовать, насколько это возможно. Но под капотом то, что на самом деле происходит, клиент как бы инициализируется, создает длительные отношения со шлюзом, говорит: «Эй, я буду знать, что я хочу подключиться к вам всякий раз, когда я подключаюсь к сети», и поэтому данный шлюз также является своего рода почтовым ящиком для этого клиента, когда клиент находится в автономном режиме. Данный шлюз будет хранить сообщения для этого клиента.

Когда клиент подключается к сети, происходит определение топологии сети: какие миксноды и шлюзы существуют и какие у них ключи. Это открытые ключи, их ключи шифрования, потому что с их помощью клиент будет затем создавать пакеты с многоуровневым шифрованием для отправки через микснет. И он должен знать открытые ключи микснод, которым он хочет отправить пакеты. Миксноды, используя свои закрытые ключи, разворачивают слой шифрования, который они должны развернуть, а затем передают Sphinx пакет далее, отправляя его следующему адресату (миксноде или шлюзу). В общем, клиенты получают топологию сети, шифруют сообщения для отправки по заданному маршруту, расшифровывают принимаемые сообщения и пересылают маскирующий трафик. Если вы хотите убедиться, что вы достаточно анонимны, нужно, чтобы ваш клиент также отправлял кавер-трафик (маскирующий трафик), чтобы нельзя было определить, когда вы отправляете этот пакет Sphinx, который содержит ваше сообщение тому, кому вы его отправляете.

Мы на самом деле работаем над некоторыми учебными пособиями, чтобы начать создавать действительно простые приложения и действительно простые сервисы, используя микснет. Это максимально абстрагировано от вас, вы знаете, насколько скрыты и насколько абстрагированы от вас все эти криптографические тяжелые работы, на самом деле это зло (:D).

Есть разные клиенты для разных вариантов использования, разных типов сред (программного обеспечения). В настоящее время есть три из них, которые доступны для использования разработчиками:

  • У нас есть WebSocket-клиент, и это автономный процесс, в который вы можете вставлять сообщения. Вы можете подключаться к этому работающему клиенту на любом языке, который работает с веб-сокетами, а это почти все языки. Я думаю, что это определенно все виды, которые люди используют изо дня в день для разработки. И да, вы создаете соединение через веб-сокет, которое, как вы знаете, отправляет вам сообщения, которые получает клиент, и вы можете отправлять сообщения в микснет. Вы можете себе представить что-то, работающее на сервере или на десктопе, а может вы просто хотите, чтобы клиент работал на вашем компьютере.
  • У нас также есть веб-сборка, иначе известная как клиент Wasm. Стоит сказать, что на самом деле все разные клиенты, по сути, делают одно и то же, но они просто упакованы по-разному и используются для разных программных ситуаций. Так что клиент веб-сборки, который также будет намного проще в использовании в готовящемся SDK (Software Development Kit, наборе для разработки программного обеспечения), который у нас есть, к которому можно получить доступ через npm (??), поэтому вы можете импортировать его только в JavaScript или TypeScript приложения. Да, они в основном позволяют вам создавать Sphinx пакеты и получать доступ к микснету из чего-то типа браузера или Electrum (??), что является очень привлекательным предложением для всех, кто создает веб-приложения, и будет документация именно о том, как это делается. Вы знаете, как много тяжелой работы мы вкладываем в веб-воркер …
  • И, наконец, у нас также есть Socks5-клиент, так что это клиент, который запускает свой собственный процесс, очень похожий на клиент WebSocket, и он в основном позволяет вам подключить приложение, которое поддерживает прокси-протокола Socks5 без необходимости делать какие-либо изменения кода. И это клиент, который используется под капотом NymConnect, который, я полагаю, вы все использовали на данном этапе. Вы можете указать для трафика вашего криптокошелька или Telegram локальный хост 1080, который будет принимать пакеты, он найдет для них маршрут, зашифрует их в соответствии с этим маршрутом, и отправит их все через микснет, а затем расшифрует любое сообщение, которые вы получите от шлюза.

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

Начиная с нижнего левого угла, есть ваш код, выделенный желтым цветом. Этот код может быть чем угодно, это может быть приложением, которое вы написали, это может быть код, работающий в браузере, который может быть другим приложением, Telegram или чем-то подобным, или Keybase. У вас есть клиент Nym в зависимости от ситуации, который может быть WebSocket клиентом, клиентом веб-сборки, который работает в вашем браузере через SDK, или это может быть Socks5, который работает под капотом NymConnect. Трафик от клиента перейдет к вашему шлюзу (шлюзу, с которым у вашего клиента есть длительные договоренности), затем попадет в микснет, смешается на первом уровне, на втором уровне, на третьем уровне, затем попадет в шлюз получателя, который проверит, есть ли получатель в сети (клиент получателя). Если клиент в сети, то шлюз направит сообщение клиенту получателя, а если нет, то шлюз удержит сообщение до тех пор, пока клиент не будет онлайн.

Q&A

Прежде, чем я перейду к Nyx, ответим на некоторые вопросы.

… что шифрование между шлюзом и локальными клиентами асимметрично, я должен дважды проверить … как клиент получает ключи для расшифровки пакета Sphinx … уверен, что вы имеете в виду во второй половине вашего вопроса, как клиент получает ключи для расшифровки пакетов Sphinx … Вам никогда не понадобится IP-адрес отправителя. Вы знаете, что у каждого клиента в Nym есть адрес. У него есть Nym адрес, и этот адрес состоит из открытого ключа идентификации клиента, открытой части ключа шифрования клиента и ключа идентификатора шлюза. Так что если вы будете работать в обратном направлении, а затем использовать этот адрес, вы знаете, на какой шлюз отправить его, если у вас есть открытый ключ, у вас есть открытый ключ шифрования клиента, тогда вы также знаете, как что-то зашифровать, чтобы они могли это расшифровать. Это один из принципов того, как трафик перемещается через шлюзы микснета, именно поэтому клиент получает топологию сети при запуске и извлекает всю эту информацию.

…так что в данный момент, если мы посмотрим на этот поток, и я отправляю сообщение… скажем, вверху справа сервис, который я хочу пропинговать. Я знаю адрес сервиса, потому что сервис сделал свой адрес общедоступным как сервис. Однако я не хочу, чтобы сервис знал мой адрес, но при этом я хочу, чтобы он ответил мне, как мне обойти это? У нас есть замечательная вещь, SURBs, которые представляют собой одноразовые блоки ответов (Single Use Reply Blocks). С SURB есть возможность того, что этот сервис может ответить вам, не зная вашего адреса, потому что маршрут обратно к вам вроде как предварительно вычисляется с SURB, так что это что-то вроде системы анонимных ответов. Одна из вещей, над которыми мы работаем в настоящий момент — как сделать это с несколькими SURB, в том случае, если вы вдруг захотите отправить обратно большие файлы в качестве ответа анонимно через микснет.

(Другой голос): … у нас был звонок сообщества ранее с другим Саймоном, который является исследователем в Nym, и мы много говорили о SURB, поэтому прямо сейчас, очевидно, я транслирую, поэтому я не могу поделиться ссылкой, но я собираюсь найти эту ссылку, на запись разговора с сообществом. Я собираюсь поделиться этим с теми из вас, кто интересуется SURB.

Круто! Давайте перейдем к заключительной части этой небольшой лекции, которая представляет блокчейн Nyx. Все то, о чем я говорил до сих пор, — это оверлейная сеть, она не находится в блокчейне, но, очевидно, опирается на блокчейн в определенных аспектах. Как я сказал, токен Nym — способ, которым люди платят, будут платить за использование микснета (узлы получают вознаграждение), это криптовалюта, это токен, который «живет» в блокчейне Nyx. Вознаграждение делегаций, фактическая топология сети, все это хранится в одном месте … собственный токен блокчейна или смарт-контракт, развернутый на блокчейне Nyx, так что блокчейн Nyx выполняет своего рода очень глубокую вспомогательную роль для микснета, например, позволяет нам реализовать такие вещи, как стимулирование.

Следующий термин с точки зрения архитектуры — это Cosmos SDK блокчейн. Это означает, что мы обладаем множеством преимуществ: у нас очень дешевая плата за газ, которую мы устанавливаем сами. У Cosmos есть эта идея Интернета блокчейнов для конкретных приложений (см. application-specific blockchains), так что это означает, что у вас может быть множество блокчейнов, и вы избегаете проблемы, которая у вас есть с «монолитными» блокчейнами первого уровня, такими как Эфириум, где, если кто-то хочет заплатить 2000 евро за газ, желая, например, опередить кого-то в обмене на Uniswap, это увеличивает плату за газ для всех остальных. У нас нет этой проблемы, потому что мы являемся блокчейном для конкретного приложения, поэтому мы всегда можем гарантировать, что у нас дешевая плата за газ. Далее, это мгновенная завершенность (instant finality) благодаря системе консенсуса, которую используют Cosmos SDK блокчейны, это доказательство доли владения (PoS), так что мы не «кипящие океаны» с доказательством работы (PoW), и еще это активированные IBC. Что такое IBC — это протокол связи между блокчейнами. Если используются Cosmos SDK блокчейны, и даже если у вас есть блокчейны для конкретных приложений, в том случае, если у них включен IBC, тогда все эти блокчейны могут общаться друг с другом. Поэтому вы как бы получаете максимальную отдачу от того, что вы начинаете получать лучшее из обоих миров, где вы не просто строите своего рода отдельный блокчейн, а такой, которой может общаться с другими блокчейнами. Если кто-то использовал мост gravity bridge, то он также использовал IBC для отправки токенов из блокчейна gravity в блокчейн Nyx.

Перейдем к следующему слайду. Как я сказал, Nyx — это своего рода «дом» для токенов и смарт-контрактов, которые теперь управляют вознаграждением микснета, содержат текущее состояние, топологию микснета и заботятся обо всех таких вещах, как делегирование. Но скоро появится много всего нового. Coconut, о котором я говорил раньше, станет возможным благодаря смарт-контрактам, и валидаторы фактически запускают сам блокчейн Nyx, который будет «домом» для Coconut, они будут принимать участие в генерировании таких анонимных учетных данных. Вскоре появится открытая платформа для смарт-контрактов, поэтому любой сможет также загрузить смарт-контракт на блокчейн Nyx. … Валидаторы представляют собой узлы, которые создают и поддерживают консенсус, они генерируют блоки в блокчейне. Они поддерживают своеобразную ​​большую, очень медленную общую базу данных, если угодно. На данный момент это достаточно ограниченная группа людей, которую представляют инвесторы и люди из сообщества, которые действительно сыграли важную роль в проекте на раннем этапе. Валидаторы также будут принимать участие в распределенной генерации учетных данных Coconut. Это означает, что у нас есть не просто один человек или одна сторона, которые создают учетные данные Coconut, потому что в противном случае они могли бы выяснить, кого и куда они отправляют.

Это своего рода тизер, я не собираюсь вдаваться в это слишком сильно, но ожидайте больше информации об этом в ближайшее время. …они были сделаны в соответствии с чем-то, называемым генерацией распределенного ключа, в которой группа людей будет создавать часть секрета, который используется для создания учетных данных. Так что даже если у вас есть группа валидаторов, которые создают учетные данные для людей, они не могут определить, кого или куда они на самом деле отправляют, что, очевидно, здорово, т.к. они не могут деанонимизировать людей. И это подводит меня к завершению лекции.

Q&A

Так что я отвечу на вопросы, а затем могут быть какие-то заключительные замечания.

О: Тестнет на данный момент несколько устарел, потому что основная сеть была бесплатной. У людей было не сильно много причин, чтобы на самом деле иметь тестовую сеть. Мы собираемся ее обновить, а потом перейти к установкам без разрешений (permissionless set). Возможно, мы также опробуем отсутствие разрешений в тестовой сети, но довольно сложно проверить это на пробных вещах, потому что, очевидно, экономическое стимулирование здесь не имеет значения. … может быть, мы проверим это с помощью sandbox testnet, но в то же время, когда дело доходит до токеномики, некоторые вещи на самом деле не работают в тестовом варианте, потому что экономика токенов не существует полностью.

… в основном любые смарт-контракты, которые хотят подключиться, к таким вещам, как Coconut, и делать что-то с микснетом, было бы разумно развернуть их на Nyx…

(Другой голос): …даже если они не хотят делать что-то с микснетом. Так что микснет является просто вариантом использования блокчейна Nyx, так сказать, а затем любой, кто хочет использовать ZK Nym или учетные данные Coconut, они могут просто сделать это.

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

В: Когда вы описываете типы узлов, не упомянуто, что валидатор — это тип узла…

О: Я различал блокчейн Nyx и типы узлов, составляющих сам микснет. Вы понимаете, что я имею в виду. Очевидно, что между этими двумя объектами существует глубокая связь, валидаторы управляют блокчейном, который имеет решающее значение для работы микснета… Но в самом микснете, через который отправляются пакеты, валидаторы как бы не являются одним из необходимых элементов.

(Другой голос): Как объясняли ребята ранее в Shipyard Academy, важная вещь для понимания — это то, что микснет сам по себе не является блокчейном. Блокчейн Nyx очень важен для функционирования микснета, но сам по себе микснет представляет собой оверлейную сеть, сетевую инфраструктуру для сокрытия любых метаданных сообщений, а также предоставляет другие способы защиты ваших коммуникаций.

Тогда последний вопрос от Node Dump (??)

В: …Так почему же вы не можете их подключить, запустить и добавить? В основном указываю на то, что поддерживается Socks5. Почему я должен выбирать конкретного поставщика услуг?

О: Причина, по которой вы должны это делать, заключается в том, что так поступает сетевой запрашивающий, который и является используемым сервисом. Это код приложения, которому вы отправляете запрос через микснет, который затем что-то делает. В данном случае он принимает запрос, который у вас есть, и переадресует его в соответствующее место, возвращает ответ, а затем отправляет этот ответ вам через микснет. Причина, по которой вы не можете просто так добавить что-либо, заключается в том, что мы не хотим, чтобы сеть работала как открытый прокси-сервер. Это одна из причин, по которой многие люди опасаются запускать такие узлы, как, например, выходные узлы сети Tor. Есть определенные риски, если вы просто запускаете анонимный прокси-сервер, открытый для Интерента. Вы не знаете, что люди будут транслировать его с его помощью. Это своего рода последний концентратор из микснета, тогда вы знаете, что это тоже публично известно. Используем пример с NymConnect, скажем, с Telegram или Keybase. Я отправляю запрос вида: «О, позвольте мне получить все сообщения, позвольте мне обновить свои сообщения». Они хранятся в API Keybase. Так что же мне делать? Я получаю этот запрос. Я отправляю его через Socks5-клиент, он проходит через микснет и выходит с другой стороны. Другая сторона является этим поставщиком услуг, этим сетевым запрашивающим, который примет мой запрос и пропингует его к сервису Keybase. Но вы этого не делаете. Или если вы просто используете открытый прокси-сервер, вы не знаете, что кто-то будет пинговать. Поэтому, если вы его используете, значит это вы. Я не знаю, придут ли копы или произойдет что-то подобное, но в любом случае люди опасаются запускать такие узлы. По сути, сетевой запросчик по умолчанию имеет белый список, так что, по сути, он будет перенаправлять запросы только в «чистый» интернет. Также можно предположить, что начнут появляться сервисы, у которых есть что-то вроде белых списков для разных целей. В этом есть смысл.

Да, круто!

Twitter | Discord | Telegram | Nym Docs | Shipyard Academy

--

--