SatoshiShield
Contribute

SatoshiShield Contributor Guide

How to Research, Verify, and Submit Domains

Version 1.4 · May 2026 github.com/cypherpilgrim/satoshishield


This guide teaches you everything you need to research, verify, and submit domains to the SatoshiShield Bitcoin Privacy DNS Blocklist. No prior security research experience is required. Every skill in this guide can be learned in an afternoon and applied in minutes per domain.

1. Introduction

SatoshiShield is a community-maintained project. Its quality depends entirely on the people who contribute to it. The maintainers cannot monitor every Bitcoin wallet, every analytics firm, and every new surveillance API that appears. The community can.

This guide teaches you one core skill: how to determine whether a domain belongs on the SatoshiShield blocklist. That skill has three components:

  • Finding domains — discovering candidates through wallet traffic analysis, source code inspection, and community intelligence

  • Verifying domains — confirming who owns a domain and what privacy harm it causes

  • Submitting domains — documenting your findings and opening a pull request on GitHub

You do not need to be a security researcher. You do not need to be a developer. You need to be curious, methodical, and willing to follow a process. This guide provides that process.

2. The Inclusion Standard

Before you research any domain, understand the standard it must meet to be included in SatoshiShield. Every domain in the blocklist must satisfy at least one of the following criteria:

Criteria Description Example
Blockchain Analytics Operated by a company whose primary business is correlating Bitcoin addresses with real-world identities chainalysis.com — Chainalysis builds IP-to-address correlation databases
Deanonymization Platform A platform that publicly markets the ability to attach real identities to Bitcoin addresses intel.arkm.com — Arkham Intelligence markets identity linking as a feature
Address Screening API An API endpoint used to score Bitcoin addresses for risk or compliance purposes api.elliptic.co — Elliptic's screening API reveals which addresses you query
Wallet Telemetry A domain receiving usage analytics, crash reports, or behavioral data from Bitcoin wallet software analytics.walletapp.com — logs which features you use and how often
KYC/AML Intelligence A compliance service used to flag Bitcoin transactions associated with privacy tools scorechain.com — flags CoinJoin transactions as high risk
IP-Logging Infrastructure Any endpoint that logs the querying IP address against Bitcoin address or transaction data markets.chainalysis.com — price API that logs IP against query timing

A domain must NOT be included if blocking it would impair legitimate Bitcoin network functionality, wallet software operation, or access to open-source privacy-respecting services. When in doubt, do not submit — ask in a GitHub issue first.

3. Finding Candidate Domains

There are four primary methods for discovering domains that may belong on the SatoshiShield blocklist. Use whichever methods match your skills and tools.

3.1 Method A — Pi-hole Query Log Review

If you run Pi-hole on your home network, your query logs are a gold mine. Every DNS query made by every device on your network is recorded. Bitcoin wallet apps, mobile wallets, browser extensions, and price trackers all leave traces here.

Step 1 — Access Pi-hole query logs

Log into your Pi-hole admin UI and navigate to Query Log. Filter by a device you know runs Bitcoin wallet software.

Step 2 — Identify unfamiliar domains

Look for domains you do not recognize, particularly those with patterns like:

  • api., data., analytics., tracking., metrics., telemetry.

  • Domains that appear shortly after you open your Bitcoin wallet

  • Domains with naming patterns similar to known analytics firms

  • Domains you have never visited directly in a browser

Step 3 — Note the domain for verification

Write down any suspicious domains. Do not submit them yet — verification comes in Section 4.

Tip: Pi-hole's query log can be filtered by time. Open your Bitcoin wallet, wait 60 seconds, then check what domains were queried in that window. Anything you do not recognize is worth investigating.

3.2 Method B — Wallet Traffic Capture with Wireshark

Wireshark captures all network traffic from a device or network interface. This reveals every connection your Bitcoin wallet makes — not just DNS queries but full connection details.

Step 1 — Install Wireshark

Download from wireshark.org. Available for macOS, Windows, and Linux.

Step 2 — Start a capture

Open Wireshark and select your active network interface. Click the blue shark fin to start capturing.

Step 3 — Open your Bitcoin wallet

With Wireshark capturing, open your Bitcoin wallet app. Let it run for 2-3 minutes. Close it.

Step 4 — Filter DNS queries

In Wireshark's filter bar, type:

dns

This shows only DNS queries. Look for domains that appear after the wallet opened that you do not recognize.

Step 5 — Filter by wallet process (advanced)

To isolate only traffic from the wallet process, use display filters:

dns.qry.name contains "analytics"
dns.qry.name contains "chainalysis"
dns.qry.name contains "tracking"

Step 6 — Export results

Go to File > Export Packet Dissections > As CSV. This gives you a searchable list of all DNS queries for later analysis.

3.3 Method C — Wallet Source Code Inspection

Many Bitcoin wallets are open source. Reading the source code reveals API endpoints that may not be visible in network traffic (especially if they use certificate pinning or hardcoded IPs).

Step 1 — Find the repository

Most popular wallets have public GitHub repositories. Search for the wallet name on github.com.

Step 2 — Search for API endpoints

Use GitHub's code search within the repository. Search for:

https://api
analytics
telemetry
tracking
mixpanel
amplitude
segment

Step 3 — Review network configuration files

Look for files named: config.js, constants.js, api.js, endpoints.js, network.js, services.js. These often contain hardcoded API URLs.

Step 4 — Check package dependencies

Look at package.json (JavaScript wallets) or requirements.txt / Podfile (mobile wallets). Third-party analytics packages like Mixpanel, Amplitude, or Segment indicate telemetry.

Tip: GitHub's search syntax supports repository-scoped searches. Use 'repo:username/wallet-name analytics' to search only within that repository.

3.4 Method D — Community Intelligence

The Bitcoin privacy community actively researches and discusses surveillance infrastructure. Stay connected to find new domains:

  • Monitor the SatoshiShield GitHub Issues tab — other contributors post findings there

  • Follow Bitcoin privacy researchers on Nostr and Twitter/X

  • Read privacy-focused Bitcoin forums and subreddits

  • Watch for announcements from Chainalysis, Elliptic, and TRM Labs — new product launches mean new domains

  • Monitor job postings from analytics firms — new API products appear in job descriptions before launch

4. Verifying a Domain

Finding a suspicious domain is only the first step. Before submitting, you must verify three things:

  • Who owns this domain?

  • What specific privacy harm does it cause?

  • Does blocking it harm legitimate Bitcoin functionality?

This section walks through each verification step using free tools available to anyone.

4.1 Step 1 — WHOIS Lookup

WHOIS reveals the registered owner of a domain, when it was registered, and who hosts it.

How to run a WHOIS lookup

Option A — Browser: Go to whois.domaintools.com or lookup.icann.org and enter the domain.

Option B — Command line:

whois example-suspicious-domain.com

What to look for

Field What It Tells You Red Flag
Registrant Organization The company that registered the domain Matches a known surveillance firm name or subsidiary
Registrant Email Contact email for the domain owner Corporate email domain matching known analytics firm
Creation Date When the domain was registered Recently registered domains may indicate infrastructure rotation
Name Servers DNS provider Same name servers as known surveillance firm domains suggest shared infrastructure
Registrar Domain registrar Less informative but can confirm corporate registration patterns

Many surveillance firms use privacy protection services that hide registrant details. If WHOIS returns a privacy service, proceed to SSL certificate inspection and SecurityTrails lookup.

4.2 Step 2 — SSL Certificate Inspection

SSL certificates reveal the organization name and sometimes list related domains (Subject Alternative Names). This is often more revealing than WHOIS.

How to inspect an SSL certificate

Option A — Browser: Navigate to https://[domain] and click the padlock icon > Certificate > Details.

Option B — crt.sh (certificate transparency logs):

Go to: https://crt.sh/?q=suspicious-domain.com

This shows every SSL certificate ever issued for the domain and all related subdomains.

Option C — Command line:

echo

What to look for

  • Organization (O) field in the certificate — often shows the real company name

  • Subject Alternative Names — lists all domains on the same certificate, revealing related infrastructure

  • Issuer — certificates issued by the same CA as known surveillance firm domains suggest shared infrastructure

4.3 Step 3 — SecurityTrails or PassiveDNS

These services show the historical DNS records for a domain — what IPs it has pointed to, what other domains have pointed to the same IPs, and how the domain's infrastructure has changed over time.

SecurityTrails

Go to: securitytrails.com/domain/[suspicious-domain.com]/dns

Free tier available. Shows current and historical DNS records, related domains, and IP history.

PassiveDNS

Go to: passivedns.mnemonic.no or use VirusTotal's passive DNS feature.

Search the suspicious domain to see what IPs it has resolved to over time. Search known surveillance firm IPs to see what other domains have pointed to the same infrastructure.

What to look for

  • The suspicious domain and a known surveillance firm domain resolving to the same IP — strong evidence of shared infrastructure

  • The suspicious domain appearing in subdomain lists of known analytics firms

  • Recent changes in DNS records suggesting the domain is being prepared for a new use

4.4 Step 4 — Behavioral Evidence

Step 4 requires behavioral evidence confirming the specific surveillance function named in the harm field. The appropriate method depends on the domain type. For domains whose surveillance behavior is not self-evident — suspected, dual-use, or camouflaged domains, typically Tier 2 — observe the behavior directly with URLScan.io. For domains operated by firms that openly document their surveillance functions, typically Tier 1, and especially for authentication-gated API endpoints that an unauthenticated sandbox visit cannot reach, the vendor's own published documentation is the appropriate evidence (see "Vendor documentation as behavioral evidence" below). URLScan.io visits a URL in a sandboxed browser and records every connection made — DNS queries, HTTP requests, JavaScript calls, and cookies. It is the most useful tool for revealing what a domain does when that behavior must be observed rather than read from the vendor.

How to use URLScan.io

1. Go to urlscan.io

2. Enter the suspicious domain URL and click Scan

3. Wait 30-60 seconds for the scan to complete

4. Review the results

What to look for in URLScan results

Tab What It Shows Look For
Summary High-level overview of what the page does References to analytics, tracking, or blockchain data
HTTP All HTTP requests made by the page API calls to known surveillance domains or unfamiliar endpoints
Contacts Domains and IPs contacted during page load Known surveillance firm domains appearing as dependencies
DOM JavaScript variables and objects in the page Variable names like 'analytics', 'tracker', 'chainalysis'
Links All links found on the page Links to known surveillance firm documentation or dashboards

Vendor documentation as behavioral evidence

When a domain is operated by a firm that openly documents its surveillance functions, the vendor’s own published API or product documentation is acceptable as Step 4 behavioral evidence in place of a URLScan.io scan. This is the appropriate method for most Tier 1 firms, and the only workable method for authentication-gated endpoints, which an unauthenticated sandbox visit cannot reach. The documentation must be published by the vendor, must explicitly confirm the specific behavior cited in the harm field — for example, logging the querying IP against the queried address, risk scoring, or attribution — and must be linked as the source. For domains that do not openly document surveillance behavior (suspected, dual-use, or camouflaged domains), vendor documentation does not suffice and a URLScan.io scan or traffic capture is required.

4.5 Step 5 — Confirm the Privacy Harm

At this point you should have enough information to articulate the specific privacy harm. Ask yourself:

  • Does this domain receive Bitcoin address queries that it correlates with IP addresses?

  • Does this domain receive telemetry from wallet software that reveals Bitcoin usage patterns?

  • Does this domain belong to an organization that sells blockchain intelligence to third parties?

  • Does blocking this domain prevent a connection that reveals information about the user's Bitcoin activity?

If you can answer yes to any of these questions with supporting evidence, the domain meets the inclusion criteria.

4.6 Step 6 — Confirm Blocking Does Not Break Bitcoin Functionality

This is the most important safety check. Before submitting, verify that blocking the domain does not impair legitimate Bitcoin wallet operation.

How to test

5. Add the domain to your Pi-hole blocklist temporarily

6. Open your Bitcoin wallet and test all normal functions: checking balance, sending a test transaction, receiving, checking transaction history

7. If everything works normally, blocking the domain is safe

8. If wallet functions break, investigate further — the domain may serve a dual purpose

If the wallet works normally with the domain blocked, the domain is safe to submit. A surveillance API failing silently is by design — it should not break wallet functionality. If blocking the domain breaks wallet functionality, do NOT submit it. Open a GitHub issue instead to discuss the dual-use concern with maintainers.

5. Documenting Your Finding

Every domain submission requires documentation. This is not bureaucracy — it is what allows future contributors to verify your work, update entries when things change, and remove entries if they become incorrect.

5.1 The domains.csv Format

All domain documentation is stored in domains.csv in the repository root. Each row represents one domain entry. The category field takes one of the canonical values listed below; the inclusion criteria named in Section 2 are descriptive, and they map to these category values (for example, the “Deanonymization Platform” criterion corresponds to the Deanonymization category, and “IP-Logging Infrastructure” to IP Logging).

The CSV columns are:

Column Description Example
domain The exact domain to block (use wildcard prefix for all subdomains) *.chainalysis.com
organization The company or entity operating the domain Chainalysis Inc.
category One of: Blockchain Analytics, Deanonymization, Wallet Telemetry, KYC/AML Compliance, Address Screening, IP Logging, Surveillance Analytics Blockchain Analytics
tier 1 for confirmed surveillance harm; 2 for entries needing further community verification 1
harm One sentence describing the specific privacy harm Logs querying IP addresses against Bitcoin address lookup requests
source URL or reference supporting the inclusion https://www.chainalysis.com/reactor/
date_verified Date you last verified this entry is current 2026-05-04
notes Any additional context, caveats, or related domains Also operates transpose.io (acquired 2022)

Example entry

domain,organization,category,tier,harm,source,date_verified,notes
*.chainalysis.com,Chainalysis Inc.,Blockchain Analytics,1,"Logs querying IP addresses against
Bitcoin address lookup requests. Sells intelligence to law enforcement and
exchanges.",https://www.chainalysis.com/reactor/,2026-05-04,"Also operates
transpose.io (acquired 2022)"

5.2 Wildcard vs Exact Domain

Use wildcards when you want to block all subdomains of an organization's domain:

Format What It Blocks When to Use
*.chainalysis.com All subdomains: api.chainalysis.com, data.chainalysis.com, etc. When the entire organizational domain should be blocked
api.chainalysis.com Only that specific subdomain When only one specific endpoint is the surveillance concern and other subdomains serve legitimate purposes
chainalysis.com The root domain only (not subdomains) Rarely used alone — combine with wildcard entry

When in doubt, use the wildcard. If an organization's primary business is Bitcoin surveillance, all of their infrastructure should be blocked. They can change subdomain names but they cannot change their root domain without losing their existing customers.

6. Submitting to GitHub

All submissions go through GitHub pull requests. This section walks through the process step by step.

6.1 Prerequisites

  • A GitHub account (free). Use a pseudonymous account if you prefer — this is encouraged.

  • Basic familiarity with Git. If you have never used Git, see the Git Primer in Appendix A.

6.2 Fork the Repository

9. Go to github.com/cypherpilgrim/satoshishield

10. Click the Fork button in the top right

11. Select your account as the destination

12. You now have your own copy of the repository

6.3 Clone Your Fork

git clone https://github.com/YOUR-USERNAME/satoshishield.git
cd satoshishield

6.4 Create a Branch

Always create a new branch for your submission. Use a descriptive name:

git checkout -b add-domain-suspicious-analytics-com

6.5 Add Your Domain

Edit domains.csv and add your entry. Follow the format exactly — CSV is whitespace-sensitive.

# Open in any text editor
nano domains.csv

Add your row at the bottom of the file. Save.

The three blocklist files (blocklist.txt, hosts.txt, satoshishield.abp) are generated automatically from domains.csv when a new release is cut. You do not need to edit these manually.

6.6 Commit and Push

git add domains.csv
git commit -m "Add [domain]: [one-line description of harm]"
git push origin add-domain-suspicious-analytics-com

6.7 Open a Pull Request

13. Go to your fork on GitHub

14. Click Compare & pull request

15. Fill in the pull request template (see Section 6.8)

16. Click Create pull request

6.8 Pull Request Template

Every pull request should include the following information:

## Domain Submission
**Domain:** *.suspicious-analytics.com
**Organization:** Suspicious Analytics Inc.
**Category:** Blockchain Analytics
## Evidence of Privacy Harm
[Describe what you found and how you found it. Include links to
sources, screenshots of WHOIS/SSL certificate results, URLScan
analysis, or wallet source code references.]
## Verification Steps Completed
- [ ] WHOIS lookup performed
- [ ] SSL certificate inspected
- [ ] SecurityTrails / PassiveDNS checked
- [ ] Behavioral evidence gathered — URLScan.io scan (suspected / dual-use domains) or vendor documentation (self-documented / Tier 1 firms)
- [ ] Tested that blocking does not break wallet functionality
## Functional Impact Test
[Describe how you tested that blocking the domain does not impair
Bitcoin wallet functionality. Which wallet? What functions tested?]
## domains.csv Entry
[Paste your CSV row here for review]

7. What Happens After You Submit

After you open a pull request, the maintainers will review your submission. Here is what to expect:

Stage Timeframe What Happens
Initial review Within 7 days A maintainer reviews your pull request, checks the documentation, and may ask clarifying questions
Research verification Within 14 days Maintainers independently verify the organization, harm, and functional impact
Discussion Ongoing Community members may comment with additional findings or concerns. Engage constructively.
Decision Within 21 days Pull request is merged, rejected with explanation, or flagged for further research
Release Next monthly release Merged domains appear in the next scheduled release and are automatically pulled by all installations

If your submission is rejected, the maintainers will explain why. Common reasons include insufficient evidence of harm, dual-use concerns, or functional impact on wallet operation. A rejection is not permanent — you can gather more evidence and resubmit.

8. Quarterly Research Protocol

For contributors who want to do systematic research rather than ad hoc submissions, this quarterly protocol provides a structured approach to discovering new surveillance domains.

Time required: 2-4 hours per quarter. No special tools beyond those described in Section 3 and 4.

8.1 Quarter Start — Landscape Review (30 minutes)

17. Check Chainalysis, Elliptic, TRM Labs, and Arkham Intelligence websites for new product announcements

18. Search LinkedIn for new job postings at these firms mentioning specific API products or services

19. Check crt.sh for new SSL certificates issued to known surveillance firm domains

20. Review the SatoshiShield GitHub Issues tab for community-submitted candidate domains

8.2 Wallet Audit (60-90 minutes)

Select 3-5 popular Bitcoin wallets. For each:

21. Run a Wireshark capture while opening the wallet and performing normal operations

22. Export DNS queries to CSV

23. Identify any domains not already in the SatoshiShield blocklist

24. Run verification steps (Section 4) on any unrecognized domains

Recommended wallets to audit each quarter:

  • Sparrow Wallet (desktop)

  • Electrum (desktop)

  • BlueWallet (mobile)

  • Muun Wallet (mobile)

  • Any new wallet that has gained community attention since last quarter

8.3 Existing Entry Audit (30 minutes)

25. Review 10-15 existing entries in domains.csv

26. Verify each domain still resolves and still belongs to the same organization

27. Check if the organization has changed its domain infrastructure

28. Submit a pull request updating the date_verified field and noting any changes

8.4 Submit Findings

Submit all new domains found via pull request (Section 6). Submit any corrections to existing entries via a separate pull request. Document everything you checked, even if you found nothing new — this confirms entries are still current.

9. Tools Reference

Tool URL Cost Purpose
Pi-hole pi-hole.net Free DNS query logging — reveals all domains your wallet contacts
Wireshark wireshark.org Free Full network traffic capture — reveals all connections including hardcoded IPs
WHOIS (ICANN) lookup.icann.org Free Domain registration lookup — reveals domain owner
crt.sh crt.sh Free SSL certificate transparency logs — reveals organization name and related domains
URLScan.io urlscan.io Free (limited) Sandboxed URL analysis — shows all connections a domain makes
SecurityTrails securitytrails.com Free tier Historical DNS — reveals IP history and related domains
VirusTotal virustotal.com Free Multi-engine analysis including passive DNS and domain relationships
Shodan shodan.io Free tier IP address lookup — reveals services running on surveillance firm servers
PassiveDNS (Mnemonic) passivedns.mnemonic.no Free Historical DNS resolution data
DomainTools WHOIS whois.domaintools.com Free Enhanced WHOIS with related domain suggestions
GitHub Code Search github.com/search Free Search wallet source code for API endpoints and tracking libraries

10. Code of Conduct

SatoshiShield is a technical project with a clear mission: protecting Bitcoin users from network-layer surveillance. The following principles govern contributor interactions:

  • Research and document objectively. The goal is accurate information, not activism.

  • Provide evidence. Assertions without evidence will not be accepted regardless of how certain you are.

  • Engage respectfully. Disagreements about inclusion decisions should be resolved through evidence, not argument.

  • Protect your own privacy. Use a pseudonymous GitHub account if you prefer. The project practices what it preaches.

  • No doxxing. Never include personal information about individuals associated with surveillance firms — domain research targets organizations, not people.

  • No speculation. Do not submit domains based on speculation about future surveillance use. Evidence of current harm is required.

The strongest argument in any inclusion discussion is evidence. If you have evidence, present it clearly. If you lack evidence, gather it. The process exists to ensure the blocklist remains accurate and trustworthy.

Appendix A — Git Primer for Non-Developers

Git is a version control system that tracks changes to files. GitHub is a website that hosts Git repositories and facilitates collaboration. You need both to contribute to SatoshiShield.

A.1 Install Git

macOS: Git comes pre-installed. Open Terminal and type git --version to confirm.

Windows: Download from git-scm.com and install.

Linux: sudo apt install git

A.2 Essential Git Commands

Command What It Does
git clone [url] Downloads a copy of a repository to your computer
git checkout -b [branch-name] Creates a new branch and switches to it
git add [filename] Stages a file for commit (marks it as ready to save)
git commit -m "[message]" Saves staged changes with a description
git push origin [branch-name] Uploads your branch to GitHub
git pull Downloads the latest changes from GitHub
git status Shows which files have been changed

A.3 The Contribution Workflow in Plain English

29. Fork the repository — make your own copy on GitHub

30. Clone your fork — download your copy to your computer

31. Create a branch — create a named workspace for your changes

32. Edit domains.csv — add your domain entry

33. Commit — save your changes with a description

34. Push — upload your changes to GitHub

35. Pull request — ask the maintainers to review and merge your changes

If you get stuck, open a GitHub Issue on the SatoshiShield repository with the label 'help wanted' and describe what you are trying to do. The maintainers will help.

Appendix B — Domain Verification Checklist

Use this checklist for every domain you verify. Check off each step before submitting.

Step Action Completed
1 WHOIS lookup — identified domain owner [ ]
2 SSL certificate inspected — confirmed organization [ ]
3 SecurityTrails / PassiveDNS — checked IP history and related domains [ ]
4 Behavioral evidence — URLScan.io scan or vendor documentation, per domain type [ ]
5 Privacy harm articulated — one sentence describing the specific harm [ ]
6 Inclusion criteria met — confirmed domain meets at least one criterion [ ]
7 Functional test — confirmed blocking does not break wallet functionality [ ]
8 domains.csv entry prepared — all columns completed [ ]
9 Pull request template completed — all sections filled [ ]

Document Version

Version Date Changes
1.0 May 2026 Initial contributor guide. Covers finding, verifying, and submitting domains. Includes quarterly research protocol, tools reference, Git primer, and verification checklist.
1.4 May 2026 Updated to v1.4 metadata. GitHub handle migrated from sawdustpilgrim to cypherpilgrim across all URLs. Cover, header, and footer version stamps updated.