v0.4.7

ULTIMA
2026-06-02

Il mining in pool sul Mac è ora immediato, senza nessun nodo da scaricare e senza sincronizzazione.

Il punto principale è la velocità. In modalità pool, easyBTX non scarica e non esegue più il nodo BTX completo. Il mining in pool non ne ha mai avuto bisogno, e aggiungeva un download di diversi gigabyte, lunghe sincronizzazioni di "aggiornamento" e qualche crash occasionale. Ora apri l'app, il tuo indirizzo di pagamento è già compilato, e il tuo Mac inizia subito a minare. Se avevi già easyBTX, il tuo indirizzo di pagamento esistente viene riportato automaticamente, quindi non c'è nulla da configurare di nuovo.

Modificato

  • Il mining in pool sul Mac funziona senza il nodo BTX completo: parte all'istante, senza blockchain da scaricare, niente da sincronizzare, e nessun nodo che possa andare in crash. Il mining in solo sul Mac è in pausa per ora, mentre ci concentriamo sul mining in pool; tornerà.
  • Il tuo indirizzo di pagamento si compila automaticamente dalla tua configurazione precedente, così un aggiornamento non lascia mai il campo vuoto.
  • La velocità di mining ora si legge in N/s, la stessa unità usata dal pool, così il numero nell'app corrisponde al pannello del pool.
  • L'app si apre sempre nel suo layout alto, che si adatta a ogni schermo.

Aggiunto

  • Un pulsante verde "Get the BTX Wallet" in Transazioni e nelle impostazioni di pagamento, che rimanda al wallet BTX autonomo.
  • Un'azione opzionale per recuperare spazio su disco rimuovendo i vecchi dati del nodo che non ti servono più in modalità pool. I tuoi wallet non vengono mai toccati.

v0.4.6

2026-06-01

Il mining in pool sul Mac funziona di nuovo, più un pannello di statistiche GPU live.

Il punto principale è una correzione. Il mining in pool sul Mac, che si era rotto nella 0.4.5, funziona di nuovo. Una modifica fatta mentre si portava easyBTX su Windows puntava il Mac all'helper di mining sbagliato, così il mining non partiva. Questo lo ripristina. Se hai aggiornato alla 0.4.5 e non riuscivi ad avviare il mining, questo lo risolve, e il Mac si comporta esattamente come nella 0.4.4.

Corretto

  • Il mining in pool funziona di nuovo sul Mac. Una modifica della 0.4.5 per la versione Windows puntava il motore di mining del Mac all'helper sbagliato, così il mining non partiva. Ripristinato a come funzionava nella 0.4.4.

Aggiunto

  • Un pannello di statistiche GPU live nella schermata Informazioni: utilizzo, frequenze, potenza, temperatura, memoria e ventola, aggiornato mentre il pannello è aperto. Il Mac mostra utilizzo, potenza e temperatura; Windows mostra l'insieme completo letto dalla tua scheda NVIDIA.

Tutte le modifiche rilevanti a easyBTX sono documentate qui. Il formato segue liberamente Keep a Changelog; le versioni corrispondono alla versione dell'app in package.json / tauri.conf.json.

vWindows 0.4.4

2026-05-31

easyBTX arriva su Windows.

Questo è il primo rilascio per Windows. easyBTX ora fa mining di BTX su PC Windows con una GPU NVIDIA RTX serie 30 o più recente, con lo stesso approccio di un'app, un clic e autocustodia della versione per Mac. Metti una scheda NVIDIA, scegli un indirizzo di pagamento e la tua GPU si unisce al pool. La versione per Mac (Apple Silicon, Metal, solo o in pool) non cambia.

v0.4.4

2026-05-30

L'invio funziona di nuovo, le tue statistiche di mining private, e finestre più grandi e tranquille.

Un rilascio mirato che si basa sulla 0.4.3. Il punto principale è una correzione: inviare BTX dall'app funziona di nuovo, dopo che una build recente poteva far fallire un invio con un messaggio fuorviante. Insieme a questo, la schermata Informazioni ora mostra le tue statistiche di mining, i popup si aprono tutti nella stessa forma spaziosa, e copiare il link all'explorer di una transazione è un tocco solo.

Aggiunto

  • Il tuo mining: un pannello di statistiche private in Informazioni che mostra per quanto tempo hai minato in totale, la tua velocità media, i tuoi share accettati, e il giorno in cui hai iniziato. Risiede solo sul tuo Mac e non viene mai caricato da nessuna parte.
  • Un pulsante "Copia link" su ogni transazione, così puoi copiare il suo link all'explorer di blocchi e incollarlo dove vuoi.

Modificato

  • Informazioni, Impostazioni, Transazioni e i popup informativi ora si aprono in un'unica finestra più grande e coerente, più facile da leggere.
  • Le Impostazioni hanno un menu laterale più pulito. La sezione Link ora rimanda al sito ufficiale del protocollo BTX e, separatamente, a un sito con il prezzo live (di terze parti; non è una consulenza finanziaria, ed easyBTX ne è indipendente).

Corretto

  • Inviare BTX dall'app funziona di nuovo. Una build recente poteva rifiutare un invio con un messaggio fuorviante "controlla l'indirizzo" anche quando l'indirizzo era corretto; questo è risolto, e i messaggi di errore ora descrivono la causa reale.

v0.4.3

2026-05-30

Metti in pausa e riprendi, un riavvio più tranquillo, più privacy, e il tuo Mac sul pannello del pool.

Questo rilascio si basa sul redesign della 0.4.0 con un gruppo di migliorie alla qualità della vita. Fermarsi ora mantiene il tuo nodo caldo e offre un Riprendi verde, la lunga attesa di "preparazione" dopo un riavvio si spiega da sola invece di sembrare bloccata, e puoi nascondere il tuo saldo con un tocco. Chi mina in pool può ora mostrare i dati live della GPU del proprio Mac e il nome scelto sul pannello minebtx.

Aggiunto

  • Pausa e Riprendi. Il controllo recita "Pausa" durante il mining, poi un "Riprendi" verde invece di un freddo "Avvia". Il tuo nodo rimane caldo nel frattempo, così puoi riprendere subito da dove eri.
  • Un occhio della privacy accanto al tuo saldo lo nasconde dietro dei puntini finché non lo riveli, comodo quando condividi lo schermo o sei in pubblico. La tua scelta viene ricordata.
  • Decimali del saldo: mostra tutte le 8 cifre, o 3 più brevi per un colpo d'occhio rapido. Questo cambia solo la visualizzazione, mai ciò che detieni o invii.
  • Uno stato live chiaro mentre il nodo si prepara dopo un riavvio. Invece di un "In corso..." congelato, spiega che sta ricostruendo l'indice del tuo saldo privato, mostra una stima e il tempo trascorso, e segnala che la blockchain è già aggiornata.
  • Controlli su CPU, GPU e pool-o-solo nella schermata di mining, così a colpo d'occhio puoi vedere che il tuo Mac sta minando sulla GPU ed è connesso come ti aspetti.
  • Letture GPU live per il pannello del pool minebtx. easyBTX riporta al pool l'utilizzo e la potenza della GPU del tuo Mac (senza bisogno di privilegi di amministratore), così il tuo worker può mostrare numeri reali invece di spazi vuoti, e il nome che imposti in Impostazioni identifica la tua macchina.
  • Un riordino di sfondo silenzioso che ripulisce i vecchi resti delle riparazioni sulle installazioni lasciate in esecuzione a lungo, così non si accumulano sul disco.

Modificato

  • Le Impostazioni ora si aprono nel tuo tema attuale. Prima si mostravano sempre in chiaro; ora corrispondono all'app, così un'app scura mantiene scure anche le Impostazioni.
  • Le Impostazioni hanno un layout della barra laterale più pulito, con riquadri dei temi e una scelta per il "layout preferito all'avvio".
  • I popup informativi ("Come funziona il mining" e gli altri) ora corrispondono allo stile delle Impostazioni: una finestra più ampia e tranquilla che si legge più facilmente.

Corretto

  • Il pannello Sorgenti upstream nelle Impostazioni non mostra più "Ultima versione non disponibile" su ogni riga. Recupera di nuovo le versioni più recenti reali.

v0.4.0

2026-05-29

Una nuova veste grafica, e il mining in pool ora paga il tuo wallet esterno.

easyBTX ha un nuovo design. Il default è una finestra più ampia stile "sala di controllo" che distribuisce tutto su tre colonne tranquille, così niente scorre fuori dallo schermo quando il tuo nodo si riempie di informazioni in tempo reale. C'è anche un nuovo selettore di tema: Scuro rimane il default, con Chiaro se lo preferisci e un'opzione Sistema che segue il tuo Mac e cambia da solo. E il mining in pool ora rispetta il tuo indirizzo di pagamento esterno, proprio come faceva già il mining in solo, così puoi minare da un laptop che non custodisce mai le chiavi delle tue coin.

Aggiunto

  • Un nuovo layout ampio stile "sala di controllo", ora il default: lo schermo di stato a sinistra, il pannello di mining, potenza e wallet al centro, e i dati live di rete e pool a destra. I layout Alto, Compatto e Mini sono ancora a un clic di distanza.
  • Temi Scuro, Chiaro e Sistema. Scuro rimane il default; scegli Chiaro se lo preferisci, o Sistema per seguire il tuo Mac e cambiare da solo. La scelta viene ricordata.
  • Un pulsante rapido in Impostazioni per ogni sezione (Node, Mining, Aspetto, Posizione dati, Wallet, Pagamento, Backup, Aggiornamenti, Manutenzione, Nuovo account, Sorgenti upstream, Link). Tocca uno per saltare direttamente a quella sezione.

Modificato

  • Il mining in pool ora invia le ricompense al tuo indirizzo di pagamento esterno se ne hai uno configurato. Prima lo faceva solo il mining in solo. In entrambi i casi le coin non passano mai dal wallet di questo Mac, quindi un laptop compromesso non ha mai avuto le chiavi.
  • La commissione di utilizzo di easyBTX è ora il 4,99% delle ricompense minate (era 3,5%). È ancora a fetta temporale e dichiarata in anticipo, e la commissione del pool (2,5%) rimane invariata, quindi il mining in pool arriva a circa il 7,5% totale. Tutto il resto va al tuo wallet.
  • Le Impostazioni sono disposte come riquadri ordinati che si affiancano quando c'è spazio, e si leggono bene sia in modalità Chiara che Scura.
  • "Audit / Panoramica" è ora semplicemente "Transazioni".
  • La checklist di configurazione è più chiara. Ogni passaggio diventa un segno di spunta verde con un'etichetta semplice di ciò che è accaduto ("Node BTX e catena scaricati", "Node sincronizzato all'ultimo blocco", "Mining in corso"), invece di rimanere un elemento arancione da fare.
  • Il wordmark di easyBTX nell'intestazione è leggermente più grande, in una barra leggermente più sottile.

Corretto

  • "Recupera spazio su disco" ora riporta la quantità effettiva liberata, inclusa la grande snapshot una tantum, invece di sottostimarla e liberare il resto silenziosamente all'avvio successivo.
  • Il tuo nodo non sembra più essere tornato a "blocco 0 di 0" dopo aver recuperato spazio su disco o riavviato. Ricorda dove si trovava e lo mostra mentre conferma, invece di sembrare una sincronizzazione da zero.
  • Un nodo già sincronizzato che ritorna non rimane più in una lunga attesa di avvio dopo un recupero o un riavvio.

v0.3.1

2026-05-29

Il tuo nodo non sembra mai rotto mentre si aggiorna. Dopo che easyBTX è rimasto chiuso per un po', o si è spento in modo brusco (un crash, una forzatura della chiusura, o la sostituzione dell'app mentre era in esecuzione), il tuo nodo a volte ha bisogno di qualche minuto per aggiornarsi la prossima volta che apri l'app. In precedenza, easyBTX poteva scambiare quel tempo di aggiornamento per un vero problema e mostrare un errore. Ora attende con calma, ti dice cosa sta succedendo, e mantiene il tuo wallet e le tue coin intatte. Non proporrà mai una riparazione mentre il nodo si sta semplicemente aggiornando. Non c'è nulla che tu debba fare.

Corretto

  • easyBTX non mostra più un errore di avvio quando il tuo nodo si sta solo aggiornando. Ora distingue tra un nodo che sta ancora elaborando i suoi dati e un nodo che si è effettivamente fermato.
  • L'azione distruttiva "Ripara il nodo" non viene più proposta mentre il nodo si aggiorna. Appare ora solo quando c'è un segnale di corruzione reale o il processo del nodo si è effettivamente terminato.
  • Nessuna fase fantasma "Scarica il node BTX e la catena" mentre un nodo recuperato si sta solo avviando con la sua catena già su disco, così la checklist di configurazione corrisponde alla realtà.
  • Rimosso il limite di tempo fisso che poteva interrompere un nodo sano. A un nodo che sta facendo progressi reali viene ora dato il tempo necessario per completare.

Migliorato

  • Un messaggio più chiaro e calmo mentre il tuo nodo si aggiorna, così una normale attesa di qualche minuto non sembra un fallimento.
  • Il tuo wallet e le tue coin non vengono mai toccati durante l'avvio o il ripristino. easyBTX ripristina i dati della catena da una snapshot salvata, mai le tue chiavi.

Dietro le quinte

Quando il tuo nodo si riavvia dopo essere stato offline per un po' o dopo uno spegnimento non pulito, ricostruisce parte del suo stato interno prima di poter rispondere alle richieste. Durante quella finestra il nodo è vivo e funzionante, ma risponde con uno stato "ancora in avvio" (codice RPC -28, restituito con un HTTP 500). La versione precedente lo trattava come un fallimento definitivo e si arrendeva dopo un limite fisso di 360 secondi, che mandava un nodo perfettamente sano in una schermata di errore con un pulsante di riparazione distruttivo in bella mostra. La versione 0.3.1 classifica ogni segnalazione di avvio in tre stati: pronto, in avvio, o non disponibile. Un nodo in avvio (lo stato -28, o un log del nodo che mostra una ricostruzione in corso) è trattato come "continua ad aspettare" e riceve un generoso margine per completare. Un nodo che non risponde mai si arrende comunque entro un limite sensato. Il percorso di riparazione distruttivo rimane vincolato allo stesso segnale di corruzione confermata che ha sempre usato, quindi può attivarsi solo quando c'è davvero qualcosa di sbagliato, mai perché l'avvio era lento. Tutte le regole di sicurezza del ripristino sono invariate: il tuo wallet è sempre preservato, i dati danneggiati vengono archiviati piuttosto che eliminati, il ripristino avviene al massimo una volta per avvio, e si rifiuta di avviarsi se il disco è pieno.

Distribuzione

Distribuito automaticamente agli utenti con 0.3.0 installato tramite l'aggiornatore in-app. Compilato e pubblicato localmente; build indie non firmata, la notarizzazione Apple è nella roadmap.

v0.3.0

2026-05-28

Il rilascio "conformità pool e trasparenza". Il pool dexbtx di shib è passato alla v5 il 2026-05-27 con un gate obbligatorio sulla funzionalità pre_hash_block_tier_v18 e un nuovo dizionario estensione mining.subscribe con session_id e impronta hardware per rig. easyBTX v0.2.0 inviava solo due dei tre campi richiesti, il che significava che i worker Mac si connettevano al pool ma non apparivano mai nel pannello worker. La v0.3.0 implementa l'handshake completo v0.3.x, aggiunge il heartbeat worker.report_metrics che sblocca le righe del pannello per rig in tempo reale, e rende visibile il nome canonico assegnato dal pool a ciascun rig così gli utenti possono abbinare il loro Mac alla sua riga in /stats. In aggiunta, la prima funzione opt-in di autocustodia: le ricompense minate in solo possono ora essere pagate a un indirizzo BTX esterno che non ha chiavi su questo Mac. E molte migliorie UX richieste dalla base utenti v0.2.0 su Telegram. cargo test: 195/195. tsc --noEmit: pulito. cargo build --release + npm run build: entrambi verdi.

Correzioni critiche

  • La registrazione al pool dexbtx è ripristinata per i worker Mac. mining.subscribe ora invia il dizionario estensione v0.3.x completo: protocol_compliant: ["pre_hash_block_tier_v18"], l'impronta hardware esistente (estesa con solver_env: {BTX_MATMUL_BACKEND: "metal"}), e un session_id per sessione (32 caratteri esadecimali minuscoli che corrispondono alla forma uuid.uuid4().hex del miner di riferimento, costruito da SHA256("easybtx-session:" || nanos || pid || counter) in modo che sessioni consecutive non collidano mai). Senza session_id, il pool v5 escludeva silenziosamente i worker Mac dal pannello e dal bot Telegram /stats. mining.set_canonical_name è ora gestito e l'assegnazione viene persista in ~/.easybtx/canonical_names.json così l'etichetta assegnata dal pool (es. M2_PRO-BRAVO-1) sopravvive alle riconnessioni. La riga "Worker di questa macchina:" nell'interfaccia ora mostra quell'etichetta non appena arriva.
  • Gli aggiornamenti del nodo non richiedono più 8 minuti. NodeController::stop controlla Child::try_wait per un massimo di 90 secondi prima di ricorrere a SIGKILL. In precedenza la kill immediata arrivava a metà flush sul LevelDB dello stato shielded btx1z, lasciando un marcatore di mutazione in corso che attivava EnsureShieldedStateInitialized: rebuilding full shielded state from chain all'avvio successivo (misurato a 7 min 57 s in uso reale). Un'uscita pulita non lascia marcatori e l'avvio torna a circa un secondo.
  • Le quarantene di Ripara Node non perdono gigabyte per sempre. Il nuovo prune_old_quarantines elimina le directory _corrupt-* e _preserve-* più vecchie di 7 giorni mantenendo il singolo più recente di ciascun pattern per analisi forensi. Viene eseguito all'avvio dell'app (raccoglie quarantene obsolete da sessioni precedenti) e alla fine di ogni repair_node (raccoglie quarantene obsolete da riparazioni precedenti). Una singola _corrupt-* obsoleta teneva in ostaggio 42 GB sulla macchina del manutentore. Include 6 nuovi unit test per la logica di conservazione.

Pagamento esterno (autocustodia opt-in)

  • Le ricompense minate in solo possono ora essere pagate a un indirizzo BTX esterno che non ha chiavi su questo Mac. Nuova sezione Impostazioni -> Pagamento mining: mantieni il default (le ricompense arrivano nel wallet locale di questo Mac) o instradali a un indirizzo che controlli altrove, un hardware wallet, un wallet su telefono, un indirizzo cold. Il punto è la custodia. La minaccia realistica a una macchina da mining è l'esecuzione di codice dello stesso utente (uno stealer in stile AMOS in cui l'utente viene ingannato a eseguire), e una macchina lasciata a minare 24/7, spesso un vecchio laptop riutilizzato proprio per questo, è un bersaglio facile. Instradare le ricompense a un indirizzo esterno significa che le coin accumulate non hanno mai avuto una chiave sulla macchina da mining. Gli indirizzi incollati vengono verificati nel formato al confine IPC (bech32, accetta il prefisso post-quantum btx1z...; rileva incolla di rete errata, spazi iniziali/finali e omoglifi come b/i/o) con un pulsante live "Testa formato"; l'RPC validateaddress del nodo fa il controllo completo del checksum quando è attivo.
  • La commissione sviluppatore dichiarata del 3,5% è invariata. Il motore di pagamento è stato generalizzato dal vecchio FeeAccrual binario utente/sviluppatore a un round-robin ponderato N-destinatari (PayoutScheduler) con la commissione sviluppatore come destinatario obbligatorio. Un unit test dimostra che la quota sviluppatore realizzata converge ancora al 3,5% su 1000-2000 chunk indipendentemente dalla configurazione dell'utente, quindi aggiungere un pagamento esterno non sposta mai la divisione.
  • Solo in questo rilascio, e l'app lo dice chiaramente. La v0.3.0 instrada il pagamento esterno solo per il coinbase minato in solo: le ricompense pool arrivano ancora nel wallet locale (il pagamento pool esterno è previsto per la v0.3.2). Se un pagamento esterno è configurato E sei in modalità Pool, un banner rosso nella vista principale lo chiarisce, e il dialogo di passaggio Solo a Pool ripete l'avvertimento, così un utente attento alla sicurezza non può mai presumere silenziosamente che i suoi guadagni pool stiano lasciando la macchina.
  • Scegliere "Wallet locale" ripristina completamente. Selezionare il radio predefinito ora cancella la divisione persista (clear_payout_split), non si limita a nascondere il modulo, così il mining torna immediatamente al wallet locale invece di continuare silenziosamente a pagare l'indirizzo esterno impostato in precedenza.

Pool e protocollo di mining

  • Heartbeat worker.report_metrics ogni 60 secondi. Nuovo ramo tokio::time::interval nel loop select stratum invia {session_id, timestamp, cpu_util_pct, ram_gb_used, gpus: [{gpu_uuid, util_pct, power_w, temp_c}], solver_nps, shares_session_total} così il pannello del pool può mostrare i contatori CPU / RAM / share per rig. CPU% e RAM usata provengono da una singola chiamata top -l 1 -n 0 eseguita su un sottoprocesso asincrono con un vero tokio::time::timeout di 4 secondi, così un top bloccato non può mai fermare il lettore stratum, la gestione del solver child, o le submit al pool. Utilizzo GPU / potenza / temperatura vengono riportati come JSON null su macOS perché powermetrics richiede i privilegi di root (come nota shib sulle metriche macOS); la riga appare comunque nel pannello, i campi degli strumenti live mostrano solo un trattino.
  • "Apri questa macchina nel pannello del pool" con un clic. Il pulsante del pannello del pool esistente ora scrive ?worker=<canonical_name> nell'URL nel momento in cui il pool assegna un nome canonico. Il pannello è una SPA oggi quindi il parametro query è compatibile con versioni future; se dexbtx aggiunge in seguito il routing per worker, funziona senza aggiornamento dell'app.
  • solver_env: {BTX_MATMUL_BACKEND: "metal"} nell'impronta hardware così il motore di raccomandazione di ottimizzazione del pool sa di non suggerire parametri solo-CUDA (BTX_MATMUL_GPU_INPUTS, BTX_MATMUL_SOLVE_BATCH_SIZE, ecc.) ai rig Mac. Compatibile con versioni future: il pool inserisce in whitelist le chiavi lato server, quindi la dichiarazione Metal-only attuale è sicura.

UX

  • Gli aggiornamenti sono impossibili da perdere ora. Un prominente banner arancione in cima al pannello appare nell'istante in cui il controllo aggiornamenti all'avvio trova una versione più recente, accanto al segnalatore nell'angolo già esistente. Cliccando su Installa si attiva una finestra una tantum: "Installare anche automaticamente gli aggiornamenti futuri all'avvio?" Chiedere al momento di massima disponibilità funziona molto meglio della casella in Impostazioni dove nessuno va; un flag easybtx-autoupdate-asked garantisce che non si torni mai a chiedere se l'utente ha declinato. Il controllo aggiornamenti all'avvio ora viene eseguito prima di first_run_setup così il banner può apparire in circa 300 ms invece di dopo l'avvio lento del nodo.
  • easyBTX rende ovvio che include il proprio node BTX. Un utente Telegram che guardava "Progresso sincronizzazione 98,5%" ha comunque chiesto al canale "come configuro un nodo?" Tre piccoli punti di contatto ora rispondono alla domanda prima che venga posta: il modale "Come funziona il mining" si apre con "easyBTX esegue il node BTX completo per te, nessuna configurazione separata necessaria"; la checklist delle fasi di configurazione ora recita "Scarica il node BTX e la catena" / "Sincronizza il nodo all'ultimo blocco"; la sezione Impostazioni -> Stato del nodo inizia con "questi sono i dati live di quel nodo, non un servizio remoto."
  • Promemoria soft per il backup del wallet. Un banner ambra persistente sopra il saldo appare nel momento in cui hai effettivamente minato alcuni BTX e non hai ancora eseguito il backup. "Salva ora" apre le Impostazioni e scorre fino a "Salva file di ripristino." "Più tardi" chiude per il lancio corrente solo (il promemoria ritorna all'avvio successivo, perché perdere un wallet a causa di un singolo clic di chiusura non sarebbe accettabile). Separato dall'uscio esistente una volta alla configurazione, che si attivava prima che l'utente avesse qualcosa da perdere.
  • Slider della potenza di mining su una riga. Etichetta, slider, pulsante MAX e valore live collassati da un layout a due righe in una singola riga flex. Risparmia circa 28 px di spazio verticale. Stesso accento color arancio Bitcoin.
  • "Ultimo share" si aggiorna in tempo reale. Un setInterval da 1 secondo ridisegna il tempo relativo sul contatore share invece di lasciarlo congelare tra i sondaggi di stato da 3 secondi. Saltato quando document.hidden così un'app in background non consuma batteria su aggiornamenti invisibili.
  • Impostazioni -> Pannello sorgenti upstream. Elenca i componenti open source su cui si basa easyBTX (node BTX btxchain/btx fissato a v0.30.1, MineBTX dexbtx/minebtx, Tauri v2, la repo pubblica EasyBTX-releases). Ogni riga mostra la versione fissata rispetto all'ultimo tag recuperato in tempo reale dall'API GitHub con un badge Attuale / Aggiornamento disponibile. Pannello di controllo per il manutentore per tenere traccia di quando gli upstream ci superano. Memorizzato nella cache per 5 minuti; il pulsante Aggiorna bypassa la cache.
  • Segnali della community nel modale Informazioni. Riquadri live per le installazioni di easyBTX (somma dei conteggi di download degli asset di GitHub Releases), miner in pool online in questo momento, blocchi trovati nelle ultime 24 ore e velocità di rete. Aggiornati all'apertura del modale, con cache di 60 secondi. Presentazione onesta: il riquadro "miner online" è etichettato "incl. easyBTX + altri client" perché l'API del pool non distingue ancora i worker per miner_version.

Brand

  • easyBTX è ora consistentemente in minuscolo nella prosa. 17 sostituzioni in README, CHANGELOG, NOTICE e nella cartella docs/. I percorsi URL (MendeMatthias/EasyBTX-releases), il tipo Rust EasyBtxState e i nomi degli artefatti della pipeline di rilascio (EasyBTX.dmg, EasyBTX.app) sono deliberatamente preservati.

Manutenzione

  • Banner di avviso disco pieno. Controlla lo spazio libero su disco ogni 3 secondi nello stesso aggiornamento di stato che guida il resto dell'interfaccia. Sotto 1 GB mostra un avviso ambra; sotto 500 MB uno rosso con lampeggio accelerato. Entrambi vengono mostrati anche quando l'RPC non è disponibile, che è esattamente quando l'avviso è più importante (btxd è appena andato in crash per un Fatal LevelDB error: No space left on device, l'RPC è irraggiungibile, l'utente non sa perché).
  • Impostazioni -> Manutenzione -> Recupera spazio su disco. Recupero con un clic che rimuove gli indici btxd blockfilter / coinstats inutilizzati, la snapshot assumeutxo post-caricamento, e tronca debug.log se ha superato i 50 MB. Per quando hai bisogno di spazio ma non sei pronto a spostare il datadir su un volume esterno.

Rafforzamento pre-rilascio

  • La raccolta worker.report_metrics è asincrona. Sostituito il std::process::Command::output() sincrono (nessun timeout, blocca il worker del runtime tokio per tutto il tempo che impiega top) con tokio::process::Command e un vero tokio::time::timeout di 4 secondi. Un top bloccato non ferma più il lettore stratum, la gestione del solver child, o le submit al pool.
  • Lettura con guard singola dello stato pool nel tick delle metriche. Compresso un blocco/sblocco in due fasi di status.lock().await in un unico scope con guard così shares_accepted e hashps sono sempre osservati alla stessa generazione del tick di stato.

Docs

  • docs/2026-05-28-btx-qid-self-custody.md. Ricerca e piano in 4 fasi per radicare un "qID" post-quantum e autocustodiale (passkey e divisione Shamir/MPC 2 di 3) in un seed BTX, così l'indirizzo di pagamento esterno sopra può successivamente essere uno che l'utente detiene su telefono/passkey piuttosto che un altro hot wallet. Pianificazione prospettica per la pagina bonuz HQ; nessun codice dell'app dipende da essa.

v0.2.0

2026-05-28

Il rilascio di rifinitura "mega audit". Un audit di sicurezza /cso e un audit funzionale a 3 agenti hanno trovato 4 CRITICI, 10 ALTI, 13 MEDI e alcuni problemi BASSI nella v0.1.13. Questo rilascio li chiude tutti in un'unica passata. cargo test: 149/149. tsc --noEmit: pulito. Nessuna IPC pubblica è stata rimossa, ma send_btx ha acquisito un parametro esplicito subtract_fee: bool (il pulsante Max del frontend lo passa); EasyBtxState ha acquisito tre campi #[serde(default)] (i file di stato precedenti continuano a caricarsi).

Correzioni critiche (perdita dati / processo orfano / risincronizzazione forzata)

  • Eliminazione multi-wallet bloccata sulla rilocazione del datadir. relocate_datadir ora enumera ogni wallet sotto src (qualsiasi directory contenente wallet.dat) e si chiude in sicurezza a meno che CIASCUNO non sia presente e non vuoto in dest prima che remove_dir_all(src) venga eseguito. Il precedente controllo del 97% della dimensione verificava solo miner/wallet.dat, il che avrebbe tollerato la perdita silenziosa di un wallet secondario più piccolo.
  • Il solver Pool e Metal vengono ora correttamente terminati all'uscita dall'app. stop_node_blocking segnala pool_stop, attende pool_handle con un timeout di 3 secondi (interrompendo il JoinHandle in caso di mancata risposta), e cancella lo stato del pool. Il Command del solver ha acquisito .kill_on_drop(true) così un JoinHandle rilasciato termina il sottoprocesso invece di lasciarlo bloccato al 100% della GPU dopo Esci.
  • Snapshot.dat non viene più eliminata prima che loadtxoutset riesca effettivamente. Un nuovo flag persisto EasyBtxState.snapshot_loaded viene impostato SOLO quando loadtxoutset riesce (o quando getchainstates riporta già uno snapshot chainstate). Tutti i chiamanti di disk::reclaim_disk ora leggono quel flag veritiero invece di setup_complete (che si attiva al bind RPC, prima del caricamento della snapshot in background). Chiudere l'app a metà caricamento non elimina più la snapshot e non forza una risincronizzazione completa dalla genesi.
  • Guard sull'output del solver previene il collasso del cursore nonce. solve_next_nonce ora avanza solo su tries_used > 0 E nonce64_end >= solve_next_nonce (monotono). Un {"found":false} degenere con nonce64_end mancante resettava il cursore a 1, portando a submit di share duplicati (codice 22).

Correzioni ad alto impatto

  • repair_node non cambia più silenziosamente al wallet "miner". Ora legge state.active_wallet (specchiando il pattern di reclaim_disk_now) prima di ricostruire wallet_rpc, la correzione H1 della PR #12 che non era ancora stata applicata qui.
  • move_datadir_to rifiuta i volumi exFAT / FAT. L'avviso di list_external_volumes è ora applicato al confine dello spostamento, non solo mostrato come tooltip.
  • apply_node_update ora effettua effettivamente lo swap al nuovo binario btxd. In precedenza era un no-op (la nuova installazione non veniva mai riutilizzata). Ora persiste il nuovo tag (EasyBtxState.btx_release_tag), ferma il controller in esecuzione e lo riavvia sui nuovi binari; check_node_update/get_node_status rispettano il tag persisto, così il banner di aggiornamento smette di restare bloccato.
  • Un cambio di ntime a metà risoluzione reimposta il cursore nonce. Quando una notify non pulita cambia ntime o merkleroot, la risoluzione successiva riparte dall'inizio della nostra finestra nonce (invece di avanzare oltre i nonce bassi del nuovo header).
  • clean_jobs=true non mette più in gara un solver appena uscito con una submit obsoleta. Il percorso clean-kill svuota lo stdout del child morto e cancella solving_job, così un risultato del solver arrivato con un microsecondo di ritardo va in errore chiuso al gate di submit.
  • Una collisione dell'archivio _corrupt-<ts> non può più cancellare definitivamente la catena. Timestamp a sotto-microsecondo e un contatore -N prevengono la collisione; in caso di errore nel rename dell'archivio si restituisce ora Err e si lascia src al suo posto (in precedenza il fallback remove_dir_all(src) eliminava permanentemente la catena corrotta, violando la promessa "mai cancellazione definitiva").
  • La contabilità delle commissioni pool corrisponde alla disciplina del solo. I confini di stop / clean-kill / deadline non accreditano più il tempo di kill trascorso come mined_secs del sviluppatore; l'accumulo avviene ora solo nel ramo wait-for-solver sull'output analizzabile con tries_used > 0. La quota sviluppatore del 3,5% non può più aumentare progressivamente sotto un turnover continuo di stop.
  • Lo share perso per disconnessione viene mostrato nell'interfaccia. Un errore di scrittura mining.submit ora imposta last_event = "share perso (disconnessione)..." e incrementa il contatore obsoleto prima di tornare al loop di riconnessione.
  • Una rete instabile non può più lasciare "finestra commissione sviluppatore..." bloccata. Un limite al tempo cumulativo dei tentativi (300 secondi) forza la sessione successiva sul pagamento utente se una singola finestra di commissione continua a fallire la connessione.
  • L'avvio torna al datadir predefinito quando il puntatore al drive esterno non porta a nulla. In precedenza un drive scollegato tra la scrittura del puntatore e l'eliminazione src lasciava l'app bloccata su un percorso inesistente.

Mining e correttezza del pool

  • I fallimenti di Subscribe / authorize ora vengono registrati e mostrati in last_event (in precedenza ignorati silenziosamente, un cambio di schema lato pool poteva interrompere tutto il mining in pool senza feedback nell'interfaccia).
  • submit_id inizializzato dai microsecondi epoch al momento della connessione così gli id non si ripetono tra le riconnessioni.
  • Solo: dopo un tick Paused, l'iterazione successiva salta il burst della commissione e mina per l'utente (il deficit viene recuperato nel prossimo tick non in pausa). Previene che un singolo blocco solo atterri sull'indirizzo sviluppatore durante il flapping della pausa di sincronizzazione.
  • L'idempotenza della snapshot ora verifica tramite SHA qualsiasi snapshot.dat esistente la cui dimensione corrisponde (in precedenza un file con contenuto errato della dimensione esatta veniva accettato senza verifica).

Rifinitura wallet / invio / audit

  • Indirizzo di ricezione stabile per wallet. EasyBtxState.wallet_addresses ricorda l'indirizzo di ciascun wallet; do_switch_wallet lo riutilizza tramite address_is_mine invece di crearne uno nuovo ad ogni cambio.
  • Esportazioni Audit / CSV fino a 10.000 transazioni. (Il limite precedente di 1.000 eliminava silenziosamente le voci più vecchie dei miner con lunga attività.)
  • "Max" in Invia è ora un flag esplicito, non un'euristica di tolleranza sat. Il frontend tiene traccia del clic Max; il backend send_btx(.., subtract_fee) lo rispetta. Inviare esattamente il tuo saldo manualmente non lo riduce più silenziosamente.
  • Il backend send_btx valida l'importo e rifiuta i prelievi eccessivi. Non finiti, zero, negativi e amount > spendable vengono rifiutati al confine IPC (non solo da btxd).
  • backup_wallet_cmd rifiuta i percorsi che non riesce a canonicalizzare, e rifiuta qualsiasi percorso contenente componenti ... La precedente lacuna "salta-su-fallimento-canonicalizzazione" è chiusa.
  • Virgole decimali europee in Invia. parseFloat è preceduto da replace(/,/g, ".") in entrambi i siti di chiamata Send: 1,5 BTX ora viene interpretato come 1.5, non 1.
  • Controllo prefisso btx1 nel link explorer. addrExplorerUrl ora corrisponde alla regex dell'input Invia (^btx1[a-z0-9]{20,90}$/i), così le righe di audit non possono collegarsi a pagine explorer inesistenti.
  • Il pagamento pool ri-valida l'indirizzo in cache con address_is_mine prima di passarlo a stratum; crea un nuovo indirizzo in caso di discordanza.
  • Il task pool viene correttamente fermato durante repair_node e relocate_datadir (in precedenza continuava a inviare contro una catena in fase di eliminazione o spostamento).
  • persist_active_wallet è protetto da lock. Un nuovo STATE_FILE_LOCK serializza la sequenza carica -> modifica -> salva così un doppio clic non può perdere aggiornamenti.

Sicurezza (l'audit /cso)

  • Il log del pool spostato fuori da /tmp e protetto. I log ora risiedono in $HOME/.easybtx/pool.log (fallback /tmp se HOME non è impostato), aperti con mode(0o600) e O_NOFOLLOW. La superficie leggibile da tutti / falsificabile tramite symlink è chiusa.
  • Il gpu_uuid inviato al pool è ora un SHA-256 salato, non il raw IOPlatformUUID. L'hash è stabile per installazione (così la correlazione dei worker nel pool funziona ancora), ma l'identificatore hardware grezzo non lascia più la macchina.
  • RpcClient::for_wallet codifica in percent-encoding il nome del wallet nel percorso. Attualmente sicuro per convenzione (tutti i chiamanti validano); ora applicato alla funzione invece che alla disciplina del revisore.

Interno e manutenzione

  • Versione: 0.1.13 -> 0.2.0 (package.json, tauri.conf.json, Cargo.toml).
  • EasyBtxState ha acquisito snapshot_loaded, btx_release_tag e wallet_addresses (tutti #[serde(default)]; i file di stato precedenti continuano a caricarsi).
  • STATE_FILE_LOCK introdotto in state.rs per serializzare il pattern carica -> modifica -> salva; le scritture di stato di reset_account / restore_wallet / first_run_setup ora passano attraverso di esso.
  • Un doc-link noto obsoleto TODO(H3-followup) lasciato in apply_node_update che punta al re-arm RPC in-session senza interruzioni (il percorso tag-persisto + riavvio è distribuito; l'attesa del cookie in-session è il follow-up).

v0.1.13

2026-05-28

Aggiunto

  • Riga saldo in entrata. Un pagamento ricevuto non ancora confermato (untrusted_pending) ora appare come una chiara riga "In arrivo... in conferma" invece di sembrare perso fino alla conferma. Il saldo spendibile rimane solo quello fidato, così Invia non può mai andare in rosso.
  • Link all'explorer di blocchi. Gli ID transazione e gli indirizzi in Invia, Ricevi e Audit/Panoramica si aprono su explorer.minebtx.com (troncato, copia e apri). La schermata di conferma Invia mostra l'indirizzo completo del destinatario così puoi verificarlo.
  • Invia: pulsante "Max" e invio completo sicuro. Un pulsante Max riempie il tuo saldo spendibile completo, e un invio dell'intero saldo ora deduce la commissione di rete dall'importo invece di fallire con "fondi insufficienti". L'indirizzo del destinatario viene anche verificato nella forma prima del passaggio di conferma.
  • Recupera spazio. Un pulsante Impostazioni -> Archiviazione (e un passaggio automatico all'avvio) libera spazio su disco eliminando blockfilterindex / coinstatsindex inutilizzati, la snapshot assumeutxo post-caricamento, e un debug.log eccessivamente grande. La blockchain e il tuo wallet non vengono mai toccati.

Pool

  • Il popup informativo sui pagamenti pool ora mostra la politica reale (venerdì settimanali alle 18:00 UTC, minimo 0,0001 BTX, commissione pool 2,5%) invece di una formulazione vaga.
  • easyBTX ora si identifica al pool come easybtx/<version> così il pool può segmentare i miner eBTX per le statistiche; le informazioni hardware assegnano al tuo worker un nome canonico nel pannello.

Corretto

  • Pre_hash block-tier del pool. Il solver share Metal ora applica il gate pre_hash block-tier (sigma <= block_target << epsilon) invece di bypassarlo per i share, così i share block-tier sono blocchi validi e il submitblock del pool smette di fallire con "matmul phase2 proof of work failed". easyBTX dichiara la funzionalità pre_hash_block_tier_v18 in mining.subscribe. (La modifica al solver si trova in btx-main; vedi docs/patches/btx-prehash-block-tier.patch.)

Modificato

  • La potenza di mining è ora uno slider live in cima alla scheda statistiche. Si scalda dal verde all'arancio-rosso mentre lo spingi (passi del 5%, pulsante Max), e rimane sincronizzato con lo slider delle Impostazioni. Le vecchie righe di velocità/potenza sono sparite, così la scheda è più corta. Una ⓘ sullo slider spiega le migliori pratiche (circa 50% per lavoro leggero mantiene il Mac fresco e silenzioso; 100% è il massimo ma scalda e consuma la batteria).
  • Il wallet attivo ora proviene esclusivamente dal backend (unica fonte di verità); il frontend non applica più un wallet da localStorage, così il chip del wallet e l'indirizzo non possono mai essere momentaneamente in disaccordo.
  • La scheda guadagni pool è più corta: l'esplicazione del pagamento si è spostata in un popup ⓘ accanto a "Share accettati", e il worker ora siede accanto al link "Apri pannello pool" così si leggono come una coppia.