A decentralized marketplace for launching and trading meme tokens using bonding curves.
This project implements a marketplace for meme tokens where:
- Users can launch new meme tokens
- Trade tokens using bonding curves
- Earn rewards through platform fees
- Support meta-transactions for gasless operations
- Token Launch: Create new meme tokens with customizable parameters
- Bonding Curves: Dynamic pricing based on supply and demand
- Meta Transactions: Execute transactions without paying gas fees
- Upgradeable Contracts: All contracts are upgradeable for future improvements
- Fee Distribution: Automatic distribution of fees to creators and platform
-
Marketplace Contract
- Central hub for managing tokens and curves
- Handles token launches and trading
- Implements meta-transaction support
-
Curve Factory
- Deploys new bonding curve contracts
- Manages curve parameters and configurations
-
Bonding Curves
- Implements bonding curve logic
- Handles token pricing and trading
-
Token Contracts
- ERC20 token implementation
- Customizable token parameters
The project uses two types of proxies:
- BeaconProxy: For curve contracts
- TransparentProxy: For marketplace and factory contracts
- Node.js
- Hardhat
- Ethers.js
This project contains smart contracts for STPL Pad.
It includes the following smart contracts:
- MarketPlace
- MemeToken
- BondingCurve
- BondingCurveFactory
- Beacon Contract (OpenZeppelin)
Two types of proxies are used in this project:
- BeaconProxy
- TransparentProxy
- Deployed using Transparent Proxy.
- Acts as the central hub for managing curve factories, curves, and tokens.
- Deployed using Transparent Proxy.
- A factory contract responsible for deploying curve contracts dynamically.
- Deployed using Beacon Proxy.
- Each curve instance adheres to a single logic contract managed via a beacon.
- Deployed as individual Upgradeable Proxies.
- Each token contract operates independently with upgradability support.
For More details refer to this document: https://docs.google.com/document/d/173w7GJqF8PkMcOsxmMhXvwfVIHImPZqOGr8tcd-p19w/edit?tab=t.0
You can use the following commands to interact with the project:
# install dependencies
npm run test
# Run tests
npm run test
npx hardhat test
# Run tests with gas reporting
REPORT_GAS=true npx hardhat test
# Start a local Hardhat node
npx hardhat node
# Deploy the contracts using Hardhat Ignition
npx hardhat ignition deploy ./ignition/modules/Lock.ts