Skip to content
pk910 edited this page May 22, 2023 · 2 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.

Can you sell me some goerli funds instead of this mining stuff?

No. Testnets are intended to be free.

There are a lot of problems arising from having a value on testnet tokens and I don't think it's a reasonable way to solve the distribution problem.

The introduction of a price on goerli funds lead to a massive speculation on GoETH price. There are currently more than 10M GoETH locked in the bridge / uniswap pools. These funds are not in circulation at all.
To get a feeling of that amount of funds: My faucet distributed a total of 500k GoETH over the whole last year. It could have distributed a lot more, but unfortunately everyone is out of funds and can't give anything to faucets...

And think about the legal aspect: Transferring funds on goerli is now a taxable event in most countries..

That's definitely not what testnets are intended for.

Besides of that Ideology: There is a decentralized market to trade goerli funds for real eth. Google for it and use it if you really want to buy testnet funds.
But be warned: Goerli is deprecated and will be turned off at the end of the year!