Кто такой валидатор в криптовалюте
Кто такие валидаторы?
Функционирование блокчейна невозможно без валидаторов.
Кто такие валидаторы?
У них есть несколько определений. Одно из – это кластер узлов сети, прошедший отбор в валидаторы на определенный временной промежуток. Есть и такое определение – операторы узлов.
Основная задача, которою выполняют валидаторы – проверка блоков, что добавляются в сеть на так называемую валидность. За счет этого обеспечивается функционирование блокчейна. За такую работу им выплачивают награды. Как правило, они должны заранее обеспечить для себя определенное число токенов, чтобы потом принять участие в голосовании за блоки, что добавляются.
Зачастую валидаторов, что станут заниматься обработкой блоков выбирают скажем так случайным образом. Однако, на их подбор оказывает влияние ряд моментов. В частности, это возраст ставки, то, в каком состоянии находится сам узел, количество токенов, которые были заблокированы.
Чем большее количество монет смогла застейкать нода, тем больше вероятность того, что она будет валидатором нового блока. Но это произойдет, если сам узел функционирует без сбоев. Иначе валидатор может оказаться под штрафными санкциями, которые окажутся крайне затратными для него. Также возможен и факап. Такие меры предпринимаются для того, чтобы защитить сеть и сделать атаки бессмысленными с практической точки зрения.
В разных блокчейнах есть свои валидаторы. Рассмотрим их в сети TON, чтобы понять, как они работают. Валидаторов сети Ethereum 2,0 не станем рассматривать, поскольку их сеть постоянно меняется, в ней много недоработок и программных ошибок.
Сеть Free TON
В этой сети валидаторы представляют также узлы сети (ноды). Каждый из валидаторов принимает участие в валидации новых блоков блокчейна. Если сказать про саму валидацию, то она представляет собой подписание блоков рядом узлов, чтобы состоялся консенсус о правильности блоков. Консенсус крайне важен, иначе сбои в работе узлов неизбежны, как и проведение атак на сеть со стороны киберпреступников.
Как было указано ранее, за то, что ноды работают, они получают определенное вознаграждение. В сети TON им выплачивают 1 TON за каждый из новых блоков.
Что касается числа валидаторов, то оно может быть самым разным. К примеру в этой сети их число составляет несколько сотен, а то и больше. Из всего этого числа валидацией блоков в мастерчейне занимаются не более сотни, оставшиеся занимаются валидацией во второстепенных цепях блоков.
Прибыль
У каждого из валидаторов есть доход, он формируется после того, как был окончен очередной цикл валидации. Прибыль включает в себя несколько компонентов. Это эмиссия новых токенов, она фиксирована, и оплата за подтвержденные блоки.
Каждый из валидаторов имеет право на награду пропорционально стейку. К примеру, если он решил поставить стейк равный одному проценту от количества всех существующих стейков, то и его награда будет равна одному проценту от общего вознаграждения.
Стоит отметить, что смарт-контракты в сети дают гарантию на то, что кто-то из валидаторов не сможет взять средства пользователей. То есть недобросовестные пользователи в сети работать не смогут.
Как выбирают
Согласно действующей архитектуре сети TON выборы проводят через каждые восемнадцать часов. Периоды включают несколько фаз. В первой фазе открывают выборы, смарт-контракт выборщика занимается приемом новых стейков. Во второй фазе выборы завершаются, смарт-контракт проводит отбор группы валидаторов на следующий цикл.
В третьей фазе группа начинает действовать. Прошлая группа, имеющая стейки, не задействует их, поскольку они заморожены.
Как смарт-контракт выборщика определяет группу валидаторов?
Он определяет их по ряду правил. Их архитектуры сети выбирают несколько параметров, от минимального и максимального количества валидаторов, минимального и максимального размера стейка и до максимальной разницы между первыми и последним стейками.
Далее набирают группу валидаторов по порядку, первым идет тот валидатор, у которого самый большой стейк. Потом для следующего стейка рассчитывают сумму стейков, чтобы соблюсти правила. После этого, когда определен максимальный размер суммы стейков, значит состояние прошло выборы. Валидация проводится, пока не закончится цикл. Потом все повторяется по вышеуказанному алгоритму.
Заключение
Таким образом можно еще раз напомнить о том, что валидаторы играют огромную роль в функционировании сети. От их работы зависит то, насколько бесперебойно она станет работать и не подвергнется атаке. За свою деятельность они получают награды. В этой сети TON валидация осуществляется циклами. В других блокчейнах количество валидаторов может быть разным, как и награды и периоды циклов валидации.
Подписывайтесь на Фридман клаб в соцсетях и наш Телеграм канал, чтобы всегда быть в курсе самых последних и горячих новостей @like_freedman
Крипто-валидаторы и как они работают
Крипто-валидаторы — это «платёжные системы» в децентрализованных сетях, и как таковые они производят вознаграждения в блокчейне.
Звучит просто, не так ли? Однако роль валидаторов в криптовалюте намного сложнее и глобальнее, чем это определение. Кроме того, роль валидатора может измениться в зависимости от механизма консенсуса, который использует каждый блокчейн.
Сегодня мы подготовили для вас целое руководство по валидаторам в блокчейне. Мы более подробно расскажем кто такие крипто-валидаторы и как и стать.
Кто такие крипто-валидаторы?
Крипто-валидатор — это участник блокчейна, ответственный за проверку транзакций. Когда он определяет точность транзакции, валидатор добавляет её в распределенную книгу учёта. Таким образом, легитимность блокчейна и, следовательно, его прозрачное функционирование остаются неизменными.
Самый простой способ понять, какую роль играют валидаторы, — вернуться к определению блокчейна.
Блокчейн — это система, функционирующая на основе распределенного реестра информации. Сеть узлов (компьютеров) поддерживает этот регистр, сохраняя и одновременно запуская одну и ту же его версию.
Блокчейн подобен книге (реестру) с бесчисленным количеством авторов (узлов). Каждый из этих авторов может внести свой вклад в эту книгу. Однако, прежде чем они это сделают, они должны получить одобрение других авторов. Именно тогда другие узлы или их делегаты анализируют данные автора. И, если он точен, они проверяют его и добавляют в реестр в новом блоке.
Количество валидаторов различается в разных цепочках блоков. Кроме того, процесс проверки может варьироваться в зависимости от механизма консенсуса каждого блокчейна. В конце концов, цепочка может содержать только точные данные, которые прошли проверку всего сообщества.
В большинстве блокчейнов пользователи получают вознаграждение за выполнение роли валидатора. Таким образом, система стимулирует своих участников продолжать процесс расширения бухгалтерской книги.
Типы крипто-валидаторов
Может показаться, что работа валидатора блокчейна не так уж и сложна. Вы получаете некоторые данные, проверяете их точность и подтверждаете их или нет. Однако проверку новых блоков в распределенной бухгалтерской книге легче сказать, чем сделать.
Валидаторы Proof-of-Work
Блокчейны Proof-of-Work (PoW) требуют, чтобы валидаторы показали, что они «работали» над проверкой данных, прежде чем добавлять их в цепочку. Вот почему в этих бухгалтерских книгах валидаторы получают более распространённый термин «майнеры».
Биткоин является первым блокчейном PoW и самым популярным блокчейном, использующим этот механизм консенсуса. Майнеры используют мощные компьютеры, для вычисления данных, поступающих в виде математических головоломок. Первый майнер, успешно проверивший новый блок данных, получает вознаграждение за блок. По состоянию на сентябрь 2021 года эта награда составляет 6,25 BTC.
Валидаторы Proof-of-Stake
В блокчейнах с Proof-of-Stake (PoS) пользователи должны поставить определенную сумму собственного токена книги, чтобы стать валидаторами. Кроме того, система может выбирать валидаторов случайным образом и вознаграждать только тех, кто «правильно» участвует в сети.
Некоторые из самых популярных блокчейнов PoS включают Ethereum, Avalanche и Solana. Эти бухгалтерские книги используют Proof-of-Stake, чтобы стимулировать пользователей к блокировке стоимости в сети. Таким образом, они обеспечивают его быстрый прогресс и развитие.
Задача византийских генералов
Блокчейны, которые не используют PoW или PoS в качестве механизмов консенсуса тоже используют валидаторы. Например, Stellar — это блокчейн, работающий на основе византийской цепочке генералов.
Когда децентрализованная бухгалтерская книга использует этот механизм, некоторые узлы могут предоставлять неточные данные для проверки. Эти узлы могут быть повреждены и намеренно неправильно использовать сеть. Однако до тех пор, пока большинство узлов валидатора являются честными, процесс проверки гарантирует точность. В результате он добавляет больше данных в цепочку, несмотря на вредоносные действия некоторых его узлов.
В Stellar процесс проверки с самого начала предсказывает, что некоторые сообщения могут быть повреждены. Однако данные могут быть проверены до тех пор, пока сомнительные сообщения превышают одну треть от общего числа. В противном случае транзакция станет недействительной.
Разница между валидаторами и майнерами
Получение вознаграждений за проверку данных в блокчейне может значительно увеличить ваши криптоактивы. Но какой блокчейн лучше всего платит валидаторам? И в чём разница между крипто-валидаторами и майнерами?
Майнеры являются участниками блокчейна на основе PoW, которые инвестируют в высокопроизводительные компьютеры, чтобы быстро и эффективно решать математические задачи. Эти машины часто дороги и сильно влияют на окружающую среду. Кроме того, в долгосрочной перспективе интеллектуальный анализ данных может принести меньшую выгоду, чем связанные с этим затраты.
У майнереров и валидаторов очень схожие роли. Они должны убедиться, что сеть, которую они поддерживают, расширяется за счёт точных данных.
Валидаторы снижают затраты на поддержание эффективного функционирования блокчейна. Кроме того, это может изменить затраты на электроэнергию и правила. Данный способ заработка более доступен и устойчив к рискам, с которыми сталкивается любой майнер.
Как стать валидатором?
Чтобы стать валидатором блокчейнов с Proof-of-Stake, вы должны застекать свои активы.
Рассмотрим четыре наиболее популярных PoS-сети, которые используют данную систему.
Валидаторы Ethereum (ETH)
Ethereum постепенно перешходит к механизму консенсуса с подтверждением ставки (PoS). Как только миграция закончится, участники Ethereum превратятся в валидаторов, залочив не менее чем на 32 ETH в стекинге. На момент написания этой статьи эта сумма составляла примерно 107 200 долларов.
Система будет случайным образом выбирать валидаторы для создания новых блоков. Они будут отвечать за проверку и подтверждение блоков. Стекинг должен стимулировать валидатора предоставлять точные данные и хорошее поведение. В противном случае он может потерять часть своих крипто-активов.
Как стать валидатором Ethereum
На данный момент для того, чтобы стать валидатором в Ethereum вам потребуется:
С помощью этих простых действий вы можете обеспечить надежную работу цепочки. Кроме того, вам следует воздерживаться от вредоносных действий, перехода в автономный режим или отказа от проверки. В противном случае вы потеряете значительную часть своих активов. В обмен на честную проверку вы получите 10% годовых от стекинга.
Валидаторы Solana (SOL)
Solana — это блокчейн с высокой пропускной способностью и один из самых успешных криптопроектов последнего времени. С момента своего запуска в начале 2020 года он быстро превратился в платформу для более чем 400 проектов, охватывающих DeFi, NFT, Web3 и другие направления.
Solana использует Делегированное подтверждение участия (DPoS) для механизма консенсуса. Это означает, что любой, у кого есть собственный токен платформы, SOL, может стать валидатором. Однако вы можете делегировать свой SOL валидатору, который выполняет всю работу за вас. Вам не нужна минимальная сумма для стекинга. У вас может быть только 1 SOL, и вы будете активной частью Solana в качестве делегатора.
Валидатор получает стеки от делегаторов, что увеличивает его шансы на большее количество слотов и, следовательно, на большее количество наград.
Как делегатор, вы можете отозвать свой стек в любое время. Вы можете сделать это независимо от производительности валидатора и без объяснения причин.
Как стать валидатором Solana
В Solana вы можете легко выйти за рамки роли Делегатора и стать Валидатором. Однако вам придётся соответствовать большему количеству требований.
Одним из предварительных условий является изучение того, как работает Solana. Этот блокчейн работает в эпохи, которые могут длиться от 2 до 3 дней. Кроме того, каждая эпоха состоит из 420 000 блоков и целевого времени блока 400 мс.
Как валидатор, вы должны голосовать за каждый отдельный блок. Чтобы заработать награды, вы не можете пропустить ни одну из них. Более того, вознаграждения представляют собой фактор процентного успеха в голосовании и доли, которую вы имеете по сравнению с остальной частью сети.
Например, если вы владеете 2% от общей ставки сети и голосуете за каждый блок, вы получаете 2% от вознаграждения. И, чтобы достичь этой производительности, вам понадобится:
По состоянию на сентябрь 2021 года Solana набирает обороты и привлекает инвесторов с поразительной скоростью. В результате требования к проверке на этом блокчейне должны увеличиться как по мощности, так и по затратам.
Валидаторы Polkadot (DOT)
Polkadot — это уникальный тип блокчейна, который соединяет несколько сегментированных цепочек в одну гетерогенную архитектуру. Кроме того, это позволяет внешним сетям объединяться в качестве настраиваемых «парашютов» первого уровня для доступной связи. Проще говоря, это взаимосвязанный интернет блокчейнов.
Polkadot считает, что как алгоритмы подтверждения работы, так и алгоритмы консенсуса с подтверждением ставки являются экологически неблагоприятными. Таким образом, сеть использует экологически совместимый алгоритм номинированного подтверждения доли участия (NPoS).
NPoS работает благодаря двум ключевым ролям — валидаторам и номинаторам, которые обеспечивают максимальную безопасность. Валидаторы берут на себя ответственность за создание новых блоков, проверку блоков парачейна и обеспечение завершенности. С другой стороны, номинанты могут поддержать выбранных валидаторов стекингом в виде токенов DOT.
Как стать валидатором Polkadot
Чтобы стать валидатором Polkadot, вам необходимо запустить узел, поддерживающий сеть 24/7 и 365 дней в году. Это означает, что вам нужно будет взять на себя большую ответственность. Кроме того, вам понадобится:
Помимо необходимости запуска узла, вам придется проверять данные из блоков парачейна. Кроме того, вам нужно будет принять участие в процессе консенсуса, который утверждает блоки от других валидаторов. Взамен вы получите вознаграждение за блокировку и комиссию за транзакции.
Если вы не будете соблюдать согласованные алгоритмы Polkadot, вы можете столкнуться с тяжелыми последствиями. Наказания варьируются от удаления части вашего стекинга DOT до полной конфискации ваших DOT и постоянного запрета. Этот процесс в этой сети называется «сокращение».
Вы всегда можете стать номинантом на Polkadot, если не хотите брать на себя роль валидатора. Как номинатор, вы можете выбрать, какой валидатор поддерживать, в зависимости от их поведения и производительности. Вы стекаете произвольное количество DOT и получаете долю вознаграждений валидатора.
Валидаторы Avalanche (AVAX)
Avalanche — одна из самых быстрых платформ смарт-контрактов в блокчейн-индустрии. Как и другие блокчейны, он использует разновидность механизма консенсуса с подтверждением ставки для обеспечения своей безопасности и точности своих данных.
Как стать валидатором Avalanche
Вы можете стать валидатором в Avalanche имея обычный домашний ПК. Точнее, на вашем компьютере должен быть процессор с частотой не менее 2 ГГц, 4 ГБ оперативной памяти и 10 ГБ свободного места на диске. Кроме того, вам придется постоянно держать в стеке минимум 2000 долларов в AVAX.
Avalanche не практикует «рубку». Таким образом, если ваш компьютер отключится, вы перестанете получать вознаграждения только до тех пор, пока не вернетесь в Интернет. Вознаграждение валидатора Avalanche варьируется от 7% до 12% годовых.
Заключение
Технология блокчейн принесла нам различные способы пассивного и активного дохода. Работа валидатора сочетает в себе эти два способа заработка. Во-первых, вам необходимо иметь относительно мощный компьютер (узел) для поддержки безопасности и функционирования сети. Во-вторых, пока вы отвечаете всем требованиям, ваши вознаграждения могут существенно вырасти в фоновом режиме.
Валидатор в криптовалюте
Валидаторы – это основа всей системы блокчейна. Именно они позволяют передавать информацию между блоками и обеспечивают безопасность сети, составляя собственные метрики, которые позже передаются в головные офисы. Валидатор стоит между всеми пользователями, информацией и самой цепочкой блоков.
Содержание
Валидаторы – это узлы в системе блокчейна, которые берут на себя задачи по поддержанию работоспособности сети. Они распределяют вознаграждения за участие в стейкинге, предоставляют статистику сети, контролируют целостность блоков и т.д. Именно валидаторы – основные действующие лица в любой конкретной сети блокчейна. Но для поддержания работоспособности и выполнения поставленных задач требуются монеты, которые предоставляет сообщество.
При стейкинге каждый вкладчик выбирает определенного валидатора, которому будут передано вознаграждение. Без передачи активов нельзя стать участником пула и получать пассивный доход. Система взимает определенную сумму в качестве платы за предоставленные услуги. Комиссия небольшая, но из-за большого количества участников и объемов вложенных средств, общий доход относительно крупный.
Каждый имеет возможность стать валидатором, но для этого ему потребуется большое количество монет, и чем больше, тем лучше. Но возможно это только в случае, когда узел функционирует без сбоев. Неполадки могут привести к штрафным санкциям. Система наказания необходима для защиты сети от сторонних атак.
Система пулов позволяет любому пользователю участвовать в таком типе добычи, даже если его количества активов недостаточно для запуска собственного валидатора. При этом не требуется брать на себя обязанности по работе, ведь оператор пула осуществляет все действия самостоятельно.
Валидатор – это комплекс программного обеспечения. Человек или команда лишь запускают его, настраивают и контролируют. Сам комплекс ПО может существовать уже без участия “создателя”. Неграмотно настроенный нод уязвим к DDOS-атакам и иным вторжениям со стороны хакеров. Поэтому при выборе валидатора необходимо обращать внимание на его создателя, т.к. при подключении к слабозащищенному узлу вкладчик может потерять все свои активы.
Каждый валидатор отличается друг от друга размером ставки, техническим состоянием узла, количеством задействованных токенов. Несмотря на то, что большинство инвесторов в пулы не обращают внимание на них, они играют важнейшую роль и напрямую влияют на получаемый доход от вложений.
Каждая сеть имеет собственный набор валидаторов. Они отличаются друг от друга в нюансах работы. Особенно интересно наблюдать за становлением Ethereum 2.0, где валидаторы сети еще только развиваются и встречаются с большим количеством недоработок и программных ошибок. Из-за постоянных сбоев, ноды не всегда могут стать валидаторами, хотя имеют достаточное количество активов для поддержания качественной работы сети.
Как стать валидатором
Процедура может отличаться в зависимости от сети, в которой будет работать система. Для открытия пула рекомендуется изначально ознакомиться с инструкцией, которую можно найти на сайте разработчика платформы, например, Ethereum ( launchpad.ethereum.org ). В ней содержится не только последовательность действий, но и критерии, без соответствия которым нельзя стать валидатором. В случае с ETH 2.0 потребуется иметь компьютер минимум с процессором Intel Core i5-760 или эквивалентом от AMD, 4 ГБ ОЗУ, SSD, скорость интернета от 10 Mbps и бесперебойный источник питания, предотвращающий прерывание соединения с сервером сети. Чем выше характеристики машины, тем выше производительность и скорость работы валидатора в сети.
Общие шаги становления валидатором в любой сети.
Также каждый разработчик пула может обратиться к сервисам, которые предоставляют услугу Validador-as-a-service (валидатор как услуга). Тогда компания-подрядчик самостоятельно выполнит всю работу по настройке и управлению узлом. Этим способом пользуются владельцы крупных активов и инвесторы. Для частных лиц с небольшими средствами такой вариант не подходит, т.к. затраты будут непропорциональны полученному доходу.
Как они находят ошибки сети
Для поиска ошибок используется вся возможная информация с сервиса, включая визуализацию множества метрик с серверов. Благодаря сопоставлению получаемой информации, команды могут понять, что именно происходит в данный момент. Быстрый поиск и исправление ошибок – это выгодно для всех участников проекта.
После нахождения любой ошибки, блокчейн начинает собирать воедино всю информацию и логи от валидаторов на собственной машине от разработчиков цепи. Все переданные данные являются достоверными, т.к. любое сокрытие информации может привести к краху всей системы.
Как защищается блокчейн от атак
Каждая сеть имеет свой механизм защиты, в котором обязательно участвуют валидаторы. Именно от них разработчики сети получают необходимую информацию о состоянии отдельных блоков и различные метрики, позволяющие сформировать полную картину и найти проблему или противодействовать атаке.
В поддержании сети принимают участие сразу несколько валидаторов, которые соперничают друг с другом. Но гонка за прибылью продолжается до того момента, пока не появляется какая-то проблема. Тогда разные проекты начинают сотрудничать друг с другом.
Какая выгода брать на себя эти функции и сколько на этом можно заработать
Каждый из валидаторов имеет доход, который формируется в зависимости от того, когда был окончен цикл валидации. Прибыль состоит из эмиссии новых токенов и оплаты за подтвержденные блоки. Смарт-контракты построены таким образом, что они не дают возможности валидаторам претендовать на награду пользователей, который сформировали пул. Это позволяет избавить систему от недобросовестных участников.
Награда валидатору выплачивается пропорционально стейку. Если он предоставил стейк в 5% от общего размера пула, то он получит 5% от общего размера вознаграждения. Лучше всего валидаторство подходит для предпринимателей и компаний, которые имеют достаточно ресурсов и находчивости для создания новых изощренных алгоритмов награждения и наказания пользователей. Новаторские идеи всегда могут привлечь куда большее количество заинтересованных лиц, нежели стандартное поведение.
Валидаторы в Ethereum 2.0
Валидаторы в сети Ethereum 2.0 должны соответствовать хотя бы минимальным требованиям к железу. В противном случае система не будет выдавать необходимую мощность для поддержания сети в рабочем состоянии и ее защиты. Также потребуется иметь хотя бы 32 ETH, чтобы запустить узел.
На данный момент в сети Ethereum 2.0 насчитывается более 181 тыс. валидаторов. Сама сеть уже прошла аудит, который подтвердил полную безопасность.
Шардинг в Блокчейне
Всем привет, я один из разработчиков Near Protocol, который, среди прочего, реализует шардинг, и в этой статье хочу подробно рассказать что вообще такое шардинг в блокчейне, как он работает, и коснуться ряда проблем, которые возникают при попытке его построить.
Хорошо известно, что Ethereum, самая популярная dApps платформа, обрабатывает меньше чем 20 транзакций в секунду. Из-за этого ограничения цена транзакций и время на их подтверждение очень высоки: несмотря на то, что блок в Ethereum публикуется раз в 10-12 секунд, согласно ETH Gas Station время между отправкой транзакции и тем как она действительно попадает в блок в среднем 1.2 минуты. Низкая пропускная способность, высокие цены и долгое подтверждение транзакций не позволяет запускать на Ethereum какие-либо высокопроизводительные сервисы.
Основная причина того, что Ethereum не может обрабатывать больше 20 транзакций в секунду заключается в том, что каждая нода в Ethereum должна проверить каждую транзакцию. За пять лет с выхода Ethereum было предложено много идей как решить эту проблему. Эти решения можно грубо разбить на две группы: те, которые предлагают делегировать выполнение транзакций небольшой группе нод с очень хорошим железом, и те, которые предлагают каждой ноде обрабатывать только подмножество всех транзакций. Пример первого подхода — это Thunder, в котором блоки создаются только одной нодой, что позволяет, по утверждениям разработчиков, получать 1200 транзакций в секунду, что в 100 раз больше чем у Ethereum. Другие примеры из первой категории — это Algorand, SpaceMesh, Solana. Все эти протоколы улучшают разные аспекты протокола и позволяют выполнять больше транзакций чем в Ethereum, но все ограничены скоростью одной (пусть и очень мощной) машины.
Второй подход, в котором каждая нода обрабатывает только подмножество транзакций, называется Шардинг. Это то как Ethereum Foundation планирует увеличить пропускную способность Ethereum.
В этом посте я расскажу как работает Шардинг в Blockchain на примере нескольких протоколов, которые сейчас находятся в разработке.
Так как терминология не стандартизована, я буду использовать следующие русские термины в статье:
Блокчейн — это либо технология в общем, либо структура данных, содержащая все блоки, включая форки.
Цепь — это одна конкретная цепь в блокчейне, то есть все блоки, достижимые начиная с какого-то блока по ссылкам на предыдущий блок.
Каноническая цепь — это одна цепь в блокчейне, которую участник, наблюдающий блокчейн, считает текущей цепью. Например в Proof of Work блокчейне это будет цепь с самой большой сложностью.
Сеть — это множество участников, строящих и использующих блокчейн.
Нода — это сервер, поддерживающий или использующий сеть.
Самый простой Шардинг
В самой простой реализации вместо того, чтобы поддерживать один блокчейн, мы будем поддерживать несколько, и назовем каждый такой блокчейн “шард”. Каждый шард поддерживается независимым множеством нод, которые проверяют транзакции и создают блоки. Здесь и далее я буду называть такие ноды валидаторами.
Каждый шард отвечает за какое-то подмножество контрактов и аккаунтов. Предположим пока что что транзакции всегда оперируют только с контрактами и аккаунтами внутри одного шарда. Такого упрощенного дизайна достаточно, чтобы показать некоторые интересные проблемы и особенности шардинга.
Назначение валидаторов и центральный блокчейн
Первая проблема с тем, что у каждого шарда свои валидаторы, заключается в том, что если у нас есть 10 шадров, то каждый шард теперь в 10 раз менее надежен, чем был бы один блокчейн. Так, если блокчейн с X валидаторами решит сделать хард-форк в шардированную систему с 10 шардами, и разобьет X валидаторов между 10 шардами, в каждом шарде теперь только X/10 валидаторов, и получение контроля над шардом требует получения контроля над 5.1% (51% / 10) валидаторов.
Что приводит к первому интересному вопросу: а кто назначает валидаторов на шарды? Наличие контроля над 5.1% валидаторов является проблемой только если все 5.1% валидаторов в одном шарде. Если валидаторы не могут сами выбрать какому шарду они назначены, получение контроля над 5.1% валидаторов до того как они назначены на шарды не позволит получить контроль ни над одним шардом.
Почти все существующие предложенные дизайны шардинга используют некоторый источник случайных чисел чтобы назначать валидаторов на шарды. Получение случайных чисел в распределенной системе в которой участники друг другу не доверяют — это само по себе не до конца решенная проблема сегодня, которую мы в этой статье не затронем, и просто допустим, что такой источник случайных чисел у нас есть.
И получение случайных чисел, и назначение валидаторов — это вычисления в масштабах всей системы, не специфичные ни какому конкретному шарду. Для таких вычислений в современных дизайнах шардированных блокчейнов существует дополнительный выделенный блокчейн, который существует исключительно чтобы выполнять вычисления в масштабах системы. Помимо случайных чисел и назначения валидаторов такими вычислениями могут быть получения хешей последних блоков с шардов и их сохранение; обработка залогов в Proof-of-Stake системах, и изучение доказательств неправильного поведения с сопутствующим отбиранием таких залогов; перебалансировка шардов, если такая функция предусмотрена. Такой блокчейн называется Beacon chain в Ethereum 2.0 и Near Protocol, Relay chain в PolkaDot, и Cosmos Hub в Cosmos.
В этом посте мы будем называть такой блокчейн “центральным блокчейном”. Существования центрального блокчейна приводит нас к следующей интересной теме — квадратичному шардированию.
Квадратичное шардирование
Шардинг часто презентуют как решение, которое бесконечно масштабируется с увеличением количества нод. Вероятно, можно действительно создать систему с таким свойством, но системы с центральным блокчейном имеют ограничение сверху на количество шард, и как следствие не имеют бесконечной масштабируемости. Легко понять почему: центральный блокчейн выполняет некоторые вычисления, такие как назначение валидаторов и сохранение последних состояний шард, сложность которых пропорциональна количеству шард. Так как сам центральный блокчейн не шардирован, и его пропускная способность ограничена пропускной способностью каждой ноды, количество шард, которые он может поддерживать, ограничено.
Давайте посмотрим как изменится пропускная способность всей системы, если мощность нод, его поддерживающих, вырастет в k раз. Каждый шард сможет обрабатывать в k раз больше транзакций, а центральный блокчейн сможет поддерживать в k раз больше шард. Таким образом пропускная способность всей системы вырастет в k^2 раз. Отсюда название “квадратичное шардирование” (quadratic sharding).
Сложно предсказать сколько шард сегодня сможет поддерживать центральный блокчейн, но вероятнее всего в ближайшее будущее мы не приблизимся к лимиту транзакций для шардированного блокчейна с квадратичным шардированием. Скорее всего мы раньше упремся в лимит того, сколько надо нод, чтобы поддерживать такое количество шард.
Шардирование состояния
Состояние — это вся информация обо всех аккаунтах и контрактах. До сих пор мы говорили о шардинге в общем, не уточняя что конкретно шардируется. Ноды в блокчейне выполняют следующие три задачи: 1) выполняют транзакции 2) пересылают транзакции и блоки другим нодам и 3) хранят состояние и историю блокчейна. Каждая из этих трех задач сопряжена с некоторой постоянно растущей нагрузкой на ноды:
Из списка выше может показаться, что дисковое пространство — это самая большая проблема, так как только дисковое пространство растет даже если количество транзакций не растет, но на практике это не так. Сегодня состояние Ethereum занимает около 100GB, что легко можно сохранить на любой современной машине, но количество транзакций, которые Ethereum может обрабатывать ограничено несколькими десятками в секунду, упираясь в вычислительную мощность и сеть.
Zilliqa — это самый известный проект, который шардирует вычисления и сеть но не состояние. Шардирование вычислений проще чем шардирование состояния, потому что все ноды имеют все состояние, и по прежнему могут легко выполнять контракты, которые вызывают другие контракты, или затрагиваю аккаунты на разных шардах. В этих аспектах дизайн Zilliqa’и слишком упрощен, критику дизайна на английском можно прочитать здесь.
В то время как шардирование состояния без шардирования вычислений было предложено, я не знаю ни одного проекта, который действительно это делает, поэтому мы будем полагать что шардирование состояния подразумевает шардирование вычислений.
На практике, тот факт, что состояние шардировано, в некоторой мере изолирует шарды, позволяя им быть независимыми блокчейнами, как мы их определили выше. Валидаторы в шардах сохраняют только состояние, специфичное их шарду, и выполняют и пересылают только транзакции, которые затрагивают это состояние. Это позволяет уменьшить нагрузку на процессор, диск и сеть линейно с количеством шардов, но приносит новые проблемы, такие как между-шардовые транзакции.
Между-шардовые транзакции
До сих пор мы рассматривали шарды как независимые блокчейны с точки зрения того как они выполняют транзакции. При таком дизайне, например, невозможно выполнить транзакцию которая переводит деньги между двумя аккаунтами на двух разных шардах, или вызвать контакт на одном шарде из контракта на другом. И тот и другой сценарий хотелось бы поддерживать.
Для простоты будем рассматривать только транзакции, которые переводят деньги, и будем полагать что у каждого участника есть аккаунт на ровно одном шарде. Если участник на некотором шарде хочет перевести деньги участнику на том же самом шарде, валидаторы этого шарда могут обработать эту транзакцию, и применить ее к состоянию. Но если, например, у Алисы аккаунт на шарде #1 и она хочет отправить деньги Бобу с аккаунтом на шарде #2, ни валидаторы шарда #1 (которые не смогут добавить деньги Бобу) ни валидаторы шарда #2 (которые не смогут забрать деньги Алисы) не могут выполнить транзакцию целиком и обновить состояние.
Есть две больших группы подходов к решению этой проблемы:
Синхронный: для любой транзакции, затрагивающей несколько шардов, блоки в шардах, содержащие обновление состояния для этой транзакции, производятся одновременно, и валидаторы в этих шардах работают вместе для создания таких блоков. Наиболее проработанный дизайн такого подхода, известный мне, это Merge Blocks, описанный (на английском) здесь.
Асинхронный: между-шардовая транзакция выполняется в шардах, которые она затрагивает, асинхронно: часть транзакции, которая добавляет деньги Бобу выполняется в шарде #2 когда валидаторы в шарде имеют какое-то доказательство того что часть транзакции, вычитающая деньги у Алисы, была выполнена в шарде #1. Этот подход более популярен в разрабатываемых сегодня системах из-за того что он не требует дополнительной синхронизации между шардами для производства блоков. Такие системы сегодня предложены в Cosmos, Ethereum Serenity, Near Protocol, Kadena, и других. Проблема с таким подходом в том, что если блоки производятся независимо, есть вероятность, что один из блоков, содержащих обновление состояния для транзакции, окажется не в канонической цепи в своем шарде, и таким образом транзакция окажется только частично выполненной. Например рассмотрим рисунок ниже. На нем изображены два шарда, в которых произошли форки, и между-шардовая транзакция, обновление состояния для которой отражено в блоках A и X’ соответственно. Если цепи A-B и V’-X’-Y’-Z’ окажутся каноническими в своих шардах, то транзакция полностью финализирована. Если цепи A’-B’-C’-D’ и V-X окажутся каноническими, то транзакция полностью отменена, что приемлемо. Но если, например, A-B и V-X станут каноническими, то одна часть транзакции финализирована, а другая отменена, и транзакция оказывается выполненной частично.
Описанный выше сценарий — одна из больших проблем в шардинге, у которой все предложенные решения не оптимальны. Мы немного затронем ее ниже.
Плохое поведение
Теперь, когда мы разобрались с тем, как работают шардированные блокчейны, и изучили концепции центрального блокчейна, назначения валидаторов и между-шардовых транзакций, в завершении этой статьи рассмотрим еще одну интересную тему: что может сделать участник, пытающийся атаковать систему, если ему удалось получить контроль над достаточно большим количеством валидаторов в одном шарде.
Целенаправленные форки
Если у участника есть достаточный контроль над шардом, он может целенаправленно создавать форки. Для создания форков не важно какой консенсус используется в шардах, в частности не важно BFT он или нет, если достаточное количество валидаторов под контролем атакующего, он может создать форк. Например, цель форка может быть откатить транзакцию, которая платила за что-то снаружи блокчейна.
Утверждается, что получить контроль над 50% шарда проще, чем 50% всей сети (например потому что участник может попытаться взломать или подкупить валидаторов после того как они были назначены на шард). По определению, между-шардовые транзакции изменяют состояние в нескольких шардах. Такие изменения попадут в какие-то блоки в блокчейнах соответствующих шардов. Необходимо чтобы либо все такие блоки были финализированы (то есть принадлежали канонической цепи в соответствующих шардах), или все были не финализированы (то есть не принадлежали каноническим цепям в своих шардах). Поскольку мы предполагаем, что какие-то участники с плохими намерениями в принципе могут получить контроль над шардом, мы не можем полагать, что форки не произойдут, даже если был достигнут византийский консенсус, или большое количество блоков было построено поверх блока с транзакцией.
У этой проблемы есть много решений, самое простое из которых иногда сохранять хеш последнего блока в шарде в центральный блокчейн. Алгоритм выбора канонической цепи в шардах затем меняется так, чтобы никакая цель, не содержащая последний сохраненный на центральный блокчейн блок, не могла быть канонический. Затем, чтобы совсем избежать ситуаций когда транзакция выполнена частично из-за того что часть блоков, содержащих ее обновление состояния, оказались вне канонических цепей, можно изменить алгоритм выполнения между-шардовых транзакций так чтобы шард A не принимал доказательство выполнения транзакции в шарде B пока блок, содержащий обновление состояния для транзакции в шарде B, не был сохранен в центральном блокчейне.
Создание невалидных блоков
Если участник смог получить контроль над достаточно большим количеством валидаторов в шарде, он может попытаться создать совершенно невалидный блок. Например, пусть до блока состояние было такое что у Алисы было 10 токенов, а в Боба — 0, блок содержит только одну транзакцию, которая отправляет 10 токенов с аккаунта Алисы на аккаунт Боба, но в новом состоянии отражает 0 токенов у Алисы, и 1000 у Боба.
В классическом, не шардированном блокчейне, создание такого блока невозможно, потому что все участники, как те, кто создают блоки, так и те, кто просто использует блокчейн, проверяют все блоки, и сразу отбрасывают любой блок, который содержит такие ошибки. Даже если контролируемые атакующим валидаторы могут строить цепь быстрее, это не позволит им выдать более длинную цепь, содержащую невалидный блок, за каноническую, потому что все участники сети сразу отбросят невалидный блок, и любой блок, который был построен поверх. Честные валидаторы продолжат строить поверх последнего валидного блока, и все участники сети будут видеть их цепь как каноническую.
На рисунке выше пять валидаторов, три из которых под контролем атакующего. Они создали невалидный блок A’, а затем продолжили строить цепь поверх. Два частных валидатора сразу отбросили блок A’ как невалидный и продолжили строить поверх последнего валидного блока, известного им, тем самым создав форк. Поскольку в честной цепи меньше валидаторов чем в нечестной, их цепь короче. Однако, в классическом нешардированном блокчейне все участники системы валидируют все блоки, которые они видят. Таким образом любой участник, использующий блокчейн, увидит что A’ невалиден, отбросит его, а следовательно отбросит и B’, C’ и D’ как построенные поверх невалидного блока, и таким образом все участники будут видеть A-B как каноническую цепь.
В шардированном дизайне ни один участник не может валидировать все блоки во всех блокчейнах. Поэтому нужен какой-то механизм, который позволит валидаторам в конкретном шарде быть уверенными, что ни в какой момент времени в прошлом невалидный блок не был создан в другом шарде, из которого они получили между-шардовую транзакцию.
В отличие от целенаправленных форков, отправка хеша блоков в центральный блокчейн не помогает, потому что у центрального блокчейна тоже нет ресурсов валидировать все блоки во всех шардах. Центральный блокчейн может только валидировать что достаточное количество валидаторов, назначенных на шард, подписали блок (и как следствие заявили о правильности блока).
Я знаю два решения проблемы, ни одно из которых не кажется удовлетворительным:
Многие протоколы, которые сегодня разрабатываются, строятся с предположением, что если валидаторы достаточно часто перераспределяются, то при использовании византийского консенсуса описанных выше проблем не существует. Почему это не так — тема отдельной статьи.
Я много пишу про блокчейн и шардинг на английском. Мы также периодически берем интервью у авторов других протоколов, таких как Cosmos и Solana, копая глубоко в технические детали. Если вам интересна тема, можно следить за новыми публикациями и видео подписавшись на мой Twitter @AlexSkidanov.