[IT] Nodi Bitcoin dal 2009 ad oggi
Giacomo Zucco su Nodi Bitcoin e specializzazione delle funzioni dall'inizio ad oggi.
Abbiamo raccolto una parte di uno speech di Giacomo Zucco durante una discussione pubblica. Questa parte, descrive i nodi Bitcoin e la loro specializzazione nel corso della storia fino ad oggi in modo da comprendere cosa si intende, oggi, quando si parla di nodi, Wallet, miner, hardware wallet ( o hardware device), ecc.
Sostanzialmente uno dei principali problemi di comprensione è che quello che chiamiamo nodo è un concetto che è partito con un unico “oggetto” che faceva una serie di cose che adesso andiamo a elencare e poi si è spezzettato e specializzato in diversi campi e uno di questi campi ha mantenuto il nome per tradizione mentre gli altri no.
Allora quando nel 2009 Bitcoin è cominciato quando il primo blocco Genesi è partito e tutti usavano il client di Satoshi, il client di Satoshi generava un nodo quello che Satoshi chiamava un nodo anche nel Whitepaper.
Funzioni del nodo nel 2009
L'SPV client non esisteva nel 2009 quello che c'era era solo il nodo. Ogni persona che faceva girare Bitcoin faceva girare un nodo e questo nodo sostanzialmente faceva cinque cose.
La prima cosa era scaricare validare e inoltrare a best effort a tutti gli altri nodi i blocchi e le transazioni. Quindi questa qui è la prima funzione.
La seconda era creare transazioni per spendere quindi creare il template di una transazione che spende.
la terza era firmare questa transazione per poter spendere.
La quarta era creare un blocco candidato con tutte le transazioni ancora non confermate nella memory pool mettendoli insieme con l'hash del blocco precedente l'aggiusto timestamp ecc.
E l'ultima funzione era risolvere la Proof of Work quindi fare tanti tentativi con il campo nonce con i campi extra nonce fino a che non veniva l'hash corretto. Quindi 5 funzioni tutti i nodi fanno tutte queste 5.
Nel 2009 va così non c'è dubbio su che cosa sia un nodo. È importante avere un nodo il nodo è l'unico modo in cui puoi usare Bitcoin non ci sono alternative.
Questo nodo è trustless diciamo nel senso che un nodo non può essere fregato da altri nodi se non con un solo unico modo che è chiamato “reorg” ovvero gli altri nodi se hanno più potere CPU di noi perché ai tempi si usava le CPU quindi se hanno una botnet o sono molto più numerosi possono semplicemente dare più peso a una versione della storia sempre valida ma diversa da quella a cui noi abbiamo dato peso per noi.
Quindi tipico esempio di uso di un reorg è fare double spending commerciale quindi se la maggioranza degli altri nodi col più potere di calcolo di me ( non tanto la maggioranza dei nodi, conta la maggioranza di potenza di calcolo) decide di di comprarmi un oggetto lo riceve e dopo fare un reorg si riprende indietro i soldi che ha speso sull'oggetto.
Quindi quando io vendo un oggetto devo essere sicuro che chi mi compra non sia in combutta con la maggioranza della CPU power se lo è mi può fregare i soldi ma dopo un po' di tempo d'attesa diventa più costoso per lui perdere il block reward, la ricompensa del blocco, di quanto guadagna a fregarmi i soldi col double spending.
Quindi esiste un attacco (non è completamente trustless) mi devo fidare della maggioranza, ma solo in questo senso, nel senso di un possibile veramente remota collusione tra chi mi sta comprando un oggetto e chi ha il 50% più 1% della CPU power totale, e solo in questo caso e che lo possa fare fino a che il costo in termini di ricompensa del blocco che si perde non supera il valore dell'oggetto del servizio che mi ha comprato.
Perché a quel punto sono sicuro chiaramente ognuno può fare le proprie stime in base anche al costo dell'hash power, ecc.
Le mining pool
Questo è il 2009 nel 2010 già cambia tutto perché nel 2010 Slash inventa una cosa che si chiama mining pool sostanzialmente se tu mini da solo hai molta varianza cioè vinci tutto tu ma vinci così raramente che spesso vai in bancarotta prima di aver vinto se ti metti insieme a tanti altri invece avete la stessa vincita pro quota ma avete meno varianza e quindi non andate fuori mercato.
La prima mining pool molto velocemente manda fuori mercato i minatori solitari.
Non faccio le transazioni, non creo il blocco candidato, semplicemente il nodo della pool è l'unico che continua a scaricare validare inoltrare transazioni è lui che crea il blocco candidato e delega invece ai minatori della pool solo la risoluzione della Proof of Work.
I minatori della pool se dovessero quando ricevono il blocco candidato rivalidarlo tutto con un nodo vero e proprio perderebbero un sacco di tempo si devono comunque già fidare della pool perché la ricompensa del blocco viene mantenuta dalla pool e solo successivamente viene data sulla base di fiducia quindi tu ti devi comunque fidare e quello che fai è che non fai girare un nodo sul tuo miner.
Quindi tu hai un computer con la CPU su cui fai girare praticamente fai solo ricerca di Proof of Work nel 2010 e solo la pool ha effettivamente un nodo. Qua si è già diviso del lavoro il nodo della pool. Potrebbe lavorare anche lui ma il suo lavoro non è fare quello ma è validare tutto e preparare il blocco candidato; il lavoro invece dei minatori veri e propri è solo minare.
Poi ci sono gli utenti gli utenti normali che non vogliono partecipare a una pool sono tagliati fuori dal mercato; magari lasciano accesa il loro CPU che ogni tanto chissà mai che vinca la lotteria ma di fatto non sono più molto competitivi e quello che fanno è continuare a scaricare validare e inoltrare tutto quanto anche se non sono più competitivi nel mining.
Da CPU a GPU
Sempre nel 2010 succede un'altra cosa che è il passaggio da CPU mining a GPU mining con il primo blocco che viene minato a luglio quindi la prima pool è a tardo 2010 novembre.
Nello stesso momento a luglio poco prima ArtForce crea il primo blocco con la GPU questo vuol dire che non tutti i nodi di bitcoin su un computer possono più competere con la risoluzione al proof of work solo una piccolissima percentuale sono in genere i computer da gamer quelli che hanno una scheda grafica specialistica.
La scheda grafica entro fine 2010 manda fuori mercato tutti i nodi che cercano anche di fare produzione blocchi.
Quindi a fine 2010 abbiamo una specializzazione con un set di nodi che sono quelli delle mining pool e degli utenti che non minano che scaricano validano e broadcastano transazioni e un altro set di utenti che sono invece i lavoratori delle pool che in generale hanno un computer con una GPU buona.
Cominciano a far girare in genere due software uno che gestisce la GPU in contatto con la mining pool e uno è il loro bitcoin core che usano ancora come portafoglio, ecc.
I wallet
Quindi abbiamo la prima divisione nel 2010, nel 2011 c'è una seconda divisione che è quella dei wallet. Siccome arriva per la prima volta bitcoin wallet su android, quindi primo wallet mobile ovviamente non può contenere un nodo è impossibile che contenga un nodo bitcoin.
A livello di oggi forse alcuni cellulari particolari potrebbero farcela ma a livello di banda non di storage che è banale con un sd, ma a livello di banda e anche di cpu per validare tutte le firme dal 2009 in poi un cellulare in genere non ce la fa o comunque deve essere top di gamma con wifi sempre attaccata alla batteria sennò ti consuma la batteria soltanto stare in ascolto.
Quindi un cellulare normale usato come cellulare non può essere un nodo bitcoin. Allora arrivano i due wallet che sono prima bitcoin wallet su android e subito dopo electrum prima su computer e poi anche su android.
Questi creano praticamente separano ulteriormente il lavoro del nodo. Prima il nodo faceva tutte quelle cose che abbiamo detto prima, poi le fa tutte tranne risolvere la proof of work che non fa più; adesso le fa tutte tranne creare transazioni e firmare transazioni che viene delegato per alcuni utenti invece a un mobile wallet o all'electrum wallet.
In entrambi i casi si crea anche un'altra classe di utenti che sono dei nodi più diciamo così sono nodi che non solo fanno il loro lavoro da nodi ma addirittura servono a questi wallet le informazioni che servono perché questi wallet sono fidati non sono trustless.
Il tuo wallet electrum contiene le chiavi in questo senso non dà nessun altro le tue chiavi ma sa che tu sei stato pagato soltanto perché chiede a un nodo chiamato electrum server che tiene degli indici particolari di dargli informazioni sul fatto che è stato pagato.
Ovviamente c'è il problema che il nodo a cui ti connetti può mentire ma questo si mitiga connettendoti a tanti electrum server. C'è il problema che il vero nodo che ti sta dando le informazioni tiene traccia di che cosa hai chiesto e può registrare tutti i tuoi indirizzi e questo chiaramente è un problema di privacy.
Il nodo android funziona in maniera simile ma usa un concetto che viene chiamato SPV.
In queste fasi nel 2011 la parola nodo rimane assegnata al software che scarica valida inoltre blocchi e transazioni mentre il software che crea le transazioni viene chiamato wallet. il software che crea blocchi candidati viene chiamato mining pool software.
ASIC
La parte server della mining pool il software che invece fa girare effettivamente la cpu la gpu e poi la fpga e la ASIC invece viene chiamato alla fine sarà il firmware dell'ASIC anche perché nel 2013 abbiamo l'ulteriore specializzazione e in cui le gpu non servono più a niente nel 2012 erano già arrivate le prime fpga; infine 2011 nel 2013 arrivano le asic.
le ASIC non sono computer generici neanche le fpga non possono far girare i nodi quindi ora nel 2013 chi produce Proof of Work, chi chi trova le soluzioni dei blocchi non ha un nodo su quella macchina non può averla magari ne ha un altro su un'altra macchina, ma il produttore di blocchi è una macchina che non fa nessun tipo di validazione.
Un ASIC non può scaricare transazioni, scaricare blocchi, verificare firme. Non può fare quello, è infatti una macchina stupida e specializzata che fa solo hash collision. Quindi abbiamo il miner che non è chiamato nodo è chiamato miner che produce blocchi.
Abbiamo il coordinatore della mining pool che ha un nodo e poi c'è l'utente singolo normale che non fa mining il quale ha un nodo ma non ha più produzione di blocchi perché semplicemente l'hardware è diventato troppo specialistico.
Hardware Wallet
Inoltre spesso chi ha un nodo non usa neanche più Bitcoin core come wallet anche perché poi arrivano appunto gli hardware wallet che sono un'ulteriore specializzazione cioè il Trezor che arriva nel 2014 insieme al ledger è una macchinetta specializzata che non può più fare da nodo perché lì sopra non ci sta un nodo quindi un'ulteriore specializzazione. il Trezor non è un nodo il mio Bitcoin core continua a fare da nodo e il trezor invece fa soltanto la firma delle transazioni.
Con l'arrivo del multifirma,delle fee più difficili da stimare, della coin selection da fare meglio, ecco che arrivano dei wallet specializzati oggi per esempio i bitcoiner un po’ più eruditi per fare transazioni on chain usano magari Specter, Nunchunk o Sparrow magari ancora Electrum quasi nessuno usa Bitcoin core se non proprio più patiti perché è molto rudimentale, ha bisogno di interfacce specifiche per gli other wallet non gestisce bene multisig e non gestisce bene descriptor.
Si tiene bitcoin core tenenzialmente come nodo con la funzione principale di questa parola che prima comprendeva tutto ma finisce per indicare soltanto scaricare validare e inoltrare blocchi e transazioni.
Attenzione non dico fare storage. Perché solo alcuni nodi storano effettivamente le informazioni, cioè quelli cosiddetti archive mentre gli altri cosiddetti pruned dopo che hanno scaricato tutto validato tutto e inoltrato eventualmente a best effort possono anche cancellare e prunare la storia passata.
Teniamo conto che Satoshi all'inizio nel 2008 quando scrive il Whitepaper, non c'è tutto Bitcoin per esempio non c'è lo script, non esistono gli smart contract, non esiste niente dello script. nel white paper c'è solo firme, non esiste il limite di 21 milioni; c'è solo un accenno al sussidio sostituito dalle fine della vita di bitcoin, ma non c'è l'halving, non c'è l'aggiustamento a difficoltà specifico, c'è una ipotesi di mantenimento in 10 minuti, quindi le 21 milioni non ci sono, lo script non c'è.
il Whitepaper si concentra solo sul problema dell'doublespending che era l'unico problema rimasto in soluto nel 2008 quindi Satoshi non fa un Whitepaperche descrive bitcoin, fa un Whitepaper che descrive un solo aspetto di Bitcoin che è l'antidoublespending onchain che era quello che esisteva ai tempi. Lui descrive nel white paper due tipologie di classi diciamo così di utenti uno lo chiama i nodi.
i nodi, come abbiamo detto, scaricavano validavano e inoltravano le transazioni ai blocchi, creavano le transazioni e le firmavano, cosa che ora non si fa più non lo fa più il nodo in generale.
Satoshi diceva i nodi che però erano tutt'uno nel 2009 prima della specializzazione. Gli ASIC non sono più nodi per i motivi già detti.