DEV Community

STNDC
STNDC

Posted on

Blackfros 3.0.0-pre.2 - part 2

Blackfros: a P2P shop network that doesn't trust anyone with your IP

Most "anonymous marketplace" projects still lean on a central server somewhere — a domain, a company, a single point of failure and surveillance. Blackfros doesn't. It's a peer-to-peer network of shops where every seller is their own server, and there's no central authority to shut down, subpoena, or trust.

The core idea

Blackfros is a Python client/server pair:

  • server.py runs a shop. It handles commands like ADD, REMOVE, BUY, CHAT, and stores its catalog as plain Markdown on disk.
  • client.py is a terminal UI (built with Textual) that connects to a shop and lets you browse, buy, or chat.

Instead of exposing that server on the open internet, it's published as a Tor hidden service. No public IP, no domain, no VPN — just a .onion address that Tor resolves without ever revealing where the machine actually is.

Every node is its own island

Here's the part that trips people up at first (it tripped me up too): there is no single "Blackfros network." Every .onion address is a completely separate, isolated shop with its own seller and its own buyers.

Blackfros Graph

Each .onion node is an independent shop network with its own seller and buyers — nodes don't share data or see each other. A single person can hold different roles across networks: the owner of Node A (Store A) can also be a buyer on Node C, while a buyer on Node A can be the seller running Node C.

Concretely:

  • If you run server.py, you're the seller on your node. Everyone who connects to your .onion sees your shop and buys from you.
  • If someone shares their .onion with you, you connect to it as a buyer using client.py — you don't bring your own shop with you. You're just a customer there.
  • Nothing links these networks together. Your shop's data lives only on your machine, in the folder next to your own copy of server.py.

That last point matters more than it sounds: two people running the same copy of the project on the same machine would actually collide, because the shop data folder is tied to the script's location, not to the port or the instance. But two different people, on two different machines, never touch each other's data — even if they're buying and selling from each other constantly.

Wearing two hats

Because every node is independent, the same person can be a seller on one node and a buyer on ten others, simultaneously, with no overlap. Run your own server.py to sell, and open as many client.py sessions as you want to shop around on other people's nodes. Nobody sees your inventory unless they connect to your address specifically.

Where it's headed

The project is still pre-release (currently working through v3.0.0-pre.x), with the terminal UI being migrated to Textual and a handful of security/UX items being closed out before a wider feedback round. Contributors run it straight from source — no packaging yet, just clone and go, including testing it over Tor from a Tails USB.

If the idea of a shop network with no central server, no IP leaks, and no single point of failure sounds interesting, the code is on GitLab — feedback and testers welcome.

Top comments (0)