1 of 36

Protecting patterns of communication for all internet traffic

© 2023 Nym Technologies S.A. | nymtech.net

1.

How to build on Nym?

Next generation privacy infrastructure

2 of 36

Agenda

Quick reminders

TS SDK

Rust SDK

Hackathon deep dive

2.

3 of 36

Краткие напоминания

3.

4 of 36

4.

Nym Mixnet

The NYM Token (NYM) incentivizes privacy and is used to make mixnet decentralized, sustainable and resilient.

The Nym mixnet is a multi purpose mixnet that prevents traffic analysis by an adversary capable of watching the entire network, including the NSA.

Nym token (NYM)

Nym credentials

Nym: A decentralised,

incentivised

network-level

privacy

infrastructure

CosmWasm and IBC enabled blockchain.

Allow 3rd party apps to anonymize any arbitrary ‘key : value’ pairs, so users can privately reveal part or all of their data at their discretion for any necessary compliance and authentication.

Nyx Blockchain

5 of 36

What “network layer” means

Application Layer

Transport Layer

Network Layer

Data Layer

Physical Layer

“5 Layers model”

5.

L5 L4

L3 L2 L1

6 of 36

Nym goes beyond web3

Mixnet can be used to power:

Web2

Web3

6.

  • Secure messaging apps
  • Secure document sharing & collaboration
  • Anonymous blogging and publishing
  • Microblogging, whistleblowing platforms
  • E-mail services
  • File storage
  • etc.
  • Web3 wallets: WalletConnect
  • Infrastructure: LibP2P
  • RPC service providers
  • Privacy L2s
  • IBC enabled chains
  • etc.

Nym is not only useful for blockchain-related apps, but for anything that requires network level privacy!

7 of 36

Почему стоит использовать инфраструктуру Nym?

7

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

Существующие приложения

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

Существующие сервисы

Nym SDK дает возможность для создания новых приложений и сервисов, ориентированных на конфиденциальность.

Новые приватные приложения и сервисы

8 of 36

Building,* using*,* integrating***with Nym

Drop In replacement for fetch: if you need API endpoints, access them through the mixnet with minimal code changes.

Wrapper around the WASM client allowing to:

  • Use MixFetch
  • Execute&query on Nym smart contracts
  • Send & receive traffic over the Nym mixnet
  • Buy and consume Zk-nyms (soon)

MixFetch (JS/TS) ***

TS SDK*

Allows to integrate Mixnet functionality into app processes. Used by Network Requester Services for several months now and has worked very well. Zk-nyms and mixReqwest (coming soon).

Rust SDK*

Based on the Coconut signature scheme. They are: re-randomizable, allow for selective disclosure, issuance is decentralized. Will be used to pay for mixnet use as a first use-case.

Zk-nyms **

  • WASM
  • Websocket
  • SOCKS5

Standalone clients *

GUI app that wraps the SOCKS5 client for proxying app traffic through the Nym mixnet.

NymConnect **(*)

8.

9 of 36

Поддерживаемые клиенты:

Rust SDK

Typescript SDK

Websocket

✓

⨯

Socks5

✓

⨯

Webassembly

⨯

✓

9.

10 of 36

TS SDK

10.

11 of 36

MixFetch

11.

Что можно делать с ним?

Используйте его для прокси-запросов через микснет.

Запрос или выполнение методов смарт-контрактов Nyx.

Смарт-контракты Nym

Проксируйте трафик вашего приложения через микснет Nym.

Микснет

Создавайте и используйте учетные данные с нулевым разглашением.

Zk-Nyms (скоро)

12 of 36

Структура документов TS SDK

https://sdk.nymtech.net/

12.

13 of 36

Обзор SDK

13.

4 варианта пакетов:

14 of 36

mixFetch

14.

Думайте о mixFetch как о замене Fetch API, но с одной оговоркой: паттерны трафика, которые обычно были бы раскрыты, теперь защищены благодаря микснету.

​

​

Он делает это, получая те же аргументы, что и традиционный fetch, и создает запрос SOCKS5, который будет отправлен на целевой хост в Интернете через сетевой запросчик SOCKS5.

15 of 36

mixFetch

15.

16 of 36

mixFetch

16.

17 of 36

Микснет

17.

Микснет Nym обеспечивает чрезвычайно надежную защиту от наблюдения на уровне сети.

18 of 36

Микснет

18.

Когда ваше приложение взаимодействует с микснетом, само приложение не обращается к микснету напрямую. Для обмена сообщениями в микснете вашему компоненту необходим клиент Nym.

​

Что делают клиенты Nym?

  • Определяют топологию сети: какие миксноды существуют, каковы их ключи и т. д.;
  • Зарегистрируют и выполняют аутентификацию с помощью шлюза;
  • Получают и расшифровывают сообщения от шлюза;
  • Создают пакетов Sphinx с многоуровневым шифрованием;
  • Отправляют пакеты Sphinx с реальными сообщениями;
  • Отправляют трафик покрытия пакетов Sphinx, когда реальные сообщения не отправляются;
  • Повторно передают неподтвержденные пакеты — если клиент отправляет 100 пакетов на шлюз, но получает подтверждение («ack») только для 95 из них, он снова отправит эти 5 пакетов на шлюз, чтобы убедиться, что все пакеты получены.

​

19 of 36

Микснет

19.

20 of 36

20.

Смарт-контракты

Используя клиенты смарт-контрактов микснета Nym, вы сможете запрашивать состояния контракта или выполнять методы при предоставлении ключа подписи.

21 of 36

Смарт-контракты

21.

22 of 36

Zk-Nyms (скоро)

22.

Zk-Nyms — это учетные данные с повышенной конфиденциальностью, основанные на Coconut, схеме криптографической подписи, которая допускает повторную рандомизацию, слепые подписи, выборочное раскрытие атрибутов и пороговый выпуск.

Их первое использование будет в качестве учетных данных для получения доступа к определенному объему трафику через микснет.

​

23 of 36

Когда и зачем мне понадобится провайдер услуг?

23.

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

​

  • Не нужен провайдер услуг (Network Requester):Если вы используете чисто P2P-приложение, то для маршрутизации вашего трафика через микснет достаточно просто интегрировать клиентов и использовать какой-либо способ делиться адресами;
  • Нужен Network Requester (существующий): Если вы хотите разместить микснет между экземплярами приложений ваших пользователей и серверным бэкендом, вам понадобится Network Requester. В этом случае, если ваше приложение поддерживает SOCKS5, вы можете либо использовать существующий NR, либо, если ваше приложение поддерживает SOCKS5, но требует более обширного вайтлиста, вы можете использовать двоичный файл поставщика услуг сетевого запроса для проксирования этих запросов к серверной части вашего приложения самостоятельно, с помощью микснета «между» пользователем и вашим сервисом, чтобы предотвратить утечку метаданных в Интернет.
  • Запускаем собственного провайдера услуг: Если ваш вариант использования более сложен, вы хотите маршрутизировать запросы RPC через микснет к блокчейну, вам нужно будет подумать о настройке какой-то службы, которая будет транслировать транзакции за вас. Примеры таких проектов вы можете найти на странице заявок сообщества.
  • ​

Примечание. Мы (Nym) также запустим несколько узлов в режиме «открытого прокси» и поделимся адресами, чтобы вы могли использовать их в начале разработки.

24 of 36

Как я могу интегрировать Nym в существующую инфраструктуру?

24.

mixFetch (TS/JS)

TS или Rust SDK

Клиент Nym

https://sdk.nymtech.net/integrations

25 of 36

Rust SDK

25.

26 of 36

Компонент микснета Rust SDK

  • Импортируйте клиенты Nym и взаимодействуйте с ними как с любой другой зависимостью, вместо запуска клиента как отдельного процесса.
  • Компонент микснета в настоящее время предоставляет логику двух клиентов: клиента websocket и клиента Socks.
  • Пока не на crates.io, хотим потестировать несколько приложений и получить отзывы разработчиков. Можно импортировать из Github (пример кода см. в документации Rust SDK).
  • Скоро появятся функции валидатора и учетных данных: взаимодействие с сетью включает в себя другие импорты прямо сейчас — оно будет включен в Rust SDK в ближайшие месяцы.

​

26.

27 of 36

Документация SDK

https://nymtech.net/docs/rust/rust.html

27.

28 of 36

Структура документации Rust SDK

  • Обзор: инсталяция и версии.
  • Типы сообщений: какие типы сообщений доступны разработчикам.
  • Помощники сообщений: некоторые функции помощников для разработчиков.
  • Отладка: частые проблемы и как исправить/избежать их.
  • Примеры: несколько примеров фрагментов кода и файл Cargo.toml для запуска вашего проекта.

Дополнительно

  • Гайд по сервису Chain Querier: https://nymtech.net/developers

28.

29 of 36

Примеры документов Rust SDK

  • Простая отправка
  • Создание и использование ключей
  • Менеджмент ключей
  • Анонимные ответы
  • Кастомная сеть
  • SOCKs Прокси
  • Делим отправку и получение
  • Пример файла Cargo.toml

​

29.

30 of 36

Подробно о хакатоне

30.

31 of 36

Даты

  • 8 ноября, среда: Строим на Nym (NoTrustVerify) 3-4PM UTC
  • 9 ноября, четверг: Нарративы приватности: выбор: информационная антиутопия или свобода (беседа у камина) с Роуз О’Лири (Darkfi) 6-7PM UTC
  • 15 ноября, среда: ДЕДЛАЙН подачи заявок
  • 16 ноября, четверг: презентации проектов

31.

Общее расписание

Важные даты

32 of 36

Что нам нужно?

32.

1. Инструменты

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

  • Пользовательский опыт: информационные панели, инструменты для облегчения стейкинга и т. д.;
  • Инструменты, ориентированные на операторов: калькуляторы APY и т. д.;
  • Инструменты разработчиков: взаимодействие SDK через FFI, скрипты для разработчиков, сети тестирования и т. д.
  • ​

2. Интеграции

Реализация пользовательской логики обработки трафика Nym для существующего приложения с использованием SOCKS5, 4a, 4, mixFetch или (если вы любите приключения) что-то специальное с помощью TS или Rust SDK.

​

3.‘Nymификация’ приложений

Напишите приложение, используя один из SDK или отдельный клиент (сложнее). Подумайте о том, что вы можете «nymифицировать», например, версия расширения TorBirdy, использующая Nym вместо Tor.

33 of 36

Что мы ожидаем от заявок?

33.

  • Working code demos hosted publicly (Gitlab, Github, some other git instance).
  • Quality > quantity: we’d prefer to see a contained, working, and well documented Proof of Concept over a sprawling and messy app that does more but is poorly explained and presented. The repo must be open source (or libre =] ) and able to be used and modified by others. The license is up to you.
  • If you already have existing apps / projects you are more than welcome to extend them, instead of starting from scratch - we will only be looking at the NEW additions to make this fair. If you are doing this, make sure to write a detailed account of what it is you;ve added to the existing project, preferably with the possibility to see the ‘old’ version as well as the new one.
  • Proper documentation:
    • If an app / tool:
      • How do you install and run the code? How is it to be used?
      • An overview of the application architecture: what is it doing? Is it relying on other services?
    • If a UI-based solution:
      • how to run it locally? We are happy to also accept staging deployments as part of the submission (e.g. via Vercel) but this does not replace being able to run it locally.
    • For both: what problem does this solve?
  • Please make sure that your application works on commonly reproducible system environments (e.g. if you’re developing on Artix Linux please check for the necessary dependencies for more common-place OSes such as Debian, or Arch). If you are developing on Windows please make sure that it works on non-Windows machines also. Where possible please try to include build and install instructions for a variety of OSes.

34 of 36

Полезные ссылки

34.

Расписание

Общая документация:

Документация клиентов и SDK

Документы, относящиеся к Shipyard

35 of 36

35.

Сайт

nymtech.net

Github

@nymtech

36 of 36

36.

СПС