This section will walk you through deploying the Airdrop Machine smart contract using Remix IDE. The Airdrop Machine is designed to distribute tokens across multiple addresses, supporting both standard and [Merkle tree-based](https://www.investopedia.com/terms/m/merkle-tree.asp) airdrops.
By following these instructions, you'll learn how to clone the necessary repository, prepare the contracts, and deploy them in Remix IDE.
## **Step 1: Clone the Repository**
Clone the Airdrop template repository from the link below:
```bash
git clone https://github.com/rsksmart/airdrop-template.git
```
This repository contains all the smart contract code you need to deploy the Airdrop Machine. You’ll use this code to get the smart contract address required for your project.
> Basic knowledge of deploying and testing smart contracts in Remix IDE is required. If you’re unfamiliar, please refer to the [Remix Quickstart Guide](/developers/quickstart/remix/) for a detailed tutorial.
## **Step 2: Prepare the Contracts for Remix IDE**
1. Navigate to the cloned repository and locate the `contracts` folder.
2. Copy the code from both `AirdropManager.sol` and `Administrable.sol` contracts. These files are crucial because the `AirdropManager` contract imports functions from `Administrable.sol`.
3. Paste the contents of both contracts into Remix IDE.
**Note:** If you're using the latest Solidity version, be aware that some Rootstock contracts may not be fully compatible. We recommend using Solidity version **0.8.20** for better compatibility.
## **Step 3: Compile and Deploy the AirdropManager Contract**
After pasting the contracts into Remix IDE, follow these steps to successfully compile and deploy them:
* **Select Solidity Version**
* Ensure the compiler version is set to **0.8.20** to maintain compatibility with Rootstock contracts.
* **Compile the AirdropManager.sol Contract**
* Click the **Compile AirdropManager.sol** button to compile the contract.
* Make sure there are no errors before proceeding to the next step.
* **Deploy the AirdropManager Contract**
* Go to the **Deploy & Run Transactions** tab in Remix.
* From the **Environment** dropdown, select the Remix VM (Cancun)
* In the **Accounts** section at the top of Remix, copy the first account address.
* Paste this address into the contract deployment input field.
:::tip[Important]
Make sure to enter the address inside square brackets, like this: `[0x5B38Da6a701c568545dCfcB03FcB875f56beddC4]`. If entered incorrectly
(e.g., without brackets), you will encounter the following error:
```
“creation of AirdropManager errored: Error encoding arguments: Error: expected array value (argument=null, value="0x5B38Da6a701c568545dCfcB03FcB875f56beddC4", code=INVALID\_ARGUMENT, version=abi/5.7.0)”.
```
:::
> Double-check that the account address is properly formatted with square brackets to avoid this issue.
## **4\. Deploy the Contract**
* After correctly entering the address, click **Deploy**.
* This will deploy the `AirdropManager` contract, which manages the entire airdrop process, including both custom and Merkle tree-based airdrops.
## **5\. Copy the Contract Address**
* Once deployment is successful, copy the contract address of the deployed `AirdropManager`.
* This address will be required in your Airdrop UI project.