Skip to content
pk910 edited this page May 19, 2023 · 3 revisions

What is this?

This project is a proof-of-work secured faucet for EVM based blockchains.

A testnet faucet is a tool that allows users to receive testnet funds for developing, testing or other stuff. Unfortunately a lot of faucets for the public ETH testnets have been drained by farmers and bots, which lead to a lack of working faucets and a really bad developer-experience.

This faucet tries to solve these problems by providing a all time reliable way to gather small amounts of funds. As a protection method, this faucet uses a proof-of-work based process, that prevents malicious users or bots from draining all the available funds.

For clarification: This faucet does NOT generate new coins with the "mining" process. It's just a protection method! If you want to run your own instance you need to transfer the mineable funds to the faucet wallet yourself!

What is the hashpower used for?

Simple answer: Nothing.

The hashpower is only used as a protection method. Basically users pay for the mined funds with the used processing power, which is a limiting factor for everyone.

In addition to that, IP based restrictions are enforced to avoid mass-mining from single entities.

What is the faucet technically working on?

The client is searching for "scrypt" hashes that meet specific criteria to be eligible for a reward.

On high level, a hash function is a cryptographic one-way function that generates a fixed-size output from a specific input.

Eg. hashing "test" with SHA256 results in "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08". Generating such a hash requires some computation work and (most important) you cannot revert the hash back to the input. You'd have to try any input and check the hash to find the correct input.

So, if I want you to give me the input for a hash that starts with "000000", you'd have to repeatedly try random inputs to find a hash that matches that. When using this faucet, the client is basically working on generating such hashes all the time and on all available CPU cores (worker count).

It uses "semi-random" inputs and checks the resulting hashes for specific criteria. In particular, the hashes need to start with a specific number of 0-bits (12 currently on goerli). When such a hash is found, the input is sent back to the server to get a small reward for it. The more hashes are found, the higher the reward gets (that's what you can see on the faucet page).

There is no way for the client to "craft" eligible inputs without hashing random inputs and checking the result, that's what it is "working on".

By sending in the eligible inputs, the client actually "proves" that it is doing the computation work to find them.

That's why it is called "Proof of Work".

Can I use my GPU to mine?

No. There is no real benefit of allowing GPU mining in this faucet.

As already explained: The hashpower is not used to compute anything useful that requires a huge amount of processing time. It's only a protection method that relies on the fact that every user is limited by the same technology.

If GPU mining in this faucet is enabled, it'd lead to a massive increased difficulty to get the same level of protection as before again. It'd also force everyone to use their GPU, which if not really fair given the immense performance gap of consumer to gaming/minging rigs ;)

The faucet is intentionally limited to CPU mining as this is most compatible with all major browsers and devices.

Can I increase my reward?

Yea. This faucet benefits users that proved their unique identity by singing stamps via Gitcoin Passport.

The gitcoin passport is a completely anonymous method to prove your identity. The faucet will never be able to identify the accounts that were used to sign the stamps.

Clone this wiki locally