Tutorial

Create custom USDC contract for testing on Ethereum Testnet / Polygon Mumbai network

I needed to test my contracts against USDC contract, specifically I needed ERC-721 mint being payable by USDC token, for which I needed to test locally if it works, because forking mainnet is time-consuming.

So I figured I will make super-easy ERC-20 token with 6 Decimals to fit my purpose.

I think this can be deployed easily in a matter of minutes and tested against. I also included function to mint some tokens by whoever come across this contract, because why not.

Of course do not deploy / use this on mainnet!

Pridal/a lubo dňa Št, 09/15/2022 - 06:11
Deploy the contract using Remix

Do not forget to add Ethereum Testnet to your Metamask / Wallet of your choice, or Polygon Mumbai, or BSC testnet etc.

USDC has 6 decimals! This is also why I needed to override decimals function to suit my needs.

Code is as follows:

// contracts/GLDToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

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

contract USDC is ERC20 {
    constructor() ERC20("USDC", "USDC") {}
	
	function mintTokens(uint _numberOfTokens) external {
		_mint(msg.sender, _numberOfTokens * (10 ** 6));
    }
	
	function decimals() public view virtual override returns (uint8) {
	  return 6;
	}
	
}

 

Other tokens to suit your tests

While googling how to do this I came across this thread, where someone actually deployed some wETH, DAI and some other clones on multiple testnets. It might suit your needs as well.

https://faucet.paradigm.xyz/

Might interest you

Tutorial
Sometimes template overrides does not work as expected. In this short tutorial we will try to print out Image URL's out in the views field…
Tutorial
Sometimes you need to make an adjustements to a cart, or just simply compare the order total or any other property of current user's cart.…

Recommended

Tutorial
1 views
While working on a fairly complex website with very complex views setup, including tens…
Tutorial
6 views
In this case we have two options, either we use hook_user_presave() or we can create new…
Tutorial
4 views
When using Swiftmailer under Drupal 8 / 9 it automatically sets the headers for sender to…
Tutorial
3 views
Yes, IOS / Safari is the new internet explorer. Amount of time I spend on debugging…
Tutorial
10 views
There is a very handy function in Drupal 8 / 9, allowing developers refresh view when…