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

No packages published