Обзор алгоритмов консенсуса

image

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

TechTarget даёт алгоритму консенсуса следующее определение: «Это процесс в компьютерных науках, который используется для достижения согласия в отношении отдельного значения данных среди распределённых процессов или систем. Алгоритмы консенсуса предназначены для обеспечения надёжности сети, включающей в себя некоторую долю ненадёжных нод. Решение так называемой проблемы консенсуса – важная задача для распределённых вычислительных и многоагентных систем. Пригодные к использованию в реальных условиях алгоритмы консенсуса обязательно должны допускать, что некоторые процессы и системы будут недоступны и некоторые коммуникационные связи – потеряны. То есть они должны быть устойчивы к отказам. Как правило, алгоритмы допускают, что на запрос ответит только часть нод (узлов сети), но требуют, чтобы эта часть составляла как минимум 51 % от всех нод сети».

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

Среди существующих проектов можно выделить четыре основные имплементации алгоритма консенсуса, каждая из которых имеет свои преимущества и недостатки: Proof-of-Work (PoW, доказательство выполнения работы), Proof-of-Stake (PoS, доказательство доли), Delegated Proof-of-Stake (DPoS, делегированное доказательство доли) и Byzantine Fault Tolerance (BFT, алгоритм, устойчивый к византийской ошибке). Примечание: эта область знаний активно развивается; существуют также и другие алгоритмы, и, вероятно, появятся новые.

Proof-of-Work (PoW)

Proof-of-Work – первый успешно реализованный алгоритм консенсуса для децентрализованного блокчейна. PoW по-прежнему используется в сетях Биткойна, Эфириума (его команда планирует переход на Proof-of-Stake, подробнее о нём я расскажу ниже), Лайткойна, ZCash, Monero и многих других криптовалют. PoW требует от участников выполнения сложных вычислений, результаты которых легко могут проверить другие участники сети. В случае Биткойна майнеры соперничают друг с другом за право внести набор транзакций, или блок, в общий блокчейн сети. Для того чтобы это сделать, майнер должен первым вычислить «nonce». Это некоторое число, которое добавляется в конец строки для создания хеша с необходимым количеством нулей в начале (это очень краткое определение; подробнее о нём можно узнать здесь).

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

Proof-of-Stake (PoS)

Существует много возможных имплементаций Proof-of-Stake. Майнеров здесь заменяют минтеры («чеканщики»). Они не выполняют сложных вычислений. Для подтверждения транзакций они закладывают свои коины. При выборе минтера, который будет заполнять блок, часто учитывается размер доли его коинов относительно их общего количества в сети, срок их хранения и прочие показатели, подтверждающие заинтересованность минтера в долгосрочном успешном развитии сети. Для защиты от злоумышленников Proof-of-Work требует выполнения сложных вычислений. Proof-of-Stake для этой цели передаёт право на проверку и подтверждение транзакций тем участникам, которые держат самые крупные доли коинов в сети и потому наиболее финансово заинтересованы в её успехе. Если минтер заложил свои коины для подтверждения мошеннических транзакций, то он потеряет свой стейк (долю). Как и в случае с Proof-of-Work, имплементация Proof-of-Stake имеет свои тонкости, и подробнее об этом можно узнать здесь. Сейчас PoS используется в сетях Peercoin, Decred и скоро будет реализован в Ethereum. PoS не требует больших энергозатрат и, возможно, лучше защищает от атак, чем PoW, но он пока не использовался в крупных проектах и не доказал свою эффективность.

Delegated Proof-of-Stake (DPoS)

Хотя в названии этого алгоритма и содержится Proof-of-Stake, он существенно от него отличается. В DPoS держатели токенов не закладывают доли. Они путём голосования выбирают группу участников, которая будет проверять и подтверждать транзакции. С одной стороны, DPoS децентрализует сеть, так как все держатели участвуют в выборе проверяющих нод. С другой стороны, он её централизует, потому что решение принимает небольшая группа участников. Однако это повышает скорость подтверждения транзакций. Имплементации DPoS поддерживают системы репутации, перемешивания и бессрочного голосования, которые гарантируют честность и ответственность выбранных валидаторов. DPoS решает проблему масштабирования и обеспечивает быстрое подтверждение транзакций, но он частично централизует сеть и его модель управления пока не доказала свою эффективность в крупных проектах. Этот алгоритм используется в сетях Steemit, EOS и BitShares.

Byzantine Fault Tolerance (BFT)

BFT, устойчивый к византийской ошибке алгоритм, сложен в техническом плане (как и другие представленные выше алгоритмы). Хорошее определение задачи византийских генералов, которую решает этот алгоритм, можно найти здесь. В общих чертах, эти алгоритмы позволяют каждому генералу (валидатору) управлять состоянием цепочки и обмениваться сообщениями с другими генералами, чтобы прийти к единому мнению в отношении правильной версии блокчейна и обеспечить защиту от злоумышленников. Здесь также есть много нюансов, и дополнительную информацию о проблемах и имплементации этих алгоритмов можно найти здесь. BFT используется в сети Ripple (здесь валидаторов предварительно выбирает Ripple Foundation) и Stellar (здесь валидатором может стать любой, а за доверие отвечает сообщество). Эти алгоритмы решают проблему масштабируемости и обеспечивают низкие комиссии, но делегирование вносит элемент централизации.

Новые алгоритмы консенсуса

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

Направленные ациклические графы (DAG) вызывают большой интерес и предлагают перспективное решение проблемы масштабируемости. Пока большое внимание к себе привлекли три имплементации: Hashgraph, Tangle и Block-lattice.

Заключение

Пока алгоритмы консенсуса вынуждены искать компромисс между масштабируемостью и степенью централизации (хотя решения второго уровня могут сместить акцент с проблемы масштабируемости). Интересно будет узнать, какие механизмы лучше остальных смогут стимулировать участников в крупномасштабных сетях и обеспечивать надёжное управление, и как протоколы и сообщества приспособятся к внедрению технологических разработок.

Источник



Рубрики:Новичкам, Теория

Метки: , , , , , , , ,

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s