Welcome to the first mission of Scroll Dev Challenge!
All of you are probably familiar with tokens like WETH, USDT, USDC, and many others. Did you know that all of these tokens are designed by following some standard rules?
Let's get started! 💪
Your task is to:
- Develop your own ERC20 token.
- Deploy it to Scroll Sepolia Testnet.
- And finally verify it.
If you need help with using a smart contract framework for completing this challenge, the Level Up: Build with Foundry guide might be a helpful start!
If you get stuck, feel free to ask for help in Level Up Telegram group.
1. START WITH THE GUIDE IN LEVEL UP
Guide: Begin your journey with the guide. Here you'll find the basic functionality of ERC20 tokens and how to get started.
2. CLONE THIS REPO AND COMPLETE THE CHALLENGE
Assignment: Complete this challenge. Put your knowledge to the test by cloning this repo and completing this challenge by deploying your own ERC20 token and deploying it to Scroll Sepolia Testnet with Foundry.
Level Up: ERC20 Challenge Recap
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import "./ERC20.sol";
// Define your ERC20 token contract
contract MyToken is ERC20 {
// Constructor that mints the initial supply to the deployer of the contract
constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
// Mint the initial supply of tokens to the deployer's address
}
// Function to mint new tokens to a specified address
function mint(address to, uint256 amount) public {
// Implement the mint function using the _mint internal function
}
// Function to burn tokens from a specified address
function burn(address from, uint256 amount) public {
// Implement the burn function using the _burn internal function
}
// Function to transfer tokens from the caller's address to a specified address
function transfer(address to, uint256 amount) public override returns (bool) {
// Implement the transfer function using the _transfer internal function
}
// Function to approve an address to spend a certain amount of tokens on behalf of the caller
function approve(address spender, uint256 amount) public override returns (bool) {
// Implement the approve function using the _approve internal function
}
// Function to transfer tokens from one address to another using an allowance
function transferFrom(address from, address to, uint256 amount) public override returns (bool) {
// Implement the transferFrom function using the _transfer and _approve internal functions
}
}
This mission will be the first step of your smart contract development journey. You will use this practice in the upcoming missions a lot.
Remember, the journey is as rewarding as the destination. Embrace the mission, and let's revolutionize the world of finance together!