{"id":37850859,"url":"https://github.com/gnolang/faucet","last_synced_at":"2026-01-16T16:12:18.784Z","repository":{"id":195214256,"uuid":"691727690","full_name":"gnolang/faucet","owner":"gnolang","description":"A minimal and configurable Gno.land / TM2 faucet","archived":false,"fork":false,"pushed_at":"2025-09-01T15:17:18.000Z","size":236,"stargazers_count":7,"open_issues_count":1,"forks_count":4,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-09-01T16:22:36.398Z","etag":null,"topics":["faucet","gnolang","tm2"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gnolang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-09-14T19:01:52.000Z","updated_at":"2025-09-01T15:16:03.000Z","dependencies_parsed_at":"2023-09-17T02:38:13.328Z","dependency_job_id":"44db0bb2-07fc-4092-b21c-157542237400","html_url":"https://github.com/gnolang/faucet","commit_stats":null,"previous_names":["gnolang/faucet"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/gnolang/faucet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnolang%2Ffaucet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnolang%2Ffaucet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnolang%2Ffaucet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnolang%2Ffaucet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gnolang","download_url":"https://codeload.github.com/gnolang/faucet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnolang%2Ffaucet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479488,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["faucet","gnolang","tm2"],"created_at":"2026-01-16T16:12:18.697Z","updated_at":"2026-01-16T16:12:18.770Z","avatar_url":"https://github.com/gnolang.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch2 align=\"center\"\u003e⚛️ Tendermint2 Faucet ⚛️\u003c/h2\u003e\n\n## Overview\n\n`faucet` is a versatile command-line interface (CLI) tool and library designed to effortlessly deploy a faucet server\nfor Gno Tendermint 2 networks.\n\n### Default endpoint (root)\n\nThe `faucet` adopts the [JSON-RPC 2.0 standard](https://www.jsonrpc.org/specification) for requests / responses.\n\nBy default, the `/` endpoint is the home of the `drip` method, to handle faucet drips. The first parameter is the\nbeneficiary address, and the second one is the string representation of the drip amount (`std.Coins`).\n\nThis can of course be overwritten with custom handling logic by the faucet creator (see below).\n\n```json\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 0,\n  \"method\": \"drip\",\n  \"params\": [\n    \"g1e6gxg5tvc55mwsn7t7dymmlasratv7mkv0rap2\",\n    \"1000ugnot\"\n  ]\n}\n```\n\n## Key Features\n\n### Customizability\n\nThis faucet is highly customizable, allowing you to tailor it to the specific needs of your Tendermint 2 network. You\ncan easily configure token types, distribution limits, and other parameters to suit your requirements.\n\n### Batch JSON Request Support\n\nThe faucet supports batch JSON requests, making it efficient for mass token distribution. You can submit multiple\nrequests in a single batch, reducing the overhead of individual requests.\n\n### Extensibility\n\nThe faucet is designed with extensibility in mind. You can extend its functionality through middleware and custom\nhandlers. This means you can integrate additional features or connect it to external systems seamlessly, like a\nrate limiting system.\n\n## Getting Started\n\n### As a binary\n\nTo get started with the Tendermint 2 Faucet, follow these steps:\n\n1. Clone this repository to your local machine:\n\n```bash\ngit clone github.com/gnolang/faucet\n```\n\n2. Build out the binary\n\nTo build out the binary, run the following command:\n\n```bash\nmake build\n```\n\n3. Run the faucet\n\nTo run the faucet, start the built binary:\n\n```bash\n./build/faucet --mnemonic \"\u003cfaucet_account_mnemonic\u003e\"\n```\n\nThe provided mnemonic will be used to derive accounts which will be used to serve\nfunds to users. Make sure that the accounts derived from it are well funded.\n\nIt should print something like the following. (Note the port number at the end.)\n\n```\n2024-01-11T12:47:27.826+0100\tINFO\tcmd/logger.go:17\tfaucet started at [::]:8545\n```\n\n4. To send coins to a single account, in a new terminal enter the following (change to the correct recipient address):\n\n```bash\ncurl --location --request POST 'http://localhost:8545' --header 'Content-Type: application/json' --data '{ \"jsonrpc\": \"2.0\", \"id\": 0, \"method\": \"drip\", \"params\": [ \"g1e6gxg5tvc55mwsn7t7dymmlasratv7mkv0rap2\", \"1000ugnot\" ] }'\n```\n\n5. To ensure the faucet is listening to requests, you can ping the health endpoint (returns a simple status 200):\n\n```bash\ncurl --location --request GET 'http://localhost:8545/health'\n```\n\n### As a library\n\nTo add `faucet` to your Go project, simply run:\n\n```bash\ngo get github.com/gnolang/faucet\n```\n\nTo use the faucet, you can set it up as such:\n\n```go\npackage main\n\nimport (\n\t// ...\n\t\"context\"\n\n\t\"github.com/gnolang/faucet/client/http\"\n\t\"github.com/gnolang/faucet/estimate/static\"\n)\n\nfunc main() {\n\t// Create the faucet\n\tf, err := NewFaucet(\n\t\tstatic.New(...), // gas estimator\n\t\thttp.NewClient(...), // remote address \n\t)\n\n\t// The faucet is controlled through a top-level context\n\tctx, cancelFn := context.WithCancel(context.Background())\n\n\t// Start the faucet\n\tgo f.Serve(ctx)\n\n\t// Close the faucet\n\tcancelFn()\n}\n\n```\n\n## What kind of extensibility?\n\n### Middleware\n\nMiddleware functions can be added to extend the faucet's functionality. For example, you can add middleware to\nauthenticate users, log requests, or implement rate limiting.\n\n### Custom Handlers\n\nCustom request handlers can be created to handle specific actions or integrate with external systems. For instance, you\ncan create a custom handler to trigger additional actions when tokens are distributed, such as sending notifications.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnolang%2Ffaucet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnolang%2Ffaucet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnolang%2Ffaucet/lists"}