Monete, saldi e conti: perché «quanto ho» ha tre risposte diverse

·6 min di lettura·Di SSP Editorial Team
Copertina SSP Academy: il modello UTXO, i saldi di conto e l'affitto di Solana

Monete, saldi e conti: perché «quanto ho» ha tre risposte diverse

Apri un wallet che supporta più catene e, guardando bene, noterai qualcosa di strano. Il saldo di Bitcoin e quello di Ethereum sono entrambi semplici numeri su uno schermo, ma sotto vengono calcolati in modi completamente diversi — e su Solana c'è ancora una terza disposizione.

Non è un dettaglio da collezionisti. Spiega perché le commissioni di Bitcoin dipendono dalla tua storia di transazioni, perché una transazione Ethereum può fallire e costarti comunque denaro, e perché un conto Solana non si può semplicemente svuotare fino a zero.

Il modello UTXO: possiedi monete, non un saldo

Bitcoin non ha conti e non memorizza saldi. Ciò che memorizza è un insieme di uscite di transazione non spese — UTXO — ciascuna delle quali è un pezzo discreto di valore bloccato da qualche condizione di spesa.

Pensa al contante. Non hai «47 euro» in tasca; hai una banconota da 20, due da 10, una da 5 e due monete da 1. Per pagare 23 consegni quella da 20 e quella da 5 e ti tornano 2. Una banconota non la puoi strappare a metà.

Gli UTXO funzionano esattamente così. Ciascuno va speso per intero. Per pagare 0,3 BTC da un'uscita di 1 BTC, il tuo wallet consuma l'intero BTC e crea due nuove uscite: 0,3 al destinatario e circa 0,7 di ritorno a te come resto. L'UTXO da 1 BTC cessa di esistere.

Il tuo «saldo» è quindi una cifra derivata: il wallet setaccia la catena in cerca di uscite bloccate da condizioni che sei in grado di soddisfare, e le somma. In nessun punto della blockchain di Bitcoin esiste una registrazione che dica che possiedi una certa cifra.

Ne discendono tre conseguenze, tutte e tre pratiche:

Le commissioni dipendono dalla tua storia, non solo dall'importo. Si pagano al byte, e ogni input speso aggiunge byte. Pagare 50 euro da un unico UTXO grande costa poco; pagare gli stessi 50 combinandone trenta minuscoli costa caro, perché la transazione è fisicamente più grande. Ecco perché consolidare gli UTXO quando le commissioni sono basse vale la pena.

Il resto è un'uscita vera che deve andare da qualche parte. Ogni wallet lo gestisce in automatico, ma è il meccanismo dietro le euristiche sull'indirizzo di resto che gli analisti di catena usano per collegare fra loro i tuoi indirizzi.

La spesa è naturalmente parallela. UTXO diversi sono indipendenti, quindi niente costringe le tue transazioni in un ordine rigido.

Bitcoin, Litecoin, Dogecoin, Bitcoin Cash, Zcash, Ravencoin e Flux funzionano tutti così. È il modello più antico, e quello in cui «se non sono le tue chiavi, non sono le tue monete» è vero più alla lettera: non c'è un conto, solo monete con condizioni attaccate.

Il modello a conti: possiedi un saldo, e un contatore

Ethereum ha buttato via tutto questo e ha adottato qualcosa di più simile al libro mastro di una banca. La catena memorizza uno stato: una gigantesca corrispondenza fra indirizzi e saldi (e, per i contratti, dati memorizzati). Inviare 0,3 ETH sottrae 0,3 da un numero e li aggiunge a un altro. Niente input, niente output, niente resto.

È più semplice, ed è ciò che rende praticabili gli smart contract: un contratto ha bisogno di memoria persistente da leggere e scrivere, cosa scomoda quando il mondo è fatto di monete discrete.

Ma il modello a conti introduce un problema che gli UTXO non hanno. Se una transazione dice solo «sottrai 0,3 ad Alice», chiunque la veda potrebbe ritrasmetterla di continuo e svuotarle il conto. Il rimedio è il nonce: un contatore per conto, incluso in ogni transazione, che deve crescere esattamente di uno. La transazione numero 7 può essere minata solo dopo la numero 6, e una volta sola.

Il nonce è il motivo per cui le catene EVM si comportano come si comportano:

Le tue transazioni sono rigidamente ordinate. Una transazione bloccata blocca tutte le successive dello stesso indirizzo, perché non possono essere elaborate fuori sequenza.

Le commissioni si pagano anche quando una transazione fallisce. Il gas paga il calcolo tentato, non il calcolo riuscito. Una chiamata a contratto annullata ha comunque consumato il lavoro dei validatori, quindi comunque costa. Questo sorprende continuamente, ed è una differenza reale rispetto al mondo UTXO, dove una transazione non valida semplicemente non viene mai confermata e non costa nulla.

La gestione dei nonce è vera infrastruttura. Per un wallet normale è invisibile. Per un multisig in cui due dispositivi devono accordarsi prima della trasmissione, il nonce va riservato, tracciato e rilasciato — ed è per questo che la gestione dei nonce è un tema ricorrente nella firma a due dispositivi anziché un dettaglio implementativo.

Ethereum, Polygon, BSC, Avalanche, Base e XDC usano tutte questo modello.

Solana: conti che pagano l'affitto

Anche Solana è basata sui conti, ma con una torsione che coglie le persone di sorpresa.

Su Solana praticamente tutto è un conto: il tuo wallet, ogni token che possiedi, i dati di ogni programma. E poiché quei conti occupano memoria dei validatori, devono mantenere un saldo minimo per restare vivi. È l'esenzione dall'affitto: deposita abbastanza e il conto persiste a tempo indeterminato; scendi sotto e può essere recuperato.

L'effetto pratico è che possedere un token SPL richiede un conto token separato, finanziato con un po' di SOL, prima ancora che qualcuno possa inviarti quel token. Ricevere non è gratis. È una cosa insolita e conviene capirla prima di averne bisogno, perché «ti ho mandato i token e non è arrivato nulla» spesso è solo un conto token mancante.

Perché un wallet multicatena deve modellare tutti e tre

Un wallet che supporta queste catene non può condividere un'unica nozione interna di «saldo». Gli serve:

  • Per le catene UTXO: un insieme di uscite, ciascuna con importo e script, più una logica di selezione delle monete che decida quali spendere.
  • Per le catene EVM: un'unica cifra di saldo più un nonce, e una coda che rispetti l'ordine.
  • Per Solana: un saldo, un insieme di conti token associati e la consapevolezza dei minimi di affitto.

Anche l'architettura di sicurezza deve adattarsi. Sulle catene UTXO il due-di-due di SSP è uno script: un'uscita P2WSH che richiede due firme per essere sbloccata, imposta dalle regole di scripting della catena stessa. Sulle catene EVM non esiste un sistema di script equivalente per i conti ordinari, quindi il multisig si realizza tramite l'astrazione del conto: un conto smart contract la cui logica di validazione pretende entrambe le firme. Su Solana è un indirizzo derivato da programma, controllato da un programma sulla catena.

Tre meccanismi completamente diversi, una sola idea rivolta all'utente: nulla si muove senza entrambi i dispositivi. Che le implementazioni sottostanti non si somiglino affatto è esattamente il motivo per cui la garanzia va ristabilita, e riverificata, su ogni catena invece di darla per ereditata.

Che cosa significa per te

Quando le commissioni Bitcoin sembrano alte per un pagamento piccolo, guarda i tuoi input. Conta meno l'importo di quanti pezzi lo compongono.

Quando una transazione Ethereum è bloccata, le successive dello stesso indirizzo restano incastrate dietro. È il nonce, non un difetto. Sistemare la prima libera la coda.

Quando una transazione EVM fallita ti addebita comunque, il modello sta funzionando come progettato. La simulazione aiuta a evitarlo — motivo per cui simulare prima di firmare vale di più sulle catene a conti che su quelle UTXO.

Quando un trasferimento di token Solana «sparisce», cerca un conto token. Non si è perso nulla; la destinazione potrebbe non essere ancora esistita.

Nessuna di queste cose è una stranezza di un wallet particolare. Sono conseguenze di una scelta progettuale che ciascuna catena ha fatto anni fa e, appena riesci a vedere su quale modello ti trovi, molti comportamenti altrimenti sconcertanti diventano prevedibili.

Condividi questo articolo

Articoli correlati