Monero 2.0: что нужно для успешного перехода сети на Seraphis

24 февраля, 2022 / Главные новости

монеро баг

Если проект Monero продолжит развиваться согласно текущему плану, то в 2023-2024 в сети анонимной криптовалюты реализуют хардфорк, в ходе которого ожидается запуск протокола следующего поколения Seraphis с новой схемой адресации Jamtis. Эти изменения настолько обширны, что получившуюся криптовалюту вполне можно будет называть Monero следующего поколения.

Чтобы полноценно поддерживать эти изменения кошелькам Monero следует провести полный апгрейд функционала, в т.ч. пользовательского интерфейса. Есть вероятность, что основное программное обеспечение Monero будет предлагать совершенно другой программный интерфейс/API, что, в свою очередь, потребует обширного рефакторинга кода кошельков, независимо от используемого языка программирования и ОС, на которой они работают. Это сложно, дорого и может занять много времени.

Как отмечает пользователь под ником XMR Contributor опасность в том, что по крайней мере некоторые важные и широко используемые кошельки Monero окажутся не готовыми к хардфорку из-за чего будут вынуждены остановить работу. Поэтому стоит начинать вести разработки прямо сейчас, а не ждать анонса события. Весь аспект работ, вероятно, затронет как структуру управления проектами, так и технологий и программных интерфейсов.

Задний план

На данный момент активно проводится работа по реализации «протокола следующего поколения» Seraphis. Параллельно разрабатывается новая схема адресации и уровней кошелька для использования с под названием Jamtis.

Текущий протокол Monero претерпит значительных изменений, среди которых:

  • лучшая конфиденциальность за счет увеличения размера колец;
  • другая структура записанных в блокчейне транзакций;
  • переход на новые форматы адресов (каждый кошелек получит новые адреса);
  • новые типы кошельков (выходя далеко за рамки: «полного» и «только для просмотра»);
  • изменение формата seed-фразы (16 слов вместо 25) и многое другое.

Как отмечают разработчики, активация Seraphis и Jamtis значительно продвинут Monero вперед, но в то же время их внедрение является монументальной задачей во всех отношениях.

“Если мы останемся на этом курсе, то, по моим приблизительным оценкам, хардфорк на Seraphis и Jamtis может состояться в 2023 или 2024 году”, – пишет на реддит XMR Contributor.

API кошельков Monero

Существует большой и сложный класс C++ под названием Wallet2, который является неотъемлемой частью основной кодовой базы Monero.

Можно сказать, что этот класс – «центр вселенной», вокруг которого вращается большинство «потребительских» кошельков ориентированной на конфиденциальность криптовалюты. Приложение-кошелек часто использует методы этого класса для управления кошельками Monero либо напрямую, либо через какой-то тонкий слой, такой как wallet.h, который использует кошелек с графическим интерфейсом.

Если посмотреть на этот класс как на API обработки кошелька Monero, то интерфейс оставался на удивление стабильным с момента рождения анонимной криптовалюты в 2014 году.

Проблема

Для реализации обновлений в кошельках при переходе на Seraphis и Jamtis может быть невозможно разумным способом просто расширить wallet2.h в качестве API.  В любом случае, несмотря на то, что файл заголовка по прежнему может выглядеть работоспособно, wallet2.cpp представляет собой гигантский сложный код C++ (с более 14 000 LOC), требующий рефакторинга. Однако до сих пор ни один разработчик Monero не осмелился взяться за него из-за объема работ для всей вселенной программного обеспечения проекта. Вероятно, было бы чистым безумием с инженерной точки зрения каким-то образом запихнуть обработку кошелька Seraphis и управление адресами Jamtis в wallet2.

Возможно, вы начинаете понимать проблему: если этот API будет заменен чем-то новым и значительно отличающимся, сама основа, на которую опирается большинство приложений кошелька Monero не сможет работать полноценно. Чтобы восстановить работу кошельков потребуется реализация больших и трудоемких изменений в кодовой базе.

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

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

Предложение

Так, XMR Contributor предлагает разработать четкий и хорошо задокументированный путь миграции приложений кошелька Monero в сторону Seraphis и Jamtis и начать неспеша работать в данном направлении.

Как это будет выглядеть? Возможно, придется определить новый API, например, wallet3, который будет достаточно абстрактным и гибким, чтобы, с одной стороны, подходить для Seraphis и Jamtis, а с другой стороны, использоваться для работы с текущими кошельками Monero. В этом сценарии первая реализация wallet3 будет достаточно тонким слоем над wallet2, при этом этот прежний класс по-прежнему будет выполнять почти всю «тяжелую работу».

Преимущество: с этим доступным API авторы приложений кошелька уже могли бы начать миграцию в течение 2023 года, а затем переключиться на нее задолго до хардфорка Seraphis и Jamtis. Окончательный переход на новые технологии будет относительно простым и позволит избежать мучительных проблем со сроками.

Другим путем может быть полный отказ от любых прямых «бинарных» интерфейсов, начав полностью полагаться на RPC. Уже есть почти полнофункциональный интерфейс кошелька RPC, который, возможно, имеет гораздо больше шансов быть успешно расширенным для поддержки Seraphis и Jamtis, чем wallet2.h.

Однако прямо сейчас неясно насколько сложно развернуть кошельки для смартфонов на таком фундаменте на основе RPC.

Здесь стоит упомянуть, что разработчик Monero @woodser уже довольно давно создал новый и чистый API кошелька и реализовал его на C++, Java и JavaScript. Дизайн задокументирован здесь, его реализация на C++ здесь. Конечно, это только для текущей версии Monero, но, возможно, она может послужить хорошей отправной точкой для wallet3.

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

Что необходимо для успеха

Чтобы успешно осуществить проект «миграции кошелька Monero», по мнению XMR Contributor, важны две вещи:

  1. вовлеченность людей уже знакомых с архитектурой и структурой кодовой базы Monero, а в идеале — с некоторым опытом в разработке API, а также в управлении проектами.
  2. сообщество разработчиков Monero и более широкая экосистема должны поддерживать разработанную стратегию и принимать ее как согласованный путь вперед. Авторы приложений кошелька должны достаточно доверять ему, чтобы рассчитывать будущее своих приложений на результирующую стратегию миграции и API, основываясь, по крайней мере, на «расплывчатом консенсусе» в отношении того, что он надежный и подходящий.

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

Комментарии

Актуально

VK:083211