v0.4.7

AKTUELL
2026-06-02

Pool-Mining auf dem Mac läuft jetzt sofort, ohne Node zum Herunterladen und ohne Synchronisierung.

Im Mittelpunkt steht die Geschwindigkeit. Im Pool-Modus lädt und betreibt easyBTX die vollständige BTX-Node nicht mehr. Pool-Mining hat sie nie gebraucht, und sie verursachte einen mehrere Gigabyte großen Download, lange „Aufhol"-Synchronisierungen und gelegentlich einen Absturz. Jetzt öffnest du die App, deine Auszahlungsadresse ist bereits eingetragen, und dein Mac beginnt sofort mit dem Mining. Wenn du easyBTX schon hattest, wird deine bestehende Auszahlungsadresse automatisch übernommen, sodass du nichts neu einrichten musst.

Geändert

  • Pool-Mining auf dem Mac läuft ohne die vollständige BTX-Node: Es startet sofort, ohne Blockchain zum Herunterladen, ohne etwas zu synchronisieren und ohne Node, die abstürzen kann. Solo-Mining auf dem Mac ist vorerst pausiert, während wir uns auf das Pool-Mining konzentrieren; es kommt zurück.
  • Deine Auszahlungsadresse wird automatisch aus deiner vorherigen Einrichtung übernommen, sodass ein Update das Feld nie leer lässt.
  • Die Mining-Geschwindigkeit wird jetzt in N/s angezeigt, derselben Einheit, die der Pool verwendet, sodass die Zahl in der App zu deinem Pool-Dashboard passt.
  • Die App öffnet sich immer in ihrem hohen Layout, das auf jeden Bildschirm passt.

Hinzugefügt

  • Eine grüne „Get the BTX Wallet"-Schaltfläche in den Transaktionen und in den Auszahlungseinstellungen, die zur eigenständigen BTX-Wallet führt.
  • Eine optionale Aktion, um Festplattenplatz zurückzugewinnen, indem die alten Node-Daten entfernt werden, die du im Pool-Modus nicht mehr brauchst. Deine Wallets werden niemals angetastet.

v0.4.6

2026-06-01

Pool-Mining auf dem Mac funktioniert wieder, dazu ein Live-GPU-Werte-Panel.

Im Mittelpunkt steht ein Fix. Pool-Mining auf dem Mac, das in 0.4.5 kaputtging, funktioniert wieder. Eine Änderung, die beim Bringen von easyBTX auf Windows gemacht wurde, leitete den Mac auf den falschen Mining-Helfer, sodass das Mining nicht startete. Das stellt es wieder her. Wenn du auf 0.4.5 aktualisiert hast und das Mining nicht starten konntest, behebt das den Fehler, und der Mac verhält sich genau wie in 0.4.4.

Behoben

  • Pool-Mining funktioniert auf dem Mac wieder. Eine Änderung in 0.4.5 für die Windows-Version leitete die Mining-Engine des Macs auf den falschen Helfer, sodass das Mining nicht startete. Wiederhergestellt auf den Stand von 0.4.4.

Hinzugefügt

  • Ein Live-GPU-Werte-Panel in der Info-Ansicht: Auslastung, Taktraten, Leistung, Temperatur, Speicher und Lüfter, aktualisiert, solange das Panel geöffnet ist. Der Mac zeigt Auslastung, Leistung und Temperatur; Windows zeigt den vollständigen Satz, der von deiner NVIDIA-Karte ausgelesen wird.

vWindows 0.4.4

2026-05-31

easyBTX kommt auf Windows.

Das ist das erste Windows-Release. easyBTX schürft BTX jetzt auch auf Windows-PCs mit einer NVIDIA-GPU der RTX-30-Serie oder neuer, mit demselben Eine-App-, Ein-Klick-, selbstverwahrenden Ansatz wie die Mac-Version. Du bringst eine NVIDIA-Karte mit, wählst eine Auszahlungsadresse, und deine GPU tritt dem Pool bei. Die Mac-Version (Apple Silicon, Metal, solo oder im Pool) bleibt unverändert.

v0.4.4

2026-05-30

Senden funktioniert wieder, deine eigenen privaten Mining-Werte und größere, ruhigere Fenster.

Ein gezielter Nachgang zu 0.4.3. Im Mittelpunkt steht ein Fix: BTX aus der App zu senden funktioniert wieder, nachdem ein kürzlicher Build einen Versand mit einer irreführenden Meldung scheitern lassen konnte. Dazu zeigt die Info-Ansicht jetzt deine eigenen Mining-Werte, die Popup-Fenster öffnen alle in derselben geräumigen Form, und den Explorer-Link einer Transaktion kopierst du mit einem Tipp.

Hinzugefügt

  • Dein Mining: ein privates Werte-Panel in der Info-Ansicht, das zeigt, wie lange du insgesamt gemint hast, deine Durchschnittsgeschwindigkeit, deine akzeptierten Shares und den Tag, an dem du angefangen hast. Es liegt nur auf deinem Mac und wird niemals hochgeladen.
  • Eine „Link kopieren"-Schaltfläche bei jeder Transaktion, damit du ihren Block-Explorer-Link kopieren und überall einfügen kannst.

Geändert

  • Info, Einstellungen, Transaktionen und die Info-Popups öffnen jetzt in einem größeren, einheitlichen Fenster, das sich leichter liest.
  • Die Einstellungen haben ein aufgeräumteres Seitenmenü. Der Bereich Links verweist jetzt auf die offizielle BTX-Protokoll-Seite und, getrennt davon, auf eine Live-Preis-Seite (ein Drittanbieter; keine Finanzberatung, und easyBTX ist davon unabhängig).

Behoben

  • BTX aus der App zu senden funktioniert wieder. Ein kürzlicher Build konnte einen Versand mit einer irreführenden „prüf die Adresse"-Meldung ablehnen, obwohl die Adresse in Ordnung war; das ist behoben, und die Fehlermeldungen beschreiben jetzt die wahre Ursache.

v0.4.3

2026-05-30

Pausieren und Fortsetzen, ein ruhigerer Neustart, mehr Privatsphäre und dein Mac auf dem Pool-Dashboard.

Dieses Release baut auf dem 0.4.0-Redesign auf, mit einem Schwung Komfort-Verbesserungen. Wenn du jetzt stoppst, bleibt deine Node warm und du bekommst ein grünes „Fortsetzen". Die lange „Macht sich bereit"-Wartezeit nach einem Neustart erklärt sich selbst, statt festzustecken, und du kannst dein Guthaben mit einem Tipp verbergen. Miner im Pool können jetzt die Live-GPU-Zahlen ihres Macs und den gewählten Namen auf dem minebtx-Dashboard anzeigen.

Hinzugefügt

  • Pausieren und Fortsetzen. Während des Minings heißt die Schaltfläche „Pausieren", danach ein grünes „Fortsetzen" statt eines kalten „Start". Deine Node bleibt dazwischen warm, sodass du direkt weitermachen kannst.
  • Ein Privatsphäre-Auge neben deinem Guthaben verbirgt es hinter Punkten, bis du es einblendest, praktisch beim Bildschirmteilen oder in der Öffentlichkeit. Deine Auswahl wird gespeichert.
  • Guthaben-Dezimalstellen: zeig alle 8 Stellen, oder kürzere 3 für einen schnellen Blick. Das ändert nur die Anzeige, nie das, was du hältst oder sendest.
  • Eine klare Live-Statusanzeige, während die Node sich nach einem Neustart bereit macht. Statt eines eingefrorenen „Arbeitet...", erklärt sie, dass sie deinen privaten Guthaben-Index neu aufbaut, zeigt eine Schätzung und die verstrichene Zeit, und weist darauf hin, dass die Blockchain bereits auf dem neuesten Stand ist.
  • CPU-, GPU- und Pool-oder-Solo-Prüfungen auf dem Mining-Bildschirm, sodass du auf einen Blick siehst, dass dein Mac auf der GPU mint und so verbunden ist, wie du es erwartest.
  • Live-GPU-Werte für das minebtx-Pool-Dashboard. easyBTX meldet GPU-Nutzung und Leistung deines Macs an den Pool (keine Admin-Rechte nötig), sodass dein Worker echte Zahlen statt Leerstellen anzeigen kann, und der Name, den du in den Einstellungen setzt, kennzeichnet deine Maschine.
  • Ein leises Aufräumen im Hintergrund, das alte Reparatur-Überreste auf lange laufenden Installationen entfernt, damit sie sich nicht auf der Festplatte stapeln.

Geändert

  • Die Einstellungen öffnen jetzt in deinem aktuellen Theme. Bisher erschienen sie immer in Hell. Jetzt passen sie sich der App an, sodass eine dunkle App auch die Einstellungen dunkel hält.
  • Die Einstellungen haben ein aufgeräumteres Seitenleisten-Layout, mit Theme-Karten und einer Auswahl für das „Lieblings-Layout beim Start".
  • Die Info-Popups („Wie Mining funktioniert" und die anderen) passen jetzt zum Stil der Einstellungen: ein geräumigeres, ruhigeres Fenster, das sich leichter liest.

Behoben

  • Das Upstream-Quellen-Panel in den Einstellungen zeigt nicht mehr in jeder Zeile „Neueste nicht verfügbar". Es holt die echten neuesten Versionen wieder.

v0.4.0

2026-05-29

Neues Design, und Pool-Mining zahlt jetzt auf deine externe Wallet aus.

easyBTX hat ein neues Design. Der Standard ist ein breiteres "Control-Room"-Fenster, das alles auf drei ruhige Spalten verteilt, sodass bei einer voll gefüllten Node nichts mehr aus dem Bild läuft. Dazu gibt es einen neuen Theme-Wechsler: Dunkel bleibt der Standard, Hell steht als Alternative bereit, und System folgt deinem Mac und schaltet automatisch um. Und Pool-Mining nutzt jetzt deine externe Auszahlungsadresse, genauso wie Solo-Mining es schon tat. So kannst du auf einem Laptop minen, auf dem die Schlüssel zu deinen Coins niemals liegen.

Hinzugefügt

  • Ein neues breites "Control-Room"-Layout als Standard: Status-Bildschirm links, Mining-Anzeige, Leistung und Wallet in der Mitte, Live-Netzwerk- und Pool-Zahlen rechts. Die älteren Layouts Hoch, Kompakt und Mini sind weiterhin per Klick erreichbar.
  • Dunkel, Hell und System als Themes. Dunkel bleibt der Standard. Wähl Hell, wenn du es bevorzugst, oder System, damit der Mac automatisch umschaltet. Die Auswahl wird gespeichert.
  • Schnellschaltflächen in den Einstellungen für jeden Bereich (Node, Mining, Darstellung, Datenspeicherort, Wallets, Auszahlung, Sicherung, Updates, Wartung, Neues Konto, Upstream, Links). Ein Tipp springt direkt dorthin.

Geändert

  • Pool-Mining sendet Rewards jetzt an deine externe Auszahlungsadresse, wenn du eine hinterlegt hast. Bisher galt das nur für Solo-Mining. In beiden Fällen berühren die Coins niemals die Wallet auf diesem Mac, sodass ein kompromittierter Laptop nie die Schlüssel hatte.
  • Die easyBTX-Tool-Gebühr beträgt jetzt 4,99 % der geminten Rewards (bisher 3,5 %). Sie wird weiterhin per Zeitscheibe abgerechnet und vorab offengelegt. Die Pool-eigene Gebühr (2,5 %) bleibt unverändert, sodass Pool-Mining insgesamt etwa 7,5 % ausmacht. Alles andere geht an deine Wallet.
  • Einstellungen sind als saubere Kacheln angeordnet, die nebeneinander liegen, wenn Platz vorhanden ist. Funktioniert gut in Hell und Dunkel.
  • "Audit / Übersicht" heißt jetzt einfach "Transaktionen".
  • Die Setup-Checkliste ist klarer. Jeder Schritt wird zu einem grünen Haken mit einer klaren Beschriftung des Erreichten ("BTX-Node und Chain heruntergeladen", "Node mit den neuesten Blöcken synchronisiert", "Mining"), statt orange als Aufgabe stehen zu bleiben.
  • Der easyBTX-Schriftzug im Header ist etwas größer, in einer leicht schlankeren Leiste.

Behoben

  • "Festplattenplatz freigeben" meldet jetzt den tatsächlich freigegebenen Betrag, einschließlich des einmaligen Snapshots, statt ihn zu unterschätzen und den Rest beim nächsten Start still freizugeben.
  • Die Node sieht nach dem Freigeben von Festplattenplatz oder einem Neustart nicht mehr so aus, als ob sie auf "Block 0 von 0" zurückgesetzt wurde. Sie erinnert sich, wo sie war, und zeigt das an, während sie bestätigt, statt wie eine frische Synchronisierung von Grund auf auszusehen.
  • Eine zurückkehrende, bereits synchronisierte Node wartet nach einer Reparatur oder einem Neustart nicht mehr lange beim Start.

v0.3.1

2026-05-29

Die Node sieht nie kaputt aus, während sie aufholt. Nachdem easyBTX eine Weile geschlossen war oder auf die harte Tour beendet wurde (Absturz, Erzwingen des Beendens oder Ersetzen der App während sie lief), braucht die Node manchmal ein paar Minuten, um beim nächsten App-Öffnen wieder aufzuholen. Bisher konnte easyBTX diese Aufholzeit fälschlicherweise als echtes Problem werten und einen Fehler anzeigen. Jetzt wartet sie ruhig, erklärt, was passiert, und lässt deine Wallet und Coins unberührt. Sie bietet niemals eine Reparatur an, solange die Node nur aufholt. Du musst nichts tun.

Behoben

  • easyBTX zeigt beim Start keinen Fehler mehr an, wenn die Node nur aufholt. Sie unterscheidet jetzt, ob eine Node noch ihre Daten verarbeitet oder tatsächlich nicht mehr reagiert.
  • Die destruktive Aktion "Node reparieren" wird nicht mehr angeboten, während die Node aufholt. Sie erscheint jetzt nur, wenn ein echtes Korruptionssignal vorliegt oder der Node-Prozess tatsächlich beendet ist.
  • Kein Phantom-Schritt "BTX-Node und Chain herunterladen" mehr, solange eine wiederhergestellte Node nur mit ihrer bereits auf der Festplatte vorhandenen Chain aufwärmt. Die Setup-Checkliste stimmt jetzt mit der Realität überein.
  • Das feste Zeitlimit, das eine gesunde Node abwürgen konnte, wurde entfernt. Eine Node, die echten Fortschritt macht, bekommt jetzt die Zeit, die sie zum Abschluss braucht.

Verbessert

  • Eine klarere, ruhigere Meldung, während die Node aufholt, damit eine normale Wartezeit von ein paar Minuten nicht wie ein Fehler aussieht.
  • Deine Wallet und deine Coins werden während des Starts oder der Wiederherstellung niemals angetastet. easyBTX stellt Chain-Daten aus einem gespeicherten Snapshot wieder her, niemals deine Schlüssel.

Unter der Haube

Wenn die Node nach einer Offline-Phase oder nach einem unsauberen Beenden neu startet, baut sie einen Teil ihres internen Zustands neu auf, bevor sie Anfragen bedienen kann. In diesem Zeitfenster ist die Node aktiv und arbeitend, antwortet aber mit einem "startet noch"-Status (RPC-Code -28, zurückgegeben mit HTTP 500). Die vorherige Version behandelte das als harten Fehler und gab nach einem festen Limit von 360 Sekunden auf. Das stürzte eine völlig gesunde Node in einen Fehlerbildschirm, der auch noch eine destruktive Reparatur-Schaltfläche anzeigte. 0.3.1 klassifiziert jede Start-Prüfung in drei Zustände: bereit, aufwärmend oder nicht verfügbar. Eine aufwärmende Node (der -28-Status, oder ein Node-Log, das einen laufenden Neuaufbau zeigt) wird als "weiter warten" behandelt und erhält ein großzügiges Backstop-Limit zum Abschluss. Eine Node, die gar nicht antwortet, gibt weiterhin nach einem vernünftigen Limit auf. Der destruktive Reparaturpfad bleibt hinter demselben Korruptionssignal gesperrt wie immer, sodass er nur bei einem echten Problem ausgelöst werden kann, niemals wegen eines langsamen Starts. Alle Wiederherstellungs-Sicherheitsregeln sind unverändert: Deine Wallet wird immer bewahrt, beschädigte Daten werden archiviert statt gelöscht, die Wiederherstellung läuft höchstens einmal pro Start, und sie verweigert den Betrieb, wenn die Festplatte voll ist.

Auslieferung

Automatisch an bestehende 0.3.0-Installationen über den In-App-Updater geliefert. Lokal gebaut und veröffentlicht. Unsignierter Indie-Build, Apple-Notarisierung steht auf der Roadmap.

v0.3.0

2026-05-28

Das "Pool-Compliance und Transparenz"-Release. shibs dexbtx-Pool wurde am 2026-05-27 auf v5 aktualisiert, mit einem verpflichtenden pre_hash_block_tier_v18-Capability-Gate und einem neuen mining.subscribe-Extension-Dict mit session_id sowie einem Hardware-Fingerprint pro Rig. easyBTX v0.2.0 sendete nur zwei der drei erforderlichen Felder, weshalb Mac-Worker sich zwar mit dem Pool verbanden, aber nie im Worker-Dashboard erschienen. v0.3.0 liefert den vollständigen v0.3.x-Handshake, fügt den worker.report_metrics-Heartbeat hinzu, der Live-Dashboard-Zeilen pro Rig freischaltet, und zeigt den kanonischen Namen an, den der Pool jedem Rig zuweist, damit Nutzer ihren Mac seiner Zeile in /stats zuordnen können. Dazu kommt das erste optionale Selbstverwahrung-Feature: Solo-geminte Rewards können jetzt an eine externe BTX-Adresse ausgezahlt werden, die keinen Schlüssel auf diesem Mac hat. Außerdem eine Menge UX-Arbeit, um die von der v0.2.0-Nutzerbasis in Telegram geäußerten Wünsche umzusetzen. cargo test: 195/195. tsc --noEmit: sauber. cargo build --release + npm run build: beide grün.

Kritische Fixes

  • Dexbtx-Pool-Registrierung für Mac-Worker ist wiederhergestellt. mining.subscribe sendet jetzt das vollständige v0.3.x-Extension-Dict: protocol_compliant: ["pre_hash_block_tier_v18"], den bestehenden Hardware-Fingerprint (erweitert mit solver_env: {BTX_MATMUL_BACKEND: "metal"}), und eine session_id pro Sitzung (32 Kleinbuchstaben-Hex-Zeichen passend zur uuid.uuid4().hex-Form des Referenz-Miners, aufgebaut aus SHA256("easybtx-session:" || nanos || pid || counter), sodass aufeinanderfolgende Sitzungen nie kollidieren). Ohne session_id hat der v5-Pool Mac-Worker still vom Dashboard und vom /stats des Telegram-Bots ausgeschlossen. mining.set_canonical_name wird jetzt verarbeitet und die Zuweisung wird in ~/.easybtx/canonical_names.json gespeichert, damit das vom Pool vergebene Label (z. B. M2_PRO-BRAVO-1) Reconnects überlebt. Die "Worker dieser Maschine:"-Zeile in der UI zeigt das Label jetzt an, sobald es eintrifft.
  • Node-Updates dauern nicht mehr 8 Minuten. NodeController::stop ruft Child::try_wait für bis zu 90 Sekunden ab, bevor es auf SIGKILL zurückfällt. Zuvor traf das sofortige Kill mitten in einem Flush auf das btx1z Shielded-State LevelDB und hinterließ einen laufenden Mutations-Marker, der beim nächsten Start EnsureShieldedStateInitialized: rebuilding full shielded state from chain auslöste (in der Praxis gemessen mit 7 Min. 57 Sek.). Ein sauberer Exit hinterlässt keinen Marker und der Start dauert wieder etwa eine Sekunde.
  • Repair-Node-Quarantänen geben keine Gigabytes mehr dauerhaft frei. Das neue prune_old_quarantines löscht _corrupt-*- und _preserve-*-Verzeichnisse, die älter als 7 Tage sind, behält dabei aber das jeweils neueste von jedem Muster als Forensik-Kopie. Läuft beim App-Start (erkennt veraltete Quarantänen aus vergangenen Sitzungen) und am Ende jeder repair_node-Ausführung (erkennt veraltete Quarantänen aus vorherigen Reparaturen). Ein veraltetes _corrupt-* hatte auf der Maschine des Maintainers 42 GB blockiert. Enthält 6 neue Unit-Tests für die Aufbewahrungslogik.

Externe Auszahlung (optionale Selbstverwahrung)

  • Solo-geminte Rewards können jetzt an eine externe BTX-Adresse ausgezahlt werden, die keinen Schlüssel auf diesem Mac hat. Neuer Bereich Einstellungen → Mining-Auszahlung: Behalte den Standard (Rewards landen in der lokalen Wallet dieses Macs) oder leite sie an eine Adresse weiter, die du anderswo kontrollierst: eine Hardware-Wallet, eine Handy-Wallet, eine Cold-Adresse. Der Punkt ist Selbstverwahrung. Die reale Bedrohung für eine Mining-Maschine ist Code-Ausführung durch denselben Nutzer (ein AMOS-artiger Stealer, auf den der Nutzer hereinfällt), und eine Maschine, die 24/7 mint, oft ein alter Laptop, der genau dafür umgewidmet wurde, ist ein leichtes Ziel. Rewards an eine externe Adresse zu leiten bedeutet, dass die angesammelten Coins nie einen Schlüssel auf der Mining-Maschine hatten. Eingefügte Adressen werden an der IPC-Grenze auf das Format geprüft (bech32, akzeptiert das quantenresistente btx1z...-Präfix; erkennt falsche Netzwerkeinfügungen, führende und nachfolgende Leerzeichen sowie Homoglyphen wie b/i/o), mit einer Live-"Format testen"-Schaltfläche. Der validateaddress-RPC der Node führt die vollständige Prüfsummenprüfung durch, wenn sie läuft.
  • Die offengelegte 3,5%-Entwicklergebühr bleibt unverändert. Die Auszahlungslogik wurde vom alten binären Nutzer/Entwickler-FeeAccrual zu einem N-Empfänger-gewichteten Round-Robin (PayoutScheduler) verallgemeinert, wobei die Entwicklergebühr ein verpflichtender Empfänger ist. Ein Unit-Test beweist, dass der realisierte Entwickleranteil unabhängig von der Nutzerkonfiguration über 1000 bis 2000 Chunks auf 3,5 % konvergiert, sodass das Hinzufügen einer externen Auszahlung die Aufteilung nie verschiebt.
  • Nur Solo in diesem Release, und die App macht das deutlich. v0.3.0 leitet die externe Auszahlung nur für solo-geminte Coinbase weiter. Pool-Rewards landen weiterhin in der lokalen Wallet (externe Pool-Auszahlung kommt in v0.3.2). Wenn eine externe Auszahlung konfiguriert ist und du dich im Pool-Modus befindest, erklärt ein roter Banner in der Hauptansicht die Situation, und der Solo-zu-Pool-Wechseldialog wiederholt den Hinweis. Ein sicherheitsbewusster Nutzer kann also nie stillschweigend davon ausgehen, dass seine Pool-Einnahmen die Maschine verlassen.
  • "Lokale Wallet" wählen kehrt vollständig zurück. Das Standard-Radio-Feld auswählen löscht jetzt die gespeicherte Aufteilung (clear_payout_split), versteckt nicht nur das Formular. Mining kehrt sofort zur lokalen Wallet zurück, statt still weiter an die zuvor eingestellte externe Adresse zu zahlen.

Pool / Mining-Protokoll

  • worker.report_metrics-Heartbeats alle 60 Sekunden. Ein neuer tokio::time::interval-Branch im Stratum-Select-Loop sendet {session_id, timestamp, cpu_util_pct, ram_gb_used, gpus: [{gpu_uuid, util_pct, power_w, temp_c}], solver_nps, shares_session_total}, damit das Pool-Dashboard CPU/RAM/Share-Zähler pro Rig anzeigen kann. CPU% und RAM-Nutzung kommen aus einem einzigen top -l 1 -n 0-Aufruf, der auf einem async-Subprocess mit echtem 4-Sekunden-tokio::time::timeout ausgeführt wird. Ein hängendes top kann so weder den Stratum-Reader, das Solver-Child-Management noch Pool-Submits blockieren. GPU-Auslastung, Leistung und Temperatur werden unter macOS als JSON null gemeldet, weil powermetrics Root-Rechte erfordert (laut shibs Hinweis zu macOS-Metriken). Die Zeile erscheint trotzdem im Dashboard, die Live-Instrumentenfelder zeigen dort nur einen Strich.
  • Ein-Klick "Diese Maschine im Pool-Dashboard öffnen". Der bestehende Pool-Dashboard-Button schreibt jetzt ?worker=<kanonischer_name> in seine URL, sobald der Pool einen kanonischen Namen vergibt. Das Dashboard ist heute eine SPA, sodass der Query-Parameter vorwärtskompatibel ist. Wenn dexbtx später Routing pro Worker hinzufügt, funktioniert es ohne App-Update.
  • solver_env: {BTX_MATMUL_BACKEND: "metal"} im Hardware-Fingerprint, damit die Empfehlungsmaschine des Pools weiß, dass sie Mac-Rigs keine rein CUDA-spezifischen Einstellungen (BTX_MATMUL_GPU_INPUTS, BTX_MATMUL_SOLVE_BATCH_SIZE usw.) empfehlen soll. Vorwärtskompatibel: Der Pool whitelistet Schlüssel serverseitig, sodass die aktuelle Metal-only-Deklaration sicher ist.

UX

  • Updates sind jetzt unmöglich zu übersehen. Ein auffälliger oranger Banner oben im Dashboard erscheint sofort, wenn der Start-Update-Check eine neuere Version findet, zusätzlich zum bestehenden Eck-Hinweis. Ein Klick auf Installieren zeigt einmalig die Frage: "Zukünftige Updates beim Start automatisch installieren?" Fragen zum richtigen Zeitpunkt funktioniert viel besser als das Einstellungs-Häkchen, das niemand aufsucht. Ein easybtx-autoupdate-asked-Flag stellt sicher, dass nie erneut gefragt wird, wenn der Nutzer abgelehnt hat. Der Start-Update-Check läuft jetzt vor first_run_setup, sodass der Banner in etwa 300 ms erscheinen kann, statt erst nach dem langsamen Node-Start.
  • easyBTX macht deutlich, dass es seine eigene BTX-Node mitbringt. Ein Telegram-Nutzer, der "Sync-Fortschritt 98,5 %" sah, fragte den Kanal trotzdem: "Wie richte ich eine Node ein?" Drei kleine Berührungspunkte beantworten die Frage jetzt, bevor sie gestellt wird: Das Modal "Wie Mining funktioniert" öffnet mit "easyBTX betreibt die vollständige BTX-Node für dich, kein separates Setup nötig". Die Checkliste der Setup-Phasen lautet jetzt "BTX-Node und Chain herunterladen" / "Node mit den neuesten Blöcken synchronisieren". Der Bereich Einstellungen → Node-Status beginnt mit "Das sind die Live-Daten dieser Node, kein Remote-Service."
  • Sanfter Backup-Wallet-Hinweis. Ein dauerhafter bernsteinfarbener Banner über dem Guthaben erscheint, sobald du tatsächlich etwas BTX gemintet hast und noch kein Backup angelegt hast. "Jetzt sichern" öffnet die Einstellungen und scrollt zu "Wiederherstellungsdatei speichern". "Später" schließt den Banner nur für den aktuellen Start (er kehrt beim nächsten Start zurück, weil eine Wallet wegen einmaliger Ablehnung zu verlieren nicht in Ordnung ist). Unabhängig vom bestehenden einmaligen Setup-Gate, das auslöst, bevor der Nutzer etwas zu verlieren hatte.
  • Mining-Leistungs-Slider in einer Zeile. Beschriftung, Slider, MAX-Schaltfläche und Live-Wert wurden von einem zweizeiligen Layout in eine einzige Flex-Zeile zusammengefasst. Spart etwa 28 px vertikalen Platz. Derselbe Bitcoin-orange Akzent.
  • "Letzter Share" tickt live. Ein 1-Sekunden-setInterval aktualisiert die relative Zeit auf dem Share-Zähler, statt sie zwischen den 3-Sekunden-Status-Polls einfrieren zu lassen. Wird übersprungen, wenn document.hidden gesetzt ist, damit eine im Hintergrund laufende App keine Batterie für unsichtbare Updates verbraucht.
  • Einstellungen → Upstream-Quellen-Panel. Listet die Open-Source-Komponenten auf, auf denen easyBTX aufbaut (BTX-Node btxchain/btx gepinnt auf v0.30.1, MineBTX dexbtx/minebtx, Tauri v2, das öffentliche EasyBTX-releases-Repo). Jede Zeile zeigt die gepinnte Version im Vergleich zum neuesten Tag, live von der GitHub-API geholt, plus ein "Aktuell / Update verfügbar"-Badge. Maintainer-Dashboard, um zu verfolgen, wann Upstreams über uns hinausgehen. 5 Minuten gecacht. Aktualisieren-Schaltfläche umgeht den Cache.
  • Community-Signale im About-Modal. Live-Kacheln für easyBTX-Installationen (Summe der GitHub-Releases-Asset-Download-Zahlen), aktuell verbundene Pool-Miner, in den letzten 24 h gefundene Blöcke und Netzwerkgeschwindigkeit. Beim Modal-Öffnen aktualisiert, 60 Sek. gecacht. Ehrliche Darstellung: Die "Miner online"-Kachel ist mit "inkl. easyBTX + andere Clients" beschriftet, weil die Pool-API Worker noch nicht nach miner_version aufteilt.

Brand

  • easyBTX wird in Prosa jetzt einheitlich kleingeschrieben. 17 Ersetzungen in README, CHANGELOG, NOTICE und dem docs/-Ordner. URL-Pfade (MendeMatthias/EasyBTX-releases), der Rust-Typ EasyBtxState und Artifact-Namen der Release-Pipeline (EasyBTX.dmg, EasyBTX.app) wurden bewusst beibehalten.

Wartung

  • Niedrigspeicher-Warnbanner. Ruft alle 3 Sek. beim selben Status-Refresh freien Speicher ab, der den Rest der UI antreibt. Unter 1 GB zeigt es einen bernsteinfarbenen Hinweis, unter 500 MB einen roten mit schnellerem Blinken. Beide erscheinen auch wenn RPC nicht erreichbar ist, was genau dann am wichtigsten ist (btxd ist gerade wegen Fatal LevelDB error: No space left on device abgestürzt, RPC ist nicht erreichbar, der Nutzer hat keine Ahnung warum).
  • Einstellungen → Wartung → Festplattenplatz freigeben. Ein-Klick-Rückgewinnung: löscht die ungenutzten blockfilter/coinstats-btxd-Indizes, den Post-Load-assumeutxo-Snapshot, und kürzt debug.log, wenn es 50 MB überschritten hat. Für den Fall, dass du Speicherplatz brauchst, aber noch nicht bereit bist, das Datenverzeichnis auf ein externes Volume zu verlagern.

Vorab-Release-Härtung

  • worker.report_metrics-Erfassung ist async. Das synchrone std::process::Command::output() (kein Timeout, blockiert den Tokio-Runtime-Worker so lange, wie top braucht) wurde durch tokio::process::Command mit echtem 4-Sekunden-tokio::time::timeout ersetzt. Ein hängendes top blockiert jetzt weder den Stratum-Reader, das Solver-Child-Management noch Pool-Submits.
  • Einzel-Guard-Lesung des Pool-Status im Metrics-Tick. Ein zweistufiges Lock/Unlock von status.lock().await wurde in einen einzigen bewachten Scope zusammengeführt, damit shares_accepted und hashps immer zur selben Status-Tick-Generation beobachtet werden.

Doku

  • docs/2026-05-28-btx-qid-self-custody.md. Recherche und 4-Phasen-Plan für das Verankern einer quantenresistenten, selbstverwahrenden "qID" (Passkey und 2-von-3-Shamir/MPC-Share-Split) in einem BTX-Seed, damit die oben genannte externe Auszahlungsadresse später eine sein kann, die der Nutzer auf einem Telefon/Passkey hält, statt einer weiteren Hot-Wallet. Vorausschauende Planung für die bonuz-HQ-Seite. Kein App-Code hängt davon ab.

v0.2.0

2026-05-28

Das "Mega-Audit"-Polish-Release. Ein /cso-Sicherheitsaudit und ein 3-Agenten-Funktions-Fehler-Audit fanden 4 KRITISCHE, 10 HOHE, 13 MITTLERE und einige NIEDRIGE Probleme in v0.1.13. Dieses Release schließt alle auf einmal. cargo test: 149/149. tsc --noEmit: sauber. Kein öffentliches IPC wurde entfernt, aber send_btx erhielt einen expliziten subtract_fee: bool-Parameter (der Max-Button des Frontends übergibt ihn). EasyBtxState erhielt drei #[serde(default)]-Felder (ältere State-Dateien laden weiterhin).

Kritische Fixes (Datenverlust / verwaiste Prozesse / erzwungene Neusynchronisierung)

  • Multi-Wallet-Löschung wird bei Datenverzeichnis-Verlagerung blockiert. relocate_datadir zählt jetzt alle Wallets unter src auf (jedes Verzeichnis mit wallet.dat) und schlägt geschlossen fehl, es sei denn, JEDE ist in dest vorhanden und nicht leer, bevor remove_dir_all(src) läuft. Die vorherige 97%-Größenprüfung validierte nur miner/wallet.dat und hätte den stillen Verlust einer kleineren sekundären Wallet toleriert.
  • Pool und Metal-Solver werden beim App-Beenden jetzt korrekt heruntergefahren. stop_node_blocking signalisiert pool_stop, wartet mit 3-Sekunden-Timeout auf pool_handle (bricht das JoinHandle bei Überschreitung ab) und löscht den Pool-Status. Der Solver-Command erhielt .kill_on_drop(true), sodass ein weggeworfenes JoinHandle den Subprocess reap, statt ihn bei 100 % GPU nach dem Beenden hängen zu lassen.
  • Snapshot.dat wird nicht mehr gelöscht, bevor loadtxoutset tatsächlich erfolgreich ist. Ein neues persistentes Flag EasyBtxState.snapshot_loaded wird NUR gesetzt, wenn loadtxoutset erfolgreich ist (oder wenn getchainstates bereits einen Snapshot-Chainstate meldet). Alle disk::reclaim_disk-Aufrufer lesen jetzt dieses korrekte Flag statt setup_complete (das beim RPC-Bind kippt, noch vor dem Background-Snapshot-Load). Das Schließen der App während des Ladens löscht den Snapshot nicht mehr und erzwingt keine vollständige Genesis-Neusynchronisierung.
  • Solver-Output-Guard verhindert Nonce-Cursor-Kollaps. solve_next_nonce rückt jetzt nur vor, wenn tries_used > 0 UND nonce64_end >= solve_next_nonce (monoton). Ein degeneriertes {"found":false} mit fehlendem nonce64_end setzte den Cursor früher auf 1 zurück und führte zu doppelten Share-Einreichungen (Code 22).

Fixes mit hohem Einfluss

  • repair_node wechselt nicht mehr still zur "miner"-Wallet. Es liest jetzt state.active_wallet (entsprechend dem Muster von reclaim_disk_now) vor dem Neuaufbau von wallet_rpc. Das ist der H1-Fix aus PR #12, der hier noch nicht angewendet worden war.
  • move_datadir_to lehnt exFAT/FAT-Volumes ab. Die Warnung von list_external_volumes wird jetzt an der Verschiebegrenze erzwungen, nicht nur als Tooltip angezeigt.
  • apply_node_update tauscht tatsächlich auf das neue btxd-Binary um. Vorher war es ein No-Op (neue Installation wurde nie weiterverwendet). Es persistiert jetzt den neuen Tag (EasyBtxState.btx_release_tag), stoppt den laufenden Controller und startet ihn gegen die neuen Binaries neu. check_node_update/get_node_status respektieren den gespeicherten Tag, sodass der Update-Banner aufhört zu kleben.
  • ntime-Änderung mitten in einer Lösung setzt den Nonce-Cursor zurück. Wenn eine nicht-saubere Benachrichtigung ntime oder merkleroot ändert, startet die nächste Lösung am Anfang unseres Nonce-Fensters neu (statt an niedrigen Nonces des neuen Headers vorbeizurücken).
  • clean_jobs=true führt nicht mehr zu einem zeitknappen Submit eines gerade beendeten Solvers auf einen veralteten Job. Der Clean-Kill-Pfad leert den Stdout des toten Childs und löscht solving_job, sodass ein mikrosekundenverspätetes Solver-Ergebnis am Submit-Gate geschlossen scheitert.
  • _corrupt-<ts>-Archiv-Kollision kann die Chain nicht mehr hart löschen. Sub-Mikrosekunden-Zeitstempel und ein -N-Zähler verhindern die Kollision. Bei einem Archivierungs-Rename-Fehler wird jetzt Err zurückgegeben und src an Ort und Stelle gelassen (zuvor löschte das Fallback-remove_dir_all(src) die beschädigte Chain dauerhaft und brach das "niemals hart löschen"-Versprechen).
  • Pool-Gebührenabrechnung entspricht der Disziplin von Solo. Stop/Clean-Kill/Deadline-Grenzen schreiben die verstrichene Kill-Zeit nicht mehr als Dev-mined_secs gut. Aufgelaufene Zeit zählt jetzt nur noch im Wait-for-Solver-Branch bei parsbarem Output mit tries_used > 0. Der 3,5%-Entwickleranteil kann unter Stop-Churn nicht mehr nach oben kriechen.
  • Share-Verlust bei Verbindungstrennung wird in der UI angezeigt. Ein mining.submit-Schreibfehler setzt jetzt last_event = "share lost (disconnect)..." und erhöht den Stale-Zähler, bevor er zur Reconnect-Schleife zurückkehrt.
  • Ein instabiles Netzwerk kann "developer fee window..." nicht mehr einfrieren lassen. Eine kumulative Versuch-Zeit-Begrenzung (300 Sek.) zwingt die nächste Sitzung auf die Nutzer-Auszahlung, wenn ein einzelnes Gebührenfenster immer wieder keine Verbindung herstellen kann.
  • Beim Start wird auf das Standard-Datenverzeichnis zurückgefallen, wenn der Zeiger auf ein externes Laufwerk ins Leere zeigt. Bisher ließ ein abgezogenes Laufwerk zwischen Zeiger-Schreiben und Src-Löschen die App auf einem nicht vorhandenen Pfad stecken.

Mining und Pool-Korrektheit

  • Subscribe/Authorize-Fehler werden jetzt protokolliert und in last_event angezeigt (vorher still ignoriert. Ein Pool-seitiger Schema-Bump konnte das gesamte Pool-Mining ohne UI-Feedback deaktivieren).
  • submit_id wird vom Verbindungszeitpunkt-Epoch-Mikrosekunden initialisiert, sodass IDs sich über Reconnects hinweg nicht wiederholen.
  • Solo: Nach einem Paused-Tick überspringt die nächste Iteration den Fee-Burst und mint für den Nutzer (Defizit wird im nächsten nicht-pausierten Tick aufgeholt). Verhindert, dass ein einzelner Solo-Block während Sync-Pause-Flapping auf die Dev-Adresse fällt.
  • Snapshot-Idempotenz prüft jetzt per SHA jeden bestehenden snapshot.dat, dessen Größe zufällig übereinstimmt (vorher wurde eine falsche Datei mit exakt der richtigen Größe ohne Prüfung akzeptiert).

Wallet / Senden / Audit-Polishing

  • Stabile Empfangsadresse pro Wallet. EasyBtxState.wallet_addresses merkt sich die Adresse jeder Wallet. do_switch_wallet verwendet sie über address_is_mine wieder, statt bei jedem Wechsel eine neue zu prägen.
  • Audit/CSV-Exporte bis zu 10.000 Transaktionen. (Vorherige Begrenzung von 1.000 ließ ältere Einträge lang laufender Miner still fallen.)
  • Senden "Max" ist jetzt ein explizites Flag, kein Sat-Toleranz-Heuristik. Das Frontend verfolgt den Max-Klick. Das Backend-send_btx(.., subtract_fee) respektiert ihn. Genau dein Guthaben manuell zu senden schrumpft jetzt nicht mehr still.
  • Backend-send_btx validiert den Betrag und lehnt Überziehungen ab. Nicht-finite, null, negative und amount > spendable-Werte werden an der IPC-Grenze abgelehnt (nicht erst bei btxd).
  • backup_wallet_cmd lehnt Pfade ab, die es nicht kanonisieren kann, und weist jeden Pfad mit ..-Komponenten zurück. Die frühere "bei Kanonisierungsfehler überspringen"-Lücke ist geschlossen.
  • Europäische Dezimalkommas beim Senden. parseFloat wird an beiden Send-Aufrufstellen von replace(/,/g, ".") vorangestellt. 1,5 BTX wird jetzt als 1,5 geparst, nicht als 1.
  • Explorer-Link-btx1-Präfixprüfung. addrExplorerUrl stimmt jetzt mit der Send-Eingabe-Regex (^btx1[a-z0-9]{20,90}$/i) überein, sodass Audit-Zeilen nicht auf nicht existierende Explorer-Seiten verlinken können.
  • Pool-Auszahlung validiert die gecachte Adresse erneut mit address_is_mine, bevor sie an Stratum übergeben wird. Prägt bei Nichtübereinstimmung eine neue.
  • Pool-Task wird während repair_node und relocate_datadir korrekt gestoppt (lief zuvor weiter und reichte Shares gegen eine gelöschte/verschobene Chain ein).
  • persist_active_wallet ist gesperrt. Ein neues STATE_FILE_LOCK serialisiert die Lade-Mutiere-Speichere-Sequenz, sodass ein Doppelklick keine Updates mehr verlieren kann.

Sicherheit (das /cso-Audit)

  • Pool-Log aus /tmp verschoben und abgesichert. Logs liegen jetzt unter $HOME/.easybtx/pool.log (Fallback /tmp, wenn HOME nicht gesetzt ist), geöffnet mit mode(0o600) und O_NOFOLLOW. World-readable/symlink-angreifbare Angriffsfläche geschlossen.
  • Die an den Pool gesendete gpu_uuid ist jetzt ein gesalzener SHA-256, nicht die rohe IOPlatformUUID. Der Hash ist pro Installation stabil (damit Pool-Worker-Korrelation weiterhin funktioniert), aber der rohe Hardware-Identifier verlässt die Maschine nicht mehr.
  • RpcClient::for_wallet percent-encodes den Wallet-Namen in den Pfad. Aktuell sicher per Konvention (alle Aufrufer validieren). Jetzt auf Funktionsebene erzwungen statt durch Reviewer-Disziplin.

Intern / Chores

  • Version: 0.1.13 zu 0.2.0 (package.json, tauri.conf.json, Cargo.toml).
  • EasyBtxState erhielt snapshot_loaded, btx_release_tag und wallet_addresses (alle #[serde(default)]; Legacy-State-Dateien laden weiterhin).
  • STATE_FILE_LOCK in state.rs eingeführt, um das Lade-Mutiere-Speichere-Muster zu serialisieren. reset_account/restore_wallet/first_run_setup-State-Writes laufen jetzt darüber.
  • Ein bekannter veralteter Doku-Link TODO(H3-followup) in apply_node_update verweist auf den nahtlosen In-Session-RPC-Re-Arm (der persistierte-Tag- und Restart-Pfad ist geliefert. Der In-Session-Cookie-Wait ist der Follow-up).

v0.1.13

2026-05-28

Hinzugefügt

  • Eingehende Guthabenszeile. Eine eingegangene Zahlung, die noch nicht bestätigt ist (untrusted_pending), erscheint jetzt als klare "Eingehend ... wird bestätigt"-Zeile, statt verschwunden auszusehen, bis sie bestätigt wird. Das verfügbare Guthaben bleibt nur aus vertrauenswürdigen Mitteln, sodass Senden nie überziehen kann.
  • Block-Explorer-Links. Transaktions-IDs und Adressen in Senden, Empfangen und Audit/Übersicht öffnen auf explorer.minebtx.com (abgekürzt, kopierbar und öffenbar). Der Senden-Bestätigungsbildschirm zeigt die vollständige Empfängeradresse, damit du sie prüfen kannst.
  • Senden: "Max"-Schaltfläche und sicheres Vollsenden. Eine Max-Schaltfläche füllt dein gesamtes verfügbares Guthaben ein, und ein Vollguthaben-Senden zieht jetzt die Netzwerkgebühr vom Betrag ab, statt mit "nicht ausreichende Mittel" zu scheitern. Die Empfängeradresse wird vor dem Bestätigungsschritt ebenfalls geprüft.
  • Speicherplatz zurückgewinnen. Eine Schaltfläche Einstellungen → Speicher (und ein automatischer Durchlauf beim Start) gibt Speicherplatz frei, indem die ungenutzten blockfilterindex/coinstatsindex, der Post-Load-assumeutxo-Snapshot und ein übergroßes debug.log gelöscht werden. Die Blockchain und deine Wallet werden niemals berührt.

Pool

  • Das Pool-Auszahlungsinfo-Popup zeigt jetzt die echte Richtlinie (wöchentlich freitags 18:00 UTC, 0,0001 BTX Minimum, 2,5 % Pool-Gebühr) statt vager Formulierungen.
  • easyBTX identifiziert sich beim Pool jetzt als easybtx/<version>, damit der Pool eBTX-Miner für Statistiken segmentieren kann. Hardware-Infos geben deinem Worker einen kanonischen Dashboard-Namen.

Behoben

  • Pool-Block-Tier pre_hash. Der Metal-Share-Solver erzwingt jetzt das Block-Tier-pre_hash-Gate (sigma <= block_target << epsilon), statt es für Shares zu umgehen, damit Block-Tier-Shares gültige Blöcke sind und der submitblock des Pools aufhört, mit "matmul phase2 proof of work failed" zu scheitern. easyBTX deklariert die pre_hash_block_tier_v18-Capability in mining.subscribe. (Solver-Änderung liegt in btx-main. Siehe docs/patches/btx-prehash-block-tier.patch.)

Geändert

  • Mining-Leistung ist jetzt ein Live-Slider oben auf der Stats-Karte. Er heizt sich grün zu orange-rot auf, wenn du ihn aufschiebst (5%-Schritte, Max-Schaltfläche), und bleibt mit dem Einstellungs-Slider synchron. Die alten Geschwindigkeits/Leistungs-Ausgabe-Zeilen sind weg, sodass die Karte kürzer ist. Ein Schaltflächen-Infozeichen auf dem Slider erklärt bewährte Vorgehensweisen (ca. 50 % für leichte Arbeit hält den Mac kühl und leise; 100 % ist am schnellsten, aber heißt und entleert den Akku).
  • Die aktive Wallet wird jetzt ausschließlich vom Backend bezogen (einzige Quelle der Wahrheit). Das Frontend wendet keine Wallet mehr aus localStorage an, sodass Wallet-Chip und Adresse nicht kurzzeitig abweichen können.
  • Die Pool-Einnahmen-Karte ist kürzer: Der Auszahlungserklärer wurde in ein Schaltflächen-Popup neben "Akzeptierte Shares" verschoben, und der Worker sitzt neben dem "Pool-Dashboard öffnen"-Link, damit sie als Paar gelesen werden.