# Deploy an Ethereum contract

![](https://files.readme.io/f73025b-01_How-to-deploy-an-Ethereum-smart-contract.png)

## Deploying a smart contract

A smart contract can be deployed using the existing endpoints/functions from quantum

Steps to follow in order to deploy the contract:

### 1.**Develop the solidity contract**

Below is a simple Solidity smart contract that you can deploy on the Ethereum blockchain. This contract is a basic example of a token contract that allows you to create

There are several tools and methods available for compiling Solidity code, and I'll provide an example using **Remix**, a web-based IDE.

Open [Remix](https://remix.ethereum.org/) in your web browser:

JSON

```json
// SPDX-License-Identifier: MIT
pragma solidity >=0.4.0 <0.7.0;
contract SimpleStorage {
    uint storedData;
    function set(uint x) public {
        storedData = x;
    }
    function get() public view returns (uint) {
        return storedData;
    }
} 
```

Write or paste your Solidity code into the editor. (see example above)

In the **Solidity Compiler** tab on the left sidebar, you can find the compiler version. Choose the appropriate version for your contract.

<figure><img src="https://files.readme.io/2c3dbd4-image.png" alt="Solidity compiler contract view"><figcaption><p>Solidity compiler contract view</p></figcaption></figure>

Click on the **Compile** button to compile your contract.

### 2.**Generate the bytecode**

To generate the bytecode for a developed Solidity contract, you need to compile the Solidity code into Ethereum Virtual Machine (EVM) bytecode.

After compilation, you will see a list of compiled artifacts including the bytecode. Look for your contract name under the **Contracts** section, and you'll find the bytecode under **BYTECODE**.

<figure><img src="https://files.readme.io/2982bdc-image.png" alt="Solidity Compiler Bytecode"><figcaption><p>Solidity Compiler Bytecode</p></figcaption></figure>

Bytecode in this case: `608060405234801561001057600080fd5b5060c78061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360fe47b11460375780636d4ce63c146062575b600080fd5b606060048036036020811015604b57600080fd5b8101908080359060200190929190505050607e565b005b60686088565b6040518082815260200191505060405180910390f35b8060008190555050565b6000805490509056fea264697066735822122018e873e978df16c207f8f6ed18612b17e2c2a70d0916ff978c0755f6a45e26fc64736f6c634300060c0033`

### 3.**Deploy the smart contract**

To deploy the smart contract you will need to execute a native token transfer where the **to** field is empty, the value is **0** and the data contains the bytecode see example:

JSON

```json
{  
    "pincode": "123456",  
    "transactionRequest": {  
         "type": "TRANSFER",
        "walletId": "d7d10358-c36b-495b-9c1c-77237505f5d0",  
        "value": "0",  
        "secretType": "ETHEREUM",   
        "data": "608060405234801561001057600080fd5b5060c78061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360fe47b11460375780636d4ce63c146062575b600080fd5b606060048036036020811015604b57600080fd5b8101908080359060200190929190505050607e565b005b60686088565b6040518082815260200191505060405180910390f35b8060008190555050565b6000805490509056fea264697066735822122018e873e978df16c207f8f6ed18612b17e2c2a70d0916ff978c0755f6a45e26fc64736f6c634300060c0033" // bytecode from step 3 
    }  
}
```

The response from this request gives us the **TX Hash** which can be used to check in the block explorer if the contract has been deployed:

JSON

```json
{
    "success": true,
    "result": {
        "id": "d7e3f894-4a6b-433d-93b0-f9f2e1972ea3",
        "transactionHash": "0x14011289f295db9a46ea7f030e140737a7ea835095171d6e69050e553a0d03a9"
    }
}
```

<figure><img src="https://files.readme.io/dbe705b-image.png" alt="Transaction details in blockchain explorer"><figcaption><p>Transaction details in blockchain explorer</p></figcaption></figure>

<https://goerli.etherscan.io/tx/0x14011289f295db9a46ea7f030e140737a7ea835095171d6e69050e553a0d03a9>

> ### 📘
>
> The wallet executing the native token transfer must have **ETH** to pay for the gas, if you do not have eth in the wallet, you can add some from the [faucets](https://quantum-8.gitbook.io/quantum/faucets).
