Skip to main content

Introduction

In this course, we will build a simple digital warehouse where users are authorized by providing a fictional payment on another chain. The proofs are constructed and verified by the Inter-Chain Confirmation Facility (ICCF).

ICCF provides a straightforward method for constructing proof that a transaction has occurred on one chain and verifying this proof on another chain. While this facility enables message sending, it should not be confused with the Inter-Chain Messaging Facility (ICMF), which you can learn more about here.

Confirming an event (transaction) can be described by the following sequence:

  1. The user sends a transaction to the source chain.
  2. The source chain confirms the transaction and includes it in a block.
  3. The block is sent to the cluster anchoring chain as a transaction.
  4. The cluster anchoring chain verifies the block (anchors) and includes it in its own block.
  5. The user constructs a proof by obtaining a confirmation proof for the transaction.
  6. The user presents the proof to the target chain as another transaction.
  7. The target chain validates the proof by verifying its anchoring in the cluster anchoring chain.
  8. The target chain completes its verification by including the proof in a block.

As seen in this flow, the user drives this operation. The user constructs and presents the proof, making this step asynchronous and possible anytime after the blocks have been confirmed. This approach is particularly suitable for applications focusing on proving occurrences rather than transferring data. While it can be used for sending messages, if the user is not concerned with verifying when the message arrives, using the messaging facility (ICMF) might be more appropriate.

In this course, we will explore a scenario where one blockchain handles monetary transactions and subscriptions while another chain manages the business logic. This setup allows us to prove that a monetary transaction occurred without the money leaving the first chain.

The complete code repository for this course is available here: ICCF course repository.