Grin vs BEAM, сравнение криптовалют на "магическом" протоколе Mimblewimble
https://t.me/DmitryGinkoВступление
Grin и BEAM - это два проекта криптовалюты с открытым исходным кодом, основанные на протоколе Mimblewimble. Протокол Mimblewimble был впервые предложен анонимным пользователем с использованием псевдонима Том Элвис Джедусор (французский перевод имени Волдеморта из серии книг о Гарри Поттере). Этот пользователь зашел на IRC-канал исследования биткойнов и разместил ссылку на текстовую статью, размещенную на скрытом сервисе Tor. Эта статья послужила основой для нового способа конструирования транзакций в стиле блокчейна, который обеспечил конфиденциальность и возможность резко уменьшить размер блокчейна путем сжатия истории транзакций в цепочке. В этой первоначальной статье были представлены основные идеи протокола, но в нем отсутствовал ряд критических элементов, необходимых для практической реализации, и даже содержалась ошибка в криптографической формулировке. Эндрю Поэлстра опубликовал последующую работу, в которой рассматриваются многие из этих проблем и уточняются основные концепции Mimblewimble, которые были применены к практическим реализациям этого протокола в проектах Grin и BEAM.
Grin и BEAM реализуют протокол Mimblewimble, но каждый был создан с нуля. Grin написан на языке программирования RUST, а BEAM на C ++.
Более подробно можно почитать в нашем предыдущем материале.
Сравнение возможностей
Два проекта независимо создаются с нуля разными командами на разных языках (Rust и C ++), поэтому в исходных реализациях будет много различий. Например, Grin использует LMDB для своей встроенной базы данных, а BEAM использует SQLite, которые имеют различия в производительности, но функционально схожи. Grin использует направленный ациклический граф (DAG) для представления своего mempool, чтобы избежать "зацикливания" транзакций, в то время как BEAM использует многосетевую структуру данных ключ-значение с логикой, чтобы включить некоторые из их расширенных функций.
С точки зрения возможностей, эти два проекта демонстрируют все функции, присущие Mimblewimble. Заявленная цель Grin состоит в том, чтобы создать простую и легкую в обслуживании реализацию протокола Mimblewimble. Однако реализация BEAM содержит ряд модификаций в подходе Mimblewimble с целью предоставления некоторых уникальных возможностей для их реализации. Прежде чем мы перейдем к функциям и элементам дизайна, которые разделяют два проекта, давайте обсудим интересную функцию, реализованную в обоих проектах.
И Grin, и BEAM внедрили версию протокола ретрансляции Dandelion, которая поддерживает агрегацию транзакций. Одна из основных нерешенных проблем конфиденциальности, с которой сталкиваются криптовалюты, заключается в том, что можно отслеживать транзакции по мере их добавления в mempool и распространять их по сети, а также связывать эти транзакции с их исходными IP-адресами. Эта информация может использоваться для деанонимизации пользователей даже в сетях с высокой степенью конфиденциальности транзакций. Для улучшения конфиденциальности при распространении транзакций в сети была предложена схема распространения сети "Одуванчик". В этой схеме транзакции распространяются в две фазы: фаза анонимности (или фаза "ствол") и фаза распространения (или фаза "пуха"), как показано на рисунке 1. В фазе ствола транзакция распространяется только на один случайно выбранный одноранговый узел из списка узлов текущего узла. После случайного числа скачков по сети, причем каждый скачок распространяется только на один случайный одноранговый узел, процесс распространения входит во вторую фазу. Во время фазы "пуха" транзакция затем распространяется с использованием метода полного затопления / диффузии, как в большинстве сетей. Этот подход означает, что транзакция сначала распространяется на случайную точку в сети, а затем наполняет сеть, поэтому становится намного сложнее отслеживать ее источник.
Оба проекта адаптировали этот подход для работы с транзакциями Mimblewimble. Реализация Grin позволяет агрегировать и прорезать транзакции в основной фазе распространения, что обеспечивает еще большую анонимность транзакций, прежде чем они распространятся во время фазы "пуха". В дополнение к агрегации и сокращению транзакций, Beam вводит "фиктивные" транзакции, которые добавляются на этапе "ствола", чтобы компенсировать ситуации, когда реальные транзакции недоступны.
Grin уникальные особенности
Grin стремится быть простой и минимальной эталонной реализацией блокчейна Mimblewimble, поэтому они не стремятся включать многие функции, расширяющие базовую функциональность Mimblewimble, как обсуждалось. Однако реализация Grin включает некоторые интересные варианты реализации, которые они подробно описали в вики своего растущего репозитория Github.
Грин реализовал метод, позволяющий узлу очень быстро синхронизировать блокчейн, загружая только частичную историю. Новый узел, входящий в сеть, запросит текущий блок заголовка цепи, а затем запросит заголовок блока на горизонте, в примере горизонт изначально установлен на 5000 блоков перед текущим заголовком. Затем узел проверяет, достаточно ли данных для подтверждения консенсуса, и если нет, он увеличит свой горизонт до достижения консенсуса. В этот момент он загрузит полный набор UTXO (Unspent Transaction Output - Выходы/вывод неизрасходованных транзакции) блока горизонта. Этот подход представляет некоторые риски для безопасности, но предусмотрены меры по их снижению, и в результате узел может синхронизироваться с сетью на порядок c меньшим количеством данных.
BEAM уникальные особенности
BEAM решил расширить набор функций Mimblewimble несколькими способами. BEAM поддерживает установку явного инкубационного периода для UTXO, который ограничивает его способность расходоваться определенным количеством блоков после его создания. Это отличается от временной блокировки, которая предотвращает добавление транзакции в блок до определенного времени. BEAM также поддерживает традиционную функцию временной блокировки, но включает в себя также возможность указать верхний лимит времени, после которого транзакция больше не может быть включена в блок. Эта функция означает, что сторона может быть уверена, что если транзакция не будет включена в блок в основной цепочке блоков после определенного времени, тогда она никогда не появится.
Еще одна уникальная особенность BEAM - реализация проверяемого кошелька. Для того чтобы бизнес работал в определенной нормативной среде, он должен продемонстрировать свое соответствие соответствующим органам. BEAM предложила кошелек, разработанный для совместимых предприятий, который генерирует дополнительные пары открытого и закрытого ключей специально для целей аудита. Эти подписи используются для маркировки транзакций, так что только орган аудита, которому предоставлен открытый ключ, может идентифицировать эти транзакции в блокчейне, но не может самостоятельно создавать транзакции с этим тегом. Это позволяет бизнесу предоставлять информацию о своих транзакциях данному органу, не ставя под угрозу их конфиденциальность для общественности.
BEAM также предложил еще одну особенность, нацеленную на сохранение как можно более компактной цепочку блоков. В Mimblewimble при добавлении транзакций выполняется сквозная обработка, которая устраняет все промежуточные обязательства по транзакциям. Однако ядра транзакций для каждой транзакции никогда не удаляются. BEAM предложил схему повторного использования этих ядер транзакций для проверки последующих транзакций. Чтобы использовать существующие ядра без ущерба для принципа необратимости транзакций, BEAM предлагает использовать множитель, который будет применен к старому ядру тем же пользователем, который имеет видимость старого ядра, для использования в новой транзакции. Чтобы стимулировать транзакции, которые будут построены таким образом, BEAM включает модель возврата комиссионных для этих типов транзакций. Эта функция не будет частью первоначального выпуска.
При построении действительной транзакции Mimblewimble вовлеченные стороны должны сотрудничать, чтобы выбрать ослепляющие факторы, которые сбалансированы. Это интерактивное согласование требует ряда шагов и подразумевает, что стороны должны быть на связи, чтобы завершить транзакцию. Grin облегчает этот процесс двумя сторонами, соединяющимися непосредственно друг с другом, используя канал на основе сокетов для сеанса «в реальном времени». Это означает, что обе стороны должны быть онлайн одновременно. BEAM внедрил "Систему защищенных досок объявлений" (SBBS), которая выполняется на полных узлах BEAM, чтобы обеспечить асинхронное согласование транзакций.
Требование интерактивного участия обеих сторон в построении транзакции может быть проблемой при использовании блокчейна Mimblewimble. В дополнение к защищенному каналу связи BBS BEAM также планирует поддерживать односторонние транзакции, когда получатель платежа в транзакции, который ожидает получить определенную сумму, может построить свою половину транзакции и отправить эту половинную транзакцию плательщику. Затем плательщик может завершить построение транзакции и опубликовать ее в блокчейне. В обычной системе Mimblewimble это невозможно, потому что это потребует раскрытия вашего ослепляющего фактора для контрагента. BEAM решает эту проблему, используя процесс, который они называют ядром слияния, посредством которого ядро может включать ссылку на другое ядро, так что это допустимо, только если оба ядра присутствуют в транзакции. Таким образом, получатель платежа может построить свою половину транзакции с помощью секретного слепого коэффициента и ядра, которое компенсирует их слепой коэффициент, который должен быть включен, когда плательщик завершит транзакцию. BEAM указал, что эта функция будет частью первоначального выпуска.
Оба проекта используют множество древовидных структур Merkle для отслеживания различных аспектов соответствующих блокчейнов. Точные деревья и то, что они записывают, задокументированы для обоих проектов. Однако Beam использует древовидную структуру Radix-Hash для некоторых из их деревьев, представляющих собой модифицированное дерево Меркле, которое также является двоичным деревом поиска. Это обеспечивает ряд особенностей, которых нет в стандартных деревьях Меркле, которые они используют в своей реализации.
Алгоритм майнинга Proof of Work
Компания BEAM объявила, что будет использовать алгоритм майнинга Equihash Proof of Work (PoW) с параметрами, установленными в n = 150, k = 5. Equihash был предложен в 2016 году как алгоритм PoW с жесткой памятью, который в значительной степени полагался на использование памяти для достижения устойчивости к специализированной интегральной схеме (ASIC). Цель состояла в том, чтобы создать алгоритм, который был бы более эффективен для работы на потребительских графических процессорах (видеокартах), в отличие от растущего числа майнеров ASIC, в основном производимых Bitmain. Предполагалось, что это поможет децентрализовать возможности майнинга криптовалют, использующих этот алгоритм. Идея сопротивления ASIC компании Equihash заключалась в том, что в то время реализация памяти в ASIC была дорогой, и поэтому графические процессоры были более эффективными при расчете PoW Equihash. Это сопротивление ASIC продолжалось некоторое время, но в начале 2018 года Bitmain выпустил ASIC для Equihash, который был значительно более эффективным, чем графические процессоры для Equihash, используемых Zcash, Bitcoin Gold и Zencash. Можно настроить параметры алгоритма Equihash, чтобы сделать его более требовательным к памяти и, таким образом, сделать устаревшие ASIC устаревшими, но еще неизвестно, будет ли BEAM делать это.
Первоначально Grin решил использовать новый алгоритм Cuckoo Cycle PoW, который также считается устойчивым к ASIC из-за ограничения задержки памяти. Это означает, что алгоритм связан с пропускной способностью памяти, а не с необработанной частотой процессора, в надежде, что это сделает возможным майнинг на обычном оборудовании.
В августе 2018 года команда Grin объявила, что ей стало известно, что существует вероятность того, что ASIC будет доступен для алгоритма цикла Cuckoo при запуске их сети. Хотя они признают, что майнинг ASIC неизбежен, они обеспокоены тем, что текущий рынок ASIC очень централизован (то есть Bitmain), и что они хотят развивать децентрализованное сообщество майнинга GPU в первые дни Grin. Грин хочет нацелиться на то, чтобы поддерживать это сообщество в течение 2 лет, и они надеются, что ASIC стали более полезными и, следовательно, децентрализованы.
Для решения этой проблемы было предложено сначала использовать два алгоритма PoW. Тот, который является ASIC Friendly (AF), и тот, который является ASIC Resistant (AR), а затем выбрать, какой PoW используется на блок, чтобы сбалансировать вознаграждение за майнинг в течение 24-часового периода между двумя алгоритмами. Комитет по управлению, 25 сентября принял решение продолжить этот подход, используя модифицированную версию алгоритма цикла Cuckoo, называемую цикл Cuckatoo. Алгоритм автофокусировки при запуске будет Cuckatoo32 +, который будет постепенно увеличивать требования к памяти, чтобы со временем устаревшие одночиповые ASIC устаревали.
Стоит отметить компания OBELISK анонсировала выпуск ASIC под GRIN. Дата выхода асика, на момент написания статьи, неизвестна.
Модели управления и финансовая политика
Оба проекта Grin и BEAM имеют открытый исходный код и доступны на Github. У проекта Grin есть 75 участников, из которых 8 внесли подавляющее большинство кода. BEAM имеет 10 участников, из которых 4 внесли подавляющее большинство кода (на момент написания). Два проекта выбрали разные модели управления. BEAM решил создать основу для управления проектом, членами которой являются основные разработчики. Это маршрут, по которому проходят большинство криптовалютных проектов. Сообщество Grin решило не создавать центральный фонд и собрало интересное обсуждение плюсов и минусов централизованного фонда. Этот документ содержит очень глубокое обсуждение, в котором рассматриваются различные функции управления, которые может выполнять фонд, и проводится глубокая оценка каждого варианта использования. Сообщество Grin пришло к выводу, что, хотя фонды полезны, они не являются единственным решением проблем управления и решили остаться полностью децентрализованным проектом, управляемым сообществом. В настоящее время решения принимаются на периодических собраниях руководства, которые созываются в Gitter с членами сообщества, где обсуждается повестка дня и принимаются решения. Эти повестки дня и протоколы собраний можно найти в разделе управления форума Grin.
Ни один из проектов не участвовал в ICO, но оба проекта имеют разные модели финансирования. Компания BEAM создала ООО и привлекла к нему инвесторов для первоначального раунда финансирования и обеспечения устойчивости. Вкладывает 20% от каждого вознаграждения за каждый блок добычи в фонд, который будет использоваться для финансирования дальнейшего развития и продвижения BEAM, а также для финансирования некоммерческого Фонда Beam, который возьмет на себя управление протоколом в течение первого года после запуска. Целью Фонда будет поддержка технического обслуживания и дальнейшего развития Beam, содействие соответствующим криптографическим исследованиям, поддержка осведомленности и просвещения в области финансовой конфиденциальности, а также поддержка академической работы в смежных областях. В отрасли этот казначейский механизм называется налогом на прибыль. Grin не будет взымать налог с майнеров и будет полагаться на участие сообщества в финансировании проекта. Проект Grin принимает финансовую поддержку, но эти кампании по финансированию проводятся в соответствии с их «Принципами финансирования сообществ», которые будут проводиться «по мере необходимости». Кампания будет указывать конкретную потребность, на которую она направлена (например, «Плата за хостинг для X на следующий год»), и финансирование будет получено участником сообщества, который проводил кампанию. Это обеспечит 100% видимость того, кто несет ответственность за полученные средства.
С точки зрения финансовой политики двух проектов BEAM заявил, что они будут использовать дефляционную модель с периодическим уменьшением в два раза своего вознаграждения за добычу блока и максимальным предложением BEAM ~ 262 миллионов монет. Beam стартовал с 100 монет, выпущенных за блок. Первое деление пополам будет происходить через год, а затем деление пополам будет происходить каждые 4 года. Grin выбрал инфляционную модель, в которой вознаграждение за блок будет оставаться постоянным. Этот подход будет асимптотически стремиться к нулевому проценту разбавления при увеличении предложения вместо того, чтобы усиливать установленное предложение. Награда за блок составляет 60 Grin. Время создания блока - одна минута.
Выводы
Таким образом, Grin и BEAM - это два проекта с открытым исходным кодом, которые реализуют схему блокчейна Mimblewimble. Оба проекта строились с нуля. Grin использует Rust, в то время как BEAM использует C ++, и поэтому существует много технических различий в их дизайне и реализациях. Однако с функциональной точки зрения оба проекта будут поддерживать все основные функции Mimblewimble. Каждый проект содержит некоторые уникальные функциональные возможности, но поскольку целью Grin является создание минималистичной реализации Mimblewimble, большинство уникальных функций, расширяющих Mimblewimble, лежат в проекте BEAM. Список ниже суммирует функциональные сходства и различия между двумя проектами.
Cходства:
- Основной набор функций Mimblewimble;
- Протокол ретрансляции "одуванчик".
Grin уникальные особенности:
- Частичная синхронизация истории;
- DAG-представление в Mempool для предотвращения дублирования ссылок UTXO и циклических транзакций.
BEAM уникальные особенности:
- Как конфиденциальные, так и неконфиденциальные транзакции;
- Аудиторские операции;
- Безопасная система BBS, размещенная на узлах для неинтерактивного согласования транзакций;
- Построение односторонней сделки;
- Использование деревьев Radix-Hash.
Beam и Grin, действительно, похожи по принципу работы, однако первая криптовалюта поддерживается стартапом, который хочет затем передать её управление некоммерческому фонду, а разработка Grin полностью финансируется сообществом при помощи донатов.
Настораживает механизм BEAM, который отправляет 20% всех добытых монет на счёт команды.
Криптовалюта Beam была запущена третьего января 2019 г и уже через неделю после запуска проект столкнулся с техническими сложностями. 9 января команда BEAM обнаружила критическую уязвимость в коде кошелька и обратилась к пользователям с просьбой немедленно удалить приложение и загрузить с официального сайта его исправленную версию.
Как позднее рассказали разработчики, уязвимость подвергала риску средства пользователей, поскольку позволяла злоумышленникам изменять транзакции так, чтобы токены отправлялись прямиком в их кошельки.
А 21 января команда BEAM сообщила о возникновении технических трудностей, которые привели к остановке блокчейна. Объявление о неполадках появилось в официальном Twitter-аккаунте проекта.
Как следовало из сообщения, сеть BEAM остановилась на блоке 25709 около часу дня (МСК).
В будущем Beam планирует разработать и выпустить ряд функций, в том числе атомарные свопы с биткоином, мобильный кошелек и интеграцию платформ платежей через API.
Эти проекты еще очень молоды и мы будем с большим удовольствием следить за ними, чтобы увидеть, как их различные решения играют технически и с точки зрения их финансовой политики и моделей управления.
В основе данной статьи лежит замечательная работа, все ссылки и источники можно найти здесь.