This directory contains the smart contracts for the Forgeforward protocol, a comprehensive platform that provides token creation, locking, and airdrop distribution services.
smart-contracts/
├── contracts/ # Solidity smart contracts
│ ├── Airdrop/ # Airdrop distribution contracts
│ │ └── Distributor.sol # Main airdrop distributor contract
│ ├── lockFactory/ # Token locking system
│ │ ├── Factory.sol # Factory for creating token locks
│ │ └── TokenLock.sol # Individual token lock contract
│ └── tokenFactory/ # Token creation system
│ ├── Factory.sol # Factory for creating tokens
│ └── tokens/ # Token implementations
│ ├── FeeToken.sol # Token with transfer fees
│ └── Standard.sol # Standard ERC20 token
├── ignition/ # Hardhat Ignition deployment modules
│ └── modules/ # Deployment scripts
│ ├── AirdropDistributor.ts
│ ├── LockFactory.ts
│ ├── TokenFactory.ts
│ └── Counter.ts
├── scripts/ # Utility scripts
├── test/ # Test files
└── hardhat.config.ts # Hardhat configuration
- Standard Tokens: Create basic ERC20 tokens with customizable parameters
- Fee Tokens: Create tokens with configurable transfer fees
- Factory Pattern: Efficient deployment of multiple token instances
- Token Locking: Lock tokens for specified time periods
- Project Integration: Associate locks with project metadata and images
- Flexible Locking: Support for various lock durations and amounts
- Batch Distribution: Efficiently distribute tokens to multiple recipients
- Gas Optimization: Optimized for large-scale airdrop operations
- Solidity:
^0.8.28 - Hardhat:
^3.0.4- Development framework - OpenZeppelin:
^5.4.0- Security-focused contract library - Viem:
^2.37.3- TypeScript interface for Ethereum - Hardhat Ignition:
^3.0.2- Deployment management
- Node.js (v18 or higher)
- npm or yarn package manager
- Git
# Install dependencies
npm install
# Or using yarn
yarn installCreate a .env file in the root directory with the following variables:
# Sepolia Testnet
SEPOLIA_RPC_URL=your_sepolia_rpc_url
SEPOLIA_PRIVATE_KEY=your_private_key
# Somnia Testnet
SOMNIA_TESTNET_RPC_URL=your_somnia_testnet_rpc_url
SOMNIA_TESTNET_PRIVATE_KEY=your_private_key# Compile contracts
npx hardhat compile# Run all tests
npx hardhat test
# Run Solidity tests only
npx hardhat test solidity
# Run TypeScript tests only
npx hardhat test nodejs# Deploy to local Hardhat network
npx hardhat ignition deploy ignition/modules/TokenFactory.ts
npx hardhat ignition deploy ignition/modules/LockFactory.ts
npx hardhat ignition deploy ignition/modules/AirdropDistributor.ts# Set up private key (first time only)
npx hardhat keystore set SEPOLIA_PRIVATE_KEY
# Deploy to Sepolia
npx hardhat ignition deploy --network sepolia ignition/modules/TokenFactory.ts
npx hardhat ignition deploy --network sepolia ignition/modules/LockFactory.ts
npx hardhat ignition deploy --network sepolia ignition/modules/AirdropDistributor.ts# Deploy to Somnia Testnet
npx hardhat ignition deploy --network somniaTestnet ignition/modules/TokenFactory.ts
npx hardhat ignition deploy --network somniaTestnet ignition/modules/LockFactory.ts
npx hardhat ignition deploy --network somniaTestnet ignition/modules/AirdropDistributor.tsThe project supports multiple networks:
- hardhatMainnet: Local simulation of L1 mainnet
- hardhatOp: Local simulation of Optimism
- sepolia: Sepolia testnet
- somniaTestnet: Somnia testnet
- Address: Deployed via Ignition modules
- Events:
FeeTokenCreated: Emitted when a fee token is createdStandardTokenCreated: Emitted when a standard token is created
- Address: Deployed via Ignition modules
- Events:
LockCreated: Emitted when a token lock is created
- Address: Deployed via Ignition modules
- Features: Batch token distribution with gas optimization
The project includes comprehensive tests covering:
- Contract deployment and initialization
- Token creation (both standard and fee tokens)
- Token locking functionality
- Airdrop distribution
- Access control and permissions
- Edge cases and error handling
- Uses OpenZeppelin's audited contracts
- Implements proper access controls
- Follows Solidity best practices
- Comprehensive test coverage
For detailed contract documentation, refer to: