v0.4.7

DERNIÈRE
2026-06-02

Le minage en pool sur le Mac est désormais instantané, sans nœud à télécharger ni synchronisation.

L'essentiel est la rapidité. En mode pool, easyBTX ne télécharge plus et n'exécute plus le nœud BTX complet. Le minage en pool n'en a jamais eu besoin, et il ajoutait un téléchargement de plusieurs gigaoctets, de longues synchronisations de "mise à jour", et un plantage occasionnel. Maintenant, vous ouvrez l'app, votre adresse de paiement est déjà renseignée, et votre Mac commence à miner aussitôt. Si vous aviez déjà easyBTX, votre adresse de paiement existante est reprise automatiquement, il n'y a donc rien à reconfigurer.

Modifié

  • Le minage en pool sur le Mac fonctionne sans le nœud BTX complet : il démarre instantanément, sans blockchain à télécharger, rien à synchroniser, et aucun nœud susceptible de planter. Le minage solo sur le Mac est en pause pour l'instant, le temps que nous nous concentrions sur le minage en pool ; il reviendra.
  • Votre adresse de paiement se renseigne automatiquement depuis votre configuration précédente, donc une mise à jour ne laisse jamais le champ vide.
  • La vitesse de minage s'affiche maintenant en N/s, la même unité que celle utilisée par le pool, pour que le chiffre dans l'app corresponde à votre tableau de bord du pool.
  • L'app s'ouvre toujours dans sa mise en page haute, qui convient à tous les écrans.

Ajouté

  • Un bouton vert "Get the BTX Wallet" dans Transactions et dans les réglages de paiement, qui renvoie vers le portefeuille BTX autonome.
  • Une action optionnelle pour récupérer de l'espace disque en supprimant les anciennes données de nœud dont vous n'avez plus besoin en mode pool. Vos wallets ne sont jamais touchés.

v0.4.6

2026-06-01

Le minage en pool fonctionne de nouveau sur le Mac, plus un panneau de statistiques GPU en direct.

L'essentiel est un correctif. Le minage en pool sur le Mac, cassé dans la 0.4.5, fonctionne de nouveau. Un changement effectué en portant easyBTX sur Windows dirigeait le Mac vers le mauvais assistant de minage, si bien que le minage ne démarrait pas. Ceci le rétablit. Si vous êtes passé à la 0.4.5 et ne pouviez pas démarrer le minage, ceci le corrige, et le Mac se comporte exactement comme en 0.4.4.

Corrigé

  • Le minage en pool fonctionne de nouveau sur le Mac. Un changement de la 0.4.5 pour la version Windows dirigeait le moteur de minage du Mac vers le mauvais assistant, si bien que le minage ne démarrait pas. Rétabli tel qu'il fonctionnait en 0.4.4.

Ajouté

  • Un panneau de statistiques GPU en direct dans l'écran À propos : utilisation, fréquences, puissance, température, mémoire et ventilateur, mis à jour tant que le panneau est ouvert. Le Mac affiche l'utilisation, la puissance et la température ; Windows affiche l'ensemble complet lu depuis votre carte NVIDIA.

vWindows 0.4.4

2026-05-31

easyBTX arrive sur Windows.

C'est la première version Windows. easyBTX mine désormais du BTX sur les PC Windows équipés d'un GPU NVIDIA RTX série 30 ou plus récent, avec la même approche une app, un clic, auto-conservée que la version Mac. Vous apportez une carte NVIDIA, vous choisissez une adresse de paiement, et votre GPU rejoint le pool. La version Mac (Apple Silicon, Metal, solo ou en pool) reste inchangée.

v0.4.4

2026-05-30

L'envoi fonctionne de nouveau, vos propres statistiques de minage privées, et des fenêtres plus grandes et plus calmes.

Une mise à jour ciblée qui fait suite à la 0.4.3. L'essentiel est un correctif : envoyer des BTX depuis l'app fonctionne de nouveau après qu'une version récente pouvait faire échouer un envoi avec un message trompeur. À côté de cela, l'écran À propos affiche maintenant vos propres statistiques de minage, les fenêtres popup s'ouvrent toutes dans la même forme spacieuse, et copier le lien explorateur d'une transaction se fait d'une seule pression.

Ajouté

  • Votre minage : un panneau de statistiques privé dans À propos, qui montre depuis combien de temps vous avez miné au total, votre vitesse moyenne, vos shares acceptés et le jour où vous avez commencé. Il reste uniquement sur votre Mac et n'est jamais envoyé.
  • Un bouton "Copier le lien" sur chaque transaction, pour copier son lien vers l'explorateur de blocs et le coller où vous voulez.

Modifié

  • À propos, Réglages, Transactions et les popups d'information s'ouvrent maintenant dans une seule fenêtre plus grande et cohérente, plus facile à lire.
  • Les Réglages ont un menu latéral plus net. La section Liens pointe désormais vers le site officiel du protocole BTX et, séparément, vers un site de prix en direct (un tiers ; pas un conseil financier, et easyBTX en est indépendant).

Corrigé

  • Envoyer des BTX depuis l'app fonctionne de nouveau. Une version récente pouvait refuser un envoi avec un message trompeur "vérifiez l'adresse" même quand l'adresse était correcte ; c'est corrigé, et les messages d'erreur décrivent maintenant la vraie cause.

v0.4.3

2026-05-30

Mettre en pause et reprendre, un redémarrage plus serein, plus de confidentialité, et votre Mac sur le tableau de bord du pool.

Cette version s'appuie sur la refonte de la 0.4.0 avec un lot d'améliorations du quotidien. Arrêter le minage garde maintenant votre nœud au chaud et propose une Reprise verte, la longue attente de "mise en route" après un redémarrage s'explique d'elle-même au lieu de sembler bloquée, et vous pouvez masquer votre solde d'une seule pression. Les mineurs en pool peuvent désormais afficher les chiffres GPU en direct de leur Mac et le nom choisi sur le tableau de bord minebtx.

Ajouté

  • Pause et Reprise. Le bouton affiche "Pause" pendant le minage, puis une "Reprise" verte ensuite au lieu d'un froid "Démarrer". Votre nœud reste au chaud entre-temps, vous pouvez donc repartir aussitôt.
  • Un œil de confidentialité à côté de votre solde le masque derrière des points jusqu'à ce que vous le révéliez, pratique quand vous partagez votre écran ou êtes en public. Votre choix est mémorisé.
  • Les décimales du solde : affichez les 8 chiffres complets, ou 3 plus courts pour un coup d'œil rapide. Cela change uniquement l'affichage, jamais ce que vous détenez ou envoyez.
  • Un statut en direct clair pendant que le nœud se met en route après un redémarrage. Au lieu d'un "Travail en cours..." figé, il explique qu'il reconstruit votre index de solde privé, affiche une estimation et le temps écoulé, et précise que la blockchain est déjà à jour.
  • Des vérifications CPU, GPU et pool-ou-solo sur l'écran de minage, pour qu'en un coup d'œil vous voyiez que votre Mac mine bien sur le GPU et qu'il est connecté comme vous l'attendez.
  • Des relevés GPU en direct pour le tableau de bord du pool minebtx. easyBTX rapporte au pool l'utilisation et la consommation GPU de votre Mac (aucun droit administrateur requis), pour que votre worker affiche de vrais chiffres au lieu de cases vides, et le nom que vous définissez dans les Réglages identifie votre machine.
  • Un nettoyage de fond discret qui efface les anciens restes de réparation sur les installations laissées en marche longtemps, pour qu'ils ne s'accumulent pas sur le disque.

Modifié

  • Les Réglages s'ouvrent maintenant dans votre thème actuel. Ils s'affichaient toujours en clair auparavant ; maintenant ils correspondent à l'app, donc une app sombre garde aussi les Réglages en sombre.
  • Les Réglages ont une mise en page de barre latérale plus nette, avec des cartes de thème et un choix de "mise en page favorite au démarrage".
  • Les popups d'information ("Comment fonctionne le minage" et les autres) correspondent maintenant au style des Réglages : une fenêtre plus spacieuse et plus calme, qui se lit plus facilement.

Corrigé

  • Le panneau Sources en amont dans les Réglages n'affiche plus "Dernière version indisponible" sur chaque ligne. Il récupère de nouveau les vraies dernières versions.

v0.4.0

2026-05-29

Un nouveau design, et le minage en pool envoie désormais vos récompenses vers votre portefeuille externe.

easyBTX a une nouvelle interface. La fenêtre par défaut est plus large, en mode "salle de contrôle" : tout s'étale sur trois colonnes tranquilles, rien ne déborde en bas de l'écran même quand votre nœud est rempli d'informations en direct. Un sélecteur de thème fait aussi son apparition. Sombre reste le thème par défaut, Clair est disponible si vous le préférez, et l'option Système suit automatiquement les réglages de votre Mac. Le minage en pool prend maintenant en charge votre adresse de paiement externe, comme le faisait déjà le minage solo. Vous pouvez miner depuis un portable qui n'héberge jamais les clés de vos coins.

Ajouté

  • Une nouvelle mise en page large "salle de contrôle", désormais par défaut : l'écran de statut à gauche, l'affichage du minage, la puissance et le portefeuille au centre, et vos données réseau et pool en direct à droite. Les anciennes mises en page Grande, Compacte et Mini sont toujours à portée d'un clic.
  • Les thèmes Sombre, Clair et Système. Sombre reste le thème par défaut. Choisissez Clair si vous le préférez, ou Système pour suivre votre Mac automatiquement. Votre choix est mémorisé.
  • Un bouton de navigation rapide dans Réglages pour chaque section (Nœud, Minage, Apparence, Emplacement des données, Wallets, Paiement, Sauvegarde, Mises à jour, Maintenance, Nouveau compte, Sources, Liens). Appuyez sur un bouton pour y accéder directement.

Modifié

  • Le minage en pool envoie désormais vos récompenses vers votre adresse de paiement externe si vous en avez configuré une. Avant, seul le minage solo faisait cela. Dans les deux cas, les coins ne transitent jamais par le portefeuille de ce Mac : un portable compromis n'en aura jamais eu les clés.
  • La commission d'outil easyBTX est maintenant de 4,99 % des récompenses minées (elle était de 3,5 %). Elle est toujours prélevée par tranches temporelles et annoncée clairement, et la commission du pool (2,5 %) reste inchangée. Le minage en pool revient donc à environ 7,5 % au total. Le reste va directement dans votre portefeuille.
  • Les Réglages sont organisés en tuiles propres, côte à côte quand l'espace le permet, et lisibles en mode Clair comme en mode Sombre.
  • "Audit / Aperçu" s'appelle maintenant simplement "Transactions".
  • La liste de contrôle d'installation est plus claire. Chaque étape devient une coche verte avec un libellé simple indiquant ce qui s'est passé ("Nœud BTX et chaîne téléchargés", "Nœud synchronisé sur les derniers blocs", "Minage en cours"), au lieu de rester un élément orange à faire.
  • Le nom easyBTX dans l'en-tête est un peu plus grand, dans une barre légèrement plus fine.

Corrigé

  • "Libérer de l'espace disque" indique maintenant la quantité réellement libérée, y compris le grand snapshot ponctuel, au lieu de sous-estimer le montant et de libérer le reste discrètement au prochain démarrage.
  • Votre nœud n'affiche plus "bloc 0 sur 0" après une opération de libération d'espace ou un redémarrage. Il se souvient de sa position et l'affiche pendant la vérification, plutôt que de sembler repartir d'une synchronisation vierge.
  • Un nœud déjà synchronisé qui redémarre n'attend plus longtemps au démarrage après une opération de maintenance ou un redémarrage.

v0.3.1

2026-05-29

Votre nœud n'a jamais l'air cassé pendant qu'il rattrape son retard. Après la fermeture prolongée d'easyBTX, ou un arrêt brutal (plantage, forçage de fermeture, ou remplacement de l'app pendant son fonctionnement), votre nœud a parfois besoin de quelques minutes pour se remettre à niveau à la prochaine ouverture. Avant, easyBTX pouvait confondre ce temps de rattrapage avec un vrai problème et afficher une erreur. Maintenant, il attend calmement, vous dit ce qui se passe, et laisse votre portefeuille et vos coins intacts. Il ne proposera jamais de réparation pendant que le nœud est simplement en train de rattraper. Vous n'avez rien à faire.

Corrigé

  • easyBTX n'affiche plus d'erreur au démarrage quand votre nœud est en train de rattraper son retard. Il fait maintenant la différence entre un nœud qui traite encore ses données et un nœud qui s'est réellement arrêté.
  • L'action destructrice "Réparer le nœud" n'est plus proposée pendant que le nœud rattrape son retard. Elle n'apparaît que quand il y a un signal de corruption réel ou que le processus du nœud s'est effectivement arrêté.
  • Plus d'étape fantôme "Télécharger le nœud BTX et la chaîne" pendant qu'un nœud récupéré n'est qu'en phase de démarrage avec sa chaîne déjà sur le disque : la liste de contrôle d'installation correspond à la réalité.
  • Suppression de la limite de temps fixe qui pouvait interrompre un nœud en bonne santé. Un nœud qui progresse réellement reçoit maintenant le temps nécessaire pour terminer.

Amélioré

  • Un message plus clair et plus calme pendant que votre nœud rattrape son retard, pour qu'une attente normale de quelques minutes ne ressemble pas à un échec.
  • Votre portefeuille et vos coins ne sont jamais touchés pendant le démarrage ou la récupération. easyBTX restaure les données de chaîne depuis un snapshot sauvegardé, jamais vos clés.

Sous le capot

Quand votre nœud redémarre après une période hors ligne ou un arrêt non propre, il reconstruit une partie de son état interne avant de pouvoir traiter des requêtes. Pendant cette fenêtre, le nœud est actif et fonctionne, mais il répond avec un statut "encore en démarrage" (code RPC -28, renvoyé avec un HTTP 500). La version précédente traitait cela comme un échec définitif et abandonnait après une limite fixe de 360 secondes, ce qui précipitait un nœud parfaitement sain dans un écran d'erreur proposant aussi un bouton de réparation destructrice. La version 0.3.1 classe chaque sonde de démarrage en trois états : prêt, en démarrage, ou indisponible. Un nœud en démarrage (statut -28, ou un journal de nœud montrant une reconstruction en cours) est traité comme "continuer à attendre" et reçoit une marge généreuse pour terminer. Un nœud qui ne répond jamais abandonne tout de même à une limite raisonnable. Le chemin de réparation destructrice reste conditionné au même signal de corruption confirmée qu'auparavant : il ne peut se déclencher que quand quelque chose va vraiment mal, jamais parce que le démarrage était lent. Toutes les règles de sécurité de récupération sont inchangées : votre portefeuille est toujours préservé, les données endommagées sont archivées plutôt que supprimées, la récupération s'exécute au plus une fois par lancement, et elle refuse de s'exécuter si le disque est plein.

Livraison

Livré automatiquement aux installations 0.3.0 existantes via le système de mise à jour intégré. Compilé et publié localement. Build indie non signé ; la notarisation Apple est sur la feuille de route.

v0.3.0

2026-05-28

La version "conformité pool et transparence". Le pool dexbtx de shib est passé en v5 le 2026-05-27 avec une obligation de capacité pre_hash_block_tier_v18 et un nouveau dict d'extension mining.subscribe contenant session_id et une empreinte matérielle par rig. easyBTX v0.2.0 n'envoyait que deux des trois champs requis, ce qui signifiait que les workers Mac se connectaient au pool mais n'apparaissaient jamais dans le tableau de bord des workers. La v0.3.0 embarque la poignée de main complète v0.3.x, ajoute le heartbeat worker.report_metrics qui déverrouille les lignes du tableau de bord par rig en direct, et affiche le nom canonique que le pool attribue à chaque rig afin que les utilisateurs puissent faire correspondre leur Mac à sa ligne dans /stats. En plus de cela, la première fonctionnalité d'auto-garde optionnelle : les récompenses minées en solo peuvent maintenant être payées vers une adresse BTX externe sans clé sur ce Mac. Plus un ensemble de travaux UX demandés par la base d'utilisateurs v0.2.0 sur Telegram. cargo test : 195/195. tsc --noEmit : propre. cargo build --release + npm run build : les deux au vert.

Corrections critiques

  • L'enregistrement du pool dexbtx est rétabli pour les workers Mac. mining.subscribe envoie maintenant le dict d'extension v0.3.x complet : protocol_compliant: ["pre_hash_block_tier_v18"], l'empreinte matérielle existante (étendue avec solver_env: {BTX_MATMUL_BACKEND: "metal"}), et un session_id par session (32 caractères hexadécimaux minuscules correspondant à la forme uuid.uuid4().hex du miner de référence, construit depuis SHA256("easybtx-session:" || nanos || pid || counter) pour que les sessions consécutives ne se collisionnent jamais). Sans session_id, le pool v5 excluait silencieusement les workers Mac du tableau de bord et du bot Telegram /stats. mining.set_canonical_name est maintenant géré et l'attribution est conservée dans ~/.easybtx/canonical_names.json pour que le label attribué par le pool (ex. M2_PRO-BRAVO-1) survive aux reconnexions. La ligne "Worker de cette machine :" dans l'interface affiche maintenant ce label dès qu'il arrive.
  • Les mises à jour du nœud ne prennent plus 8 minutes. NodeController::stop interroge Child::try_wait pendant 90 secondes au plus avant de recourir à SIGKILL. Auparavant, l'arrêt immédiat survenait en plein flush sur la LevelDB de l'état blindé btx1z, laissant un marqueur de mutation en cours qui déclenchait EnsureShieldedStateInitialized: rebuilding full shielded state from chain au prochain démarrage (chronométré à 7m 57s dans la réalité). Un arrêt propre ne laisse aucun marqueur et le démarrage revient à environ une seconde.
  • Les quarantaines de Réparation du nœud ne consomment plus des gigaoctets indéfiniment. Le nouveau prune_old_quarantines supprime les répertoires _corrupt-* et _preserve-* de plus de 7 jours tout en conservant le plus récent de chaque type à des fins de diagnostic. S'exécute au démarrage de l'app (pour les quarantaines périmées des sessions passées) et à la fin de chaque repair_node (pour les quarantaines périmées des réparations précédentes). Une vieille quarantaine _corrupt-* retenait 42 Go sur la machine du mainteneur. Inclut 6 nouveaux tests unitaires pour la logique de rétention.

Paiement externe (auto-garde optionnelle)

  • Les récompenses minées en solo peuvent maintenant être payées vers une adresse BTX externe sans clé sur ce Mac. Nouvelle section Réglages, Paiement du minage : gardez le réglage par défaut (les récompenses arrivent dans le portefeuille local de ce Mac) ou redirigez-les vers une adresse que vous contrôlez ailleurs, un hardware wallet, un portefeuille sur téléphone, ou une adresse froide. L'enjeu est la garde. La menace réaliste pesant sur une machine de minage est l'exécution de code par le même utilisateur (un stealer de type AMOS que l'utilisateur est trompé à exécuter), et une machine laissée à miner 24h/24, souvent un vieux portable réaffecté exactement à cet usage, est une cible facile. Rediriger les récompenses vers une adresse externe signifie que les coins accumulés n'ont jamais eu de clé sur la machine de minage. Les adresses collées sont vérifiées au format à la frontière IPC (bech32, accepte le préfixe post-quantique btx1z... ; détecte les collages sur le mauvais réseau, les espaces en début et fin, et les homoglyphes comme b/i/o) avec un bouton "Tester le format" en direct ; le RPC validateaddress du nœud effectue la vérification complète du checksum quand il est disponible.
  • La commission de développement de 3,5 % annoncée est inchangée. Le moteur de paiement a été généralisé de l'ancien FeeAccrual binaire utilisateur/développeur vers un round-robin pondéré à N destinataires (PayoutScheduler) avec la commission de développement comme destinataire obligatoire. Un test unitaire prouve que la part développeur réalisée converge toujours vers 3,5 % sur 1000 à 2000 chunks quelle que soit la configuration utilisateur, de sorte qu'ajouter un paiement externe ne modifie jamais la répartition.
  • Solo uniquement dans cette version, et l'app le dit clairement. La v0.3.0 achemine le paiement externe uniquement pour la coinbase minée en solo : les récompenses du pool atterrissent toujours dans le portefeuille local (le paiement externe en pool est prévu en v0.3.2). Si un paiement externe est configuré ET que vous êtes en mode Pool, une bannière rouge sur la vue principale l'indique, et la boîte de dialogue de passage Solo vers Pool répète la mise en garde, pour qu'un utilisateur soucieux de sécurité ne puisse jamais supposer silencieusement que ses gains de pool quittent la machine.
  • Choisir "Portefeuille local" annule complètement. Sélectionner le radio par défaut efface maintenant la répartition persistée (clear_payout_split), et ne se contente pas de masquer le formulaire, de sorte que le minage revient immédiatement au portefeuille local plutôt que de continuer silencieusement à payer l'adresse externe précédemment définie.

Pool et protocole de minage

  • Heartbeats worker.report_metrics toutes les 60 secondes. Une nouvelle branche tokio::time::interval dans la boucle de sélection stratum envoie {session_id, timestamp, cpu_util_pct, ram_gb_used, gpus: [{gpu_uuid, util_pct, power_w, temp_c}], solver_nps, shares_session_total} pour que le tableau de bord du pool puisse afficher les compteurs CPU, RAM et Shares par rig. Le pourcentage CPU et la RAM utilisée proviennent d'un appel top -l 1 -n 0 exécuté sur un sous-processus async avec un vrai tokio::time::timeout de 4 secondes, pour qu'un top bloqué ne puisse jamais bloquer le lecteur stratum, la gestion du processus solver, ou les soumissions au pool. L'utilisation GPU, la puissance et la température sont rapportées comme JSON null sous macOS car powermetrics nécessite les droits root (selon la note de shib sur les métriques macOS) ; la ligne apparaît quand même dans le tableau de bord, les champs d'instrument en direct affichent juste un tiret.
  • Bouton "Ouvrir cette machine dans le tableau de bord du pool" en un clic. Le bouton existant du tableau de bord du pool écrit maintenant ?worker=<canonical_name> dans son URL dès que le pool attribue un nom canonique. Le tableau de bord est une SPA aujourd'hui, donc le paramètre de requête est compatible avec les évolutions futures ; si dexbtx ajoute un routage par worker plus tard, cela fonctionnera sans mise à jour de l'app.
  • solver_env: {BTX_MATMUL_BACKEND: "metal"} dans l'empreinte matérielle pour que le moteur de recommandations de réglages du pool sache ne pas suggérer des paramètres uniquement CUDA (BTX_MATMUL_GPU_INPUTS, BTX_MATMUL_SOLVE_BATCH_SIZE, etc.) aux rigs Mac. Compatible avec les évolutions futures : le pool autorise les clés côté serveur, donc la déclaration Metal uniquement actuelle est sûre.

UX

  • Les mises à jour sont impossibles à manquer. Une bannière orange bien visible en haut du tableau de bord apparaît dès que la vérification de mise à jour au lancement trouve une version plus récente, en plus du signal discret dans le coin existant. Cliquer sur Installer déclenche une invite unique : "Aussi installer les futures mises à jour automatiquement au lancement ?" Poser la question au moment du plus fort consentement fonctionne bien mieux que la case à cocher dans les Réglages où personne ne va ; un drapeau easybtx-autoupdate-asked garantit qu'on ne redemande jamais si l'utilisateur a refusé. La vérification de mise à jour au lancement s'exécute maintenant avant first_run_setup pour que la bannière puisse s'afficher en environ 300 ms au lieu d'attendre après le lancement lent du nœud.
  • easyBTX rend évident qu'il embarque son propre nœud BTX. Un utilisateur Telegram qui regardait "Progression de la synchronisation 98,5 %" a quand même demandé sur le canal "comment configurer un nœud ?" Trois petits points de contact répondent maintenant à la question avant qu'elle soit posée : la modale "Comment fonctionne le minage" s'ouvre avec "easyBTX exécute le nœud BTX complet pour vous, aucune configuration séparée nécessaire" ; la liste d'étapes de configuration affiche maintenant "Télécharger le nœud BTX et la chaîne" et "Synchroniser le nœud sur les derniers blocs" ; la section Réglages, Statut du nœud commence par "ce sont les données en direct de ce nœud, pas un service distant."
  • Invitation douce à sauvegarder le portefeuille. Une bannière ambrée persistante au-dessus du solde apparaît dès que vous avez effectivement miné des BTX ET que vous n'avez toujours pas sauvegardé. "Sauvegarder maintenant" ouvre les Réglages et défile jusqu'à "Enregistrer le fichier de récupération." "Plus tard" ferme la bannière pour le lancement en cours uniquement (la bannière revient au prochain démarrage, car perdre un portefeuille à cause d'un refus de bannière ponctuel n'est pas acceptable). Distinct du portail ponctuel existant à la configuration, qui se déclenchait avant que l'utilisateur ait quoi que ce soit à perdre.
  • Curseur de puissance de minage sur une seule ligne. Le libellé, le curseur, le bouton MAX et la valeur en direct ont été regroupés d'une mise en page deux lignes en une seule ligne flex. Économise environ 28 px d'espace vertical. Même accent orange Bitcoin.
  • "Dernier share" s'écoule en direct. Un setInterval d'une seconde re-rend le temps relatif sur le compteur de shares au lieu de le laisser geler entre les sondages de statut de 3 secondes. Ignoré quand document.hidden pour qu'une app en arrière-plan ne consomme pas de batterie sur des mises à jour invisibles.
  • Réglages, Panneau des sources en amont. Liste les composants open source sur lesquels easyBTX est construit (nœud BTX btxchain/btx épinglé à v0.30.1, MineBTX dexbtx/minebtx, Tauri v2, le dépôt public EasyBTX-releases). Chaque ligne affiche la version épinglée par rapport au dernier tag récupéré en direct depuis l'API GitHub, plus un badge Actuel ou Mise à jour disponible. Tableau de bord du mainteneur pour suivre quand les sources en amont nous dépassent. Mis en cache pendant 5 minutes ; le bouton Actualiser contourne le cache.
  • Signaux communautaires dans la modale À propos. Tuiles en direct pour les installations easyBTX (somme des téléchargements d'assets GitHub Releases), les miners en ligne sur le pool en ce moment, les blocs trouvés dans les dernières 24 h, et la vitesse du réseau. Rafraîchies à l'ouverture de la modale, mises en cache pendant 60 s. Présentation honnête : la tuile "miners en ligne" est étiquetée "inclut easyBTX et autres clients" car l'API du pool ne ventile pas encore les workers par miner_version.

Identité

  • easyBTX est maintenant systématiquement en minuscules dans la prose. 17 remplacements dans le README, le CHANGELOG, le NOTICE et le dossier docs/. Les chemins d'URL (MendeMatthias/EasyBTX-releases), le type Rust EasyBtxState, et les noms d'artefacts du pipeline de publication (EasyBTX.dmg, EasyBTX.app) sont délibérément conservés.

Maintenance

  • Bannière d'avertissement disque faible. Récupère l'espace disque libre toutes les 3 s lors du même rafraîchissement de statut qui pilote le reste de l'interface. En dessous de 1 Go, une notice ambrée s'affiche ; en dessous de 500 Mo, une notice rouge avec un clignotement plus rapide. Les deux s'affichent même quand le RPC est hors ligne, ce qui est exactement quand l'avertissement est le plus utile (btxd vient de planter sur une Fatal LevelDB error: No space left on device, le RPC est inaccessible, l'utilisateur ne sait pas pourquoi).
  • Réglages, Maintenance, Libérer de l'espace disque. Récupération en un clic qui supprime les index btxd inutilisés blockfilter et coinstats, le snapshot assumeutxo post-chargement, et tronque debug.log s'il dépasse 50 Mo. Pour quand vous avez besoin d'espace disque sans être prêt à déplacer le datadir vers un volume externe.

Renforcement pré-publication

  • La collecte worker.report_metrics est asynchrone. Remplacement de la commande synchrone std::process::Command::output() (sans timeout, bloque le worker du runtime tokio pendant toute la durée de top) par tokio::process::Command avec un vrai tokio::time::timeout de 4 secondes. Un top bloqué ne stalle plus le lecteur stratum, la gestion des processus solver, ou les soumissions au pool.
  • Lecture par garde unique du statut du pool dans le tick de métriques. Un lock/unlock en deux étapes de status.lock().await a été regroupé en une seule portée gardée pour que shares_accepted et hashps soient toujours observés à la même génération de tick de statut.

Documentation

  • docs/2026-05-28-btx-qid-self-custody.md. Recherche et plan en 4 phases pour ancrer un "qID" post-quantique et auto-gardé (passkey + partage Shamir/MPC 2 sur 3) dans une seed BTX, pour que l'adresse de paiement externe ci-dessus puisse plus tard être une adresse que l'utilisateur détient sur un téléphone ou un passkey plutôt qu'un autre portefeuille chaud. Planification prospective pour la page bonuz HQ ; aucun code applicatif n'en dépend.

v0.2.0

2026-05-28

La version de polissage "méga audit". Un audit de sécurité /cso plus un audit de bugs fonctionnels par 3 agents ont trouvé 4 problèmes CRITIQUES, 10 HAUTS, 13 MOYENS, et quelques problèmes FAIBLES dans la v0.1.13. Cette version les corrige tous en un seul passage. cargo test : 149/149. tsc --noEmit : propre. Aucune IPC publique n'a été supprimée, mais send_btx a reçu un paramètre subtract_fee: bool explicite (le bouton Max du frontend le passe) ; EasyBtxState a reçu trois champs #[serde(default)] (les fichiers d'état legacy se chargent toujours).

Corrections critiques (perte de données, processus orphelins, resynchronisation forcée)

  • La suppression multi-wallet bloquée lors de la relocalisation du datadir. relocate_datadir énumère maintenant chaque wallet sous src (tout répertoire contenant wallet.dat) et échoue de façon sécurisée sauf si CHACUN est présent et non vide dans dest avant que remove_dir_all(src) s'exécute. La vérification de taille à 97 % précédente ne contrôlait que miner/wallet.dat, ce qui aurait toléré la perte silencieuse d'un wallet secondaire plus petit.
  • Le Pool et le solver Metal sont maintenant correctement arrêtés à la fermeture de l'app. stop_node_blocking signale pool_stop, attend pool_handle avec un timeout de 3 secondes (en abandonnant le JoinHandle en cas de dépassement), et efface l'état du pool. Le Command du solver a reçu .kill_on_drop(true) pour qu'un JoinHandle abandonné récupère le sous-processus au lieu de le laisser à 100 % GPU après la fermeture.
  • Snapshot.dat n'est plus supprimé avant que loadtxoutset réussisse réellement. Un nouveau drapeau persisté EasyBtxState.snapshot_loaded est défini UNIQUEMENT quand loadtxoutset réussit (ou quand getchainstates rapporte déjà un chainstate snapshot). Tous les appelants de disk::reclaim_disk lisent maintenant ce drapeau véridique au lieu de setup_complete (qui bascule à la liaison RPC, avant le chargement du snapshot en arrière-plan). Fermer l'app pendant un chargement ne supprime plus le snapshot et ne force plus une resynchronisation depuis la genèse.
  • La garde de sortie du solver empêche l'effondrement du curseur de nonce. solve_next_nonce n'avance maintenant que sur tries_used > 0 ET nonce64_end >= solve_next_nonce (monotone). Un {"found":false} dégénéré avec nonce64_end manquant réinitialisait le curseur à 1, entraînant des soumissions de shares en double (code 22).

Corrections à fort impact

  • repair_node ne bascule plus silencieusement vers le wallet "miner". Il lit maintenant state.active_wallet (en miroir du modèle de reclaim_disk_now) avant de reconstruire wallet_rpc : c'est le correctif H1 de la PR #12 qui n'avait pas encore été appliqué ici.
  • move_datadir_to refuse les volumes exFAT et FAT. L'avertissement list_external_volumes est maintenant appliqué à la frontière de déplacement, pas seulement affiché comme infobulle.
  • apply_node_update change réellement vers le nouveau binaire btxd. Auparavant sans effet (la nouvelle installation n'était jamais réutilisée). Il persiste maintenant le nouveau tag (EasyBtxState.btx_release_tag), arrête le contrôleur en cours, et redémarre sur les nouveaux binaires ; check_node_update et get_node_status respectent le tag persisté, donc la bannière de mise à jour arrête de rester affichée.
  • Un changement de ntime en cours de solving réinitialise le curseur de nonce. Quand une notification non propre change ntime ou merkleroot, le prochain solving repart depuis le début de notre fenêtre de nonce (au lieu d'avancer au-delà des nonces bas du nouveau header).
  • clean_jobs=true ne court plus après un solver qui vient de se terminer vers une soumission périmée. Le chemin de kill propre vide le stdout du processus mort et efface solving_job, pour qu'un résultat de solver avec un décalage d'une microseconde échoue de façon sécurisée à la porte de soumission.
  • La collision d'archive _corrupt-<ts> ne peut plus supprimer définitivement la chaîne. Des timestamps sous-microseconde avec un compteur -N empêchent la collision ; en cas d'échec du renommage d'archive, on retourne maintenant Err et on laisse src en place (auparavant, le fallback remove_dir_all(src) supprimait définitivement la chaîne corrompue, violant la promesse "pas de suppression définitive").
  • La comptabilité des commissions du pool correspond à la discipline du solo. Les frontières d'arrêt, de kill propre et de deadline ne créditent plus le temps d'arrêt écoulé en mined_secs de développement ; l'accumulation se produit maintenant uniquement dans la branche d'attente du solver sur une sortie analysable avec tries_used > 0. La part développeur de 3,5 % ne peut plus dériver vers le haut sous des stop-churns.
  • La perte de share à la déconnexion est remontée dans l'interface. Une erreur d'écriture mining.submit définit maintenant last_event = "share perdu (déconnexion)..." et incrémente le compteur périmé avant de retourner à la boucle de reconnexion.
  • Un réseau instable ne peut plus laisser "fenêtre de commission développeur..." bloqué. Un plafond de temps d'essai cumulé (300 s) force la session suivante sur le paiement utilisateur si une seule fenêtre de commission échoue continuellement à se connecter.
  • Au démarrage, bascule vers le datadir par défaut quand le pointeur vers le disque externe ne mène nulle part. Auparavant, un disque déconnecté entre l'écriture du pointeur et la suppression de la source laissait l'app bloquée sur un chemin inexistant.

Exactitude Mining et pool

  • Les échecs de Subscribe et Authorize sont maintenant journalisés et remontés dans last_event (auparavant ignorés silencieusement : un changement de schéma côté pool pouvait tuer tout le minage en pool sans aucun retour dans l'interface).
  • submit_id initialisé depuis les microsecondes d'époque au moment de la connexion pour que les identifiants ne se répètent pas entre les reconnexions.
  • Solo : après un tick Paused, l'itération suivante saute la rafale de commission et mine pour l'utilisateur (le déficit est rattrapé au prochain tick non mis en pause). Empêche un bloc solo isolé d'atterrir sur l'adresse développeur pendant les fluctuations de pause de synchronisation.
  • L'idempotence du snapshot vérifie maintenant par SHA tout snapshot.dat existant dont la taille correspond (auparavant, un fichier avec un contenu incorrect mais de taille exacte était accepté sans vérification).

Polissage Wallet, envoi et audit

  • Adresse de réception stable par wallet. EasyBtxState.wallet_addresses mémorise l'adresse de chaque wallet ; do_switch_wallet la réutilise via address_is_mine au lieu de créer une nouvelle adresse à chaque bascule.
  • Exports d'audit et CSV jusqu'à 10 000 transactions. (Le plafond précédent de 1 000 abandonnait silencieusement les entrées plus anciennes des miners en activité depuis longtemps.)
  • L'envoi "Max" est maintenant un drapeau explicite, pas une heuristique de tolérance aux satoshis. Le frontend suit le clic Max ; le backend send_btx(.., subtract_fee) le respecte. Envoyer exactement son solde à la main ne diminue plus silencieusement le montant.
  • Le backend send_btx valide le montant et refuse les dépassements de solde. Les valeurs non finies, nulles, négatives et amount > spendable sont refusées à la frontière IPC (pas seulement par btxd).
  • backup_wallet_cmd refuse les chemins qu'il ne peut pas canonicaliser, et rejette tout chemin contenant des composants ... La faille "ignorer en cas d'échec de canonicalisation" précédente est fermée.
  • Virgules décimales européennes dans Envoi. parseFloat est précédé de replace(/,/g, ".") aux deux sites d'appel d'Envoi : 1,5 BTX se parse maintenant comme 1,5, pas comme 1.
  • Vérification du préfixe btx1 dans les liens explorateur. addrExplorerUrl correspond maintenant à la regex de saisie d'Envoi (^btx1[a-z0-9]{20,90}$/i), pour que les lignes d'audit ne puissent pas pointer vers des pages explorateur inexistantes.
  • Le paiement du pool revalide l'adresse mise en cache avec address_is_mine avant de la transmettre au stratum ; crée une nouvelle adresse en cas de discordance.
  • La tâche pool est correctement arrêtée pendant repair_node et relocate_datadir (continuait auparavant à soumettre vers une chaîne effacée ou en cours de déplacement).
  • persist_active_wallet est verrouillé. Un nouveau STATE_FILE_LOCK sérialise la séquence charger, modifier, sauvegarder pour qu'un double-clic ne puisse pas perdre des mises à jour.

Sécurité (l'audit /cso)

  • Le journal du pool est sorti de /tmp et sécurisé. Les journaux se trouvent maintenant dans $HOME/.easybtx/pool.log (fallback /tmp si HOME n'est pas défini), ouvert avec mode(0o600) et O_NOFOLLOW. Surface lisible par tous et contournable par lien symbolique fermée.
  • gpu_uuid envoyé au pool est maintenant un SHA-256 salé, pas le IOPlatformUUID brut. Le hash est stable par installation (pour que la corrélation des workers du pool fonctionne toujours), mais l'identifiant matériel brut ne quitte plus la machine.
  • RpcClient::for_wallet encode en pourcentage le nom du wallet dans le chemin. Actuellement sûr par convention (tous les appelants valident) ; maintenant appliqué au niveau de la fonction plutôt que par discipline du relecteur.

Interne et nettoyage

  • Version : 0.1.13 vers 0.2.0 (package.json, tauri.conf.json, Cargo.toml).
  • EasyBtxState a reçu snapshot_loaded, btx_release_tag et wallet_addresses (tous avec #[serde(default)] ; les fichiers d'état legacy continuent à se charger).
  • STATE_FILE_LOCK introduit dans state.rs pour sérialiser le modèle charger, modifier, sauvegarder ; les écritures d'état de reset_account, restore_wallet et first_run_setup passent maintenant par lui.
  • Un lien de doc périmé connu TODO(H3-followup) laissé dans apply_node_update pointant vers le réarmement RPC sans interruption de session (le chemin tag-persisté + redémarrage est livré ; l'attente du cookie en session est le suivi).

v0.1.13

2026-05-28

Ajouté

  • Ligne de solde entrant. Un paiement reçu qui n'est pas encore confirmé (untrusted_pending) s'affiche maintenant comme une ligne claire "Entrant... en cours de confirmation" au lieu de sembler perdu jusqu'à sa confirmation. Le solde disponible reste uniquement de confiance, donc Envoyer ne peut jamais dépasser le solde.
  • Liens vers l'explorateur de blocs. Les identifiants de transactions et les adresses dans Envoyer, Recevoir et Audit/Aperçu s'ouvrent sur explorer.minebtx.com (tronqués, avec copie et ouverture). L'écran de confirmation d'Envoi affiche l'adresse complète du destinataire pour que vous puissiez la vérifier.
  • Envoyer : bouton "Max" et envoi sécurisé du solde complet. Un bouton Max remplit votre solde disponible complet, et un envoi du solde complet déduit maintenant la commission réseau du montant au lieu d'échouer avec "fonds insuffisants". L'adresse du destinataire est aussi vérifiée avant l'étape de confirmation.
  • Récupérer de l'espace. Un bouton Réglages, Stockage (et un passage automatique au lancement) libère de l'espace disque en supprimant les index inutilisés blockfilterindex et coinstatsindex, le snapshot assumeutxo post-chargement, et un debug.log surdimensionné. La blockchain et votre portefeuille ne sont jamais touchés.

Pool

  • La popup d'information sur les paiements du pool affiche maintenant la vraie politique (vendredis hebdomadaires à 18h00 UTC, minimum 0,0001 BTX, commission de pool 2,5 %) au lieu d'un libellé vague.
  • easyBTX s'identifie maintenant auprès du pool comme easybtx/<version> pour que le pool puisse segmenter les miners eBTX pour les statistiques ; les informations matérielles donnent à votre worker un nom canonique dans le tableau de bord.

Corrigé

  • pre_hash du block-tier du pool. Le solver Metal de shares applique maintenant la porte pre_hash du block-tier (sigma <= block_target << epsilon) au lieu de la contourner pour les shares, pour que les shares de block-tier soient des blocs valides et que le submitblock du pool arrête d'échouer avec "matmul phase2 proof of work failed". easyBTX déclare la capacité pre_hash_block_tier_v18 dans mining.subscribe. (Le changement du solver se trouve dans btx-main ; voir docs/patches/btx-prehash-block-tier.patch.)

Modifié

  • La puissance de minage est maintenant un curseur en direct en haut de la carte de statistiques. Il passe du vert à l'orange-rouge quand vous l'augmentez (pas de 5 %, bouton Max), et reste synchronisé avec le curseur des Réglages. Les anciennes lignes d'affichage vitesse et puissance sont supprimées, la carte est donc plus courte. Un ⓘ sur le curseur explique les bonnes pratiques (environ 50 % pour les tâches légères garde le Mac frais et silencieux ; 100 % est le plus rapide mais chauffe et consomme la batterie).
  • Le wallet actif est maintenant uniquement fourni par le backend (source unique de vérité) ; le frontend ne réapplique plus un wallet depuis localStorage, donc la puce de wallet et l'adresse ne peuvent plus se désaccorder momentanément.
  • La carte des gains du pool est plus courte : l'explication du paiement a été déplacée dans une popup ⓘ à côté de "Shares acceptés", et le worker est maintenant à côté du lien "Ouvrir le tableau de bord du pool" pour qu'ils se lisent comme une paire.