Как в добровольных GRID вычислениях защищаться от ложных данных?
Те, кто считает, что единственно верным будет просто не быть жмотом и не прибегать к добровольным вычислениям, а покупать достаточное кол-во серверного оборудования, правы, но поймите, бывают ситуации, когда без этого никак.
Считайте все два три раза если совпадает результат то ок, если нет то пересчитываете, очевидное же решение если рассчитываемые решения нельзя проверить
К распределённым вычислениям на недоверенных хостах прибегают для оптимизационных задач. Т.е. нужно перебрать много вариантов входных данных и выбрать оптимальный набор, который удовлетворяет поставленным критериям. Именно таким способом всякие структуры белков ищутся, биткоины в пулах майнятся и прочее. А провести n проверок (по числу задействованых хостов) наборов данных ведущему хосту не составит труда (по сравнению с общим их количеством).
Вадим Егоров: А как вы собрались распараллелить задачу, шаги которой зависят друг от друга? Например очень длинная формула. Да, можно найти части, который могут быть вычислены независимо, но всё равно большинство операций будут зависеть от других. В итоге у вас не будет параллельных вычислений. Просто каждый хост по операции выполнит, простаивая большую часть времени в ожидании необходимых ему результатов от других.
Есть вариант, но он не даёт 100% гарантии. Давать нескольким хостам одно и тоже задание и сравнивать их результат. Но хосты могут сговориться.
Вадим Егоров: Ну а других вариантов нет. Только если алгоритм обладает большой вычислительной сложностью, но быстрой проверкой. Например факторизация числа, майнинг и т.п. Но об этом уже говорили.
Вадим Егоров: Он же не отправляет все хеши. Только статистику и одно решение, если найдёт. Т.е. трафик там совсем мизерный. Вроде того: вот тебе диапазон из миллиона чисел, посчитай мне то-то, если результат меньше того-то, то отправь его мне вместе с исходным числом. И не забудь раз в минуту отправлять статистику прогресса.