> For the complete documentation index, see [llms.txt](https://blocx.gitbook.io/blocx./llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blocx.gitbook.io/blocx./get-started/build-on-blocx..md).

# Build on BLOCX.

### Find Reference&#x20;

Reference token: <https://blocxscan.com/address/0x17Fe8466DF6a2dD30c87576367CA398ef24128C7>

***

### Open Remix

* Open Remix at:\
  <https://remix.ethereum.org/>
* Next, open the **contracts** folder and create a new file—in this case, `demo.sol`."

<div align="left"><figure><img src="/files/ERTXpJ72BuzX9iIrSWvi" alt="" width="321"><figcaption></figcaption></figure></div>

***

### **Write Your Contract**

In Remix:

* Open the Solidity file (e.g., `Demo.sol`)
* Import the **BLOCX-20** contract from an audited **OpenZeppelin ERC-20** source, then set your variables, such as the name, minted amount, and other parameters.\
  **Screenshot Reference:** `Basic.png`

<div align="left"><figure><img src="/files/fCI2UZqQksRoVNNti1S4" alt="" width="375"><figcaption></figcaption></figure></div>

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract Demo is ERC20 {
    constructor(address recipient) ERC20("demo", "demo") {
        _mint(recipient, 10000 * 10 ** decimals());
    }
}
```

***

### **Compile the Contract**

* Go to the **Solidity Compiler** tab (🔨 icon).
* Select the correct compiler version (`0.8.20`).
* Hit **"Compile Demo.sol"** ✅.

***

### **Connect MetaMask (Injected Provider)**

* Go to the **Deploy & Run Transactions** tab (Ethereum icon).
* Under **ENVIRONMENT**, choose `Injected Provider - MetaMask`\
  ➤ This connects Remix to MetaMask's current network.

**Screenshot Reference:** `Injected Provider - MetaMask`, account shown.

<div align="left"><figure><img src="/files/vHYWvI95Cf0D0NBy6IW3" alt="" width="218"><figcaption></figcaption></figure></div>

Make sure **MetaMask** is **connected** to your **target chain** (e.g., **BLOCX-Mainnet** with **ID 86996** as in screenshot).

<div align="left"><figure><img src="/files/g5AloiIjyvdXNtnFCmLQ" alt="" width="223"><figcaption></figcaption></figure></div>

***

### **Set Deployment Settings**

* Set **Value**: Leave at `0` (unless the constructor needs BLOCX).
* Select **Contract**: `Demo - Demo.sol`

<div align="left"><figure><img src="/files/d6lrZJtJIGg4AqO0tVKQ" alt="" width="191"><figcaption></figcaption></figure></div>

* In the **DEPLOY** section, enter the `recipient` address (who will receive the minted tokens).

Make sure it’s a valid BLOCX address (starts with `0x...`).

***

### **Deploy**

* Click **Transact** ➝ MetaMask popup appears.
* Review and **Confirm** the transaction.

**Screenshot Reference:** MetaMask deploy confirmation window with fee and data.

<div align="left"><figure><img src="/files/xLcXIhT9M43L22EE5TWb" alt="" width="198"><figcaption></figcaption></figure></div>

Wait for transaction confirmation on-chain ⛓️.

***

### **Interact with the Deployed Contract**

After deployment:

* Under **Deployed Contracts**, expand your contract instance.
* You can now interact with:
  * `balanceOf(address)`
  * `transfer(to, value)`
  * `approve`, `transferFrom`
  * `totalSupply`, `name`, `symbol`, `decimals`

**Screenshot Reference:** Interaction UI with `balanceOf`, `transfer`, etc.

<div align="left"><figure><img src="/files/7goSSSfShlCUz4FF2MkK" alt="" width="178"><figcaption></figcaption></figure></div>

For example:

* Check balance with `balanceOf(recipient)`
* Transfer tokens using `transfer(to, amount)` with appropriate decimals.
