Серия PoCo #1 — О доверии и стимулировании агентов

Alexey
iExec Russian
Published in
10 min readNov 1, 2018

Кто я?

Меня зовут Hadrien Croubois, и я кандидат наук в ENS de Lyon. Мое исследование как кандидата наук фокусируется на разработке промежуточного программного обеспечения для управления общими облачными научно-вычислительными платформами; и в частности, как оптимизировать их для выполнения рабочих процессов. Однако мои интересы гораздо шире и включают в себя, Высокопроизводительные вычисления (HPC), физику и биологию, рендеринг изображений, машинное обучение и, конечно же, криптографию и блокчейн технологии.

С сентября 2017 года я также являюсь научным консультантом iExec. Я познакомился с Жиль Федак в ENS de Lyon, и это была прекрасная возможность для меня работать в команде, разрабатывающей инновационные решения.

Моя роль в качестве члена этой команды состоит в том, чтобы изучить существующую работу исследовательского сообщества и обеспечить понимание конструкции протокола доказательства вклада (proof-of-contribution) для iExec. Эта статья ни в коем случае не является решением этой сложной проблемы. Это скорее обзор нашего понимания и идей по этому вопросу.

Почему iExec нуждается в доказательстве вклада?

Платформа iExec предоставляет сеть, в которой поставщики приложений, рабочие и пользователи могут собираться и работать вместе. Доверие между этими агентами должно достигаться с помощью технологии блокчейн (консенсус Nakamoto) и криптографии.

Наша инфраструктура разделена на 3 агентов:

  • Поставщики приложений: Они предоставляют приложения, которые рассматриваются как службы. Эти приложения могут быть вызваны пользователями с определенными параметрами. Поставщики приложений получают оплату за каждое использование их приложения. Приложения полагаются на смарт-контракт iExec для управления связью между блокчейн Ethereum и внесетевой вычислительной платформы.
  • Пользователи: они являются клиентами инфраструктуры. Они платят, чтобы получить результаты, вычисленные приложением.
  • Работники: это вычислительные сущности, которые предоставляют вычислительные ресурсы. Эти ресурсы используются для внесетевого выполнения приложений. Работники получают оплату исходя из их вклада в вычисление заявок.

Цель протокола доказательства вклада (Proof-of-Contribution), заключается в достижении доверия между различными агентами, и в частности между пользователями и работниками, с тем чтобы пользователи могли полагаться на результаты, рассчитанные внешним субъектом, стимулы которого в лучшем случае основываются на доходах.

В частности, мы хотим добиться защиты от недобросовестных рабочих (которые могли бы обеспечить плохие результаты обманывая пользователей) и пользователей (которые могли бы спорить против правильной работы, выполняемой правильными работниками).

Первый подход: схема подтверждения вклада в результат

Проверка работы, выполняемой работником, может быть достигнута двумя способами:

  • Большинство голосов за (хэш) результат. Это помогает смягчить недобросовестных рабочих, но ценой накладными расходами вычислительной мощности. Для проверки результата, для конкретного выполнения требуется несколько рабочих, чтобы вычислить его, тем самым умножая стоимость выполнения на коэффициент m. В Desktop Grid или волонтерских вычислительных платформах (BOINC) этот коэффициент m может варьироваться от 3 до 20~50. С большим количеством репликации приходит больше уверенности в результате, но это также означает, что вознаграждение распределяется между большим количеством работников, уменьшая стимул для этих работников, чтобы внести свой вклад.
  • Судебная система для решения конфликтов между пользователями и работниками (TrueBit). Это решение осложняется как с точки зрения усилий пользователей, которые должны проверять каждый результат, так и с точки зрения платформы, которая должна реализовывать сложные арбитражные механизмы. Хотя этот метод не требует выполнения работы много раз, арбитражный механизм может потребовать значительного контроля исполнения, чтобы работник мог предоставить элементы доказательства, если их исполнение оспаривается.

Значительный вклад опубликовал Луис Сармента (Luis Sarmenta, 2002. Sabotage-tolerance mechanisms for volunteer computing systems. Future Generation Computer Systems, 18(4), 561–572). Предлагаемый подход основывается на голосовании большинства, но вместо того, чтобы полагаться на фиксированный коэффициент m, он динамически “решает “, сколько взносов необходимо для достижения консенсуса (в рамках конкретного уровня доверия). Таким образом, уровень репликации является динамическим и автоматически адаптируется планировщиком во время выполнения. Это помогает достичь быстрого консенсуса, когда это возможно и решить любые конфликты.

Рис. 3 Луис Сармента, описание того, как работники вносят свой вклад в различные рабочие места, голосуя за результат.

Этот подход опирается на репутацию работника, чтобы ограничить потенциальное влияние недобросовестных агентов и достичь консенсуса. Тем не менее этот подход предназначен для Desktop Grid инфраструктур, где деньги не входят в уравнение. Используя финансовый стимул для разных участников, мы можем изменить и улучшить этот подход, чтобы лучше соответствовать нашему контексту:

  • Каждое воздаяние работника за вычисление задачи может быть проиндексировано за их влияние на консенсус для этой задачи. Кроме того, наличие хорошей репутации помогает достичь быстрого консенсуса с меньшим количеством агентов (что означает больше долю для каждого агента). Это дает работникам финансовый стимул действовать хорошо и повышать репутацию.
  • Работники обязаны совершать депозит безопасности (долю), который изымается в случае недобросовестной работы. Это дает работнику дополнительный финансовый стимул для правильного поведения.

Главным недостатком статьи Луис Сармента является предположение, что недобросовестные работники не работают вместе и не координируют свои нападения. Хотя это предположение не выполняется в нашем контексте, мы считаем, что мы все еще можем добиться этого, выбрав работников случайным образом среди рабочего пула. Поэтому недобросовестные работники, контролируемые одним субъектом, должны статистически распределятся по многим разнообразным задачам и поэтому не должны быть в состоянии догнать голосование за конкретную задачу.

Адаптация механизма сертификации результатов Сармента к внесетевому выполнению

Хотя работа Сармента интересна, для работы в нашей ситуации требуется несколько модификаций. В этом разделе мы обсудим предварительные идеи о том, как мы считаем, что эта работа может быть адаптирована к потребностям iExec. Наша идея состоит в том, чтобы организовать обмен между пользователями и рабочими, как описано ниже.

В дополнение к пользователям и работникам, у нас есть дополнительный компонент: планировщик. Планировщики управляют рабочими пулами и действуют как посредники между блокчейн (слушая смарт-контракт iExec) и рабочими. Планировщик может, по сути, состоять из нескольких программ, которые дополняют друг друга, но мы будем рассматривать его как единый “виртуальный” объект.

Следует заметить, что наше обсуждение здесь не имеет отношения к самому алгоритму планирования. В планировщике алгоритм планирования обрабатывает логику, отвечающую за размещение заданий, и обрабатывает ошибки выполнения. Планировщик имеет право использовать любой алгоритм планирования, который он желает, пока он может иметь дело с шагами 3 и 5 следующего протокола.

  1. Рабочие регистрируются в планировщике.
  2. Пользователи предоставляют задачи планировщику, управляющему выбранным рабочим пулом.
  3. Рабочие спрашивают планировщика для выполнения работы. Планировщик дает им задания для выполнения. Примечание: если мы переходим к шагу 5, мы не должны просить работника вычислить задачу, в которую он уже внес свой вклад.
  4. Рабочий вычисляет результат (A) задачи. Чтобы этот результат был подтвержден, платформа должна достичь консенсуса по этому результату. Это достигается путем голосования Сармента. Чтобы способствовать достижению этого консенсуса, работник передает результат планировщику:
    a) Генерирует и запоминает (но не публикует) случайное значение r (частный одноразовый персональный идентификатор).
    b) Отправляет транзакцию (вклад) с :
    1. hash(A) → используется для голосования по ответу;
    2. hash(r) → используется в качестве публичного одноразового персонального идентификатора;
    3. hash(A+r) → используется в качестве доказательства знания A;
    4. Фонд обязательств (с минимальной стоимостью) → стимул только к совершению хороших результатов (см. позже). Более высокий фонд обязательств увеличивает Cr (cf Sarmenta, L.F.) и таким образом увеличивает потенциальную доходность (см. позже);
    5. Временная метка, защищенная от несанкционированного доступа → Используется работником, чтобы доказать свой вклад и претендовать на его вознаграждение.
  5. С каждым новым голосованием (вкладом) работниками, планировщик проверяет, достигает ли ответ (hash (A)) ожидаемый порог правдоподобия, используя голосование Сармента.
    a. Если у нас нет консенсуса, планировщик попросит больше узлов вычислить одну и ту же задачу (динамическую репликацию) и внести свой вклад в консенсус → вернуться к 3;
    b. Если у нас есть консенсус, переходим к пункту 6.
  6. Ответ был выбран. Планировщик теперь может:
    a. Опубликовать выбранный хэш (A). На данный момент новый вклад невозможен.
    b. Запросить у работников победителей A и r. Наличие значения r, которое соответствует правильной транзакции, датируемой до результата выборов, является доказательством вклада. На этом этапе A может быть опубликован любым работником. Значение r показывает, что работник знал ответ, за который голосовал до результатов выборов. Таким образом, они не могут претендовать на вклад, просто отправив транзакцию с хэшем (A), опубликованным другими голосовавшими.
    c. Проверить правильность вклада каждого работника.
    d. Положить депозитный фонд (долю) всех работников, которые голосовали за другой ответ в банк вознаграждения.
    e. Распределить банк вознаграждения (оплата пользователей + депозитный фонд от неправильных работников) среди победивших работников пропорционально их вкладу (значение Cr, вычисленное по репутации и средствам, выделенным на голосование). Планировщик может взять комиссию за свою работу.
    f. Повысить репутации победителей, снизить (Сброс) репутацию неудачников.
    g. Отправить, проверенный ответ пользователю.
Equations used by Sarmenta to compute the credibility of a result from the credibility of the voters.

Уровень доверия, рабочие пулы и политика выставления счетов

Голосование Сармента помогает достичь заданного уровня доверия, используя репутацию работника и динамическую репликацию. Этот уровень достоверности определяется значением ε, которое описывает допустимую погрешность. Результаты должны быть возвращены только в том случае, если достигнут уровень достоверности выше 1-ε. Это значение представляет собой баланс между стоимостью и доверием.Чем ниже ε, тем больше уверенности в результате, но также требуется больше репутации/вклада для достижения консенсуса и, следовательно, больше работы предстоит выполнить. Хотя это значение может быть определено пользователем для каждой задачи, они могут не знать, как его настроить, и это может вызвать проблемы с выставлением счетов.

Мы считаем, что это значение должно быть фиксированным для рабочего пула. Поэтому политика выставления счетов может быть определена для рабочего пула в зависимости от производительности этих работников (скорость) и значения ε, используемого планировщиком этого рабочего пула (уровень доверия). Пользователь будет свободен выбирать между рабочими пулами. Некоторые рабочие пулы могут содержать только большие узлы, на которых работает технология Intel SGX, обеспечивающая быстрый результат при низкой репликации. Другие пулы работников могут содержать (более медленные) настольные компьютеры и иметь согласованные параметры, адаптированные к этому контексту.

При консенсусе, управляемом планировщиком и финансовыми возможностями для голосовавших, обеспеченных залогом защиты от недобросовестных голосующих, пользователи не должны ни о чем беспокоиться. Пользователи платят за выполнение задачи в рабочем пуле, независимо от количества работников, которые в конечном итоге участвуют в консенсусе. Если консенсус будет быстрым и легким, оплата пользователя будет достаточной, чтобы воздать должное немногим работникам, принявшим участие в голосовании. Если консенсус является сложным и требует больших взносов, работники возмещаются используя залоговое обеспечение проигравших голосование. Это дает работникам финансовый стимул внести свой вклад в достижение консенсуса со многими голосующими, не требуя от пользователя платить больше.

В текущей версии этой работы протокол такой, что пользователь не участвует в консенсусе. Платежи производятся при отправке задания и не требуют участия. Результаты являются общедоступными и гарантируются консенсусом. Поэтому пользователи не могут обсуждать результат.

Предположения и стимулы агентов

Мы считаем, что протокол, описанный ранее, является безопасным, если выполняются несколько предположений:

  1. Первым сильным предположением является способность работников публиковать свою транзакцию (вклад) в публичном порядке. Средство, используемое для публикации этих материалов, должно обеспечивать безопасный способ проверки того, что вклад был сделан до результатов выборов. Это может быть достигнуто только с помощью современных технологий блокчейн, таких как смарт-контракты Ethereum. Тем не менее, это не должно препятствовать нам рассматривать другие подходы, такие как DHT (распределенные хэш-таблицы).
  2. Второе предположение заключается в том, что алгоритм голосования, по сути, даст хорошие результаты. Это предположение эквивалентно тому, что 51% репутации (рабочего пула) не контролируется одним недобросовестным пользователем. Мы считаем, что это не является недостатком протокола по двум причинам:
    a. Все системы, основанные на голосовании, включая протокол Сатоши Накамото, подвергаются таким атакам. Этот недостаток не в разработке протокола.
    b. Существуют сильные (финансовые) штрафы за плохие действия на платформе, и выборочная проверка может быть применена, чтобы дать больше власти планировщику и помочь ему справиться с плохими участниками. Это вопрос баланса между планировщиком и рабочими, чтобы включить выборочную проверку или нет. Мы можем представить себе несколько пулов работников, которыми управляют разные независимые планировщики, которые используют определенную политику. В конечном итоге эти пулы могут конкурировать за привлечение пользователей (с такими составляющими, как достигнутое качество результатов и ценообразование).

Наконец, мы считаем, что и планировщик, и работники будут склонны работать правильно, чтобы обеспечить хороший сервис для пользователей и извлечь выгоду из экосистемы iExec. Наличие 51% репутации, контролируемой участниками деятельности, которые хотят делать все правильно и извлекать из этого выгоду, не должно быть проблемой.

Стимулы для разных агентов заключаются в следующем.

  1. Пользователи: они просят выполнить работу, и деньги в работоспособную систему будут поступать только от них. Стимулом для пользователей использовать платформу является получение хороших результатов по низкой цене. Это приведет к созданию конкуренции между пулами рабочих. Их способность выбирать или бойкотировать пулы рабочих, создает стимул для работников и планировщиков работать вместе, чтобы обеспечить наилучшее возможное обслуживание и привлечь пользователей.
  2. Работники: их стимул, получить как можно больше денег за свою работу. Чтобы максимально увеличить свою прибыль, они должны максимально увеличить свой вклад. Вклад может быть получен, имея хорошую историю (репутация) и/или путем выделения дополнительных средств при представлении вклада. Предоставление плохих результатов заставит их потерять как средства, так и репутацию, чего они должны избегать любой ценой.
    a. Новые участники деятельности, без истории, начинают с низкой репутацией, то есть они будут иметь меньший вес в голосовании. Их шанс нагнать вотум против доверенных рабочих невелик, и это будет пустой тратой фонда от нападавшего.
    b. Старый участник с хорошей историей может выиграть много, используя свою репутацию для выполнения вычислений. Поскольку им доверяют, для урегулирования голосования требуется меньше взносов, и поэтому вознаграждение распределяется между меньшим количеством агентов. С другой стороны, подавая плохие результаты, они рискуют потерять всю свою репутацию (и деньги, которые они внесли с помощью взноса). Репутация не гарантирует им выигрыш голосов, а выборочная проверка может помочь обнаружить плохих участников даже с высокой репутацией.
  3. Планировщик: их стимулом является получение денег, помогая координировать платформу. Они делают деньги через:
    a. Комиссии по всем сделкам;
    b. Невостребованные награды: Если работник не претендует на вознаграждение после взноса, соответствующий фонд будет храниться в планировщике.

Для того, чтобы заработать деньги, планировщик требует, чтобы пользователи представляли рабочие места и работников для регистрации в своем рабочем пуле. Это дает ему стимул правильно управлять рабочим пулом и развиваться сильнее.

Публичные планировщики для полностью децентрализованной платформы

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

Фактически, этот протокол разработан таким образом, что каждое сообщение может и должно быть общедоступным. Безопасность достигается с помощью криптографии. В частности, использование блокчейн решает вопрос доказательства существования вклада (наличие на блокчейн) и действительности (приоритет по результатам голосования).

Основной вопрос, который еще предстоит решить, это обозначение работника. На шаге 3 планировщик передает задачу конкретным работникам. Это важно по двум причинам:

Мы не хотим, чтобы рабочие участвовали в гонке. Это будет способствовать быстрым узлам, и возможности атаковать систему голосования, координируя множество быстрых узлов, чтобы принять участие в голосовании, прежде чем другие узлы смогут внести свой вклад.

Мы не хотим, чтобы вредоносные узлы взяли на себя несколько голосов. Случайно присваивая работникам рабочие места, мы распределяем вредоносные узлы среди многих голосов, где они не смогут взять верх и где их лучшая игра заключается в том, чтобы обеспечить хорошие результаты и извлечь выгоду из правильной работы платформы.

Такой механизм требует источника случайности, с которым могут согласиться любые наблюдатели блокчейн. Эта проблема выходит за рамки этой публикации. Наличие такого источника как мера неопределённости (энтропия) может помочь планировщику назначить работников, используя случайный, но поддающийся проверке алгоритм. Данные, необходимые для проверки, будут публичными. Единственное изменение, требуемое для протокола, заключается в том, что действительный вклад работника потребует подтверждения того, что работник был назначен планировщиком.

Автор: Hadrien Croubois
Опубликовано: 11 октября 2017
Первоисточник на английском языке:

Присоединяйтесь к нам:

iExec 🇷🇺

Веб-СайтTelegramVKontakteInstagramTwitter • Facebook • YoutubeMediumGolos

iExec 🇺🇸

WebsiteMediumSlackTelegramRedditTwitterFacebookLinkedInYoutubeGithubKakaoInstagramSteemitKatacodaDocs

___________________________________________________________________

--

--