Хотя мы с Виталиком не согласовали все детали спецификации, у нас есть общее мнение по многим свойствам протокол доказательства кола, который, вероятно, будет реализован для релиза Serenity! Он называется Каспер «дружественный призрак», потому что это адаптация некоторых принципов протокола GHOST (Greedy Heaviest-Ob наблюдаемое поддерево) для согласования доказательств работы с доказательством кола. В этом посте (мой первый!) Рассказывается о свойствах, которые, скорее всего, соответствуют реализации Каспера в выпуске Serenity. Проводится официальная проверка и моделирование свойств Каспера, и они будут в конечном итоге опубликованы, а пока, пожалуйста, наслаждайтесь этой неформальной дискуссией на высоком уровне! :)
Безопасность депозита на основе безопасности и аутентификации
Каспер - это протокол экономического консенсуса, основанный на гарантийном депозите. Это означает, что узлы, так называемые «связанные валидаторы», должны размещать гарантийный депозит (действие, которое мы называем «связывание»), чтобы служить консенсусу путем создания блоков. Протокол прямого контроля этих депозитов безопасности является основным способом, которым Каспер влияет на стимулы валидаторов. В частности, если валидатор производит что-то, что Каспер считает «недействительным», его депозит утрачивается вместе с привилегией участия в процессе консенсуса. Использование гарантийных депозитов решает проблему «ничего не поставлено на карту»; плохое поведение не дорого. На карту поставлено что-то, и связанные валидаторы, которые плохо себя ведут в объективно проверяемой манере , потеряют это.
Примечательно, что подпись валидатора имеет только экономическое значение, если этот валидатор в настоящее время имеет депозит. Это означает, что клиенты могут полагаться только на подписи тех валидаторов, которые, как они знают, в настоящее время связаны. Поэтому, когда клиенты получают и аутентифицируют состояние консенсуса, их цепочка аутентификации заканчивается в списке связанных в настоящее время валидаторов. С другой стороны, в консенсусе о подтверждении работы цепочка аутентификации заканчивается в блоке генезиса - если вы знаете блок генезиса, вы можете аутентифицировать консенсус. Здесь, если вы знаете набор валидаторов, связанных в настоящий момент, вы можете аутентифицировать консенсус. Клиент, который не знает список в настоящее время связанных валидаторов, должен аутентифицировать этот список вне диапазона. Это ограничение на способ аутентификации консенсуса решает проблему «атаки на большие расстояния», требуя, чтобы все аутентифицировали консенсус против текущей информации.
Список валидаторов со временем меняется, так как валидаторы размещают депозиты, теряют свои вклады, отменяют привязку и получают несвязанные. Поэтому, если клиенты находятся в автономном режиме слишком долго, их список валидаторов больше не будет достаточно актуальным для аутентификации консенсуса. Однако в том случае, если они достаточно часто подключены к сети, чтобы наблюдать ротацию набора валидаторов, клиенты могут безопасно обновить свой список валидаторов. Даже в этом случае клиенты должны начинать с актуального списка проверенных в настоящее время валидаторов, и поэтому они должны аутентифицировать этот список как внеполосные, по крайней мере, один раз.
Это свойство «внеполосной аутентификации только обязательно один раз» - это то, что Виталик называет слабой субъективностью . В этом контексте информация называется «объективной», если она может быть проверена определенным протоколом способом, в то время как она «субъективна», если ее необходимо аутентифицировать с помощью внепротокольных средств. В слабо субъективных протоколах консенсуса правило разветвления выбирается с учетом состояния , и клиенты должны инициализировать (и, возможно, иногда обновлять) информацию, которую их правило разветвления использует для проверки подлинности. В нашем случае это влечет за собой идентификацию в настоящее время связанных валидаторов (или, более вероятно, криптографического хэша списка валидаторов).
Азартные игры на основе консенсуса
Каспер заставляет валидаторов ставить большую часть своих гарантийных депозитов на то, как закончится процесс консенсуса. Более того, процесс консенсуса «получается» в том виде, в котором они делают ставки: валидаторы создаются для того, чтобы делать ставки на свои депозиты, исходя из того, как они ожидают, что все остальные будут делать ставки на свои депозиты. Если они сделают правильную ставку, они вернут свой депозит с комиссией за транзакцию и, возможно, выдачей токена - если, с другой стороны, они не согласятся быстро, они получат меньше своего депозита. Поэтому через повторяющиеся раунды проверки ставок ставки сходятся.
Более того, если валидаторы слишком резко изменяют свои ставки, например, голосуя с высокой вероятностью за один блок, после голосования с очень высокой вероятностью за другой, то они подвергаются суровому наказанию. Это гарантирует, что валидаторы делают ставки с очень высокой вероятностью только тогда, когда они уверены, что другие валидаторы также будут делать ставки с высокой вероятностью. Благодаря этому механизму мы гарантируем, что их ставки никогда не сходятся к второму значению после сходства к первому, пока там достаточно участия валидатора.
Консенсус о подтверждении работы также является схемой ставок: майнеры делают ставку на то, что их блок станет частью самой тяжелой цепи; если они в конечном итоге окажутся правильными, они получат токены, тогда как, если они окажутся неверными, они будут нести расходы на электроэнергию без компенсации. Консенсус обеспечивается до тех пор, пока все майнеры ставят свою мощность хеширования на одну и ту же цепочку, что делает его блокчейном с наибольшей нагрузкой ( как прямой результат и как результат их скоординированных ставок ). Экономическая стоимость этих ставок на доказательство работы линейно складывается в число подтверждений (поколений дочерних блоков), в то время как в Каспере валидаторы могут координировать размещение экспоненциально растущих частей своих депозитов безопасности против блоков, тем самым достигая максимальной безопасности. быстро.
Консенсус по росту
Валидаторы делают ставки независимо на блоки любой высоты (то есть на номер блока), назначая им вероятность и публикуя ее как ставку. Посредством итеративных ставок валидаторы выбирают ровно один блок на каждой высоте, и этот процесс определяет порядок, в котором выполняются транзакции. Примечательно, что если валидатор когда-либо делает ставки с вероятностями, суммирующими более 100% за раз для данной высоты, или если они меньше 0%, или если они делают ставку с более чем 0% на недопустимый блок, то Casper теряет их залог.
Завершение транзакции
Когда каждый член контрольного числа связанных валидаторов (набор валидаторов, которые соответствуют пороговому значению, определенному протоколом, где-то между 67% и 90% связей) делает ставку на блок с очень высокой (скажем,> 99,9%) вероятностью, форк Правило выбора никогда не принимает форк, где этот блок не побеждает, и мы говорим, что блок является окончательным . Кроме того, когда клиент видит, что каждый блок ниже некоторой высоты H является конечным, тогда клиент никогда не выберет вилку, которая имеет другое состояние приложения на высоте H - 1, чем та, которая является результатом выполнения транзакций в этих завершенных блоках , В этом случае мы говорим, что это состояние завершено.
Таким образом, существует два соответствующих вида окончательности транзакции: окончательность того факта, что транзакция будет выполняться на определенной высоте (что зависит от конечности ее блока и, следовательно, приоритета над всеми будущими блоками на этой высоте ), и конечность согласованное состояние после выполнения этой транзакции (что требует окончательности ее блока и уникальных блоков на всех более низких высотах).
Сопротивление цензуре
Одним из самых больших рисков для консенсусных протоколов является формирование коалиций, которые стремятся максимизировать прибыль своих членов за счет нечленов. Например, если доходы валидаторов Casper будут состоять, в основном, из комиссионных за транзакции, коалиция большинства может подвергнуть цензуре оставшиеся узлы, чтобы получить увеличенную долю комиссионных за транзакции. Кроме того, злоумышленник может подкупить узлы, чтобы исключить транзакции, влияющие на конкретные адреса, и, если большинство узлов рациональны, они могут подвергать цензуре блоки, созданные узлами, которые включают эти транзакции.
Чтобы противостоять атакам, проводимым большинством коалиций, Каспер рассматривает процесс консенсуса и гарантирует, что каждый узел является наиболее прибыльным, если они находятся в коалиции, состоящей из 100% узлов консенсуса (по крайней мере, до тех пор, пока они мотивированы в первую очередь) в протоколе вознаграждений). Если p % валидаторов участвуют в консенсусной игре, то они получают f ( p ) ≤ p % от доходов, которые они получили бы, если бы участвовали 100% валидаторов, для некоторой увеличивающейся функции f .
В частности, Каспер наказывает валидаторы за то, что они не создают блоки в установленном протоколом порядке. Протокол знает об отклонениях от этого заказа и соответственно удерживает комиссию за транзакции и депозиты от валидаторов. Кроме того, доход, полученный от правильных ставок на блоки, является линейным (или суперлинейным) по количеству валидаторов, которые участвуют на этой высоте консенсусной игры.
Будет ли больше транзакций в секунду?
Скорее всего, да, хотя это связано с экономикой Каспера, а не с его блокчейн-архитектурой. Тем не менее, блок-цепочка Каспера позволяет сократить время блокирования, чем это возможно при консенсусе о проверке работы.
Валидаторы, скорее всего, будут получать только комиссионные за транзакции, поэтому у них есть прямой стимул увеличить лимит газа, если их сервер проверки может справиться с нагрузкой. Однако валидаторы также имеют меньшую отдачу от того, что другие, более медленные валидаторы не синхронизируются, поэтому они позволят увеличить предел газа только таким образом, который допустим для других валидаторов. Майнеры, инвестирующие в оборудование, в первую очередь приобретают больше майнинговых буровых установок, а валидаторы, инвестирующие в оборудование, в основном обновляют свои серверы, чтобы они могли обрабатывать больше транзакций в секунду. У майнеров также есть стимул реинвестировать в более мощную обработку транзакций, но этот стимул гораздо слабее, чем их стимул приобретать добывающие мощности.
Подтверждение ставки на основе залогового депозита очень удобно для клиентов по сравнению с доказательством работы. В частности, легкие клиенты не должны загружать заголовки блоков, чтобы иметь полную безопасность при аутентификации консенсуса или иметь полные экономические гарантии правильного выполнения транзакций. Это означает, что большая часть консенсусных накладных расходов влияет только на валидаторы, но не на легкие клиенты, и это позволяет снизить задержку, не позволяя легким клиентам потерять способность аутентифицировать консенсус.
Восстановление от netsplits
Casper может восстанавливаться после сетевых разделов, поскольку транзакции в незавершенных блоках могут быть отменены. После повторного подключения раздела Casper выполняет транзакции из блоков, которые получили ставки на раздел с более высоким участием валидатора. Таким образом, узлы с любой стороны раздела согласовывают состояние консенсуса после переподключения и до того, как валидаторы смогут заменить свои ставки. Ставки валидатора сходятся, чтобы завершить блоки в разделе, в которых было больше участия валидатора, с очень высокой вероятностью. Скорее всего, Каспер будет обрабатывать убыточные транзакции от потери блоков после выигрышных блоков, хотя еще предстоит решить, должны ли валидаторы включать эти транзакции в новые блоки или Каспер сам выполнит их в их первоначальном порядке.
Восстановление после массового сбоя
Каспер может восстановиться после сбоя всех узлов, кроме одного. Связанные валидаторы всегда могут самостоятельно создавать и делать ставки на блоки, хотя они всегда получают более высокую прибыль, координируя производство блоков с большим набором валидаторов. В любом случае, валидатор получает более высокую отдачу от создания блоков, чем от вообще не создания блоков. Кроме того, связанные валидаторы, которые, по-видимому, слишком долго находятся в автономном режиме, будут не склеены, и новым связующим впоследствии будет разрешено присоединиться к набору валидации. Таким образом, Каспер может потенциально восстановить именно те гарантии безопасности, которые были у него до массового сбоя.
Что такое Каспер в неэкономическом отношении?
Каспер - в конечном итоге согласованный протокол на основе блокчейна. Это благоприятствует доступности по согласованности. Это всегда доступно и непротиворечиво, когда это возможно. Время доставки сообщений устойчиво к непредсказуемым последствиям, поскольку узлы приходят к консенсусу путем реорганизации транзакций после того, как задержанные сообщения в конечном итоге будут получены. Он имеет конечную отказоустойчивость 50%, в том смысле, что форк, созданный> 50% правильных узлов, имеет более высокий балл, чем любой форк, созданный оставшимися потенциально неисправными валидаторами. Примечательно, однако, что клиенты не могут быть уверены, что любой данный форк, созданный с 51% участием, не будет возвращен, потому что они не могут знать, являются ли некоторые из этих узлов византийскими. Поэтому клиенты рассматривают блок как завершенный только в том случае, если в нем участвует большинство валидаторов (или облигационный пакет).
Каково это быть связанным валидатором?
В качестве связанного валидатора вам нужно будет безопасно подписывать блоки и делать ставки в процессе консенсуса. Если у вас очень большой депозит, вы, вероятно, будете иметь несколько серверов в настраиваемой многозадачной схеме для проверки, чтобы минимизировать вероятность неправильного поведения или взлома вашего сервера. Это потребует экспериментов и технических знаний.
Валидатор должен храниться в сети как можно более надежно и максимально, чтобы максимизировать его прибыльность (иначе это будет невыгодно). Будет очень желательно купить защиту от DDoS. Кроме того, ваша прибыльность будет зависеть от производительности и доступности других связанных валидаторов. Это означает, что существует риск того, что вы сами не сможете смягчить последствия. Вы можете потерять деньги, даже если другие узлы не будут работать хорошо, но вы потеряете больше денег, если вообще не будете участвовать, после соединения. Тем не менее, дополнительный риск также часто означает более высокую среднюю доходность - особенно если риск воспринимается, но дорогостоящее событие никогда не происходит.
Каково это - быть приложением или пользователем?
Приложения и их пользователи извлекают большую пользу из перехода от консенсуса о проверке работы к Casper. Более низкая задержка значительно улучшает опыт пользователя. В обычных условиях транзакции завершаются очень быстро. В случае сетевых разделов, с другой стороны, транзакции все еще выполняются, но тот факт, что они потенциально могут все еще быть возвращены, четко сообщается приложению и конечному пользователю. Поэтому разработчик приложения все еще должен иметь дело с возможностью разветвления, как они это делают при проверке работы, но сам консенсусный протокол предоставляет им четкую меру того, что потребуется для возврата любой конкретной транзакции.
Когда мы можем услышать больше?
Будьте на связи! Мы обязательно сообщим вам больше о спецификациях Каспера в течение следующих месяцев, так как мы придем к консенсусу по деталям протокола. Кроме того, вы можете ожидать моделирования, неформальной и формальной спецификации, формальной проверки и реализации Casper! Но, пожалуйста, будьте терпеливы: НИОКР могут занять непредсказуемое количество времени! :)