Skip to content

0xLisanAlGaib/mock-USDF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mock USDF

A mock implementation of USDF (USD stablecoin) for testing and development purposes. This repository provides two versions of mock USDF tokens with 6 decimals (matching real USDF):

  1. MockUSDF - LayerZero OFT (Omnichain Fungible Token) version for cross-chain functionality
  2. SimpleMockUSDF - Standard ERC20 version without LayerZero dependencies

Features

  • ✅ ERC20 token with 6 decimals (matches real USDF)
  • ✅ Mint/burn functions for unlimited testing tokens (owner only)
  • ✅ ERC20Permit for gasless approvals
  • ✅ Ownable for access control
  • ✅ LayerZero OFT support (MockUSDF version only)

Installation

# Clone the repository
git clone https://github.com/0xLisanAlGaib/mock-USDF.git
cd mock-USDF

# Install dependencies
forge install

Deployment

Option 1: Simple Mock USDF (Recommended for most testing)

Use this version for testing on any EVM chain, including those without LayerZero support:

# Deploy to Flow testnet
forge script script/DeploySimpleMockUSDF.s.sol --rpc-url flow-testnet --broadcast

# Deploy to any EVM chain
forge script script/DeploySimpleMockUSDF.s.sol --rpc-url <YOUR_RPC_URL> --private-key <YOUR_PRIVATE_KEY> --broadcast

Option 2: LayerZero OFT Version

Use this version on chains with LayerZero V2 support for cross-chain functionality:

# Deploy to Sepolia (LayerZero endpoint: 0x6EDCE65403992e310A62460808c4b910D972f10f)
forge script script/DeploymUSDF.s.sol --rpc-url https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY --broadcast

# Deploy to Base Sepolia (LayerZero endpoint: 0x6EDCE65403992e310A62460808c4b910D972f10f)
forge script script/DeploymUSDF.s.sol --rpc-url https://sepolia.base.org --broadcast

Usage

Both versions automatically mint 1 million mUSDF to the deployer address upon deployment.

Minting Additional Tokens

// As the contract owner, mint tokens to any address
token.mint(recipientAddress, amount);

// Example: Mint 100,000 mUSDF (remember 6 decimals)
token.mint(0x1234...5678, 100000 * 10**6);

Burning Tokens

// As the contract owner, burn tokens from any address
token.burn(fromAddress, amount);

// Example: Burn 50,000 mUSDF
token.burn(0x1234...5678, 50000 * 10**6);

Standard ERC20 Operations

// Transfer tokens
token.transfer(recipient, amount);

// Approve spending
token.approve(spender, amount);

// Transfer from (requires approval)
token.transferFrom(from, to, amount);

// Check balance
uint256 balance = token.balanceOf(address);

ERC20Permit (Gasless Approvals)

Both versions support ERC20Permit for gasless approvals via signature.

Testing

# Run tests
forge test

# Run tests with gas reporting
forge test --gas-report

# Run tests with verbosity
forge test -vvvv

Contract Addresses

Update this section with your deployed contract addresses:

  • Flow Testnet: 0x...
  • Sepolia: 0x...
  • Base Sepolia: 0x...

Important Notes

  • This is a MOCK token for testing purposes only
  • The owner can mint unlimited tokens
  • DO NOT use in production or with real funds
  • SimpleMockUSDF works on any EVM chain
  • MockUSDF requires LayerZero V2 deployment on the target chain

License

MIT

About

Mock USDF contracts fro testnet and emulator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors