
ワークフローは完璧に完了しても、外部の世界は間違ったままになる可能性がある。 @RialoHQの自律的コマースアプリケーションが在庫の最後の1点を注文されたとする。 ワークフローは成功裏に完了する。支払いは確定し、注文は確認され、顧客は領収書を受け取る。ブロックチェーンアプリケーションの観点からは、すべてが完了したように見える。 しかし、倉庫APIには在庫更新の最終情報が届いていない。 オンチェーン状態では、その商品は販売済みとなっている。 一方、倉庫側ではまだ1点在庫ありと表示されている。 数分後、別のシステムが倉庫の在庫を読み取り、同じ商品を再度販売しようとする。 元のトランザクション内部には何の失敗もなかった。問題は、同じ現実を記述すべき2つのシステムがずれてしまったことにある。 このような状況で、Rialoを基盤としたアプリケーションにおける「調整(reconciliation)」という概念が重要になる。 ソフトウェアが外部API、データベース、支払いシステム、その他のリアルワールドサービスと連携する際、処理が成功したからといって、すべての接続されたシステムが期待される状態に到達したとは限らない。 したがって、アプリケーションは「私のアクションは成功したか?」という問いを超え、「外部の世界は、起こるべきことが実際に起きた状態になっているか?」という問いを最終的に問う必要がある。 アプリケーションが在庫を1→0に移動させることを期待しているなら、その期待される結果と外部システムが報告する状態を比較できる。倉庫がまだ1を報告している場合、この不一致をアプリケーションが特定し、対処できるようになる。そして、すべてが同期されていると黙って仮定するのではなく。 この問題は、支払い、予約、物流など、オンチェーン実行がチェーン外のシステムと連携する多くのワークフローでも同様に発生する。 これにより重要な区別が生まれる。 実行は「アプリケーションが何を行ったか」を示す。 調整は「現実はアプリケーションが期待した場所に到達したか」を示す。 ブロックチェーン実行と外部世界をますます結びつけるアプリケーションにとって、両方が重要になる。 ワークフローを終えることは一つのことであり、 すべての接続されたシステムが何が起きたかについて合意していることを保証することは、別のことだからだ。
