paritytech / polkadot-testnet-faucet

https://faucet.polkadot.io/
MIT License
35 stars 34 forks source link

Generic Faucet for Substrate based chains

GitHub Issue Sync

Development

Setup dependencies, git hooks and generate papi

yarn install
yarn generate:papi
yarn simple-git-hooks

start local database:

yarn dev:db

run migrations:

yarn build
yarn migrations:run

creating migrations:

To launch a hot-reloading dev environment

yarn dev

Environment variables

Definition with explanation is in ./env.faucet.config.json

Copy example file to real env and change its values:

$ cp example.env .env

End-to-end tests

Please refer to the E2E Readme.

Example requests:

curl -X POST \
  localhost:5555/drip/web \
  -H "Content-Type: application/json" \
  -d '{"address": "xxx", "parachain_id": "1002", "recaptcha": "captcha_token"}'

In React:

import ReCAPTCHA from "react-google-recaptcha";

(...)

const [captcha, setCaptcha] = useState<string | null>(null)

(...)

<ReCAPTCHA
  sitekey="xxx"
  onChange={setCaptcha}
/>

(...)

const request = async () => {
  const body = {
    address: "xxx",
    parachain_id: "1002",
    recaptcha: captcha_token
  }

  const fetchResult = await fetch("http://localhost:5555/drip/web", {
    method: "POST", body: JSON.stringify(body), headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
  })
  const result = await fetchResult.json()
}

Where the captcha_token is a recaptcha token created with a sitekey is matching the recaptcha secret specified in SMF_BACKEND_RECAPTCHA_SECRET.

For testing, you can use a public, testing recaptcha secret which will allow any captcha token to pass.

# Public testing secret, will accept all tokens.
SMF_BACKEND_RECAPTCHA_SECRET="6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe"

Helm chart

An official substrate-faucet helm chart is available for deploying the faucet.

Misc: