К содержимому
Материалы
Статья

Публикуйте байты, а не обещания

Почему ai_stp проверяет архив до подтверждения и сохраняет единственную неизменяемую нагрузку для каждой версии X.Y.

  • artifact
  • digest
  • publishing

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

Байты архива проходят проверку и попадают в неизменяемое хранилище

Загрузка является проверкой

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

Подтверждение зависит от хранилища

При подтверждении сервер снова убеждается, что запланированный объект существует и имеет ожидаемые размер и digest. Одной строки в базе недостаточно: публичные метаданные не могут опережать обещанные байты.

Одна X.Y — одна нагрузка

После публикации другой архив не может занять ту же идентичность X.Y. Потребитель скачивает ровно проверенные байты и сверяет digest, не доверяя изменяемому имени файла или описанию.

Публикуйте байты, а не обещания — статья