REI Chain
Search
⌃K
▶

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. 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
​