Blog from May, 2018

Пусть есть какая-то большая и хорошо параллелизуемая полезная задача. К примеру вычисление Монте-Карло интеграла на BAT 2 для квантовой хромодинамики. Пусть также сетевой узел-заказчик, который хочет, чтобы эта работа была выполнена и готов предоставить за это какие-то плюшки (виртуальные, это не обязательно прямо конвертируется в деньги). Пусть также есть набор узлов-исполнителей, которые готовы эту работу выполнять. Исполнители в общем случае образуют не плоскую структуру, а дерево, то есть у каждого исполнителя могут быть свои субподрядчики, по отношению к которым он является заказчиком. Каждый заказчик что-то знает только про своих непосредственных исполнителей и ничего не знает про структуры следующего уровня, так что система фрактальная. 

Заказчик дробит свою большую задачу на элементарные кванты (достаточно мелкие) и определяет сложность (то есть ресурсы, и время, необходимые для вычисления) каждого. Каждый из исполнителей определяет свою мощность (то есть способность решать задачи). Мощность определяется с учетом субподрядчиков рекурсивно (сам исполнитель может вообще ничего не делать, а только координировать работу сети, сама сеть вообще может состоять из персональных компьютеров пользователей). Помимо этого, у каждого исполнителя есть рейтинг надежности. От этого рейтинга зависит вероятность получения задачи в случае избыточной мощности, а также необходимость проверки результатов. Проверка результатов (если нужна) осуществляется путем дублирования квантов заказа и раздачи их разным исполнителям. Если результаты отличаются для разных исполнителей, то задача выдается третьему исполнителю. Исполнитель, не правильно решивший задачу или не решивший ее в срок (который определяется его мощностью и сложностью посланной ему задачи), получает штраф к рейтингу надежности. Добросовестное решение задач повышает рейтинг надежности. Заказчик определяет объем вознаграждения за решение задачи и распределяет его пропорционально проделанной работе. При этом каждый исполнитель может самостоятельно перераспределять вознаграждение между субподрядчиками и оставлять часть себе за администрирование, при этом раскрывая правила, по которым он это сделал.

Блокчейн может использоваться для заключения контрактов между заказчиками и исполнителями и отслеживания выполнения работы.

Задача формулируется в виде декларации, понятной всем исполнителям (мы разрабатываем язык описания и процедуры коммуникации в рамках BAT2).