Представляем Luna

В нашем предыдущем сообщении в блоге мы сосредоточились на разработках и текущих событиях, связанных с Team Nimiq, поэтому теперь мы чувствуем, что пришло время предоставить более подробное техническое обновление наиболее интересных функций предстоящего выпуска Testnet под названием Luna.

Обзор

  • Два новых типа клиентов: свет и нано
  • Подписи Шнорра
  • Алгоритм PoW с жесткой памятью
  • Плавный расчет сложности
  • Значительные улучшения производительности
  • Предстоящий запуск тестовой сети

Легкие клиенты и нано-клиенты

Синхронизация с обычной сетью Blockchain, такой как Биткойн, занимает часы. Мы решаем эту проблему, используя схему мини-блокчейна, чтобы значительно сжать объем данных, которые вам нужно загрузить. Наша Betanet была базовым прототипом, который не был особенно эффективным, потому что он еще не использовал все возможности схемы. Luna представляет более сложную реализацию, оптимизированную для трех типов клиентов: полные узлы, легкие клиенты и нано-клиенты.

  • Полные узлы просто загружают полную цепочку блоков, как и в обычных протоколах. Профессиональные майнеры наверняка понравятся этому клиенту.
  • Легкие клиенты полностью проверяют полное состояние, синхронизируя лишь часть общих данных Blockchain. Даже с миллиардом пользователей это будет меньше гигабайта. Хобби-майнеры, исследователи блоков или торговцы, вероятно, предпочтут этого клиента.
  • Клиенты Nano проверяют свои собственные балансы и транзакции, синхронизируя около мегабайта данных Blockchain. Это самый легкий способ использовать сеть, не доверяя третьей стороне. Большинство пользователей будут использовать приложения-кошельки на основе таких нано-клиентов.

Сублинейная цепочка заголовков

Схема мини-блокчейна позволяет нам сжимать текущее состояние остатков на счетах, но при этом все равно необходимо загружать полную цепочку заголовков, которая растет линейно во времени. Это означает, что для наивной реализации Nano-Client потребуется загружать 10 МБ в год с момента запуска, что довольно быстро станет непригодным для устройств низкого уровня. Чтобы решить эту проблему, мы сначала реализовали идеи, лежащие в основе Доказательства работы с сублинейной сложностью, а затем расширенную версию Неинтерактивные доказательства работы , Который сжимает цепочку заголовков до почти постоянного размера. Это был последний ингредиент протокола для истинной синхронизации клиентов Nano, загружая менее мегабайта.

Подписи Шнорра

Большинство блокчейнов используют secp256k1 для подписей. Мы рады стать одним из первых протоколов, использующих преимущества более современных подписей Шнорра Ed25519. Наши тесты показали, что Ed25519, скомпилированный в WebAssembly, на 30% быстрее, чем собственная реализация WebCrypto secp256r1. Кроме того, длина открытых ключей составляет всего 32 байта, что обеспечивает более компактные транзакции и, следовательно, более высокую скорость передачи в секунду.

Еще одна замечательная особенность подписей Шнорра - многосторонние подписи постоянного размера, которые обеспечивают еще лучшую масштабируемость в цепочке протокола Nimiq.

PoW алгоритм

Вы, как активные члены сообщества, возможно, уже читали в Telegram или Discord о Цикле кукушки и наших первоначальных намерениях использовать его в качестве алгоритма PoW для цепочки блоков Nimiq. Если вы обратили внимание, вы могли бы даже вспомнить, что некоторые новости все-таки отговорили нас от использования цикла кукушки, и теперь мы наконец приняли решение полностью отказаться от него. Хотя его асимметричный характер позволяет проводить сверхбыструю проверку, в конкретном случае Nimiq он слишком медленный для майнинга, поскольку один запуск может занять до 90 секунд. Кроме того, мы недооценили разницу между майнингом на GPU / CPU в отношении майнинга в браузере и были вынуждены признать, что майнинг через CPU является более продуктивным и разумным подходом, если мы хотим достичь нашей цели - иметь полноценный и эффективный узел майнинга в браузер.

Далее для Luna мы рассмотрели алгоритм CryptoNight. Мы оценили CryptoNight и пришли к выводу, что он также слишком медленный для проверки (WebAssembly, однопоточный: ~ 17 H / s в браузере настольного компьютера, ~ 3 H / s в мобильном браузере).

Окончательное решение - основывать PoW на Argon2, который значительно быстрее, чем CryptoNight (примерно в 20-40 раз по нашим тестам), но при этом является симметричным. На момент написания этой статьи мы все еще рассматриваем возможность настройки алгоритма Argon2, чтобы сделать его более подходящим для наших целей. окончательного решения по конкретным параметрам настройки пока нет, но мы будем держать вас в курсе о прогрессе.

Плавная регулировка сложности

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

Чтобы исправить это, мы внесли некоторые изменения: вместо обновления сложности каждые k блоков теперь мы обновляем сложность каждого блока в соответствии со временем, которое потребовалось для майнинга последних 100 блоков. Это должно привести к более плавному процессу проверки.

Улучшения производительности ядра

JungleDB Паскаля, который мы подробно описали в нашем последнем обновлении разработки и в VLOG 30, теперь завершен, полностью протестирован и интегрирован в ядро ​​Nimiq. Одна из основных причин создания JungleDB заключалась в том, что другие базы данных не могли обрабатывать транзакции так, как мы это себе представляли. Теперь, когда он закончен, любой, кто использует как LevelDB (NodeJS), так и IndexedDB (браузеры), сможет использовать его и извлечь из этого выгоду.

Что касается использования JungleDB в блокчейне Nimiq, мы избавились от большого количества старого и неиспользуемого кода и, наконец, завершили интеграцию JungleDB в ядро ​​Nimiq. Мы также добавили дополнительные функции, которые отвечали новым требованиям, возникшим во время разработки (например, в отношении того, как обрабатывались транзакции).

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

Предстоящий выпуск

Предстоящий запуск Luna будет не просто хард-форком, а полным сбросом нашей предыдущей Betanet.

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

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

Будьте на связи

Вы можете ожидать больше технических обновлений, касающихся Luna, так что следите за новостями Nimiq!

Приветствую наше сообщество, и особенно спасибо Sinarnb за создание классных эмодзи Nimiq для Telegram и Discord. Ниже его любимое творение.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Ни одно из заявлений не должно рассматриваться как одобрение или рекомендация для Nimiq, любой криптовалюты или инвестиционного продукта. Ни информация, ни какое-либо мнение, содержащиеся в данном документе, не являются приглашением или предложением со стороны создателей или участников купить или продать какие-либо ценные бумаги или другие финансовые инструменты или предоставить какие-либо консультации или услуги по инвестициям.