ENPLDEPT
Flash
Alle Docs
Store · Anbieter

Speicherplatz an andere Node-Besitzer verkaufen — der Sensmos-Store-Agent für NAS oder Heimserver

Andere Node-Besitzer brauchen einen Ort für verschlüsselte Sicherungen. Dein NAS, Raspberry oder Heimserver hat Platz, den er nie nutzt. Der Store-Agent bringt beides zusammen — du hältst Chiffrat, das du nicht lesen kannst, beantwortest ein paar Mal am Tag einen Beweis und wirst für jeden Tag bezahlt, an dem der Beweis gelingt. Nichts läuft über deinen Node, nichts öffnet sich in deiner Firewall.

Für wen das ist

Eine Maschine, die ohnehin läuft — ein NAS, ein Raspberry, ein kleiner Heimserver, eine Kiste im Rack, die du schon bezahlst — mit einem Gigabyte oder mehr Platz, den du nicht brauchst, im selben LAN wie ein Sensmos-Node. Linux mit Python 3, außer dem Skript selbst nichts zu installieren. Root braucht es nur, um die Zustandsdatei und die systemd-Unit zu schreiben.

Ein Käufer ist immer ein anderer Node-Besitzer: Store ist interner Handel zwischen Leuten, die Nodes betreiben, keine öffentliche Cloud. Mit dem Käufer hast du nie direkt zu tun; das Backend wählt Anbieter, bewegt die Bytes und rechnet die Tage ab.

Was du wirklich hältst

Verschlüsselte Blobs. Die App des Käufers verschlüsselt jede Datei auf dem Telefon mit einem Schlüssel aus der Wallet-Signatur des Käufers; bei dir kommt Chiffrat mit einer zufälligen ID an. Du bekommst keinen Schlüssel, keinen Dateinamen und nichts, was den Käufer erkennen lässt. Auf deiner Seite gibt es keinen Codepfad, der entschlüsseln könnte — der Agent ist eine einzige lesbare Datei, sieh selbst nach.

Schnellstart

Führe das auf der Maschine aus, die die Daten halten wird. Sie spricht einmal über das LAN mit deinem Node und danach nur noch mit dem Backend.

# 1 — Agent holen (eine Datei, nur Standardbibliothek)
sudo curl -fsSL -o /usr/local/bin/sensmos-store.py https://sensmos.com/ext/sensmos-store.py
sudo chmod +x /usr/local/bin/sensmos-store.py

# 2 — über deinen Node koppeln: seine LAN-Adresse, seine PIN, ein Name, Ablageort der Blobs, angebotener Platz
sudo sensmos-store.py --pair 192.168.1.50 --pin 123456 --name "NAS im Keller" \
                      --dir /srv/sensmos-store --capacity 100G

# 3 — als Dienst installieren und starten, überlebt Neustarts
sudo sensmos-store.py --install-service

# 4 — zusehen
journalctl -u sensmos-store -f

Das Koppeln gibt OK — attachment …, token saved to /etc/sensmos-store.json aus. Im Dienstprotokoll steht danach:

21:14:02 store agent store-py/0.1  dir=/srv/sensmos-store  capacity=100 GB  used=0.00 GB
21:14:03 connected as 3f9a1c2e

Ab diesem Moment bist du im Pool. Der erste Käufer erscheint im Protokoll als put 7d0b… 18.1 MB …, gefolgt von put 7d0b… done, Beweise als proof 7d0b… block 3: answered (10 MB hashed).

Die LAN-Adresse des Nodes steht in der Client-Liste deines Routers; die PIN ist die Node-PIN aus der App. Der Node muss beim Koppeln online sein (mit dem Backend verbunden) — er reicht deine Anfrage und die Antwort des Backends weiter.

Wie du bezahlt wirst

wasBedingungen
Preis0,1 GALU pro GB pro Kopie pro Tag — ein Paket beginnt bei 1 GB und wächst um je 1 GB; 10 GB sind 1 GALU am Tag pro Kopie
dein Anteil70%; 30% fließen zurück in den Belohnungspool
bezahlt fürjeden Tag, an dem das Paket eines Käufers bei dir festgelegt ist und du da warst: liegen seine Dateien auf deiner Platte, hat deine Kopie einen Beweis bestanden; ist das Paket noch leer, hat sich dein Agent an dem Tag gemeldet — der Platz ist so oder so reserviert
nicht bezahlt fürTage offline oder mit fehlgeschlagenem Beweis; Tage, an denen der Käufer kein GALU hatte — der Tag zählt für den Käufer als Rückstand (Uploads pausiert, Kopien nach 14 unbezahlten Tagen freigegeben), und du wirst dafür nicht bezahlt

Die Abrechnung läuft einmal pro Stunde im Backend und bucht jedes Tripel (Tag, Käufer, Anbieter) genau einmal. GALU landet im Guthaben deiner Wallet wie jede andere Diensteinnahme.

Beweise — woher das Backend weiß, dass du die Datei noch hast

Dreimal am Tag pro Kopie wählt das Backend einen zufälligen 10-MB-Block einer zufälligen Datei, die du hältst, und schickt ein Salz. Dein Agent hasht den Block mit dem Salz und antwortet mit 32 Bytes — keine Daten bewegen sich, auf unserer Seite wird nichts gerechnet. Bei zwei Kopien bei zwei Anbietern werden die beiden Antworten miteinander verglichen. Weichen sie ab oder ist nur eine Kopie online, fordert das Backend den rohen Block an und prüft ihn gegen die Hash-Liste, die der Käufer beim Hochladen mitgegeben hat.

Drei fehlgeschlagene Beweise in Folge, und die Kopie gilt als fallen gelassen: keine Herausforderungen mehr, keine Bezahlung mehr. Eine weitere Strafe gibt es nicht — du verdienst an ihr einfach nichts mehr.

Kapazität und wie Anbieter gewählt werden

  • --capacity ist dein Angebot. Es wird nicht geprüft — wer mehr deklariert, als er hat, scheitert an den Beweisen und verdient nichts, das ist die ganze Kontrolle.
  • Es zählt der freie Platz im eigenen Buch des Backends (was es bei dir abgelegt hat), nicht die Meldung deines Agenten; der Bericht alle fünf Minuten ist informativ.
  • Das Paket eines Käufers beginnt bei 1 GB und wächst gigabyteweise bei denselben Anbietern, also lässt sich jedes volle freie Gigabyte deines Angebots verkaufen.
  • Anbieter werden nach freiem Platz gereiht; die zwei Kopien eines Käufers gehen immer an zwei verschiedene Besitzer und nie auf die Maschinen des Käufers selbst.
  • Einmal gewählt bist du festgelegt: jede Datei, die dieser Käufer ab dann hochlädt, landet bei dir, und kauft er ein Gigabyte dazu, muss es bei dir passen. Sein Paket zieht von selbst nirgendwohin. Ein Käufer kann es jederzeit schließen: seine Dateien werden von deiner Platte gelöscht, der Platz ist wieder frei und die Zahlungen enden mit diesem Tag.

Um dein Angebot zu ändern, bearbeite capacity_b in /etc/sensmos-store.json und starte den Dienst neu. Um aufzuhören, stoppe den Dienst — ohne Beweise werden deine Kopien binnen eines Tages fallen gelassen und du verlässt den Pool; die Blobs in --dir darfst du löschen.

Netzwerk

Der Agent wählt sich ausgehend über TLS bei sensmos.com ein und hält diese eine Verbindung. Kein eingehender Port, keine Portweiterleitung, funktioniert hinter CGNAT. Übertragungen, Beweise und Löschungen kommen alle über dieselbe Verbindung.

Wo du es siehst

Heute: im Dienstprotokoll. Die App zeigt noch keine Anbieterstatistik; das wird gebaut, und diese Seite sagt es, sobald es da ist.

Flags

FlagBedeutung
--pair IP --pin PIN --name "…"einmaliges Koppeln über einen Node
--dir DIRwo die Blobs liegen (Standard /var/lib/sensmos-store)
--capacity 100Gangebotener Platz; Suffixe M, G, T
--install-serviceKopie nach /usr/local/bin, systemd-Unit schreiben und aktivieren
--be URLanderes Backend, zum Testen

Die Unit, die er schreibt:

# /etc/systemd/system/sensmos-store.service
[Unit]
Description=Sensmos store agent
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/bin/python3 /usr/local/bin/sensmos-store.py
Restart=always
RestartSec=10
User=root

[Install]
WantedBy=multi-user.target

Koppeln — das Token

Der Agent hat keine eigenen Zugangsdaten. Er bittet deinen Node (mit der Node-PIN, aus dem LAN heraus), für ihn zu bürgen; der Node reicht die Anfrage an das Backend weiter, und das Backend stellt ein Token mit dem Scope store.serve aus — Store-Sitzungen bedienen, sonst nichts. Das Token liegt in /etc/sensmos-store.json (Modus 0600), der Agent erneuert es selbst. Ein Node kann für bis zu vier Anhänge bürgen. Der vollständige Vertrag steht unter Anhänge & die EXT-API.

Updates

Der Agent aktualisiert sich nie selbst: er läuft als root in deinem LAN, und ein Server, der ihm Code schicken könnte, wäre ein Weg in dein Netz. Zum Aktualisieren Schritt 1 wiederholen und neu starten:

sudo curl -fsSL -o /usr/local/bin/sensmos-store.py https://sensmos.com/ext/sensmos-store.py
sudo systemctl restart sensmos-store

Anfangszeit

Store ist neu. Während der Tests ist ein Paket eine Kopie statt zwei, und der Pool ist klein. Der Preis pro Kopie ändert sich nicht, wenn die zweite Kopie zurückkommt. Wenn du einen Anbieter aufsetzt und eine Weile nichts ankommt, ist das der ehrliche Stand der Nachfrage, kein Fehler auf deiner Seite — sag auf Discord Hallo, und wir sagen dir, wie der Pool aussieht.

Fragen, klare Antworten

Kann ich lesen, was ich hoste?

Nein. Der Käufer verschlüsselt jede Datei auf dem eigenen Telefon mit einem Schlüssel aus seiner Wallet; du bekommst Chiffrat, nie einen Schlüssel, nie einen Dateinamen. Auch das Backend kann es nicht lesen — es reicht nur Bytes weiter und hält die Hash-Liste des Käufers.

Was passiert, wenn meine Maschine aus ist?

Für diesen Tag verdienst du nichts. Ein Beweis ohne Antwort zählt als fehlgeschlagen; nach drei fehlgeschlagenen Beweisen in Folge wird die Kopie fallen gelassen. Heute wird eine fallen gelassene Kopie nicht zu einem anderen Anbieter verschoben — die Datei des Käufers bleibt auf seiner übrigen Kopie — genau deshalb geht es um eine Maschine, die immer läuft.

Wie viel verdiene ich?

0,1 GALU pro GB pro Kopie pro Tag, davon 70% für dich: Pakete beginnen bei 1 GB und wachsen gigabyteweise, ein 10-GB-Paket bei dir sind also 0,7 GALU am Tag. Nur an Tagen, an denen ein Käufer ein Paket bei dir hält und du da warst: ein bestandener Beweis, sobald seine Dateien auf deiner Platte liegen, eine tägliche Meldung deines Agenten, solange das Paket noch leer ist. Wie viele Käufer es geben wird, versprechen wir nicht.

Kann ich 3 GB anbieten?

Ja. Pakete beginnen bei 1 GB und wachsen um je ein Gigabyte, also lässt sich jedes volle Gigabyte deines Angebots verkaufen — an drei Käufer mit Startpaket oder an einen, der auf 3 GB erweitert hat.

Braucht mein Node ein Funkmodul oder etwas Besonderes?

Nein. Irgendein Sensmos-Node im selben LAN, online, mit seiner PIN. Er bürgt einmal für den Agenten; danach ist er außen vor.

Gibt es ein Docker-Image?

Noch nicht. Der unterstützte Weg ist der systemd-Dienst auf einem Linux-Host.

Aktualisiert: 2026-09-07