# Getting Started

{% hint style="info" %}
If you need technical guidance or wish to discuss your project's implementation, please reach out to us. Our committed team is available to assist with your projects and help ensure their success. For expert support, contact us via our [contact form](https://entangle.zendesk.com/hc/en-us/requests/new).
{% endhint %}

## Prerequisites

Before you begin, you'll need to ensure you're familiar with the concepts we'll be using for most of the guides. If you're unsure about anything, we recommend reading more via the provided links.&#x20;

* A crypto wallet like [MetaMask](https://metamask.io/) or [Coinbase](https://www.coinbase.com/en-sg/wallet).
* Basic knowledge of a version management system like [git](https://git-scm.com/).
* Understand the basics of [smart contracts](https://ethereum.org/en/learn/#smart-contracts).
* The guides will use the testnet. To deploy contracts and make calls, you'll need testnet funds, which you can obtain from public faucets ([Option 1](https://faucet.polygon.technology/), [Option 2](https://sepolia-faucet.pk910.de/), [Option 3](https://faucet.sepolia.mantle.xyz/), [Option 4](https://www.alchemy.com/faucets), [Option 5](https://cloud.google.com/application/web3/faucet/ethereum/sepolia)).

## Understanding the Basics

In a nutshell, as a Web3 developer planning to utilize UIP, you need to understand the basic architecture.

* You will need to deploy contracts on every network where your application will operate, and they should call the `Endpoints` methods.
* Through `Endpoints`, UIP will transmit your transactions and your clients’ transactions.
* `Endpoints` have interfaces that need to be followed.
* Your client will interact specifically with your contracts, while UIP will only deliver the messages.

### Application Architecture

<figure><img src="/files/mRFSyHSMI1kawlsc8pmH" alt=""><figcaption></figcaption></figure>

To use UIP, you first need to implement logic for handling crosschain operations within your smart contracts and connect them to the UIP Endpoint interface.

Once this is done, the process is as follows:

1. A user initiates a transaction on the source chain. This transaction includes a payload with information for execution on the destination chain.
2. Your smart contract on the source chain calls the 'propose' function of the UIP Endpoint contract. This notifies the network about the new message.
3. The message is verified and delivered to the destination chain. The Transmitter executes the message by calling the 'execute' function of the UIP Endpoint. During this stage, the message also undergoes a Transmitter signatures verification process.
4. After all security checks are passed, the message is passed through the Endpoint to your smart contract on the destination chain.

## Next Steps

Now that you understand the basics, you can begin deploying your protocol. For more details, refer to the [EVM](/universal-interoperability-protocol/developer-guides/solidity/deploying-your-custom-evm-protocol.md) or [Solana](/universal-interoperability-protocol/developer-guides/solana.md) protocol deployment guide. Alternatively, if you're looking for inspiration, explore the [Use Cases](/universal-interoperability-protocol/overview.md#omnichain-use-cases-with-uip) section of the [Overview](/universal-interoperability-protocol/overview.md) page to see what's possible with UIP.

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Deploying Your EVM Protocol</td><td><a href="/files/czVmuxlubLo32xJjp1w4">/files/czVmuxlubLo32xJjp1w4</a></td><td><a href="/pages/vBSmXkBDkr0eHwGMBNAC">/pages/vBSmXkBDkr0eHwGMBNAC</a></td></tr><tr><td>Deploying Your Solana Protocol</td><td><a href="/files/g6k5i6yFZv1Kdhn2NKMr">/files/g6k5i6yFZv1Kdhn2NKMr</a></td><td><a href="/pages/4kjEKpktPiPy2GmYdPOU">/pages/4kjEKpktPiPy2GmYdPOU</a></td></tr><tr><td>Build the Future</td><td><a href="/files/TaM2yhLGAIa7Aa6s2MRs">/files/TaM2yhLGAIa7Aa6s2MRs</a></td><td><a href="/pages/US1cwBwIqEddf1iWHrrF">/pages/US1cwBwIqEddf1iWHrrF</a></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.entangle.fi/universal-interoperability-protocol/developer-guides/getting-started.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
