Блокчейн-проекты, которые запустят майнет в мае-июне 2018 года

Ламер лезет в PoS-джунгли в попытках понять, увидим ли мы с вами открытый Cosmos.

by CryptoLamer

Ну кто вот не любит PoS? Ну кто, кто? Ну, руку подыми! Чо ты руку тянешь, майнер? Руку убери!

Ну разве тебе не приятно, когда на твой Стратис-кошелёк капает новая монета, ну или как качается газ на твой NEON. Ничего дорого покупать не надо: ни оборудования, ни помещения, ни подъездного бомжа Оффенбаха в сторожи звать, ни получать дорогие счета за электричество. Сидишь, кайфуешь, стэйкаешь, или как там, форджишь на здоровье и профит…

Хотя, вот тебе мысля 1: у NEO не PoS. Да и у Stratis не чистый PoS. У Waves чистый PoS, который легко хакнуть и, поэтому, он никакой не BFT.

А вот мысля 2: Вообще, чистый PoS не даёт BFT. Удивил?

Почему так, как же нам достичь этого пресловутого BFT, какой вариант BFT PoS консенсуса родился одним из самых первых и что из этого вышло…обо всём об этом в нашей с тобой любимой рубрике «Давайте Разберёмся!»

Прежде чем перейдём к основному тексту — очень важный абзац.

В тексте использованы материалы следующих статей:

https://m.habr.com/post/350012/

https://busy.org/@miacoins/polnyi-gid-po-prokolu-proof-of-stake-poslednemu-predlozheniyu-ethereum-i-intervyu-vitalika-buterina

https://hackernoon.com/scaling-tezo-8de241dd91bd

https://bits.media/news/sravnenie-konsensusov-proof-of-stake-casper-protiv-tendermint/

а также Whitepaper Tendermint и Cosmos docs, а также вот это вот прекрасное видео https://youtu.be/LApEkXJR_0M.

Рекомендую ознакомиться с ними полностью, а также указать на мои косяки, если такие имеются.

Огромное спасибо каналу @miacoins за прекрасный подбор статей на канале, качественный перевод и огромную роль для сообщества. Ты крутая! Перевод статей на этом канале очень сильно помогает мне разбираться в технических особенностях крипты. Бро, всячески рекомендую подписаться на эту годноту!!! Прям вот мастхэв полнейший!

PoS не PoW, тут думать надо

Я уже, в прошлом посте, упоминал в чём гений Накамото и его BFT консенсуса PoW. Напоминаю! Он сумел создать алгоритм, который можно применить к динамической распределенной системе, возможно, сам того не осознавая. Узлов в сети биткойн множество и это количество продолжает расти, как количество детей, названных именем Илья, после игры Кутепова с испанцами. Но на заре крипты всё было не так.

100-200 гиков думали о том, как бы получить те же свойства, что и у консенсуса Накамото, но без затрат материальных ресурсов. Кроме того, как считается некоторыми участниками сообщества, майнеры — это очень хитрые жопки, да простят они меня, и их интересы не всегда могут совпадать с интересами инвесторов. Вспомни «Санта-Барбару» с SegWit хотя бы. Да и с развитием сети сам Bitcoin всё больше сосредотачивался в руках крупных майнинговых пулов. Тогда и пришла идея использовать долю владения, как способ выбирать и подтверждать новый блок цепи. Вроде и за электричество бабуле счета присылать не будут и оборудования никакого особо сложного тоже, да и владелец доли напрямую заинтересован в росте стоимости актива. Но вот незадача! Консенсус Накамото позволяет не только выбирать и подтверждать новый блок в цепи, но и:

  • решать проблему распределения криптоактивов (всё более равномерно)
  • выбирать того, кто генерирует следующий блок
  • определять время генерации нового блока

Плюс к этому, приходится решать более сложные и гораздо более опасные для сети и её пользователей вопросы. В частности, порядок транзакций. Доля владения — это тебе не киловатты и хэшрейты битка, тут ничем жертвовать не надо. Владелец доли может и поменять свои решения относительно валидности того или иного блока. Так получается, что в любой момент валидатор может проголосовать за валидность двух конфликтующих цепей. Да, конечно, можно наказать холдера лишением его (его же) доли, за изменение голоса после голосования. И такое решение предложил Сам Виталик «Десятая реинкарнация Будды» Бутерин. И даже подарил этому решению красивое название Slasher (бритва — пер. с англ., если уж совсем тебе лень лезть в словарик). Но что делать, если за побочную цепь он проголосовал своей долей по ошибке, а потом понял, что не прав и хотел бы изменить решение? Всё это только усложняет систему и алгоритм и данная проблема под названием «Nothing at stake» является базисной проблемой данного алгоритма и его «Камнем преткновения». Математически решить эту задачу, к сожалению, невозможно. Ну или возможно, но тогда тебя ждёт Филосовская премия (Нобелевку по математике не вручают, неуч!).

А ещё, помимо Nothing-at-Stake, злодейский злодей может выведать у бывшего кита приватник от кошеля, у которого в прошлом был большой баланс, пока кит не решил закупиться кобинхудом в январе на долгосрок. А далее, форкнуть цепь с данного момента и наслаждаться жизнью в качестве хозяина уже альтернативной цепочки. Это была критическая уязвимость первой PoS-монеты Peercoin. С тех пор, в ней есть система чек-пойнтов, что, по сути, привело к её централизации. Как поёт Джейми Хэтфилд: Sad but True:(

И вот, казалось бы, ну если не получается, чего мучиться-то? Но у биткойна также стали проглядываться реальные проблемы с масштабируемостью и централизацией. И идею решили докрутить! По сути, первым, кто предложил один из способов решения проблем PoS и создания первого BFT PoS алгоритма стал китайский кодер Джа Квон.

Нежная мята

Идею Tendermint Джа Квон высказал ещё в 2014м, когда несколько сотен гиков на биткойнтолке пытались найти решение проблемы энергосбережения в сети биткойна. И, чтобы наделить PoS-сеть свойствами живучести и согласованности (см. прошлый длиннопост https://cryptosherlock.club/thunderella/), пришлось в основу протокола положить тот самый классический BFT-консенсус на основе многораундового голосования. Оставалось его только лишь применить к условиям блокчейна. Причём Джа решил применить этот консенсус с уклоном именно в согласованность. Так посчитал это свойства более важным. Что это означает на практике? сейчас поясню!

На самом деле, существует теорема согласно которой в распределенной сети всегда приходится жертвовать одним из трёх свойств:

  • живучесть
  • согласованность
  • устойчивость к форкам

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

Именно так и разделяют эти протоколы. Casperы топят за живучесть, а Tendermint за согласованность. Ну это как Marvel и DC. И то и это про комиксы, но первые о людях, которые становятся богами, а второе о богах, которые становятся людьми. Девочки, только вот не надо мне ля-ля, что не знаем «этивашикомиксы». Тут одна призналась, что футбол за весь июнь не разу не включала, у меня аж с сердцем плохо стало. Новые знания впитывать нужно! Но я отвлёкся.

Вообще же, весь протокол консенсуса начинается со списка валидаторов. Список валидаторов объявляется в Genesis-блоке. Главное, чтобы изначально вредных вонючек было меньше 1/3 числа всех валидаторов. Ну а далее организовывается раунд голосования, выбирается псевдослучайно валидатор, предлагающий блок — он предлагает блок, а далее…не буду тут париться с описанием, а то и так читать долго. Просто стырю картиночку из ВП.

Как видишь, главное, чтобы на любом этапе раунда количество проголосовавших находилось в супербольшинстве (supermajority по-английски), т.е кворум проголосовавших за то или иное решение был более 2/3 — тот самый BFT. Если валидатор вдруг ушёл в офф-лайн или при голосовании у некоторых валидаторов замечен плохой коннекшн с сетью, то сеть сама подстраивает время ожидания при объявлении нового раунда и предложении нового блока. Таким образом, зависимость от таймаутов делает Tendermint сетью со слабой синхронизацией. Хотя в целом, протокол асинхронен — набрали 2/3 голосов, побежали дальше и не важно, кто голосовал и в какой момент времени. Всё равно побеждает Единая Россия(шутка, хе-хе).

Собственно, сам уровень консенсуса и сама сеть — это только два слоя, для полноценной работы платформы необходим третий, верхний слой — слой приложений. Собственно, до момента, пока не был формализован Tendermint, все предыдущие системы представляли из себя неразделимый набор этих трёх слоёв. Именно поэтому, чтобы создать что-то новое на основе биткойна, было необходимо форкнуть его целиком, а уже потом писать что-то своё. Это была целая каша из разных  языков и кусков кода, где из простого и понятного (p2p-сеть, PoW, кошелек или клиент полной ноды) «умельцами» собирались франкенштейны, которые легко было взломать. А некоторые типа Verge до сих пор как бабулины семечки щёлкаются.

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