Финализация

Финализация: что это такое и почему это важно?

Финализация

Статья статья от Dave Hodgson:

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

Прежде чем приступить к изучению этой области, хотел бы отметить тот факт, что я узнал об этом совсем недавно и я не являюсь экспертом в этой области. Изучая данную информацию в интернете, а также благодаря помощи со стороны @jaguar0625 и @gimer’s, я могу объяснить это на поверхностном уровне для людей, которые не разбираются в этом. Я постарался держаться подальше от технических деталей, где это возможно, и чтобы сделать данную статью, более удобной для чтения. 

Краткое содержание статьи:

  • Финализация (окончательность), является важным параметром, без нее можно теоретически откатить любую транзакцию в блокчейне.
  • Существует два основных подхода: Детерминистический и Пробалистический.
  • Без детерминированной финализации пользователям блокчейн сети необходимо реализовать проверку по менеджмент риску, до тех пор, пока все пользователи не будут считать данную транзакцию финализированной (окончательной), необходимо 6 подтверждений сети, для Биткойна (BTC) и это занимает около ~1 час
  • В новых блокчейн цепочках, есть способы добавления детерминированной окончательности, что означает, что они безопасны, более надежны и требуют меньшего количества обходных путей, но есть и такие компромиссы, как, например, склонность к атакам DDoS «отказ в обслуживании». Эти блокчейн сети являются своего рода конкурентами или аналогами блокчейн сети Symbol.
  • При общении с биржами, кастодиан организациями, регулируемыми организациями, финализация (окончательность), была упомянута в разговорах (и должна иметь 1 уровень), для того чтобы реализовать листинг токена XYM.
  • Основные Разработчики Ядра NEM (core-devs), разработали несколько решений, основанных на передовых подходах и новейших исследованиях, поэтому мы привлекли внешнюю помощь, но есть области, которые должны быть полностью переделаны и это занимает больше времени, чем предполагалось.
  • На данном этапе имеется задержка даты лаунча Symbol, разработчики продолжали производить девелопмент (развитие) параллельно с конструированием, но сейчас находятся в конечной точке, где прогресс разработки останавливается, всего на несколько недель, а не на несколько месяцев.

Для тех, кто хочет получить больше информации, продолжайте читать эту статью.

Блокчейн 101

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

Есть несколько основных терминов для определения:

  • Консенсус: процесс достижения соглашения по вопросу значения распределенных данных, с помощью которого все ноды в сети соглашаются, что цепочка блоков является правильной. Это идеально вписывается в структуру распределенного регистра блокчейна. Платформа NEM использует модифицированный консенсус Proof of Stake (Доказательство доли владения) от NXT / PeerCoin. Модификации являются важным показателем репутации и VRF хэшом (функции проверяемой случайности), чтобы помочь обеспечить рандомность харвестинга.
  • Безопасность: Как добиться того, чтобы честные стороны, не договаривались о противоречивых вещах между собой?
  • Жизнеспособность (Живучесть): Как убедить честные стороны договориться о чем-то?
  • Проверяемая случайная функция (VRF): это выходная функция, которая может быть публично криптографически проверена, на счет того, что выходные данные являются действительно псевдослучайными. 

В кошельке Symbol, а также в процессе опт-ин (подписки) вы увидите VRF-ключи, как вариант для тех, кто хочет осуществлять харвестинг.

  • Разделение сети (Теорема CAP): эвристическое утверждение, что в любой реализации распределенных вычислений можно предоставить не более двух из следующих трех свойств: согласованность данных, доступность, устойчивость к разделению. 
    • Согласованность данных и устойчивость к разделению: Если происходит разделение сети, то никакие блоки не будут добавлены, пока состояние не будет исправлено (Жизнеспособность ухудшается), цепочка (и) фактически останавливаются.
    • Доступность и устойчивость к разделению: Если происходит разделение сети, то все разделы будут прогрессировать сепарировано, независимые цепочки будут добавляться отдельно, и когда разделение разрешается, параллельные цепочки должны быть разрешены.
  • Финализация (Окончательность): Как пользователи блокчейн сети могут узнать, является ли определенная транзакция окончательной и не изменится ли эта транзакция в будущем (во время отката блокчейна).
    • Византийская отказоустойчивость (BFT): Как сеть может справиться с субьектом, который становится враждебным и не ведет себя честно по отношению к другим. Задача византийских генералов — в криптологии это задача взаимодействия нескольких удалённых абонентов, которые получили приказы из одного центра.

Что такое Финализация (Окончательность)?

Финализация (Окончательность) в блокчейне — это процесс, при котором транзакция в блокчейн сети может считаться окончательной и с помощью финализации можно определить, существует ли риск фальсификации (изменения) транзакции или блока в блокчейн цепочке.

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

Блокчейн сетям нужен способ прийти к консенсусу, по которому другая параллельная цепочка (правильна), и откатить неверную цепочку блоков, чтобы все ноды вернулись в одну блокчейн сеть (и, следовательно, в единый распределенный реестр).

Какие Типы Финализации (Окончательности) Существуют?

Существует 2 основных типа Финализации — это Пробалистический или Детерминированный.

  • Пробалистический подход основан на достаточном количестве проходящих блоков, поэтому чрезмерно дорого / непрактично преднамеренно запускать параллельную блокчейн сеть и пытаться откатить ее на реальную блокчейн сеть. Поэтому пробалистический подход расширяет возможность использования детерминистических данных через поиск похожих паттернов поведения и использования технических параметров,  сопоставляя данные и объединяют в одну сущность по этим факторам.
  • Детерминированный подход означает, что сеть соглашается и блок или транзакция помечается как окончательная (конечная) в блокчейн сети. Детерминистический — это подход проектирования или конструирования на основе полностью определенных данных о параметрах воздействий и свойствах объекта.

Биткойн (BTC) и большинство других блокчейн цепочек с алгоритмом консенсуса PoW используют пробалистический подход, более современные алгоритмы консенсуса PoS имеют тенденцию к детерминированному подходу, в первую очередь потому, что безопасность превыше всего, и имеют более быстрое время блокировки / или нацелены на конкретные случаи использования. В конечном итоге это означает, что их транзакции и балансы можно считать более надежными, а также более безопасными и быстрыми.

Пробалистическая финализация (окончательность)  — это причина, по которой, например, криптовалютная биржа Binance требует 6 подтверждений сети, для зачисления токенов Биткойн (BTС) на ваш депозит, это делается для уменьшения контрагентового риска, так как общепринято, что требуется 6 подтверждений сети (1 час), так что риск 51% атаки мало вероятен.

Почему Финализация Важна?

Любой, кто использует какой-либо блокчейн, не должен доверять транзакциям в блоке, если только они не помечены как проболистически финализированы (окончательные). Потому что в противном случае людям необходимо «угадать», когда транзакция будет финализирована.

Например, что может произойти без финализации (окончательности):

  • Я отправляю 100 Биткоинов (BTC) на биржу Binance, и данная биржа зачисляет 100 Биткойнов, после 1 подтверждения транзакции
  • Я произвожу торговлю и обмениваю свои биткойны на Эфириум (Eth) и сразу же выхожу Эфириум на другой крипто кошелек (занимает 10-20 минут)
  • При четырех (4) подтверждении сети, транзакция Биткойна (BTC) откатывается из-за нахождения в «неправильной цепи»

Заключение от вышесказанного заключается в том, что мой перевод на биржу Binance никогда не происходил, и мои 100 Биткойнов (BTC) все еще находится на моем счете, но мои сделки с Эфириум (Eth) и отправка их на мой кошелек были  инициализированы, поэтому у меня также есть цифровой актив Эфириум (Eth) на моем личном кошельке и мои 100 Биткойнов (BTC). Это максимально упрощено, но наглядно демонстрирует мою концепцию.

Проблема двойных расходов, которую приходится решать большинству криптоплатежных систем и использование Биткойна (BTC) является еще одним примером. Покупатель не ждет 1 час, чтобы купить кофе, и кафетерий не хочет рисковать потерей средств после того, как пользователь уйдет из-за отката транзакции. Lightning Network – это решение второго уровня, которое направлено на решение проблемы масштабируемости биткоина. Главная особенность Lightning Network заключается в возможности направлять деньги через платёжные каналы. Это часть того, что Lightning делает на BTC, а другое решение заключается в том, что провайдеры платежей берут на себя риск и списывают (вычитают) убытки из своих доходов, поэтому в конечном итоге сборы увеличиваются; поставщики создают решения для управления рисками вне блокчейн сети.

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

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

Вопрос финализации — возник в не тогда когда токен XEM был залистен (добавлен) на биржи, а это произошло, недавно от самих бирж, при попытке предварительного листинга (добавления) токена XYM на обмены. Поэтому что обмены (и депозитарные системы) уже знают, что есть данные проблемы.

Это в значительной степени не относится к приватным сетям, за исключением отдельных случаев. 

Каковы Общие Подходы Финализации (Окончательности)?

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

  • Polkadot: алгоритм на основе (PBFT) проверяет цепочки, и создает блоки-кандидаты, для расширения завершенности блокчейн цепочки 
  • Ethereum 2.0: Casper FFG (PBFT), 20 минут финализации, это обновление сети Ethereum, которое предполагает переключение алгоритма на Proof of Stake (PoS) (также известное как Ethereum 2.0)
  • Кроссплатформенная блокчейн-сеть Cosmos/Tendermint: PBFT, быстрая финализация, последовательный раздел
  • Algorand: Быстрая финализация, но использует согласованное разбиение и предполагает синхронность. Проект Algorand запустил обновленную версию своего протокола, которая расширит список децентрализованных приложений (dApps) и процессов, способных работать на его платформе. 

Проект Cosmos / (Команда Tendermint) были первыми, кто применил производственное решение (оно опирается на валидаторы). Algorand обычно считается одним из наиболее продвинутых способов сделать это в настоящее время, однако он опирается на некоторые предположения, которые еще предстоит проверить временем. 

Если вы хотите пометить блок или саму транзакцию, как финализированую (окончательную), то выявляется 2 основных проблемы (фазы):

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

Существует два подтипа детерминированной финализации окончательности:

Полу децентрализованный:

Данные решения основаны на известном пуле нод, которые предварительно выбраны, чтобы данным нодам было позволено голосовать за то, что данный блок или транзакция является финализированной (окончательной). Это используется в большинстве решений, в которых применяется терминология валидаторы (Cosmos, Steem, Eth 2.0, Polkadot и т. д.). Используются общие модели, например такие как Делегированная византийская отказоустойчивость (DBFT), и Практическая византийская терпимость к ошибкам (PBFT).

(DBFT) делегированная византийская отказоустойчивость может противостоять ненадежным или ненадежным участникам блокчейна более эффективно, чем другие алгоритмы.

Практическая византийская терпимость к ошибкам (PBFT) – это консенсусный алгоритм практической византийской терпимости к ошибкам, который отвечает за эффективную работу в асинхронных сетях. 

Большинство решений имеют теоретические пределы масштабирования и не получили широкого распространения после голосования 250 нод, в основном из-за пункта 2 выше. 

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

Полностью децентрализованный

Данный подход основан на динамическом пуле голосов, в которая любая нода, может присоединиться проголосовать за блок/транзакцию или наоборот покинуть данный пул голосов. Все ноды должны иметь способ автоматически определять, кто из нод имеет право голосовать, и когда голосование будет считаться завершенным.

Данное решение являются более сложными, но более надежными, безопасными и масштабируемым. Есть несколько цепочек, которые имеют хорошо документированные подходы к данной проблеме, например один из них это проект, Algorand.

Algorand специально использует подход согласованного разделения, при наличии разрыва сети и потребует автоматического восстановления. Проект Algorand подтверждает транзакции порядка минуты с незначительной вероятностью разветвления. Техническая конструкция проекта Algorand основана на механизме криптографической сортировки в сочетании с протоколом византийского соглашения. Данный проект избегает целенаправленных атак на выбранных участников, используя замену участников на каждом этапе. Экспериментальные результаты с прототипом Algorand демонстрируют, что он достигает субминутной задержки и 125-кратной пропускной способности биткойна и хорошо масштабируется до 500 000 пользователей. 

Где мы находимся с проектом Symbol ?

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

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

Также хотелось бы отметить что рассматривался подход от проекта Algorand, и вплоть до самого последнего времени казалось возможным реализовать его, но ближе к концу инициализации была выявлена проблема вокруг Редукции. В частности, подход основан на проверке блоков, однако мы (подобно проекту Polkadot) проверяем цепочки блоков, микро-форки (> 1 блоков), как это упоминалось ранее. Для примирения этих двух параметров потребуется полное переписывание кода и решение в пользу последовательного подхода к разделению, которому NEM предпочел не следовать на ранних стадиях разработки.

Следующим шагом является переоценка решений PBFT (Практическая византийская терпимость к ошибкам) для лаунча, и основные разработчики (core-devs) в настоящее время активно работают над этим, приводя различные моделирования ситуаций. Данный подход (PBFT) ранее разрабатывался, поэтому исследовательская работа не начинается с нуля, и секьюрити компания активно помогает с этим подходом.

Если этот подход окажется оправданным (плодотворным) и пройдет проектные проверки, то данный подход, сможет обеспечить аналогичный подход к блокчейн цепочкам таким как (Eth 2.0, Polkadot и тд.), которые можно было бы считать прямыми конкурентами блокчейн платформы Symbol. Процесс проектирования занял больше времени, чем предполагалось ранее, это связано с тем что наборы функций находятся на переднем крае академических исследований блокчейна, опираясь на такие решения, как PBFT, которые существуют уже несколько лет. Получение правильного решения ставит публичную сеть Symbol на передовой план технологических решений.

Разработчики ядра достигли конечной точки проектирования, когда уже невозможно продвигаться вперед. Следующие шаги должны завершить проектирование, которое мы надеемся сделать в ближайшие 1-2 недели (это пока приблизительная оценка, а не точная дата). 

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

Дополнительные Полезные Материалы

Ниже приведены некоторые ресурсы (материалы), которые помогли мне понять данную проблему и варианты ее решения:

Оригинал статьи: https://forum.nem.io/t/finality-what-is-it-and-why-is-it-important/

 

Tags:

Comments are closed