# Confirm Events Across Blockchains · Verify events across chains with ICCF · Learn Chromia

> This course walks you through building a basic digital warehouse app. A user makes a payment on one blockchain, obtains proof of that payment, and then uses…

Source: https://chromia.com/learn/iccf-course/introduction/

Verify events across chains with ICCFLesson 1 of 6

1. [01Confirm Events Across Blockchains](https://chromia.com/learn/iccf-course/introduction/)
2. [02Set up your project](https://chromia.com/learn/iccf-course/setup/)
3. [03System overview](https://chromia.com/learn/iccf-course/system-overview/)
4. [04Subscription chain](https://chromia.com/learn/iccf-course/subscription-chain/)
5. [05Digital warehouse chain](https://chromia.com/learn/iccf-course/digital-warehouse-chain/)
6. [06Testing the dapp](https://chromia.com/learn/iccf-course/manual-testing/)

[Learn](https://chromia.com/learn/)[Verify events across chains with ICCF](https://chromia.com/learn/iccf-course/)

01 / 06Intermediate

# Confirm Events Across Blockchains

This course walks you through building a basic digital warehouse app. A user makes a payment on one blockchain, obtains proof of that payment, and then uses the proof on a second blockchain. The mechanism behind this is Chromia's Inter-Chain Confirmation Facility (ICCF).

> **What is ICCF?**  
> ICCF (Inter-Chain Confirmation Facility) lets you demonstrate that a transaction took place on one blockchain so that a different blockchain accepts it. Use it when you need to confirm that an event occurred.

With ICCF, a second chain can recognize something that happened on the first. For instance, a payment made on Chain A can serve as proof that unlocks something on Chain B. The user is in control: once their transaction is done, they fetch a proof and submit it to the other chain whenever they choose.

ICCF fits cases where you must prove that an event happened. If your goal is to pass messages or data between chains, consider Chromia's [Inter-Chain Messaging Facility (ICMF)](https://docs.chromia.com/get-started/about/protocols/icmf/) instead.

> **What is a Cluster Anchoring Chain?**  
> A dedicated blockchain in the Chromia network that gathers and anchors data from every blockchain in a dapp cluster. Because of this, tampering or unauthorized changes anywhere in the cluster become easy to spot, which protects data integrity and security.

## Why use ICCF?

* **User-driven and asynchronous:** Once a transaction is confirmed, the user can fetch and submit the proof at any later point, which keeps the process flexible and efficient.
* **Security:** A trusted chain anchors the event and verifies the proof.
* **Separation of concerns:** You can dedicate one chain to payments and another to business logic or access control.

## What will you build?

When you finish, your digital warehouse app will let users:

* Make a fictional payment on one blockchain.
* Get a proof of that payment.
* Present the proof to another blockchain to gain access or carry out actions there.

## Example use cases

* **Cross-chain subscriptions:** Show that a subscription was paid on one chain so services become available on another.
* **Multi-chain access control:** Allow access to digital goods or services on one blockchain depending on actions, such as payments, taken on another.
* **Decentralized identity verification:** Present identity data or credentials issued on one chain to an application on a different chain.
* **Gaming:** Unlock in-game items or features on one blockchain in response to achievements or purchases on another.
* **Event ticketing:** Use a ticket purchased on one chain to get entry or perks in a system on another chain.

## How does it work?

Confirming an event (a transaction) follows these steps:

1. The user submits a transaction to the source chain.
2. The source chain confirms it and adds it to a block.
3. That block is forwarded to the Cluster Anchoring Chain as a transaction.
4. The Cluster Anchoring Chain verifies (anchors) the block and adds it to one of its own blocks.
5. The user builds a proof by retrieving a confirmation proof for the transaction.
6. The user submits that proof to the target chain in a separate transaction.
7. The target chain checks the proof by confirming it is anchored in the Cluster Anchoring Chain.
8. The target chain finishes verification by adding the proof to a block.

The user drives this whole flow. Because the user builds and submits the proof, that step is asynchronous and can happen at any time after the blocks are confirmed. This makes the approach a good match for apps that need to prove something happened, rather than move data. You can use it to send messages, but if you don't need to verify when a message arrives, ICMF is likely the better choice.

The scenario in this course uses one blockchain for monetary transactions and subscriptions and a second chain for business logic. With this split, you can prove a monetary transaction took place while the funds stay on the first chain.

## Related materials

The following documentation covers the concepts and approaches this course builds on:

| Section | Type | Documentation |
| --- | --- | --- |
| Overview | Cross-chain | [ICMF](https://docs.chromia.com/get-started/about/protocols/icmf/) |
| FT4 | Introduction | [FT4](https://docs.chromia.com/build/ft4/intro/) |
| Overview | Dapps | [Building your dapps on Chromia](https://docs.chromia.com/get-started/create-dapp/) |

## Repository link

You can find the full source code for this course in the
[ICCF course repository](https://bitbucket.org/chromawallet/iccf-course).

Written for this site from Chromia’s public course. Code samples are the course’s own.

[← Course**Verify events across chains with ICCF**](https://chromia.com/learn/iccf-course/)[Next →**Set up your project**](https://chromia.com/learn/iccf-course/setup/)

On this page

* [Why use ICCF?](#why-use-iccf)
* [What will you build?](#what-will-you-build)
* [Example use cases](#example-use-cases)
* [How does it work?](#how-does-it-work)
* [Related materials](#related-materials)
* [Repository link](#repository-link)
