FaucETH is a high-performance, community-funded faucet for Ethereum testnets. It's designed to provide developers with a fast and reliable source of testnet ETH for their dApps, smart contracts, and other blockchain projects. Our goal is to create a community-driven resource that is easy to use, easy to contribute to, and supports a wide range of EVM-compatible test networks.
- Multi-Network Support: Get testnet funds on 400+ test networks and counting.
- Progressive Network Discovery: The UI loads instantly and validates network health in the background, so you're never left waiting.
- IP and wallet address Rate Limiting: Request funds from up to 3 different networks within a 24-hour period.
- Anti-sybil protection Requires a reasonable Gitcoin Passport score to protect against bots
- Community Funded: Anyone can donate to the faucet to help other developers.
- Real-time Updates: See donation leaderboard, recent transactions and faucet statistics update live.
- Automatically Extensible: Add your testnet to ethereum-lists/chains and see it show up in FaucETH network list instantly
- Framework: Next.js (App Router)
- Language: TypeScript
- Database: MongoDB
- ODM: Mongoose
- State Management: Zustand
- UI: Tailwind CSS & shadcn/ui
- Blockchain Interaction: viem
Follow these steps to set up FaucETH on your local machine.
git clone https://github.com/ajayimike/fauceth.git
cd faucethCopy the example environment file:
cp .env.example .envNow, open the .env file and configure it with your own values
Install the necessary packages.
pnpm install-
Clean Up (If Needed)
If you have an existing MongoDB instance running:
# Stop any running MongoDB instances pkill mongod # Wait for processes to stop sleep 2
-
Create MongoDB data directory:
mkdir -p ~/mongodb/data/rs0 -
Start MongoDB with replica set:
mongod --replSet rs0 --port 27017 --dbpath ~/mongodb/data/rs0 --fork --logpath ~/mongodb/data/rs0/mongodb.log
-
Initialize replica set:
mongosh --eval 'rs.initiate({_id: "rs0", members: [{_id: 0, host: "localhost:27017"}]})'To stop MongoDB:
pkill -f "mongod.*rs0"
Requirement: Proper installation of MongoDB and MongoSh
-
Create MongoDB data directory:
mkdir C:\mongodb\data\rs0 C:\mongodb\data\rs1 -
Start MongoDB with replica set each on different terminals:
mongod --port 27018 --dbpath "C:\mongodb\data\rs0" --logpath "C:\mongodb\data\rs0\mongodb.log" --replSet rs0 --storageEngine=wiredTiger
mongod --port 27019 --dbpath "C:\mongodb\data\rs1" --logpath "C:\mongodb\data\rs1\mongodb.log" --replSet rs0 --storageEngine=wiredTiger
-
Initialize replica set:
mongosh --port 27019 --eval 'rs.initiate({_id: "rs0", members: [{ _id: 0, host: "localhost:27018" }, { _id: 1, host: "localhost:27019" },]})'
mongosh --port 27019 --eval 'rs.status()'To stop MongoDB on each running terminal:
Press Ctrl + C on every terminal server instance instance
PS: Set the MONGO_URI on your .env to mongodb://localhost:27018
You're all set! Start the app by running:
pnpm devOpen http://localhost:3000 in your browser to see the running application.
We welcome contributions of all kinds! Whether you're a developer, a designer, or just have an idea for a new feature, we'd love to have your input. Please check out our Contributing Guide to get started.
FaucETH is open-source software licensed under the MIT License.