🍺 Buy me a beer

Bitcoin per Svogliati

Da 0 satoshi a capire davvero come funziona: blockchain, wallet, indirizzi, Lightning Network, nodi e BTCPay. Senza promesse di ricchezza, senza gente che urla sui Telegram.

"Non è tuo se non controlli le chiavi. Non è una opinione, è matematica." — e no, non puoi chiamare il supporto.

01 / 12

Cos'è Bitcoin

Il problema del doppio-spesa risolto da uno sconosciuto nel 2008 prima di sparire per sempre. Normale.

💡 L'analogia che regge

Il contante fisico funziona perché puoi darlo a una sola persona: se dai una banconota da 20€, non ce l'hai più. In digitale questo non esiste: un file puoi copiarlo. Il problema del "doppio-spesa" è: come faccio a pagare online senza che una banca centrale tenga il registro delle transazioni? Bitcoin risolve questo con una blockchain pubblica, verificata da migliaia di nodi indipendenti. Nessuna banca centrale. Il registro è distribuito e immutabile.

📄

Whitepaper 2008

Satoshi Nakamoto pubblica "Bitcoin: A Peer-to-Peer Electronic Cash System". 9 pagine. Ha cambiato il mondo. Poi è sparito. Nessuno sa chi è. Probabilmente non torna a sistemare i bug.

⛏️

Blocco Genesis

3 gennaio 2009. Il primo blocco contiene il titolo del Times: "Chancellor on brink of second bailout for banks". Messaggio per i posteri. Le banche hanno comunque ricevuto il bailout.

🔢

21 milioni

Il limite assoluto. Hardcoded nel protocollo. Non lo cambia nessuno. L'ultimo satoshi verrà minato intorno al 2140. Dopo, nessun nuovo BTC.

⚙️ Le proprietà fondamentali

Decentralizzato — nessun server centrale. Migliaia di nodi full nel mondo tengono una copia identica della blockchain.

Permissionless — non chiedi a nessuno il permesso di usarlo. Crei un wallet, ricevi BTC. Fine.

Censorship-resistant — nessuno può bloccare una transazione valida. Nemmeno uno stato.

Trasparente — tutte le transazioni sono pubbliche e verificabili su qualsiasi block explorer.

Pseudonimo — non sei identificato per nome, ma un indirizzo può essere ricondotto a te se non stai attento.

Divisibile — 1 BTC = 100.000.000 satoshi (sat). Puoi mandare 1 sat (~frazioni di centesimo).

📐 Le unità di misura

UnitàValore in BTCQuando usata
BTC1Importi grandi, prezzo di mercato
mBTC (millibitcoin)0.001Meno usato
μBTC / bits0.000001Raramente
sat (satoshi)0.00000001Lightning Network, microtransazioni, fee
msat (millisatoshi)0.000000001Solo su Lightning, unità interna
⚠️ Bitcoin ≠ crypto
Bitcoin è un protocollo. "Crypto" è un termine ombrello che include migliaia di progetti con proprietà radicalmente diverse. Questa guida è solo su Bitcoin. Ethereum, Solana, memecoins: altra storia, altri rischi, altri Telegram con gente che urla.
02 / 12

Come funziona la Blockchain

Proof of Work, mining, halving e perché non puoi "fare refund" alla tua ex che ha il tuo indirizzo

Struttura della Blockchain
BLOCCO #839000 prev: 0000...abc1 merkle: 3f8a...9d2e nonce: 2847192837 3.141 BTC tx fee hash: 0000...def2 BLOCCO #839001 prev: 0000...def2 merkle: 7c2b...1f4a nonce: 9182736451 2.893 BTC tx fee hash: 0000...a7b3 BLOCCO #839002 prev: 0000...a7b3 merkle: 9d1c...5e8f nonce: 4728391056 3.007 BTC tx fee hash: 0000...c9d1

Ogni blocco contiene l'hash del blocco precedente. Cambiare un blocco invalida tutti quelli successivi. Per riscrivere la storia servono più del 50% dell'hashrate mondiale. Non conviene.

⛏️ Proof of Work

I miner competono per trovare un numero (nonce) tale che l'hash del blocco sia inferiore a un target. È un lavoro computazionale costoso da fare e istantaneo da verificare. Chi vince aggiunge il blocco e riceve la block reward. Gli altri hanno bruciato elettricità per niente.

Il target si aggiusta ogni 2016 blocchi (~2 settimane) per mantenere la media a 1 blocco ogni 10 minuti.

È lento? Sì, di design. La lentezza è sicurezza. Nel frattempo puoi fare altro.

🔪 Halving

Ogni 210.000 blocchi (~4 anni) la block reward viene dimezzata. Era 50 BTC nel 2009. Oggi (2024) è 3.125 BTC per blocco.

Prossimo halving: ~2028 → 1.5625 BTC. L'ultimo satoshi verrà minato intorno al 2140. Dopo, i miner vivranno solo sulle fee.

Il halving è hard-coded. Non lo decide nessuno. Non vota nessuno. Succede e basta.

🌐 I tipi di nodi

TipoCosa faRisorseTi serve?
Full NodeVerifica ogni transazione e blocco dalla genesis. Ha tutta la blockchain (~600GB).500GB+ SSD, 8GB RAM, sempre onlineSe vuoi sovranità totale. Raccomandata.
Pruned NodeFull node che butta i vecchi blocchi dopo verifica. Tiene solo gli ultimi N GB.~20GB SSDSe hai poco spazio.
Archival NodeFull node con tutta la storia. Serve agli explorer e ai wallet server.600GB+ SSD NVMeSolo per infrastruttura.
SPV/Light walletNon verifica tutto, si fida di un server. Meno sicuro.MinimeMobile wallet, uso quotidiano.
Mining nodeFull node + mining software + ASIC.ASIC + energia + vicini pazientiSolo se vuoi pagare più di bollette di quanto guadagni in BTC.
💡 Perché è "immutabile"

Modificare il blocco #100.000 oggi significa ricalcolare l'hash di quel blocco, poi del #100.001, poi del #100.002... fino al blocco corrente (~870.000+). E farlo più velocemente di tutti i miner onesti del mondo messi insieme. Economicamente impossibile. Tecnicamente possibile solo con >50% dell'hashrate (51% attack), che oggi richiederebbe miliardi di dollari di hardware.

03 / 12

Indirizzi e Derivazioni

Seed → chiave privata → chiave pubblica → indirizzo. La parte che fa sembrare tutto più complicato di quanto sia, ma che è importante capire almeno una volta.

Derivazione HD Wallet (BIP32/39/44)
128-256 bit Entropy da /dev/random BIP39 Mnemonic 12 o 24 parole 512-bit Seed PBKDF2 + passphrase Master Private Key HMAC-SHA512 BIP44 Path m/44'/0'/0'/0/0 m/49'/0'/0'/0/0 m/84'/0'/0'/0/0 m/86'/0'/0'/0/0 Legacy / P2SH / Bech32 / Taproot account / change / index 0=external, 1=change Indirizzi Bitcoin 1BvBMSE... (Legacy) 3J98t1Wp... (P2SH) bc1q...zw (Bech32) bc1p...8m (Taproot) stessa seed → indirizzi diversi per tipo wallet

I 4 tipi di indirizzi Bitcoin

P2PKH · Legacy

Legacy — Pay to Public Key Hash

Il formato originale dal 2009. Ancora valido e compatibile con tutto. Transazioni più pesanti in byte → fee più alte.

Path BIP44: m/44'/0'/0'/0/x

1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2
P2SH · SegWit Wrapped

P2SH-SegWit — Pay to Script Hash (SegWit avvolto)

Introdotto con SegWit (2017) ma mantenendo compatibilità con i vecchi wallet. Inizia con "3". Transazioni più efficienti del Legacy ma non quanto Native SegWit.

Path BIP49: m/49'/0'/0'/0/x

3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
P2WPKH · Native SegWit

Bech32 — Native SegWit (il più efficiente)

Il formato raccomandato oggi. Inizia con "bc1q". Transazioni ~30% più leggere = fee più basse. Supportato da tutti i wallet moderni.

Path BIP84: m/84'/0'/0'/0/x

bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq
P2TR · Taproot

Bech32m — Taproot (il futuro)

Attivato nel 2021 con il soft fork Taproot. Inizia con "bc1p". Aggiunge privacy (le script multisig sembrano transazioni normali), efficienza e le basi per script avanzati (BitVM, etc).

Path BIP86: m/86'/0'/0'/0/x

bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297
💡 Tutti gli indirizzi vengono dalla stessa seed
Una seed phrase di 12 o 24 parole genera teoricamente miliardi di indirizzi, di qualsiasi tipo. Se hai lo stesso wallet configurato come Legacy e come Bech32, gli indirizzi sono diversi ma entrambi sono controllati dalla stessa chiave master. Perdi la seed → perdi tutto.

🔐 Chiave privata → Chiave pubblica: la matematica

La chiave privata è un numero casuale a 256 bit. La chiave pubblica si ottiene moltiplicando la chiave privata per un punto fisso della curva ellittica secp256k1.

matematica semplificata
# Chiave privata: numero casuale 256 bit
private_key = 0xE9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262

# Chiave pubblica: moltiplicazione su curva ellittica secp256k1
public_key = private_key × G   # G = generator point della curva

# Indirizzo (Bech32): hash della chiave pubblica
address = bech32(RIPEMD160(SHA256(public_key)))

# La matematica è a senso unico:
# da private_key → address: facile
# da address → private_key: computazionalmente impossibile (log discreto)

Questo è il motivo per cui puoi dare il tuo indirizzo pubblicamente: da esso nessuno può risalire alla tua chiave privata. La crittografia asimmetrica funziona grazie alla difficoltà del problema del logaritmo discreto su curva ellittica. Se qualcuno lo risolve, abbiamo problemi ben più grossi di Bitcoin.

04 / 12

Wallet: tipi e setup

Non custodial o custodial? Hot o cold? Hardware o software? La risposta giusta dipende da quanto BTC hai, da quanto sei paranoico e da quante volte hai già perso la password del WiFi.

🏦 Custodial (exchange)

L'exchange tiene le chiavi per te. Praticamente come una banca, ma senza garanzie statali, senza numero verde e con più probabilità di fallire nel weekend. Comodo ma: exchange fallisce → perdi tutto. Non sono tuoi BTC, sono una promessa di BTC.

Esempi: Coinbase, Kraken, Binance (conti spot)

VS

🔑 Non-custodial (self-custody)

Tu hai le chiavi. Tu controlli. Se perdi la seed, nessuno ti aiuta. Se la seed è al sicuro, nessuno ti può portare via i BTC.

Mantra: "Not your keys, not your coins"

🔥

Hot Wallet

Connesso a internet. Comodo per uso quotidiano. Più esposto. Tieni solo quello che spendi.

🧊

Cold Wallet

Offline. Le chiavi non toccano mai internet. Hardware wallet o paper wallet. Per HODLing.

🏦

Multisig

Richiede N di M firme per spendere. Es: 2 di 3 chiavi. Massima sicurezza per grandi importi.

Software wallet consigliati

💻 Sparrow Wallet

Il wallet desktop per chi vuole capire cosa sta facendo. Controllo totale su UTXO, coin control, collegamento al proprio nodo. Raccomandato per desktop.

Piattaforme: Windows, macOS, Linux

Connessione: Proprio nodo, Electrum server, server pubblici

Open source, audit disponibili, supporta Taproot, multisig, hardware wallet.

📱 Phoenix / Breez (Lightning)

Wallet mobile Lightning non-custodial. Phoenix è il migliore per user experience: gestisce i canali da solo, ha fee chiare.

Breez: più funzionalità (point of sale integrato)

Per pagamenti quotidiani Lightning. Non per HODLing.

🔗 Electrum

Il veterano. Leggero, veloce, supporta hardware wallet. Meno user-friendly di Sparrow ma affidabilissimo. Esiste dal 2011.

Attenzione: esistono versioni fake di Electrum in circolazione. Scarica solo da electrum.org.

📲 Blue Wallet

Mobile. Supporta sia on-chain che Lightning (tramite LNDHub). Interfaccia pulita. Connettibile al proprio nodo.

Modalità watch-only ottima per monitorare cold wallet senza esporre chiavi.

Hardware wallet

DispositivoPrezzoPunti di forzaNote
Coldcard MK4~€150Massima sicurezza, air-gap, open-source firmware, PSBTComplesso per principianti. Il preferito dai paranoici.
Foundation Passport~€250Open source hardware + firmware, air-gap, schermo grandeTop per sicurezza ma costoso.
Trezor Safe 3~€80Open source, facile da usare, ampio supporto softwareBuona scelta per iniziare.
Ledger Nano X~€150Popolare, Bluetooth, supporto monete enormeFirmware proprietario. Data leak 2020: nomi e indirizzi fisici dei clienti finiti in giro. Bella roba.
Jade (Blockstream)~€60Open source, air-gap possibile, economicoSolo Bitcoin/Liquid. Ottimo rapporto qualità/prezzo.

✅ Cosa fare con la seed

  • Scrivila su carta o acciaio (Cryptosteel, Billodr)
  • Tienila offline, mai digitarla su un computer connesso
  • Backup multipli in posti diversi (casa, cassaforte banca)
  • Verifica che la seed sia corretta PRIMA di mettere soldi
  • Considera una passphrase BIP39 per layer extra
  • Informa chi deve ereditare come accedere (eredità)

❌ Cosa NON fare

  • Fotografare la seed con lo smartphone
  • Salvarla in cloud (iCloud, Google Drive, Dropbox)
  • Mandarla via email/WhatsApp/Telegram
  • Digitarla su siti web o "verificatori"
  • Tenerla in un solo posto
  • Dimenticare la passphrase BIP39 (se la usi)
  • Comprare hardware wallet usato da terzi
05 / 12

Come funzionano le Transazioni

UTXO model, input/output, script, firma digitale. Bitcoin non usa "saldi" come le banche. Ci ha messo un po' ad abituarsi anche chi scrive questa guida.

Non esistono "saldi" in Bitcoin
Il tuo wallet non ha un conto con un valore. Ha una serie di UTXO (Unspent Transaction Output): monete non spese che il tuo wallet può firmare e spendere. Come avere tante banconote di vario taglio invece di un conto bancario.
UTXO: come funziona una transazione
UTXO nel tuo wallet
0.05 BTC (UTXO-1)
0.03 BTC (UTXO-2)
0.02 BTC (UTXO-3)
Totale: 0.10 BTC
Transazione: manda 0.07 BTC
INPUT: UTXO-1 (0.05)
INPUT: UTXO-2 (0.03)
↓ firma con chiave privata ↓
OUTPUT: destinatario 0.07
OUTPUT: resto 0.009
Fee: 0.001 BTC → miner
UTXO consumati
0.05 BTC (UTXO-1)
0.03 BTC (UTXO-2)
0.02 BTC (UTXO-3)
0.009 BTC (resto)

📜 Script Bitcoin: locking e unlocking

Ogni UTXO è bloccato da uno script (locking script / scriptPubKey). Per spenderlo devi fornire un unlocking script (scriptSig / witness) che soddisfa le condizioni.

script P2WPKH (SegWit)
# Locking script (scriptPubKey) — "puoi spendere solo con questa chiave"
OP_0 <20-byte-pubkey-hash>

# Unlocking script (witness) — "ecco la firma e la chiave pubblica"
<signature> <pubkey>

# Il nodo verifica:
# 1. SHA256(RIPEMD160(pubkey)) == pubkey-hash
# 2. la firma è valida sulla transazione corrente
# Se entrambe vere → UTXO sbloccato → spendibile

📊 Struttura di una transazione

bitcoin-cli getrawtransaction (decoded)
{
  "txid": "abc123...def456",    // 32-byte hash della transazione
  "version": 2,
  "vin": [{                    // inputs: UTXO che stai spendendo
    "txid": "prev_tx_hash",
    "vout": 0,               // indice output nella tx precedente
    "witness": ["<sig>", "<pubkey>"]
  }],
  "vout": [{                   // outputs: nuovi UTXO creati
    "value": 0.07000000,     // BTC al destinatario
    "scriptPubKey": {...}    // locking script
  },{
    "value": 0.00900000,     // BTC di resto a te stesso
    "scriptPubKey": {...}
  }],
  "fee": 0.00100000          // differenza input - output → va al miner
}
⚠️ Il "resto" non è automatico. Se invii 0.08 BTC da un UTXO da 0.10 BTC e non crei un output di resto, i 0.02 BTC diventano fee per il miner. Il miner è felice. Tu meno. Il wallet lo fa automaticamente, ma verifica sempre prima di firmare.

🔒 Coin Control: perché ti importa

Il coin control è la selezione manuale di quali UTXO usare in una transazione. Disponibile in Sparrow Wallet.

Perché usarlo:

  • Privacy: mescolare UTXO da fonti diverse in una transazione li "collega" sulla blockchain pubblica
  • Fee optimization: scegli UTXO grandi per ridurre il numero di input e le fee
  • KYC separation: tieni separati BTC acquistati con KYC da quelli ricevuti peer-to-peer
06 / 12

Mempool e Fee

La sala d'attesa delle transazioni. Come scegliere la fee giusta senza pagare troppo né aspettare 3 giorni.

💡 La mempool è un'asta

Quando invii una transazione Bitcoin, va nella mempool (memory pool): una coda in attesa che un miner la includa nel prossimo blocco. I miner scelgono le transazioni con fee per vByte più alte. Se paghi poco, aspetti. Se paghi tanto, sei nel prossimo blocco. In periodi di congestione, le transazioni "economiche" possono aspettare giorni o essere dimenticate.

⚖️ Fee rate: sat/vByte

Le fee non si calcolano in percentuale del valore ma in sat per virtual byte (unità di dimensione della transazione).

Una transazione tipica P2WPKH (1 input, 2 output) pesa circa 141 vByte.

calcolo fee
# Fee rate scelto: 20 sat/vByte
# Dimensione tx: 141 vByte
fee = 20 × 141 = 2820 satoshi
fee = 0.00002820 BTC
# A ~€60k BTC: circa €1.69

mempool.space mostra il fee rate raccomandato in tempo reale. Controlla prima di inviare.

⏱️ Urgenza vs risparmio

Fee rateAttesa previstaQuando usare
high priorityProssimo blocco (~10min)Transazioni urgenti
medium~30 min - 1 oraUso normale
low~3-6 oreNon hai fretta
minimum1+ giorni o maiSolo in periodi tranquilli

🔧 RBF — Replace by Fee

Se hai inviato una transazione con fee troppo bassa, puoi sostituirla con una uguale ma con fee più alta, usando il meccanismo RBF (Replace-by-Fee).

Funziona solo se la transazione originale ha il flag RBF abilitato (la maggior parte dei wallet moderni lo fa di default).

Sparrow Wallet
# In Sparrow: Transaction > Bump Fee (RBF)
# Scegli nuovo fee rate più alto
# Firma e broadcast → sostituisce la precedente in mempool

# Via bitcoin-cli:
bitcoin-cli bumpfee "txid" '{"fee_rate": 30}'

🔗 CPFP — Child Pays for Parent

Se sei il destinatario di una transazione stuck (e non puoi fare RBF), puoi creare una transazione figlia che spende l'UTXO non confermato con fee alta. I miner includeranno entrambe per incassare le fee totali.

Funziona anche per "accelerare" una transazione di qualcun altro verso di te.

ℹ️ mempool.space è il tuo migliore amico. Mostra la mempool in tempo reale, le fee raccomandate, lo stato di ogni transazione, le statistiche di ogni blocco. Bookmarkalo.
07 / 12

Bitcoin Core

Il full node di riferimento. La sovranità assoluta. Un Raspberry Pi che gira 24/7 nel cassetto. 600 GB di blockchain. Il sogno di chi spiega Bitcoin ai colleghi.

Perché un full node?
Con un full node non ti fidi di nessuno. Verifichi tu stesso ogni transazione e ogni blocco dalla genesis. Il tuo wallet connesso al tuo nodo non dipende da server di terze parti che potrebbero mentirti, cadere, o sorvegliare le tue transazioni.

📋 Requisiti hardware

💾

Storage

600+ GB SSD. Un HDD va bene per il nodo base, un SSD NVMe è raccomandato per IBD veloce.

🧠

RAM

Minimo 4 GB, raccomandata 8 GB. Durante IBD più RAM = più veloce.

🌐

Banda

~20 GB/mese dopo sincronizzazione. L'IBD iniziale scarica ~600 GB. Fibra raccomandata.

Hardware consigliato: Raspberry Pi 5 (8GB) + SSD da 2TB, oppure un mini PC tipo Beelink SER5/SER9. Consumo ~10-15W se always-on.

⚙️ Installazione e configurazione

Ubuntu/Debian
# 1. Scarica Bitcoin Core da bitcoincore.org
wget https://bitcoincore.org/bin/bitcoin-core-27.0/bitcoin-27.0-x86_64-linux-gnu.tar.gz

# 2. Verifica la firma (IMPORTANTE: non saltare questo passaggio)
wget https://bitcoincore.org/bin/bitcoin-core-27.0/SHA256SUMS
wget https://bitcoincore.org/bin/bitcoin-core-27.0/SHA256SUMS.asc
gpg --verify SHA256SUMS.asc
sha256sum --check SHA256SUMS --ignore-missing

# 3. Estrai e installa
tar xzf bitcoin-27.0-x86_64-linux-gnu.tar.gz
sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-27.0/bin/*

# 4. Crea data directory
mkdir -p ~/.bitcoin
~/.bitcoin/bitcoin.conf
# Rete principale
mainnet=1

# Indicizza tutte le transazioni (necessario per alcuni wallet/explorer)
txindex=1

# Accetta connessioni RPC (per wallet come Sparrow)
server=1
rpcuser=bitcoinrpc
rpcpassword=CAMBIA_QUESTA_PASSWORD_LUNGA_E_CASUALE

# Bind RPC solo su localhost (sicurezza)
rpcbind=127.0.0.1
rpcallowip=127.0.0.1

# Memoria per dbcache durante IBD (aumenta se hai RAM)
dbcache=4096

# Pruned node: risparmia spazio (commenta se vuoi nodo completo)
# prune=20000  # 20GB, disabilita txindex se usi prune

# Tor (opzionale ma raccomandato per privacy)
# proxy=127.0.0.1:9050
# listen=1
# bind=127.0.0.1
Avvio e IBD
# Avvia il nodo (IBD può durare 2-12 ore con SSD NVMe, giorni con HDD)
bitcoind -daemon

# Monitora progresso sync
bitcoin-cli getblockchaininfo
  "verificationprogress": 0.9987,   # 99.87% sincronizzato
  "blocks": 839001,
  "headers": 839100

# Crea wallet
bitcoin-cli createwallet "mywallet" false false "" false true true
# false false = no disable_private_keys, no blank
# true true = use_descriptors, load_on_startup

# Genera un indirizzo per ricevere
bitcoin-cli getnewaddress "" "bech32"
bc1q...xyz

# Ferma il nodo (sempre in modo pulito!)
bitcoin-cli stop

🛠️ Comandi bitcoin-cli utili

Operazioni comuni
# Stato della blockchain
bitcoin-cli getblockchaininfo
bitcoin-cli getnetworkinfo
bitcoin-cli getmempoolinfo

# Wallet
bitcoin-cli getbalance
bitcoin-cli listunspent          # lista UTXO
bitcoin-cli getwalletinfo

# Transazioni
bitcoin-cli gettransaction "txid"
bitcoin-cli getrawtransaction "txid" true   # decoded
bitcoin-cli decoderawtransaction "hex"

# Fee rate raccomandato
bitcoin-cli estimatesmartfee 6    # fee per conferma entro 6 blocchi
  "feerate": 0.00025,              # BTC/kB → converti in sat/vByte

# Invia transazione
bitcoin-cli sendtoaddress "bc1q..." 0.01 "" "" false true 1 "unset" null null 20
# ultimo parametro = fee rate in sat/vByte

# Blocco specifico
bitcoin-cli getblockhash 839000
bitcoin-cli getblock "$(bitcoin-cli getblockhash 839000)" 2

🧅 Tor + Bitcoin Core

Per la massima privacy, esegui Bitcoin Core sopra Tor. Il tuo IP non sarà visibile ai peer della rete.

bitcoin.conf con Tor
# Installa Tor: sudo apt install tor
# Poi in bitcoin.conf:

proxy=127.0.0.1:9050      # SOCKS5 proxy Tor
listen=1                   # Accetta connessioni entranti
bind=127.0.0.1             # Solo loopback per inbound non-Tor
onlynet=onion              # Solo connessioni .onion (massima privacy)

# Il nodo genererà automaticamente un indirizzo .onion
# Visibile in: bitcoin-cli getnetworkinfo → localaddresses

Connettere Sparrow al proprio nodo

Sparrow Wallet → File → Preferences → Server → Bitcoin Core (o Electrum)

Configurazione in Sparrow
# Modalità Bitcoin Core (consigliata)
URL: http://127.0.0.1:8332
Username: bitcoinrpc
Password: [quella che hai messo in bitcoin.conf]

# Modalità Electrum Server (serve Electrs o Fulcrum installato sul nodo)
URL: 127.0.0.1:50001 (TCP) o 127.0.0.1:50002 (SSL)
08 / 12

Lightning Network

Pagamenti istantanei, fee da microsatoshi, scalabilità. Il layer 2 di Bitcoin. Anche quello che ti fa dire "aspetta che apro un canale" ogni volta che vuoi pagare una birra.

💡 L'analogia del bar con il conto aperto

Invece di mettere ogni birra sulla blockchain (lento, costoso), apri un canale di pagamento con il bar: depositi dei BTC in un contratto 2-of-2 sulla blockchain (on-chain, una volta), poi fai quanti pagamenti vuoi off-chain, aggiornando il bilancio del contratto tra voi due senza toccare la blockchain. Quando chiudi il canale, il saldo finale viene settato on-chain. Milioni di transazioni, due transazioni on-chain.

Routing Lightning: pagamento senza canale diretto
Alice 100k sat canale → 50k sat Bob router canale → 50k sat Charlie router canale → 50k sat Dave riceve Alice non ha un canale con Dave, ma il pagamento arriva lo stesso tramite routing. Atomico: o arriva tutto o non arriva niente (HTLC).

🔓 Aprire un canale

Per aprire un canale serve una transazione on-chain che blocca BTC in un contratto multisig 2-of-2. La transazione va confermata (~10-30 min).

lnd / clightning / eclair
# LND: apri canale con un peer
lncli openchannel \
  --node_key 03abc...def \
  --local_amt 1000000 \
  --push_amt 0
# local_amt: satoshi che metti tu
# push_amt: satoshi da dare al peer subito (opzionale)

# Aspetta 3 conferme
lncli pendingchannels
lncli listchannels

📨 Invoice e pagamenti

Per ricevere pagamenti Lightning generi una invoice (BOLT11 o BOLT12): una stringa che contiene importo, descrizione, nodo destinazione e scadenza.

LND
# Genera invoice per 50000 sat
lncli addinvoice --amt 50000 --memo "birra"
  "payment_request": "lnbc500u1..."

# Paga una invoice
lncli payinvoice lnbc500u1...

# Pagamento senza invoice (keysend)
lncli sendpayment --dest 03abc... --amt 1000 --keysend

🏗️ Implementazioni Lightning

ImplementazioneLinguaggioPunti di forzaQuando usarla
LND (Lightning Labs)GoPiù usata, ecososistema ricco, ThunderHub, RTLNodo domestico, BTCPay Server
CLN (Core Lightning)CLeggera, modulare, plugin systemChi vuole customizzazione
Eclair (ACINQ)ScalaBase di Phoenix wallet, mobile-friendlyServer con Phoenix
LDK (Lightning Dev Kit)Rust (library)Libreria per integrare LN in app proprieSviluppatori

🛠️ Gestione nodo: strumenti

ThunderHub — dashboard web per LND. Gestisce canali, pagamenti, routing. La più completa.

Ride The Lightning (RTL) — UI web compatibile con LND, CLN, Eclair. Robusta e matura.

Amboss — analytics di rete Lightning. Ottimo per decidere con chi aprire canali.

1ML.com — esplora la rete Lightning, capacità dei canali, statistiche nodi.

Inbound vs Outbound Liquidity
La liquidità in uscita (outbound) ti permette di mandare pagamenti. Quella in entrata (inbound) ti permette di ricevere. Quando apri un canale metti solo outbound. Per ricevere hai bisogno che qualcuno apra un canale verso di te, o usi servizi come Loop/Pool di Lightning Labs.

✅ Buone pratiche Lightning

  • Backup del channel.backup regolarmente (LND)
  • Tieni il nodo online 24/7 (o quasi)
  • Apri canali con nodi ben connessi e con alta uptime
  • Tieni i canali bilanciati per poter routare in entrambe le direzioni
  • Per use personale: Phoenix/Breez, non serve un nodo

❌ Cosa evitare

  • Mettere grandi quantità su Lightning (è un layer sperimentale)
  • Spegnere il nodo spesso senza chiudere i canali
  • Perdere il backup dei canali: i BTC possono essere irrecuperabili
  • Aprire canali con nodi sconosciuti e a bassa liquidità
09 / 12

BTCPay Server

Accetta pagamenti Bitcoin senza intermediari. Self-hosted, gratuito, zero commissioni. Perfetto per spiegare ai clienti perché non puoi usare il POS normale.

💡 BTCPay = Stripe ma tuo

BTCPay Server è un processore di pagamenti open source che installi tu stesso sul tuo server. Nessuna commissione di terze parti, nessuna KYC, nessuno che può congelare il tuo account. I pagamenti vanno direttamente nel tuo wallet. È usato da negozi, creator, ONG, e chiunque voglia accettare BTC senza dipendere da servizi custodial.

⚙️ Installazione (Docker)

Ubuntu Server
# Prerequisiti: Ubuntu 22.04, Docker, 80GB SSD
sudo apt update && sudo apt install -y docker.io docker-compose git

# Clona e configura BTCPay
git clone https://github.com/btcpayserver/btcpayserver-docker
cd btcpayserver-docker

# Variabili d'ambiente
export BTCPAY_HOST="pay.tuo-dominio.com"
export NBITCOIN_NETWORK="mainnet"
export BTCPAYGEN_CRYPTO1="btc"
export BTCPAYGEN_LIGHTNING="lnd"
export BTCPAYGEN_REVERSEPROXY="nginx"
export BTCPAYGEN_ADDITIONAL_FRAGMENTS="opt-save-storage"

# Setup e avvio (scarica tutto, ~10 minuti)
. ./btcpay-setup.sh -i

# Stato servizi
btcpay-up.sh
btcpay-info.sh

🔌 Integrazioni

WooCommerce — plugin BTCPay per WordPress/WooCommerce. Il più usato. Configura in 5 minuti.

Shopify — BTCPay app su Shopify (tramite payment provider).

API diretta — REST API per integrazioni custom. Genera un API key nel pannello.

POS — BTCPay ha un Point of Sale integrato per vendite in presenza (QR code).

Pay Button — widget HTML da incollare in qualsiasi sito. Genera HTML dal pannello.

Pay Button HTML
<!-- Generato dal tuo BTCPay Server -->
<form method="POST" action="https://pay.tuo-dominio.com/...">
  <button type="submit">₿ Paga con Bitcoin</button>
</form>

🏪 Configurazione store e wallet

1

Crea store

Dal pannello BTCPay: Stores → Create New Store. Dai un nome, imposta valuta di default per conversioni.

2

Connetti wallet (on-chain)

Store → Wallets → Bitcoin → Connect. Inserisci xpub/zpub del tuo hardware wallet. BTCPay genera indirizzi fresh per ogni pagamento, ma non ha la chiave privata — non può spendere i tuoi BTC.

3

Connetti nodo Lightning

Store → Wallets → Lightning → Internal Node (usa il LND/CLN del BTCPay). Oppure connetti un nodo esterno via macaroon/grpc.

4

Configura invoice

Imposta scadenza invoice (default 15 min), numero di conferme richieste per on-chain (1-6), comportamento BOLT11/BOLT12 per Lightning.

💡 Non vuoi gestire un server?
Esistono hosting BTCPay gestiti da terze parti (LunaNode, Voltage) o servizi come OpenNode/Strike che però sono custodial. L'opzione migliore per molti è BTCPay su un VPS da €5-10/mese — hai il pieno controllo senza gestire hardware fisico.
10 / 12

Sicurezza

Le truffe sono più sofisticate di quello che pensi. La paranoia ragionevole è la norma. Se pensi di non essere un bersaglio, significa che non hai ancora abbastanza BTC.

🚨 Scam più comuni su Bitcoin

⚠️ Fake hardware wallet

Coldcard/Trezor venduti su Amazon da terze parti con firmware modificato che ruba la seed. Compra solo dal sito ufficiale.

⚠️ "Recovery service"

"Hai perso Bitcoin? Ti recuperiamo tutto per una piccola fee". È una truffa al 100%. Non esiste recupero di una seed persa. Nessuno può farlo.

⚠️ Clipboard hijacker

Malware che sostituisce l'indirizzo Bitcoin negli appunti con l'indirizzo dell'attaccante. Verifica sempre l'indirizzo destinatario prima di inviare.

⚠️ Giveaway scam

"Manda 0.1 BTC, ti tornano 0.2 BTC". Elon Musk, Vitalik, Michael Saylor non fanno giveaway. Mai. Chiunque lo prometta è una truffa.

⚠️ Seed phrase richiesta

Nessun supporto legittimo ti chiederà mai la seed phrase. Mai, per nessun motivo. Chi la chiede ti sta fregando.

⚠️ Phishing wallet

Siti fake di Electrum, Sparrow, Trezor che sembrano identici all'originale. Controlla sempre l'URL e scarica solo dal sito ufficiale.

⚠️ Dust attack

Ti mandano tiny amounts di BTC per de-anonimizzare il tuo wallet. Se poi usi quell'UTXO in una transazione, collegano i tuoi indirizzi. Usa coin control.

⚠️ $5 wrench attack

Qualcuno ti costringe fisicamente a rivelare le chiavi. La difesa: passphrase BIP39 + wallet esca con pochi BTC da "sacrificare".

🛡️ Passphrase BIP39: il 25° word

La passphrase (spesso chiamata "25° parola") è un'estensione della seed che genera un wallet completamente diverso. Se qualcuno trova la tua seed di 24 parole, senza la passphrase non trova nulla.

🔴 Se dimentichi la passphrase, perdi i Bitcoin per sempre. Non esiste recupero. Tienila scritta separata dalla seed, in posto sicuro. Un wallet esca senza passphrase con pochi BTC è utile per resistere alla coercizione.

🔐 Multisig: per grandi importi

Un setup multisig 2-of-3 richiede 2 firme su 3 per spendere. Puoi usare 3 hardware wallet diversi (es. Coldcard + Trezor + Jade) e conservarli in posti diversi.

Vantaggi: perdi un dispositivo/seed → ancora sicuro. Un attaccante ne trova uno solo → non basta.

Sparrow Wallet supporta multisig nativo. Usa standard Miniscript/output descriptors per interoperabilità.

⚠️ Il multisig aggiunge complessità. Devi conservare anche il backup del wallet descriptor (non solo le seed). Perdere tutti i descriptor + N seed può bloccare l'accesso.

🏦 Privacy: non sei anonimo

La blockchain di Bitcoin è pubblicamente trasparente. Tutte le transazioni sono visibili. L'anonimato è pseudonimia: se il tuo indirizzo viene collegato alla tua identità, chiunque può vedere tutto il tuo storico.

Cosa non fare per la privacy:

  • Riusare lo stesso indirizzo
  • Fare KYC su exchange e prelevare al tuo wallet principale
  • Mescolare UTXO da fonti diverse

Strumenti per la privacy:

  • Coinjoin (Whirlpool in Sparrow, JoinMarket)
  • Tor per il nodo e le connessioni
  • Fresh address per ogni ricezione
  • Coin control per evitare UTXO linking

💰 Fiscalità (Italia, aprile 2025)

Le plusvalenze da Bitcoin sono tassate al 33% (aliquota vigente dal 2025, introdotta dalla Legge di Bilancio 2025 per redditi diversi di natura finanziaria da crypto-asset) senza soglia di esenzione: ogni guadagno è tassabile indipendentemente dall'importo.

Il regime precedente (26% con soglia €2.000) è stato abolito. L'obbligo di monitoraggio fiscale (quadro RW) rimane.

⚠️ Nota valida ad aprile 2025: se la normativa è cambiata dopo questa data, per pigrizia non abbiamo aggiornato questa pagina — verifica con un commercialista. Le leggi fiscali su Bitcoin cambiano frequentemente.
11 / 12

SOS Troubleshooting

Qualcosa è andato storto. Respira. Forse si risolve. Se hai mandato BTC all'indirizzo sbagliato, smetti di respirare e vai direttamente all'ultima voce.

🔴 Ho inviato BTC all'indirizzo sbagliato

Se la transazione è ancora in mempool (non confermata): Se hai abilitato RBF, puoi fare bump fee verso te stesso con RBF (double spend). Alcune mempool possono essere "svuotate" di transazioni con fee bassissima dopo giorni.

Se è già confermata: I Bitcoin sono persi se non conosci il destinatario. Bitcoin è definitivo. Non c'è banca da chiamare, non c'è "storno". Impara per la prossima volta: controlla sempre l'indirizzo prima di inviare.

Prevenzione: Invia sempre prima un importo piccolo di test. Usa wallet con verifica visiva dell'indirizzo. Con hardware wallet, verifica lo schermo del dispositivo.

🔴 La transazione è bloccata in mempool da giorni

Verifica su mempool.space: controlla se la transazione è ancora in mempool o è stata droppata.

Se hai RBF abilitato: usa bump fee dal wallet (Sparrow: tasto destro sulla tx → Bump Fee).

Se non hai RBF: usa CPFP — crea una transazione che spende l'output non confermato con fee alta.

Se la tx è stata droppata dalla mempool: ritrasmettila con fee più alta. Con Sparrow: puoi ribroadcastare la transazione originale dopo averla modificata.

🔴 Bitcoin Core non sincronizza / IBD bloccato

Controlla i log: tail -f ~/.bitcoin/debug.log

"Verifying blocks" infinito: corruzione del database. bitcoin-cli stop poi riavvia con bitcoind -reindex-chainstate. Lento ma risolve.

Pochi peer connessi: bitcoin-cli getpeerinfo. Se meno di 5 peer, aggiungi nodi manualmente in bitcoin.conf: addnode=x.x.x.x:8333

IBD lentissimo: aumenta dbcache in bitcoin.conf (4096 o più se hai RAM). Chiudi altri programmi. Un SSD NVMe fa la differenza enorme vs HDD.

Disco pieno: la blockchain cresce. Usa prune= se lo spazio è limitato, oppure aggiungi storage.

🔴 Canale Lightning bloccato / forza chiusura

Canale stuck / offline peer: se il peer è offline da tempo, puoi forzare la chiusura unilaterale.

lncli closechannel --force \
  --funding_txid <txid> \
  --output_index <idx>
# Attendi timelock (144-2016 blocchi) prima di poter spendere

Backup canali perso: se hai il SCB (Static Channel Backup), recupera con: lncli restorechanbackup --multi_file channel.backup. Se non hai backup, i fondi nei canali potrebbero essere irrecuperabili.

Nodo LND non parte: controlla ~/.lnd/logs/bitcoin/mainnet/lnd.log. Problemi frequenti: porta 9735 non raggiungibile, Bitcoin Core non sincronizzato.

🔴 Wallet non mostra i BTC / saldo errato

Wallet non sincronizzato: aspetta che si aggiorni. Con Sparrow connesso al proprio nodo: verifica che il nodo sia sincronizzato al 100%.

Gap limit: i wallet HD generano indirizzi sequenzialmente e si fermano se trovano troppi indirizzi vuoti di fila (default gap limit = 20). Se hai ricevuto su indirizzi "lontani", aumenta il gap limit: in Sparrow → Wallet Settings → Gap Limit.

Tipo di indirizzo sbagliato: hai una seed che genera indirizzi Taproot ma stai cercando con un wallet che guarda solo Legacy? Riimporta come tipo corretto.

Passphrase BIP39: stai cercando nel wallet sbagliato. La passphrase genera un wallet completamente diverso.

🔴 Ho perso la seed phrase

Hai ancora il dispositivo e PIN: esporta la seed dal dispositivo prima che si rompa. Trezor e Jade la mostrano dal menù. Coldcard ha l'export sicuro.

Hai solo il wallet file (non hardware): per Sparrow/Electrum, il wallet file cifrato con password contiene le chiavi. Se conosci la password, puoi estrarre la seed.

Non hai nulla: se hai perso seed, dispositivo E password — i BTC sono irrecuperabili. Non esiste terza parte che possa aiutarti. Chiunque dica il contrario vuole i tuoi soldi.

Lezione imparata nel modo più costoso: backup multipli della seed, in posti fisici separati, verifica che funzionino PRIMA di depositare.

12 / 12

Cheat Sheet

Tutto quello che devi ricordare in una pagina.

₿ Bitcoin: numeri da sapere
Supply totale21.000.000 BTC
1 BTC100.000.000 satoshi
Block time~10 minuti
Block size~1-4 MB (con SegWit)
Halving ogni210.000 blocchi (~4 anni)
Block reward 20243.125 BTC
Difficoltà si aggiustaogni 2016 blocchi
Conferme sicure6 per grandi importi
Porta P2P8333 (mainnet)
Porta RPC8332 (mainnet)
⚡ Lightning Network
Porta LND9735 (P2P), 10009 (gRPC)
Invoice formatlnbc... (BOLT11)
Max HTLC size~4.29 MSAT di default
Timelock default40 blocchi (CLTV)
Fee routing tipica0-1 sat + 0.01-0.1%
Channel backup LND~/.lnd/data/chain/bitcoin/mainnet/channel.backup
Keysendpagamento senza invoice
BOLT12offer (invoice riutilizzabile)
🔑 Indirizzi
Legacy (P2PKH)inizia con 1
P2SH-SegWitinizia con 3
Native SegWitbc1q...
Taprootbc1p...
BIP44 pathm/44'/0'/0'/0/x
BIP49 pathm/49'/0'/0'/0/x
BIP84 pathm/84'/0'/0'/0/x
BIP86 pathm/86'/0'/0'/0/x
Change path...0/x = external, ...1/x = change
⛏️ Bitcoin Core CLI
getblockchaininfostato blockchain
getmempoolinfostato mempool
estimatesmartfee 6fee per 6 blocchi
listunspentlista UTXO
getnewaddress "" bech32nuovo indirizzo
bumpfee "txid"RBF fee bump
getpeerinfopeer connessi
stopferma il nodo (sempre usare questo!)
🛠️ Tool essenziali
mempool.spacemempool, fee, tx explorer
blockstream.infoblock explorer
Sparrow Walletwallet desktop + coin control
Phoenix WalletLightning mobile non-custodial
Coldcard MK4hardware wallet air-gap
ThunderHubLND dashboard web
BTCPay Serverpagamenti self-hosted
1ML.comLightning network explorer
🚨 Regole d'oro
La seedoffline, carta/acciaio, mai digitale
Exchangesolo per comprare, poi self-custody
Verifica sempreindirizzo prima di inviare
Fee basseaspetti, non è un problema
Recovery servicetruffa al 100%
Giveawaytruffa al 100%
Paranoiaè una feature, non un bug
📚 BIP da conoscere
BIP32HD Wallets (derivazione gerarchica)
BIP39Mnemonic seed phrase (12/24 parole)
BIP44Multi-account derivation (Legacy)
BIP49P2SH-SegWit derivation
BIP84Native SegWit (Bech32)
BIP86Taproot derivation (Bech32m)
BIP125Replace-by-Fee (RBF)
BIP174PSBT (Partially Signed Bitcoin Transaction)
BIP341Taproot (soft fork 2021)
⚡ LND comandi rapidi
lncli getinfoinfo nodo
lncli listchannelscanali aperti
lncli pendingchannelscanali in apertura/chiusura
lncli addinvoice --amt Xcrea invoice per X sat
lncli payinvoice lnbc...paga invoice
lncli openchannelapri canale
lncli closechannelchiudi canale
lncli walletbalancesaldo on-chain
lncli channelbalancesaldo Lightning
Non sono un consulente finanziario
Questa guida è a scopo educativo. Non è un consiglio di investimento. Bitcoin può valere tutto o zero. Usa solo quello che puoi permetterti di perdere. La parte tecnica è quella che conta: capire come funziona davvero ti protegge dagli errori (che in Bitcoin sono irreversibili).