PLEBLINEsoftware libero per la custodia
Tieni la linea

Il cold storage si apre una volta sola.
Se ne esce con i prossimi mesi già firmati.

Una cerimonia, i pagamenti dei prossimi mesi firmati in blocco, e le parole che tornano nel titanio. Nei mesi dopo, un pagamento si manda in rete quando serve. Il seed non si muove.

Prova su signet coming soondove un errore costa solo tempo

versione 0.1 · provato su signet · non ancora revisionato da terzi

RustBDKTailssignetMIT

una sera · il seed fuoritutto il resto · il seed in cassaforte
Il problema

Il rischio non sta nel dispositivo. Sta in quante volte le parole toccano una macchina.

Chi accumula riceve spesso e spende di rado: qualche volta l'anno, a volte mai. E ricevere non chiede chiavi, né firme, né programmi accesi: basta un indirizzo.

Eppure il cold storage si apre più spesso di così. Per controllare il saldo, per una ricarica, per stare tranquilli. Ogni volta le 12 o 24 parole tornano davanti a un computer. È un'esposizione che nasce da un'abitudine di controllo, non da un bisogno.

per ricevere

Mai. Un indirizzo preparato prima basta per sempre.

per spendere

Qualche volta l'anno. È l'unico motivo vero per tirare fuori le parole.

per controllare

Ogni volta che viene il dubbio. È l'apertura che non serve, ed è la più frequente.

Il dispositivo è spento nel cassetto.
L'esposizione no.

L'idea

Prefirmare. Aprire una sera, e poi lasciare fermo il seed.

In una cerimonia si firmano i pagamenti dei prossimi mesi, ciascuno su una moneta sua. Poi le parole tornano nel titanio. Quando serve un pagamento, lo si manda in rete: è già firmato, e non si riapre niente.

Il metodo è vecchio e provato. A mano funziona, finché due pagamenti non finiscono sulla stessa moneta.

Si apre il cold storage una volta.
Se ne esce con i prossimi mesi già firmati.

Come funziona

Quattro passi, sempre nello stesso ordine.

PlebLine non custodisce le chiavi e non sostituisce il wallet. Prende la cerimonia che si farebbe a mano — controllo delle monete, pianificazione, firma, verifica — e la rende ripetibile senza dipendere dall'attenzione di una serata storta.

La macchina che dimentica1

Tails

Si avvia da una chiavetta, gira in memoria e a fine sessione non ricorda niente. Non serve un computer dedicato. La rete passa da Tor, e il programma la controlla prima di tutto il resto: senza rete, le parole non vengono nemmeno chieste.

niente disco, niente traccia

Le monete2
statolibera
statousata da una firma

Prima di firmare, una tabella mostra ogni moneta e il suo stato. Una moneta usata da una firma è ancora nel wallet e ancora sulla catena: è solo già promessa a un pagamento pronto.

si vede prima, non dopo

Le parole, una sera3

24

Le 12 o 24 parole si digitano e basta. Non finiscono in un file, in un argomento o nella cronologia del terminale. Finita la firma tornano nel titanio, e ci restano.

mai su disco

I prossimi mesi, già firmati4
pagamenti firmatiN
indirizzi di ricezioneN

I pagamenti già firmati, ciascuno col suo QR. E gli indirizzi per ricevere, anche loro in QR. Prima di uscire, il programma ricontrolla tutto il gruppo.

due direzioni, nessun seed

il destinatario

Un importo sbagliato si rilegge. Un indirizzo sbagliato ma valido è un pagamento a un estraneo, e nessuno se ne accorge. Per questo l'indirizzo non si batte a mano: si incolla, o si legge da un QR. Poi viene rimostrato a gruppi di quattro caratteri, per il confronto a occhio.

la conferma

Non ha mai il «sì» già scelto. Su mainnet, prima di mandare in rete, l'importo si riscrive per intero. Non si conferma per abitudine.

tre programmi

Il terminale per chi lo conosce, il percorso guidato a una strada sola, la finestra per chi preferisce il mouse. Sotto c'è lo stesso codice: una correzione vale per tutti e tre.

La garanzia

Nessuna moneta in due pagamenti.

È il punto preciso in cui la procedura a mano si rompe. Due pagamenti firmati sulla stessa moneta sembrano validi tutti e due. Ci si accorge mesi dopo, quando la rete ne rifiuta uno.

PlebLine rende quel punto impossibile. Per il programma, una moneta già usata da una firma non è sconsigliata: non esiste. Nessun pagamento può rovinarne un altro.

Non è un controllo solo. Attorno al selettore ci sono altre barriere, e reggono anche se il selettore sbagliasse.

il selettore

Sceglie le monete senza vedere quelle già usate da una firma.

dopo ogni firma

Le monete davvero spese da ogni pagamento vengono registrate. Una moneta usata due volte è un errore che ferma tutto, non un avviso.

prima dei file

L'intero gruppo viene ricontrollato: nessuna moneta in comune, e nessun pagamento che dipenda da un altro.

fra cerimonie

Anche mesi dopo, una nuova cerimonia non tocca le monete già usate da una firma, in qualunque cartella della stessa macchina.

Quando le monete non bastano

Ogni pagamento ha bisogno di una moneta tutta sua. Chi ha 4 monete e vuole 6 pagamenti non può farlo, e non è un limite del programma: è come funziona bitcoin.

la linea si sposta

5 pagamenti

monete disponibili7da creare0

Ogni pagamento spende una moneta diversa: è quello che fa sì che mandarne uno lasci gli altri intatti.

Il programma lo dice prima di firmare, e prepara la soluzione: un pagamento verso sé stessi che divide le monete in più parti. Si manda in rete, si aspetta una conferma, poi si fa la cerimonia vera. Quante monete si possono ottenere lo calcola il programma, e lo dice prima di far scegliere: sotto 10.000 sat una moneta costa più di quanto valga.

Se le rubano

Un pagamento prefirmato non è denaro al portatore.

Chi ruba i pagamenti prefirmati può fare una cosa sola: mandare quei soldi dove erano già stati decisi, la sera della firma.

Non può cambiare destinatario né importo. La firma copre entrambi: cambiarne uno la rompe, e la rete rifiuta il pagamento.
Non può spendere altro. Servirebbero le parole, che sono nel titanio. Il telefono che conserva i pagamenti non tiene nessuna chiave.
La privacy sì, quella si perde. Un pagamento rubato rivela monete, importi e indirizzi. Per questo i file si scrivono leggibili solo dal proprietario: non contengono chiavi, ma contengono una storia finanziaria.
Dal cassetto al telefono

I pagamenti vanno sul telefono. Le parole restano dove sono.

Ogni pagamento firmato esce anche come QR, in esadecimale o come PSBT. Si inquadra con il telefono, e quando serve lo si manda in rete da lì.

dal freddo · quasi mai

Si manda un pagamento già firmato. Firmata la sera della cerimonia.

La rara. Capita qualche volta l’anno, e a volte nemmeno. Già firmato è un file da mandare in rete: non si apre niente e non si ribatte niente.

verso il freddo · sempre

Si inquadra il QR e si manda. Dal wallet di tutti i giorni.

La solita. Accumulare non ha mai chiesto di aprire niente: serve un indirizzo. PlebLine li dà mai usati prima, col loro QR.

Nell'altra direzione vale lo stesso: gli indirizzi di ricezione escono dalla cerimonia con il loro QR. Per mandare monete al cold storage non serve riaprirlo.

E se il programma un giorno sparisse, i pagamenti restano firmati. Accanto a ognuno c'è un file con l'esadecimale, che è tutto quello che la rete chiede: si trasmette da qualunque computer, anche senza PlebLine installato.

Tutte e due le direzioni senza il seed.
Il seed è uscito una sera, e da allora sta fermo.

Non fidarti, verifica

La verifica gira senza chiavi e senza rete.

plebline verify rifà tutti i conti partendo dai byte dei pagamenti. Può eseguirlo chiunque, su qualunque computer: controlla, ma non può spendere niente.

Guarda anche dove va il resto, che in un pagamento è quasi sempre la somma più grossa. Ogni uscita va al destinatario scritto, oppure torna indietro. Un terzo caso non esiste.

E ricalcola ogni firma dai byte. Una firma rotta si scopre la sera stessa, non fra sei mesi davanti a un pagamento rifiutato.

Dove sta ogni promessa

Il codice sarà pubblicato. Questi sono i punti in cui guardare.

coin_select.rs · batch_regtest.rs

Nessuna moneta in due pagamenti della stessa cerimonia.

wizard.rs · committed_outpoints

Nessuna moneta in due pagamenti di cerimonie diverse sulla stessa macchina.

verify.rs · signatures.rs

La verifica senza chiavi e senza rete, e le firme ricalcolate dai byte.

no_secrets_on_disk.rs

Ogni file prodotto viene aperto e controllato sui byte: niente parole, niente passphrase, niente chiavi private.

tor.rs

La rete passa da Tor o va a un nodo proprio. Un server pubblico in chiaro viene rifiutato prima che parta il primo pacchetto.

address.rs

Incollato, da URI o da QR, l'indirizzo passa dallo stesso controllo. Una rete sbagliata si ferma, e un indirizzo scritto male non viene mai «aggiustato».

split.rs

La divisione delle monete, e il massimo che si può raggiungere.

A che punto è

Cosa fa. Cosa non fa.

Versione 0.1. Un giro completo su signet, divisione delle monete compresa, con conferma in catena. Non ancora revisionato da terzi, e non ancora usato con importi veri.

Cosa fa

  • Firma in una cerimonia i pagamenti dei prossimi mesi.
  • Impedisce che due pagamenti spendano la stessa moneta, anche fra cerimonie diverse sulla stessa macchina.
  • Lascia verificare ogni gruppo firmato senza chiavi e senza rete.
  • Non scrive mai le parole su disco.
  • Parla con la rete solo via Tor o con un nodo proprio. Nessuna telemetria.
  • Divide le monete quando non bastano.
  • Prepara il QR di ogni pagamento e di ogni indirizzo di ricezione.

Cosa non fa

  • Non genera le parole, di proposito. Chi non le ha se le fa a mano, con dadi o carte.
  • Non è un wallet di tutti i giorni, e non sostituisce l'hardware wallet.
  • Non è un servizio: niente account, niente server nostro.
  • Non gestisce multisig, Lightning o hardware wallet.
  • Non nasconde gli indirizzi al server che si interroga.
  • Non cambia la fee dopo la firma. Se il mercato sale, un pagamento può restare fermo, e si sblocca solo con CPFP.
Provalo

Su signet le monete non valgono nulla. Tutto il resto funziona come sulla rete vera.

È il posto giusto per sbagliare: un errore costa solo tempo.

Le monete

  1. Si preparano gli indirizzi di ricezione con PlebLine.
  2. Al faucet (signetfaucet.com) si chiede un pagamento separato per ciascun indirizzo: un pagamento è una moneta.
  3. Si aspetta una conferma, poi si fa la cerimonia.

Su Tails

  1. Si copia la cartella PlebLine-prova nella Home.
  2. Nel terminale si scrive sh, uno spazio, e si trascina dentro il file installa.
  3. PlebLine è in Applicazioni → Ufficio. Nessuna password di amministratore.

Sul Mac

  1. Si apre la cartella del pacchetto.
  2. Doppio clic su PlebLine.app, lasciata dentro la cartella.
  3. Si prova. Per la cerimonia vera serve la macchina che dimentica: il Mac è per provare.

Il test vero è l'ultimo passo. Si manda in rete il pagamento #2, poi il #0, poi il #1, a giorni di distanza. Se uno viene rifiutato, due pagamenti si contendevano la stessa moneta — e il difetto si vede in catena, non solo sulla carta.

Per chi sviluppa wallet

Un PSBT firmato, dentro un QR.

cosa esce

Per ogni pagamento, un QR con il PSBT BIP174 in base64, già firmato e chiuso. Ogni input porta solo il valore della moneta (witness_utxo) e la firma finale. Niente percorsi di derivazione, niente impronte del wallet.

cosa chiediamo

Importarlo da QR o da file. Conservarne più d'uno, cifrati. Mandarlo in rete quando lo decide l'utente, mostrando importo, destinatario e fee.

facoltativo

Avvisare se una moneta del pagamento risulta già spesa: vuol dire che quel pagamento non partirà più.

cosa non chiediamo

Nessun server nostro. Nessuna libreria nostra. Nessun accordo commerciale.

Domande

Le obiezioni, per intero.

È sicuro?
Ecco cosa è provato: un giro completo su signet, con conferma in catena, e prove automatiche sui punti elencati sopra. Ecco cosa manca prima di mainnet: una revisione di terzi, impronte firmate, build riproducibile. Il posto per provarlo è signet.
Perché non basta il mio hardware wallet?
Si può continuare a usarlo: PlebLine non decide dove stanno le chiavi, riduce quante volte le si tira fuori. Ma un hardware wallet, come è stato dimostrato, è un punto singolo di rottura: si dipende dal suo firmware, dai suoi aggiornamenti e da exploit che possono arrivare dall'interno. Per un ladro è un oggetto che attira l'attenzione: un portachiavi con le chiavi dentro, che sta in giro per casa. E non è nato come cold storage: è nato per pagare on chain con comodità.
E se la fee di oggi fra sei mesi non basta?
Può succedere, ed è il costo di prefirmare. Si sceglie una fee alta, e un pagamento fermo si sblocca con CPFP. Cambiare la fee vuol dire rifirmare, cioè riaprire il cold storage.
E se perdo i file dei pagamenti?
Le monete restano dove sono. I pagamenti firmati non partono più, ma le monete non sono bloccate: il programma considera usata una moneta solo finché esiste il file firmato che la spende.
Chi vede le mie monete?
Il server che si interroga vede gli indirizzi. È l'unica cosa che il programma non può nascondere: per questo il traffico passa da Tor, e si può usare un nodo proprio. Il server in uso è sempre scritto a schermo.
Perché Tails?
Perché la protezione vera è la macchina. Durante la firma la chiave deve stare in memoria, e su un computer normale può finire su disco. Tails gira in memoria e a fine sessione dimentica tutto: le parole passano di lì una sera, e non ne resta traccia.
Bisogna saper usare il terminale?
No. C'è una finestra che fa le stesse domande nello stesso ordine. Su Tails serve una riga nel terminale, una volta sola, per installarla.
Bisogna comprare qualcosa?
Una chiavetta USB per Tails e un supporto di metallo per le parole. Il programma è software libero, con licenza MIT.
In due righe

Semplice non vuol dire poco. Vuol dire meno cose che possono rompersi.

Non c'è niente da comprare e niente da abbonare. È un metodo vecchio, scritto in modo che non si debba ricordarselo.

Un wallet chiede dove.
PlebLine chiede quante volte.

Prova su signet coming soon