Один из самых важных аспектов децентрализованного криптовалютного проекта – это используемый алгоритм консенсуса. Он решает проблему двойного расходования, которая ограничивала разработку цифровых валют до появления технологии блокчейна.
Криптовалюты представляют собой общедоступные, децентрализованные реестры, которые позволяют вносить новые записи, но не допускают изменения старых. Поэтому им необходим алгоритм консенсуса, который будет приводить все данные к единому знаменателю и защищать сеть от действий злоумышленников.
Среди существующих проектов можно выделить четыре основные имплементации алгоритма консенсуса, каждая из которых имеет свои преимущества и недостатки: 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 для этой цели передаёт право на проверку и подтверждение транзакций тем участникам, которые держат самые крупные доли коинов в сети и потому наиболее финансово заинтересованы в её успехе. Если минтер заложил свои коины для подтверждения мошеннических транзакций, то он потеряет свой стейк (долю). Сейчас 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.
Заключение
Пока алгоритмы консенсуса вынуждены искать компромисс между масштабируемостью и степенью централизации (хотя решения второго уровня могут сместить акцент с проблемы масштабируемости). Интересно будет узнать, какие механизмы лучше остальных смогут стимулировать участников в крупномасштабных сетях и обеспечивать надёжное управление, и как протоколы и сообщества приспособятся к внедрению технологических разработок.