Морж решает проблему синхронного вызова в современных системах хранения данных

Децентрализованные системы хранения полагаются на задания для проверки того, что валидаторы действительно хранят данные. Простая механика: протокол случайным образом спрашивает "у вас есть блоб X?" и ожидает быстрых ответов. Загвоздка в синхронности — это работает только если ответы приходят в предсказуемые временные рамки.

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

Синхронные задания создают извращенные стимулы. Системы должны устанавливать тайм-ауты свободно, чтобы избежать ложноположительных срабатываний, что замедляет обнаружение. Или они устанавливают тайм-ауты строго, чтобы быстро поймать неправомерное поведение, что наказывает честные узлы, сталкивающиеся с временными сетевыми проблемами. Так или иначе, система деградирует.

@Walrus 🦭/acc полностью отказывается от синхронных заданий. Его асинхронная проверка не зависит от времени ответа. Задание остается действительным, независимо от того, приходит ли ответ за миллисекунды или дни. Валидаторы не могут избежать этого через стратегическую задержку, а честные узлы никогда не подвергаются наказанию за сетевые условия, которые выходят за пределы их контроля.

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

#Walrus $WAL