Дружелюбный Casper — как добиться консенсуса и решить проблему доверия в распределенных вычислительных системах +13


Протокол Casper — как добиться консенсуса и решить проблему доверия



Так выглядит граф сети доверия в протоколе Casper, который отвечает за надежность данных и вычислений в блокчейн-проекте "RChain". Ядро его разработчиков живёт в Сиэтле, но в кооперативе RChain.coop есть девелоперы из Азии, Африки и Европы. Этот текст основан на посте одного из ведущих разработчиков проекта, Майкла Бёрча (Michael Birch), посвященный консенсус-протоколу Casper.


Аудитория хабра, наверняка, знакома с протоколами, которые обеспечивают консенсус и позволяют решать, каким данным можно доверять, а каким — нет. Более детальные объяснения проблемы и её решения можно найти в презентации одного из ключевых разработчиков на платформе Ethereum Влада Замфира и других лекциях.


Введение в протокол Casper


imageНа блокчейне RChain консенсус возникает благодаря протоколу Casper, который создан при помощи пи-алгебры вычислительных процессов. Такой подход к программированию дает
протоколу несколько полезных свойств.


  • Консенсус происходит не над блокчейном, как в Ethereum, а над направленным ацикличным графом блоков (blockDAQ). Это значит, что у блока может быть несколько родителей и несколько детей. Благодаря такой структуре легче объединять независимые ветки в одну, что снижает время, необходимое для достижения консенсуса.
  • В сети присутствует понятие политического капитала (ПК), которым обладают валидаторы, нарабатывая его за честное выполнение операций. Объем ПК, который валидатор решает поставить (to bet) на данный блок, зависит от его веса, определяемого по правилу выбора форка GHOST. Валидаторы могут не только создавать новые блоки и голосовать за них, но и подтверждать старые. Процедура подтверждения не зависит от правила GHOST и поэтому валидаторы имеют более веский голос относительно того, какую ветку графа блоков нужно продолжать дальше. Признание блоков является единственным способом заработать ПК. Это очень важное отличие от других протоколов. Это приводит к тому, что единственным способом создать в такой системе новые блоки является присоединение к той ветви, которая участвует в процессе консенсуса дольше всего.

    На гифке показана работа трех узлов-валидаторов сети RChain. Цветные круги обозначают блоки в blockDAQ, цвет зависит от того, какая нода их создала. Единственная оранжевая точка вначале — это генезис-блок. Диаметр круга зависит от количества транзакций в блоке и количества контрактов, которые исполняются в этом блоке. Самые маленькие круги обозначают блоки, в которых нет контрактов и которые состоят только из подтверждений. Стрелки указывают на блоков-родителей. Красные стрелки соответствуют граням основного НАГа, который определяется по правилу GHOST, а черные стрелки обозначают ветки, которые были или будут отброшены.

RChain ноду версии 0.3 можно скачать на github'е. Запуск первой версии блокчейна запланирован на конец этого года: см. таймлайн "Полет к Меркурию". Контракты, запускаемые в такой сети, написаны на языке Ро.




К сожалению, не доступен сервер mySQL