{"id":22180190,"url":"https://github.com/block-core/bitcoin-custom-signet","last_synced_at":"2026-03-12T11:01:37.105Z","repository":{"id":265877642,"uuid":"896399744","full_name":"block-core/bitcoin-custom-signet","owner":"block-core","description":"bitcoin-custom-signet is a custom Bitcoin testnet that includes tools for creating and managing a Signet, along with a user interface and API for requesting test coins.","archived":false,"fork":false,"pushed_at":"2025-03-14T16:11:25.000Z","size":4482,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-01T19:16:17.077Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://faucet.angor.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/block-core.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-30T09:01:30.000Z","updated_at":"2025-03-14T16:11:30.000Z","dependencies_parsed_at":"2024-12-01T10:40:37.598Z","dependency_job_id":"f4c84024-ab1f-4f55-870b-3f153a3b7976","html_url":"https://github.com/block-core/bitcoin-custom-signet","commit_stats":null,"previous_names":["block-core/bitcoin-custom-signet"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/block-core%2Fbitcoin-custom-signet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/block-core%2Fbitcoin-custom-signet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/block-core%2Fbitcoin-custom-signet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/block-core%2Fbitcoin-custom-signet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/block-core","download_url":"https://codeload.github.com/block-core/bitcoin-custom-signet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247738724,"owners_count":20987896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-12-02T09:17:24.619Z","updated_at":"2026-03-12T11:01:37.026Z","avatar_url":"https://github.com/block-core.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bitcoin Custom Signet\n\nA custom Bitcoin [Signet](https://en.bitcoin.it/wiki/Signet) built for the [Angor](https://angor.io) project. It provides a private, controlled test network with 30-second block times and includes a faucet for distributing test coins.\n\n## Architecture\n\nThe system has three components:\n\n- **Bitcoin Signet Node** -- Dockerized `bitcoind` with a custom block-signing challenge and an integrated miner that produces blocks every 30 seconds.\n- **Faucet API** -- C#/.NET 8 ASP.NET Core Web API that talks directly to Bitcoin Core via JSON-RPC to send test coins.\n- **Faucet Frontend** -- Angular 19 SPA with Tailwind CSS that provides a web interface for requesting coins.\n\n## Network Details\n\n| Parameter | Value |\n|---|---|\n| Signet challenge | `512102a3f8184701a033e5f8faa295647374b0bbc868082240d6e7ad8e9ecb0d86e6d451ae` |\n| Genesis hash | `00000008819873e925422c1ff0f99f7cc9bbb232af63a077a480a3633bee1ef6` |\n| Block interval | ~30 seconds |\n| RPC port | 38332 |\n| P2P port | 38333 |\n| Known peer | `15.235.3.238:38333` |\n\n## Running the Signet Node\n\n```bash\ndocker-compose up -d\n```\n\nThis builds and starts the Bitcoin Core signet node with the custom challenge, miner, and peer configuration. Chain data is persisted in the `btc-data` Docker volume.\n\nTo enable mining on the node, set `MINERENABLED=1`:\n\n```bash\nMINERENABLED=1 docker-compose up -d\n```\n\n## Faucet\n\nThe faucet allows anyone to request test BTC on the Angor signet. It is fully self-bootstrapping -- on first startup it automatically creates the Bitcoin Core wallet, imports the faucet address, and rescans the blockchain. No operator intervention is required.\n\n### Faucet API\n\nThe API communicates directly with Bitcoin Core via JSON-RPC (no external indexer needed).\n\n**Endpoints:**\n\n| Method | Path | Description |\n|---|---|---|\n| `GET` | `/api/send/{address}/{amount?}` | Send test BTC to an address (default 0.001 BTC) |\n| `POST` | `/api/send` | Send test BTC via JSON body (`{ \"address\": \"...\", \"amount\": 0.01 }`) |\n| `GET` | `/api/network/status` | Network health: chain height, last block time, sync status |\n\n**Running the Faucet API:**\n\n```bash\ndocker-compose -f faucet-api/docker-compose.yml up -d\n```\n\nThe API starts on port 5500. It requires the signet node to be running and accessible on the `btcnetwork` Docker network.\n\nFor local development without Docker:\n\n```bash\ndotnet run --project faucet-api/faucet-api.csproj\n```\n\n### Faucet Frontend\n\n```bash\ncd faucet\nnpm install\nnpm start\n```\n\nThe dev server starts at `http://localhost:4200` and proxies `/api` requests to the faucet API.\n\n## Configuration\n\nThe faucet API is configured via environment variables or `faucet-api/appsettings.json`:\n\n| Variable | Default | Description |\n|---|---|---|\n| `Bitcoin__Mnemonic` | *(required)* | BIP39 mnemonic for the faucet wallet |\n| `Bitcoin__Network` | `TestNet` | Bitcoin network (TestNet for signet) |\n| `Bitcoin__FeeRate` | `10001` | Fee rate in satoshis per kilobyte |\n| `Bitcoin__ChangeAddressIndex` | `0` | BIP84 derivation index (`m/84'/1'/0'/0/{index}`) |\n| `Bitcoin__RpcUrl` | `http://localhost:38332` | Bitcoin Core RPC endpoint |\n| `Bitcoin__RpcUser` | `rpcuser` | RPC username |\n| `Bitcoin__RpcPassword` | `rpcpassword` | RPC password |\n| `Bitcoin__RpcWallet` | `custom_signet` | Bitcoin Core wallet name |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblock-core%2Fbitcoin-custom-signet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblock-core%2Fbitcoin-custom-signet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblock-core%2Fbitcoin-custom-signet/lists"}