explaingit

pk910/powfaucet

5,504TypeScriptAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

A self-hosted faucet for Ethereum test networks that uses proof-of-work browser mining and other anti-abuse modules to stop bots from draining the wallet before real developers can get test coins.

Mindmap

mindmap
  root((repo))
    What it does
      Distributes test coins
      Prevents bot abuse
      Spam prevention
    Protection Modules
      CAPTCHA challenges
      IP address tracking
      Mainnet balance check
      Gitcoin Passport
    Networks Supported
      Sepolia
      Hoodi
      Ephemery
    Setup
      Self-hosted
      Modular config
      Wiki docs
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run a coin faucet for your own Ethereum test network so developers can get test ETH without spending real money

USE CASE 2

Protect a public faucet from bots by requiring visitors to complete a browser computation before receiving coins

USE CASE 3

Mix and match anti-abuse modules such as CAPTCHA, IP limits, and Gitcoin Passport to suit your community

Tech stack

TypeScriptEthereumProof-of-WorkCAPTCHAGitcoin Passport

Getting it running

Difficulty · moderate Time to first run · 1h+

Requires depositing your own test coins into the faucet wallet. Full installation and configuration docs are in the project wiki.

AGPL v3, free to use and modify, but if you distribute a modified version you must share your source code under the same license.

In plain English

PoWFaucet is a tool for running a faucet on Ethereum test networks. A faucet is a website that gives away small amounts of fake cryptocurrency to developers so they can test their applications without spending real money. Ethereum has several test networks, parallel copies of the blockchain where the coins have no real value, and developers need these test coins to pay for transaction fees during development. The problem faucets face is that bots can flood them with requests and drain the wallet before real developers can get coins. PoWFaucet addresses this by offering multiple protection methods that make automated abuse harder. The most distinctive one is proof-of-work mining: visitors must run a computation in their browser that takes some time and CPU power, so mass-requesting coins becomes expensive in computing resources. This is why the word mining appears in the README, though the README is explicit that no new coins are created by this process. It is purely a spam-prevention mechanism. Other protection modules include CAPTCHA challenges, IP address tracking, checking whether the requester holds a balance on the real Ethereum mainnet, and integration with Gitcoin Passport, a system that lets people prove their identity through social accounts. The faucet is modular, so an operator can mix and match which protections to enable. The project is designed to be self-hosted. Whoever runs the faucet must deposit the coins they want to distribute into the faucet wallet themselves. The README links to a wiki with installation and configuration instructions. The author runs several public instances for Ethereum test networks including Sepolia, Hoodi, and Ephemery, all linked from the README. The project is licensed under the AGPL v3 open-source license and accepts bug reports and pull requests on GitHub.

Copy-paste prompts

Prompt 1
I want to set up PoWFaucet for the Sepolia Ethereum test network. Walk me through installing it on a Linux server and configuring the proof-of-work difficulty.
Prompt 2
How do I enable Gitcoin Passport integration in PoWFaucet so only users with a verified identity can claim test ETH?
Prompt 3
I'm running PoWFaucet and bots are still draining my wallet. Which combination of protection modules should I enable and how do I configure them?
Prompt 4
Help me add a CAPTCHA module to my existing PoWFaucet instance and set a per-IP daily claim limit.
Open on GitHub → Explain another repo

← pk910 on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.