Представляем Uke Alpha — первое блокчейн-приложение для чата без кошелька, которое сломает Web3
24 ноября 2022 г.Что такое укэ?
Протокол Uke — это полностью распределенный протокол обмена сообщениями p2p. Он использует локальную криптографию и экземпляр блокчейна Substrate для проверки, отправки и получения сообщений в режиме реального времени — так же, как и любой другой традиционный протокол обмена сообщениями, и может использоваться для создания приложений для обмена сообщениями или любого другого приложения, в котором безопасный, конфиденциальный, реальный необходимо время для обмена сообщениями.
Отличие от многих других протоколов заключается в том, что Uke придерживается концепции, которую я придерживаюсь с тех пор, как начал разрабатывать блокчейн:
Промежуточные серверы запрещены!
Все распространение сообщений, идентификация пользователя и аутентификация происходят через экземпляр узла. Каждое сообщение шифруется и также хранится в хранилище узла — таким образом, это очень надежный способ гарантировать, что сообщения никогда не потеряются.
Он делает это без использования каких-либо кошельков. Клиентская сторона заботится об управлении пользовательскими ключами и шифровании и не требует для работы никакой криптовалюты.
Частью моей мотивации при создании этого проекта было показать именно это — использование этой технологии за пределами несбыточных проектов.
Это открытый исходный код, и я надеюсь получить некоторую помощь и вклад, чтобы убедиться, что у нас есть созданная сообществом и надежная замена обмена сообщениями, которой мы можем все доверять:
https://github.com/Uke-Messaging?embedable=true
Почему Укэ? Почему Блокчейн? А как насчет масштабируемости?
Если обычные решения для обмена сообщениями прекрасно работают, зачем создавать еще одно? Кроме того, зачем нужен блокчейн?
У укэ есть пара основных целей и стандартов, которые нужно поддерживать:
- Конфиденциальность — каждое отправляемое сообщение полностью и исключительно одноранговое — никто другой не может перехватить или расшифровать сообщение.
2. Отказоустойчивость/Надежность — не должно падать. когда-либо (по крайней мере, в производстве).
Используя DLT, мы устраняем необходимость в центральном сервере, а это означает, что пока определенное количество узлов находится в сети, пользователи могут общаться друг с другом. Это особенно полезно в чрезвычайных ситуациях, поскольку пользователи могут даже запускать свои собственные узлы, чтобы обеспечить 100% время работы.
Помимо технической надежности — Uke — это пиринговый чат. Никто не может запретить вам его использовать, все разговоры являются частными, а природа использования блокчейна позволяет сделать это одновременно прозрачным.
Конечно, здесь есть некоторые проблемы — в основном связанные с масштабируемостью. Текущая настройка, вероятно, не идеальна для множества пользователей. Блокчейн не должен хранить много данных, а только ссылки и указатели на них.
Над ним еще предстоит проделать большую работу, но это шаг в правильном направлении для обеспечения полностью контролируемого пользователем приватного чата.
Архитектура Укэ — внутренняя часть (подложка)
Substrate — это блокчейн-фреймворк, то есть он поставляется с набором уже созданных модулей (см.: FRAME), чтобы блокчейн функционировал "из коробки".
Консенсус, распределенная сеть, хранилище и многое другое уже реализовано — это означает, что я могу сосредоточиться исключительно на реализации собственного собственного модуля обмена сообщениями для Uke.
В случае Uke — пользовательский модуль или поддон. Он обрабатывает сообщения для любого клиента, который отправляет запрос в цепочку, которая его интегрирует.
У нас есть несколько концепций, которые нужно раскрыть здесь:
* Беседы: определяется как наличие инициатора и получателя со списком сообщений. Беседы могут быть помечены как активные или неактивные. Если беседа активна, она добавляется в карту ActiveConversations StorageMap для обоих участников.
* Идентификатор беседы. Идентификатор беседы — это то, как идентифицируются беседы. Адреса получателя и отправителя хэшируются (сейчас с помощью SHA3–256) и должны быть детерминированными, но уникальными.
* Сообщения: определяется как наличие отправителя и получателя определенной строки текста.
* Имена пользователей. Имена пользователей — это простые строки UTF-8, назначаемые идентификаторам учетных записей с целью удобочитаемой идентификации адресов в цепочке. (на основе поддона ников)).
В случае с Укэ мне пришлось немного переосмыслить принцип работы обмена сообщениями, так как здесь задействована цепочка блоков, но по сути это работает следующим образом:
* Пользователи могут начинать беседы.
* Пользователь, который изначально начал беседу, является инициатором и указывает получателя.
* Как только это происходит, блокчейн знает, что между этими двумя пользователями идет активный диалог, и определяет соответствующее сопоставление как таковое.
Это позволяет нам получать разговоры, не загружая весь разговор, что хорошо для нашего UX.
Имена пользователей сопоставляются с адресами и работают как идентификаторы Discord или Twitter. Это намного проще, чем запомнить длинный адрес из 64 символов.
Имейте в виду — это предназначено исключительно для однорангового обмена сообщениями, я еще не начал рассматривать группы.
Здесь весь код с открытым исходным кодом для Apache 2.0, так что посмотрите, если хотите! Пиар приветствуется:
https://github.com/Uke-Messaging?embedable=true
Если вы хотите иметь готовый к работе узел для тестирования и экспериментов, посетите репозиторий uke-node
:
https://github.com/Uke-Messaging/uke-node?embedable=true а>
Архитектура Укэ — внешний интерфейс (ионный)
Я выбрал Ionic по нескольким причинам — в основном потому, что я уже очень хорошо знаю Angular, а также потому, что их пользовательский интерфейс/UX уже встроен во фреймворк. Это позволяет мне больше сосредоточиться на подключении к моей серверной панели.
Ionic также обрабатывает создание пользователей, аутентификацию и шифрование.
На данный момент большая часть аутентификации происходит локально, то есть она зависит от ключей, хранящихся в локальном хранилище. В конце концов, было бы полезно иметь поддон для обработки этой логики вместе с некоторой другой криптографической магией.
Статус проекта — Попробуйте!
Я рад сообщить, что на момент написания этой статьи Uke (по крайней мере, веб-версия) готов к тестированию!
Вы можете проверить это здесь: app.uke.chat; имейте в виду, что он подвержен сбросам сети, ошибкам и некоторым проблемам в центре города — считайте его пре-альфа :)
Пройдет некоторое время, прежде чем он попадет в магазины, но, надеюсь, раньше, чем позже.
Долгосрочные цели
Это только начало. Для этого протокола запланированы более высокие цели как для масштабируемости, так и для удобства использования.
* Разработайте отдельную личность, фильтр учетной записи и усилитель; Поддоны обмена сообщениями для общего использования субстрата.
* Реализуйте зашифрованный протокол pub-sub непосредственно в узле Substrate — таким образом, нет необходимости полагаться исключительно на внешние механизмы для обмена сообщениями.
* Разработать соответствующие модули на стороне клиента для использования в бизнесе.
* «Исчезающий» или временный безопасный обмен сообщениями
* Дополнительные платежные интеграции для пользователей, если применимо.
* Реализация сети Custom Substrate Uke для частного или публичного использования
Заключение (огромное спасибо Web3 Foundation!)
Спасибо всем, кто поддерживал до этого момента — это только начало создания чего-то действительно великого.
Коммуникация и ее постоянная доступность будут приобретать все большее значение в ближайшие годы.
Uke предоставляет каждому возможность не только использовать чат web3 без криптовалюты, но и по-настоящему придерживаться философии предоставления пользователям контроля над данными, которые они распространяют через Интернет.
В краткосрочной перспективе я планирую сделать следующее:
* Соберите первые отзывы о приложении
* Немедленное планирование оптимизации протокола
* Создавайте uke
SDK и документы для разработчиков, чтобы их могли использовать другие
* Продемонстрируйте использование web3 за пределами криптовалюты
* Ищите участников / потенциальных членов команды
Я рад сообщить, что получил поддержку программы грантов от Web3 Foundation для этого проекта. — помимо гранта, очень ценными были отзывы. На самом деле вы можете прочитать исходное предложение для этого проекта на GitHub, если хотите.
Как всегда, я буду рад любой поддержке с открытым исходным кодом. Любой может покритиковать, внести свой вклад или помочь протестировать эту работу.
Берегите себя до следующего раза!
Также опубликовано здесь
Оригинал