Рабочий процесс может завершиться идеально, но при этом внешний мир останется в неверном состоянии.
Представьте, что автономное приложение для коммерции, связанное с @RialoHQ, получает заказ на последний товар на складе.
Рабочий процесс завершается успешно: платеж зачислен, заказ подтверждён, клиент получил чек. С точки зрения блокчейн-приложения, всё выглядит завершённым.
Но API склада никогда не получает обновление о состоянии запасов.
Ончейн-состояние теперь говорит, что товар был продан.
Склад по-прежнему сообщает, что доступен 1 товар.
Через несколько минут другая система считывает данные о запасах на складе и пытается продать тот же товар снова.
Ничего не сломалось внутри исходной транзакции. Проблема в том, что две системы, которые должны отражать одну и ту же реальность, расхо́дились.
Вот здесь и начинает проявляться важность идеи сверки при разработке приложений вокруг Rialo.
Когда программное обеспечение взаимодействует с внешними API, базами данных, системами оплаты и другими реальными сервисами, успешное выполнение не всегда гарантирует, что все связанные системы оказались в ожидаемом состоянии.
Следовательно, приложению может потребоваться выйти за рамки вопроса «Удалось ли моё действие?» и в конечном итоге задать вопрос: «Отражает ли внешний мир теперь то, что должно было произойти?»
Если приложение ожидало, что запасы переместятся с 1 на 0, оно может сравнить это ожидаемое значение с состоянием, сообщённым внешней системой. Если склад по-прежнему сообщает о наличии 1 товара, несоответствие становится чем-то, что приложение может обнаружить и обработать, а не молча предполагать, что всё остаётся синхронизированным.
Та же проблема возникает в платежах, бронировании, логистике и многих других рабочих процессах, где ончейн-выполнение взаимодействует с системами за пределами блокчейна.
Это создаёт важное различие.
Исполнение говорит вам, что сделало приложение.
Сверка говорит вам, достигла ли реальность того состояния, в котором приложение ожидало её увидеть.
Для приложений, которые всё чаще связывают выполнение в блокчейне с внешним миром, оба аспекта могут иметь значение.
Потому что завершение рабочего процесса — это одно.
А обеспечить согласованность всех связанных систем относительно того, что произошло — это другое.