> For the complete documentation index, see [llms.txt](https://docs.multichain.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.multichain.org/developer-guide/anycall-v7.md).

# anyCall V7

{% hint style="info" %}
anyCall V7 is the latest version of anyCall. This version is recommended as it contains useful features and innovations which make it perfect for your cross-chain dapps.
{% endhint %}

## What is anyCall?

AnyCall is a permissionless generic cross-chain message protocol that allows cross-chain messages and contract calling from chain A to chain B. anyCall is secured by the Multichain SMPC network which is used to secure billions of assets.

### Features and Updates include:

* Permissionless Deployments (No whitelisting)
* Flexible contract designs
* Chained anyCall allowed. You can call anyCall to Chain B, then to Chain C

### **anyCall V7 Workflow**

The anyCall protocol is made up of three main functions `anyCall` , `anyExec` . These two methods exist in our deployed anyCall contracts.

DAPPS need to develop and deploy a sender contract on chain A and a receiver contract on chain B. On the receiver contract, **a function named** `anyExecute`  **needs to be present and it will be called**.

&#x20;<mark style="color:green;">**DAPPS sender contract(Chain A)**</mark>**&#x20;->** `anyCall`(Chain A) **->** *SMPC Network* **->** `anyExec`(Chain B) **->`AnyCallExecutor` ->** `anyExecute` by <mark style="color:green;">**DAPP receiver contract(Chain B)**</mark>

DAPPS sender contract call `anyCall` on the Chain A. Then SMPC network will relay anyCall event which will call **`AnyCallExecutor`**  to make the final execution of the  `anyExecute`  function on the DAPP receiver contract. Hence a function named `anyExecute`  needs to be present in the DAPP receiver contract.

If the `anyExec` contract execution failed on Chain B, it can call `_fallback` function to send messages back to Chain A.&#x20;

&#x20;`anyExecute` <mark style="color:red;">**DAPP receiver contract(Chain B failed)**</mark>**&#x20;-> anyCall**(Chain B) **->** *SMPC Network* **-> anyExec**(Chain A) **->** `anyFallback` <mark style="color:green;">**DAPP sender contract(Chain A)**</mark>&#x20;
