Smart Contracts

Introduction

ERC-20 tokens are fungible tokens commonly used for creating cryptocurrencies, governance tokens, and staking mechanisms. Taker Chain enables easy token deployment with Ethereum-compatible smart contracts via its EVM environment.

This tutorial covers deploying an ERC-20 contract on the Taker Chain TestNet using Remix IDE, a web-based development tool. OpenZeppelin's ERC-20 contracts are utilized for security and compliance.


Prerequisites

Before starting, ensure you have the following:

  • MetaMask installed and connected to the Taker Chain TestNet. For detailed instructions, see the Connect Your Wallet section.

  • A funded account with some test tokens (you can get them from the Taker Faucet). To learn how to get test tokens, check out the Test Tokens section.

  • Basic understanding of Solidity and fungible token concepts.


Create the ERC-20 Contract

To create the ERC-20 contract, follow the steps below:

1. Navigate to Remix IDE

Visit the Remix IDE to start developing your smart contract.

2. Create a New File

Click the Create new file button under the contracts folder and name your contract MyToken.sol.

3. Paste the ERC-20 Contract Code

Copy and paste the following code into the editor:

// SPDX-License-Identifier: MIT
// Compatible with OpenZeppelin Contracts ^5.0.0
pragma solidity ^0.8.22;

import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";

contract MyToken is ERC20, Ownable {
    constructor(address initialOwner)
        ERC20("MyToken", "MTK")
        Ownable(initialOwner)
    {}

    function mint(address to, uint256 amount) public onlyOwner {
        _mint(to, amount);
    }
}

Key Components of the Contract

Contract Imports

  • ERC20.sol: Implements core functionality for fungible tokens, including transfers, approvals, and balance tracking.

  • Ownable.sol: Provides basic authorization control, ensuring only the contract owner can mint new tokens.

Constructor Parameters

  • initialOwner: Sets the address that has administrative rights over the contract.

  • "MyToken": The full name of your token.

  • "MTK": The symbol representing your token in wallets and exchanges.

Key Functions

  • mint(address to, uint256 amount): Allows the contract owner to create new tokens for any address. The amount should include 18 decimals (e.g., 1 token = 1000000000000000000).

  • Inherited Standard ERC-20 Functions:

    • transfer(address recipient, uint256 amount): Sends a specified amount of tokens to another address.

    • approve(address spender, uint256 amount): Grants permission for another address to spend tokens on behalf of the token owner.

    • transferFrom(address sender, address recipient, uint256 amount): Transfers tokens from one address to another, if previously approved.

    • balanceOf(address account): Returns the token balance of a specific address.

    • allowance(address owner, address spender): Checks how many tokens an address is allowed to spend on behalf of another address.


Tip

Use the OpenZeppelin Contracts Wizard to quickly generate customized smart contracts. Simply configure your contract, copy the generated code, and paste it into Remix IDE for deployment. Below is an example of an ERC-20 token contract created with it:

(Insert screenshot of OpenZeppelin Contracts Wizard showing ERC-20 contract configuration.)


Compile the Contract

Compiling transforms your Solidity source code into bytecode that can be deployed on the blockchain. Follow the instructions below:

1. Select the Solidity Compiler Plugin

From the left panel in Remix IDE, select the Solidity Compiler plugin.

2. Click the Compile Button

Click the Compile MyToken.sol button.

3. Verify Compilation Success

If the compilation succeeds, you’ll see a green checkmark in the Solidity Compiler icon.


Deploy the Contract

Deployment publishes your compiled smart contract to the blockchain, making it permanently available for interaction.

1. Select the Deploy & Run Transactions Plugin

From the left panel in Remix IDE, select the Deploy & Run Transactions plugin.

2. Configure Deployment Settings

  • From the ENVIRONMENT dropdown, select Injected Provider - MetaMask (or your wallet provider).

  • From the ACCOUNT dropdown, select the account you want to use for deployment.

3. Set Contract Parameters

Enter the address that will own the deployed token contract.

4. Deploy the Contract

Click the Deploy button to initiate the deployment. MetaMask will pop up—review the transaction details and click Approve to deploy your contract.

5. Verify Deployment Success

If the deployment succeeds, you’ll see the transaction details in the terminal, including the contract address and deployment transaction hash.


Interact with Your ERC-20 Contract

Once deployed, you can interact with your contract through Remix IDE:

1. Locate Your Contract

Find your contract under Deployed/Unpinned Contracts, and click it to expand the available methods.

2. Mint New Tokens

To mint tokens:

  • Expand the mint function.

  • Enter:

    • Recipient address: The address to which tokens will be sent.

    • Amount: Remember to add 18 zeros for 1 whole token (e.g., 1000000000000000000 for 1 token).

  • Click Transact.

  • Approve the transaction in MetaMask.

3. Verify Minting Success

If the transaction succeeds, you’ll see the output in the terminal.


Other Common Functions

  • balanceOf(address): Check the token balance of any address.

  • transfer(address to, uint256 amount): Send tokens to another address.

  • approve(address spender, uint256 amount): Allow another address to spend your tokens.

Feel free to explore and interact with other contract functions using the same process: select the method, provide the required parameters, and confirm transactions through MetaMask when prompted.


Start building and deploying ERC-20 tokens on Taker Chain today!

Last updated