▶️Deploying your contracts

The example is based on Hardhat framework

Prerequisite

Please follow Hardhat guide here

Example: To create a Fixed-cap Asset

contracts/Token.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

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

contract MyToken is ERC20Capped {
    constructor(uint256 _cap) ERC20("MyToken", "XXX") ERC20Capped(_cap) {
        ERC20._mint(msg.sender, _cap);
    }
}

Add network following network config to hardhat.config.ts

const config: HardhatUserConfig = {
    ...
    networks: {
        rei: {
            url: 'https://rei-rpc.moonrhythm.io',
            chainId: 55555,
        },
        reitest: {
            url: 'https://rei-testnet-rpc.moonrhythm.io',
            chainId: 55556,
        },
    ...
    solidity: {
        compilers: [
            {
                version: '0.8.9',
                settings: {
                    optimizer: {
                        enabled: true,
                        runs: 1000000,
                    },
                },
            },
        ],
    },
    ...
}

Compile your code using

npx hardhat compile

Deploy script

scripts/deploy.ts
import { ethers } from 'hardhat'

async function main() {
    let [owner] = await ethers.getSigners()

    const factory = await ethers.getContractFactory(
        'contracts/Token.sol'
    )
    const contract = await factory.deploy('100000000000') // capped
    await contract.deployed()
}

main()
    .then(() => process.exit(0))
    .catch((error) => {
        console.error(error)
        process.exit(1)
    })

Deploy to testnet

npx hardhat run --network reitest -- scritps/deploy.ts

Deploy to mainnet

npx hardhat run --network rei -- scritps/deploy.ts

Verify Contract

Now you will find your deployed contract on rei scan

  1. Go to code tab and select Verify and Publish

2. Select Via flattened source code

3. Fill in the following

To get flattened code

npx hardhat flatten

Make sure that you do not have duplicate licenses.

Remove duplicate licenses and leave the one on top

Ex. // SPDX-License-Identifier: MIT

Last updated