# Waiting for the cross-chain execution

<figure><img src="https://1891280734-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F61xOMwWistUayaApyKG0%2Fuploads%2FwmGO4Dl0saPV44gsJIDl%2FMessageDispatching.png?alt=media&#x26;token=4c0fab45-d49b-435d-ab55-26b5f950f185" alt=""><figcaption></figcaption></figure>

Here’s what happens after you send the message:

1. **Message Dispatch on Sepolia**:
   * When `sendMessageToChiado` is called on the **SepoliaSender** contract, the message is dispatched through **Yaho** on Sepolia.
   * The message is sent with the **targetChainId**, **threshold**, **reporters**, and **adapters**, and the data (in this case, the message string).
2. **Oracles and Relaying**:
   * Hashi’s **oracles** pick up the message and relay it to **Chiado**.
   * The oracles validate the message and check the block headers for consensus.
3. **Message Receipt and Callback on Chiado**:
   * On **Chiado**, the **Yaru** contract receives the message and triggers the `onMessage` function on the **ChiadoReceiver** contract.
   * The callback validates the message by ensuring that the message is from the expected **Yaru** contract, the **source chain**, and the correct **sender**.
   * After validation, the message is decoded and stored in the contract.

***

#### **Example Scenario**

* You deploy **SepoliaSender** on **Sepolia** and configure it with the appropriate **Yaho** contract and oracle parameters.
* You deploy **ChiadoReceiver** on **Chiado** to handle the incoming message and validate it against Hashi’s oracle system.
* When you call `sendMessageToChiado` from **SepoliaSender**, the message is dispatched to **Chiado**, where the callback function processes it and updates the state.
