Local Signet Stack for Sparrow Wallet

Bitcoin Core v28 + electrs v0.10.9 on Windows via Docker

What is this?

A local signet stack for use with Sparrow Wallet – ideal for teaching and testing without relying on third-party Electrum servers.

This setup gives you a complete Bitcoin testing environment running on your own machine. The signet network uses fake Bitcoin with no real-world value, making it perfect for classroom demonstrations, wallet testing, and practicing Bitcoin workflows without risk.

Use Cases

Overview

This setup runs Bitcoin Core and electrs in Docker containers. Sparrow Wallet connects to your local node on port 60601.

Disk space required: ~30 GB
Sync time: 15–30 minutes

Prerequisites

Step 1 – Create project files

Open PowerShell, create the project folder, and navigate into it:

mkdir ~/signet-stack
cd ~/signet-stack

Create a file named docker-compose.yml with the following content:

services:
  bitcoind:
    image: bitcoin/bitcoin:28
    container_name: signet-bitcoind
    restart: unless-stopped
    volumes:
      - bitcoin_data:/home/bitcoin/.bitcoin
    command:
      - -signet
      - -server=1
      - -rpcallowip=0.0.0.0/0
      - -rpcbind=0.0.0.0
      - -txindex=1
      - -zmqpubrawblock=tcp://0.0.0.0:28332
      - -zmqpubrawtx=tcp://0.0.0.0:28333
    ports:
      - "38332:38332"
      - "38333:38333"
      - "28332:28332"
      - "28333:28333"

  electrs:
    build:
      context: .
      dockerfile: Dockerfile.electrs
    container_name: signet-electrs
    restart: unless-stopped
    user: "0"
    depends_on:
      - bitcoind
    command:
      - --network=signet
      - --daemon-rpc-addr=bitcoind:38332
      - --daemon-p2p-addr=bitcoind:38333
      - --electrum-rpc-addr=0.0.0.0:60601
      - --db-dir=/data
      - --log-filters=INFO
      - --cookie-file=/bitcoin/signet/.cookie
    volumes:
      - bitcoin_data:/bitcoin
      - electrs_data:/data
    ports:
      - "60601:60601"

volumes:
  bitcoin_data:
  electrs_data:

Step 2 – Create Dockerfile.electrs

In the same ~/signet-stack folder, create a file named Dockerfile.electrs with the following content:

FROM rust:1.85-slim AS builder
RUN apt-get update && apt-get install -y clang cmake libclang-dev
RUN cargo install electrs --version 0.10.9
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y libssl3 ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/local/cargo/bin/electrs /usr/local/bin/electrs
ENTRYPOINT ["electrs"]

Step 3 – Build and start the stack

From ~/signet-stack, run:

docker compose up -d --build

The first run will take 3–5 minutes as it compiles electrs from Rust source. Subsequent starts are instant.

Step 4 – Monitor sync progress

Watch Bitcoin Core sync the signet chain:

docker logs -f signet-bitcoind

You will see Synchronizing blockheaders followed by UpdateTip messages. Sync is complete when you see progress=1.000000.

The signet chain is ~310,000 blocks and syncs in roughly 15–30 minutes.

Check quickly at any time with:

docker logs signet-bitcoind --tail 5

Step 5 – Monitor electrs indexing

Once Bitcoin Core is synced, watch electrs index the chain:

docker logs -f signet-electrs

Indexing is complete when you see finished full compaction. This typically takes a few minutes after Bitcoin Core reaches tip.

Step 6 – Connect Sparrow Wallet

In Sparrow Wallet running in signet mode (launch with -n signet flag, or switch network via Tools → Restart In → Signet):

  1. Go to File → Preferences → Server
  2. Select Private Electrum
  3. Set:
    • URL: 127.0.0.1
    • Port: 60601
    • Use SSL: off
  4. Click Test Connection

You should see a successful connection with the server banner:
Welcome to electrs 0.10.9 (Electrum Rust Server)!

Daily use

After initial setup, the signet stack containers are configured to auto-start whenever Docker Desktop launches (due to the restart: unless-stopped policy).

Simplest method:

Alternative methods:

Use the Docker Desktop GUI to start/stop individual containers, or use command-line from ~/signet-stack:

Start the stack:

docker compose up -d

Stop the stack:

docker compose down

Note: The Bitcoin Core chain data and electrs index are stored in Docker named volumes and persist between restarts. You won't need to resync from scratch – the node will catch up on blocks mined while it was offline (usually takes 1-2 minutes).

Getting Signet Coins

To test transactions, you'll need signet coins from a faucet. These coins have no real-world value and are only for testing.

Get a receive address from Sparrow:

  1. In Sparrow Wallet, go to the Receive tab
  2. Copy your signet address

Request coins from the faucet:

Visit bitcoinsignetfaucet.com, paste your address, and request coins.

Note: The faucet has rate limits. If your request doesn't go through, check the faucet status or try again later.

If the faucet is temporarily unavailable, search for "bitcoin signet faucet" to find alternative services.

Learning with Padawan Wallet

Want guided tutorials alongside your signet node? Padawan Wallet is a mobile Bitcoin learning app built for education.

What you can practice:

Padawan runs on signet and includes 9 built-in tutorials. It automatically gives you signet coins when you first start the app, making it perfect for classroom demonstrations.

Troubleshooting

electrs fails with "cookie file not found"
Bitcoin Core may still be starting up. Wait 30 seconds and check docker logs signet-bitcoind --tail 5 to confirm it is running.

Sparrow shows "Connection timed out"
Confirm the stack is running with docker ps and that both signet-bitcoind and signet-electrs show as Up.

docker compose not found
Make sure Docker Desktop is running – look for the whale icon in the system tray.

Need help? Reach out to us on WhatsApp, Telegram or X if you get stuck at any step.

← Back to Learn