Contenuto del corso
📚 ABC – Le Basi di Bitcoin
Il punto di partenza ideale per chi inizia da zero. Scopri cos'è Bitcoin, come funziona e perché rappresenta una rivoluzione monetaria, spiegato in modo semplice e accessibile.
0/6
👨🏻‍🏫 La storia
Le origini del mito. Da Satoshi Nakamoto alle Blocksize War: il racconto degli eventi storici, delle date chiave e delle battaglie che hanno reso Bitcoin incensurabile.
0/3
🪙 Economia e moneta
Capire il denaro per capire Bitcoin. Analisi macroeconomica su inflazione, banche centrali, sistema Fiat e perché Bitcoin è la riserva di valore definitiva (Store of Value).
0/1
💾 Software Wallet
Gestire Bitcoin dallo smartphone o PC. Tutorial sui migliori wallet (Hot Storage) per l'uso quotidiano, interfacce utente e funzionalità per piccole somme.
0/2
⚙️ Hardware Wallet
La vera sovranità finanziaria. Recensioni, unboxing e tutorial per configurare i dispositivi fisici (Cold Storage) e detenere le tue chiavi private completamente offline.
0/4
🥷🏻 Privacy e Anonimato
Difendi i tuoi dati on-chain. Tecniche avanzate per preservare l'anonimato, tutorial su Coinjoin, gestione degli UTXO e protezione dell'identità digitale.
0/2
🪢 Nodo
Diventa la tua banca. Guide passo-passo per installare e gestire un Nodo Bitcoin completo, validare autonomamente le transazioni e supportare la decentralizzazione.
0/3
⛓️ Impatto sociale
Bitcoin come strumento di difesa dei diritti umani. Riflessioni su privacy, resistenza alla censura e libertà finanziaria contro il controllo centralizzato.
0/5
⁉️ Domande e Risposte
Sessioni dedicate ai dubbi della community. Rispondo alle vostre domande più frequenti, dalle curiosità tecniche ai dubbi operativi raccolti nei commenti e live.
Bailout Academy

#6 | 🌱 Da un solo seme… infiniti wallet

La tua seed da 12 parole è solo l’inizio. In questo episodio scopriamo come, da quella piccola frase, Bitcoin genera migliaia di indirizzi.


🧬 BIP32: la nascita degli HD Wallet

Nell’episodio 5 abbiamo ottenuto un seed binario da 512 bit tramite PBKDF2-HMAC-SHA512.

Ora entra in gioco lo standard BIP32, che introduce il concetto di:

HD Wallet = Hierarchical Deterministic Wallet

Un HD wallet è un portafoglio in grado di:

  • generare infinite chiavi private e indirizzi,
  • partendo da una sola master key,
  • in modo deterministico (cioè prevedibile e ripetibile) a partire da un seme

🧩 Come si genera la master key?

BIP32 prende il seed da 512 bit e applica nuovamente, ma questa volta utilizzando il tuo seed da 512 bit ad una costante chiamata “Bitcoin seed” (per capire sostituisce quello che prima era la parola “mnemonic”. Ecco il HMAC-SHA512(Seed, “Bitcoin seed”)

L’output che si ottiene è diviso così:

  • primi 32 byte (256 bit) → master private key (cioè quella che usi effettivamente per firmare le transazioni)
  • ultimi 32 byte (256 bit) → chain code (un “codice” che viene utilizzato per generare le chiavi figlie)

Successivamente alla creazione della mia chiave padre (o madre) ho bisogno di generare le chiavi figlie, ovvero dalla mia chiave principale ne voglio tante altre a cascata.

Per questioni di privacy infatti su Bitcoin si utilizza un indirizzo di ricezione UNA SOLA VOLTA. Non è obbligatorio, ma è consigliato se voglio aumentare la mia privacy e far in modo di non essere tracciato. Gli indirizzi di ricezione sono quindi potenzialmente “usa e getta”. I wallet che utilizziamo ogni giorno integrano automaticamente questa funzione ed ogni volta che riceviamo una nuova transazione creano un nuovo indirizzo.

Ecco, questo indirizzo è generato sempre partendo dalle mie 12 parole, quindi il percorso di creazione dev’essere deterministico.

In BIP32, per generare una chiave figlia da una chiave padre (privata o pubblica), usiamo la funzione:

HMAC-SHA512(chain_code, chiave padre, #indice del figlio).
  • #indice del figlio = che numero è quella chiave pubblica: la prima (1), la seconda (2), la terza (3), ecc ecc….

Se derivassimo le chiavi figlie solo a partire dalla chiave privata, chiunque conosce una chiave privata figlia potrebbe risalire a quella master. Il chain code separa la derivazione da padre a figlio, rendendola unidirezionale e sicura.

Tutti questi passaggi ci portano alla nascita del nostro HD wallet.


Clicca sull’immagine e registrati con il codice “COSTANZA”

🌳 La struttura ad albero: percorsi e derivazioni

Da quella chiave padre si costruisce una gerarchia infinita di chiavi, usando dei percorsi standardizzati, detti derivation paths.

Ecco un esempio classico di come troverai una chiave scritta in forma completa:

m / 84' / 0' / 0' / 0 / 0

Ogni sezione ha un significato:

Valore Significato Descrizione
m Chiave padre (madre) La chiave dalla quale dipende tutto
84′ Purpose (BIP84) Tipo di indirizzo (es. Native SegWit = bc1q…)
0′ Coin type 0 = Bitcoin mainnet, 1 = Testnet, 60 = Ethereum, ecc…
0′ Account Puoi usare 0 per il personale, 1 per il business, 2 per spese, ecc…
0 Change 0=ricezione, 1=resto
0 Indice indirizzo Numero del singolo indirizzo derivato

Prima di capire meglio con un esempio cosa sono tutte queste voci, c’è da distinguere i due tipi di derivazione:

Tipo Notazione Accesso tramite…
🔐 Hardened con apostrofo (es. 0′) Solo con la chiave privata
🔓 Non-hardened senza apostrofo (es. 0) Anche con la xpub (chiave pubblica estesa)

Questo significa che:

✅ Con la chiave privata m → puoi derivare tutto (hardened + non)

✅ Con la xpub → puoi derivare solo i percorsi non-hardened

Ed è per questo che molte app, come Specter, BTCPay Server, BlueWallet, ecc… usano l’xpub per monitorare saldi, ricevere fondi e generare QR senza avere accesso ai BTC.

Vediamo qualche esempio:

ESEMPIO 1: m / 84' / 0' / 2' / 0 / 5
Sezione Valore Significato Spiegazione pratica
84′ Purpose BIP84 – Native SegWit Usi indirizzi bc1q… per risparmiare fee e migliorare privacy
0′ Coin Bitcoin mainnet Questo wallet opera sulla rete Bitcoin vera, non Testnet
2′ Account Account 2 – “Donazioni pubbliche” Stai separando i fondi personali da quelli pubblici
0 Change External – indirizzi visibili È un indirizzo che puoi pubblicare sul sito per ricevere BTC
5 Index Sesto indirizzo È il 6° indirizzo generato in quell’account

👉 Questo è un indirizzo che riceve donazioni, è in SegWit, appartiene al terzo account (2′ perchè ti ricordo che c’è anche 0), ed è pubblico.

ESEMPIO 2: m / 86' / 1' / 0' / 1 / 3
Sezione Valore Significato Spiegazione pratica
86′ Purpose BIP86 – Taproot (P2TR) Il wallet genera indirizzi bc1p… compatibili con Taproot
1′ Coin Testnet Bitcoin È su Bitcoin Testnet, utile per test, non veri fondi
0′ Account Account principale Primo account standard
1 Change Internal – indirizzi di resto Il wallet li usa in automatico per il “change” delle transazioni
3 Index Quarto indirizzo È il 4° indirizzo di resto usato in questo account

👉 Questo è un indirizzo non visibile all’utente, usato solo per il resto, in ambiente di test e con Taproot. Il wallet, quando fa un pagamento, usa un indirizzo della internal chain per ricevere il “resto” della transazione.


🔎 Scansione degli indirizzi

Poiché puoi generare milioni di indirizzi, ma non tutti sono “attivi”, i wallet fanno una scansione limitata (di solito i primi 20) per cercare fondi.

Su questo sito puoi vedere un esempio in tempo reale: https://coinb.in.

Mi spiego meglio, potresti avere un indirizzo di questo tipo: m / 84′ / 0′ / 2′ / 0 / 2487

Questo significa che quella chiave pubblica, che hai usato per ricevere, è alla posizione 2487. Questo potrebbe:

  1. Aver usato i 2486 indirizzi precedenti (I wallet Bitcoin, per ogni nuova transazione, generano un nuovo indirizzo per questioni di privacy)
  2. Essere stato deciso da te perchè volevi mettere i fondi proprio in quella posizione

Infatti potresti utilizzare questo sistema per nascondere dei fondi.

Quando importi una seed nel tuo wallet, nella tua app, questa scansionerà i primi 20 indirizzi e se non dovesse trovare nulla nei primi 20, darà per assodato che quella seed è vuota, non contiene alcun saldo (in realtà tu hai potresti aver messo i fondi così lontani da non essere trovati se non dopo un’analisi molto più profonda).

Il tuo wallet scansionerà:
- m / 86' / 1' / 0' / 1 / 0
- m / 86' / 1' / 0' / 1 / 1
- m / 86' / 1' / 0' / 1 / 2
- ecc ecc...

È importante notare che prima di questa evoluzione degli HD Wallet (che quindi si calcolano le chiavi in modo automatico) andava salvata OGNI chiave privata relativa alla propria chiave pubblica.

Ad oggi, il mio portafoglio, ogni volta che ricevo nuovi satoshicrea un nuovo indirizzo di ricezione, una nuova chiave pubblica. Questo viene fatto per motivi di privacy e non consentire il tracciamento.

In passato per OGNI indirizzo di ricezione, per ogni chiave pubblica diversa sulla quale ricevevo, dovevo salvarmi la relativa chiave privata.

Questo significa avere righe e righe di chiavi private ogni volta che ricevevo ed inviavo BTC.

0% Completo