🍺 Buy me a beer

Solana per Svogliati

PoH, account model, SPL token, DeFi, Anchor e perché ogni tanto la rete si ferma.
Spiegato senza "Ethereum killer", senza TPS inventati, con i downtime contati.

"65.000 transazioni al secondo." — In laboratorio. Con vento favorevole. E solo un validatore.

↓ ce la fai almeno a scorrere?
01 / cos'è

Solana in tre concetti

E perché non è semplicemente "Ethereum più veloce"

◎ L'idea centrale

Il problema di tutte le blockchain è il consenso: come fanno migliaia di nodi a concordare sull'ordine delle transazioni senza fidarsi l'uno dell'altro? Bitcoin e Ethereum usano il tempo reale come riferimento — ma i nodi si devono comunque aspettare e coordinarsi.

Proof of History (PoH) risolve il problema in modo diverso: crea una fonte di tempo crittograficamente verificabile integrata nella blockchain stessa. I validatori non devono aspettarsi — sanno già l'ordine degli eventi. Risultato: blocchi ogni 400ms, throughput reale di migliaia di tx/secondo su mainnet.

Il prezzo: hardware validatore molto più costoso, architettura più complessa, e centralizzazione maggiore rispetto a Ethereum.

⏱️

Proof of History

SHA-256 applicato ricorsivamente crea un "orologio" crittografico. Dimostra che il tempo è passato senza coordinamento esterno.

Sealevel

Runtime parallelo: esegue smart contract in parallelo se non toccano gli stessi account. Ethereum è single-thread, Solana è multi-thread.

🗜️

Gulf Stream

Le transazioni vengono inoltrate al validatore previsto prima che il blocco corrente sia chiuso. Riduce il mempool e la latenza.

⟠ Ethereum

  • Blocco ogni ~12 secondi
  • 15-30 tx/blocco su L1
  • EVM: stack-based, single thread
  • Account = saldo + codice + storage
  • Gas in ETH, bruciato con EIP-1559
  • ~7.000 validatori (stimati attivi)
  • L2 per scalare (Arbitrum, Optimism)

◎ Solana

  • Blocco ogni ~400ms (slot)
  • Migliaia di tx per slot
  • SVM: account-based, parallelo
  • Account = solo dati, separati dal programma
  • Fee in SOL, bassissime (~0.000005 SOL)
  • ~2.000 validatori (con requisiti hardware alti)
  • Scala su L1 (con qualche downtime)
⚠️ I downtime di Solana Mainnet si è fermata o degradata seriamente più volte: settembre 2021 (17 ore), gennaio 2022, maggio 2022, giugno 2022, ottobre 2022, febbraio 2023. Le cause variano — spam di transazioni, bug nel validator client, memory leak. Da febbraio 2023 la rete è più stabile, ma la storia c'è. Non mettere su Solana cose che non puoi permetterti di non raggiungere per ore.
02 / account model

Account Model

La differenza architettonica più importante rispetto a Ethereum

📦 Tutto è un account

In Ethereum un contratto combina codice + storage nello stesso indirizzo. In Solana è tutto separato: i Program account contengono solo bytecode (immutabile), i Data account contengono solo dati, e sono di proprietà del programma che li gestisce.

Ogni account ha un owner (il programma che può modificarlo), un saldo in lamport (1 SOL = 10⁹ lamport), e un campo data di dimensione fissa stabilita alla creazione.

💡 Rent — perché ogni account costa SOL

Ogni account occupa spazio sullo stato del validatore. Solana addebita un rent proporzionale alla dimensione. In pratica quasi tutti gli account sono rent-exempt: se tieni almeno il minimo di lamport (calcolato sulla dimensione), non paghi niente e l'account vive per sempre.

# Minimo rent-exempt per un account da 165 byte (token account)
solana rent 165
Rent per byte-year: 0.00000348 SOL
Rent per epoch: 0.000002439 SOL
Minimum balance for rent exemption: 0.00203928 SOL

# Quindi creare un nuovo token account costa ~0.002 SOL una tantum
# Chiudendo l'account recuperi i lamport
ℹ️ Quando un DEX ti chiede di creare un "Associated Token Account" per un nuovo token e ti addebita ~0.002 SOL, non è una fee del DEX — è il deposito rent-exempt obbligatorio per quel token account. Lo recuperi se chiudi l'account.
03 / transazioni

Transazioni & Istruzioni

Più simili a una chiamata di funzione che a un trasferimento

📨 Struttura di una transazione Solana

# Una transazione Solana contiene:
{
  signatures:    [firma1, firma2, ...],  # una per ogni signer
  message: {
    recentBlockhash: "Abc123...",  # blockhash recente (~60s di validità)
    accountKeys:    [...],          # tutti gli account coinvolti (dichiarati in anticipo!)
    instructions:   [              # una o più istruzioni
      {
        programId:  "TokenkegQfeZy...", # quale program chiamare
        accounts:   [idx1, idx2, ...],  # indici in accountKeys
        data:       "..."               # parametri codificati
      }
    ]
  }
}
🔮 La differenza chiave con Ethereum
Su Solana devi dichiarare tutti gli account che la transazione toccherà prima dell'esecuzione. Questo permette al runtime (Sealevel) di sapere in anticipo quali transazioni sono indipendenti e possono girare in parallelo. Su Ethereum invece ogni contratto può fare chiamate arbitrarie ad altri contratti durante l'esecuzione.

📦 Versioned Transactions e Address Lookup Tables

Un limite storico di Solana: max 32 account per transazione. Per operazioni DeFi complesse (swap con molti pool) questo era un problema.

La soluzione: Address Lookup Tables (ALT) — tabelle on-chain di indirizzi che le transazioni possono referenziare per indice compresso. Una tx versioned può così toccare centinaia di account usando pochi byte di indice. Jupiter (l'aggregatore DeFi) le usa per routing multi-hop.

04 / fee

Fee & Compute Units

Bassissime. Finché non vuoi essere incluso velocemente.

💸 Come funzionano le fee

# Fee base: 5000 lamport per firma (~0.000005 SOL)
# Con SOL a 150$: ~0.00075$ per transazione

# Compute Units (CU): equivalente del gas di Ethereum
# Default budget: 200.000 CU per istruzione
# Ogni operazione consuma CU (addizione: 1, sha256: 100+, ...)

# Priority fee (dal 2022): paghi di più per saltare la coda
# Fee aggiuntiva = microlamport per CU × CU usati
# Durante congestione (NFT drop, memecoin mania) la priority fee
# può esplodere — da 0 a milioni di microlamport per CU

# Best practice: impostare compute budget esplicito
ComputeBudgetProgram.setComputeUnitLimit({ units: 100_000 })
ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 10_000 })
⚠️ Fee basse ≠ fee sempre basse
Durante i periodi di hype (lancio di memecoin, NFT drop famosi), le priority fee esplodono. In certi momenti del 2024 la priority fee necessaria per essere inclusa era di 0.1–1 SOL a transazione. Le dApp di solito gestiscono questo automaticamente, ma se usi un wallet manuale puoi ritrovarti con transazioni bloccate.
05 / wallet

Wallet & Chiavi

Come su Ethereum, ma con qualche dettaglio diverso

🔑 Keypair Solana

# Solana usa Ed25519 (non secp256k1 come Bitcoin/Ethereum)
# Chiave privata: 64 byte (32 seed + 32 pubkey)
# Indirizzo: Base58 della chiave pubblica (32 byte)
7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU

# Solana CLI — generare un keypair
solana-keygen new --outfile ~/.config/solana/id.json
solana-keygen pubkey ~/.config/solana/id.json

# Keypair come array JSON (formato file)
# [174,47,154,16,202,193,206,113,...] — 64 byte
# QUESTO FILE È LA TUA CHIAVE PRIVATA — non condividerlo mai

# Vanity address (inizia con un prefisso)
solana-keygen grind --starts-with SOL:1
WalletNote
PhantomIl più diffuso. Browser extension + mobile. Buona UX, supporta NFT, token, staking.
SolflareAlternativa solida. Supporta hardware wallet Ledger nativamente.
BackpackWallet di xNFT Protocols. Supporta "xNFT" — app che girano dentro il wallet.
LedgerHardware wallet. Richiede app Solana installata e Solflare come interfaccia.
Solana CLIPer sviluppatori e automazione. Nessuna GUI.
06 / spl token

SPL Token

L'equivalente di ERC-20, ma con l'account model di Solana

🪙 Come funzionano i token su Solana

Su Ethereum ogni token ERC-20 è un contratto separato con la sua mappa address → balance. Su Solana tutti i fungible token usano lo stesso programma — il Token Program (o il nuovo Token-2022).

Ogni token ha un Mint account (definisce il token: decimali, supply, chi può mintare). Ogni utente che vuole tenere quel token ha un Associated Token Account (ATA) separato — un account derivato deterministicamente da (wallet_address, mint_address).

⚙️ Operazioni con SPL Token (CLI)

# Creare un nuovo token (Mint)
spl-token create-token
Creating token 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU

# Creare un token account per te
spl-token create-account 7xKXtg2CW87...

# Mintare token
spl-token mint 7xKXtg2CW87... 1000000

# Trasferire token
spl-token transfer 7xKXtg2CW87... 100 DESTINATARIO
# --fund-recipient crea l'ATA del destinatario se non esiste

# Vedere i tuoi token
spl-token accounts

# Chiudere un token account vuoto (recupera il rent ~0.002 SOL)
spl-token close --address TOKEN_ACCOUNT_ADDR

🆕 Token-2022 — il nuovo standard

Versione aggiornata del Token Program con funzionalità estese:

  • Transfer fee: il creatore del token può prendere una percentuale su ogni trasferimento
  • Confidential transfers: importi nascosti con ZK proof
  • Permanent delegate: un indirizzo che può sempre trasferire o bruciare i token (utile per stablecoin con compliance)
  • Non-transferable: token "soul-bound" che non puoi inviare ad altri
  • Interest-bearing: token che accumulano interessi nel tempo
⚠️ Transfer fee e permanent delegate — leggi sempre le estensioni di un token prima di comprarlo. Un token Token-2022 con permanent delegate significa che il creatore può toglierti i token in qualsiasi momento. Non è un bug — è una feature che può essere usata malamente.
07 / defi

DeFi su Solana

Fee basse, velocità alta, rug pull democratici per tutti

🪐

Jupiter

Aggregatore DEX. Trova il miglior prezzo tra tutti i DEX di Solana. Il punto di partenza per qualsiasi swap.

🌊

Raydium

AMM + order book ibrido. CLMM (concentrated liquidity). Il DEX storico di Solana.

🌀

Orca

AMM con Whirlpools (concentrated liquidity). UX semplice, buona liquidità per le coppie principali.

🏦

MarginFi / Kamino

Lending e borrowing. Depositi collaterale, prendi in prestito. Liquidazioni automatiche se il collaterale scende.

🌊

Marinade

Liquid staking. Depositi SOL, ricevi mSOL (che cresce di valore rispetto a SOL). Usabile in DeFi mentre stai staking.

🎰

Pump.fun

Launchpad memecoin. Chiunque crea un token in 30 secondi. Bonding curve, rug pull facilitato. L'anarchia in forma di UI.

🎰 Pump.fun e la memecoin economy — capirla per evitarla

Solana è diventata la chain principale per i memecoin, in gran parte per via di pump.fun: un sito che permette di creare un token in 30 secondi, con una bonding curve integrata che gestisce la liquidità iniziale.

  • Ogni giorno vengono creati migliaia di token su pump.fun
  • Il 99%+ muore entro ore — il creatore o i primi insider vendono tutto
  • Il modello è trasparente: la bonding curve è on-chain e verificabile
  • Quando il token raggiunge una certa capitalizzazione, la liquidità migra su Raydium
  • La maggior parte dei guadagni va ai bot MEV e agli insider
🚨 Ogni soldo che guadagni nei memecoin, qualcun altro lo ha perso
Non è un investimento, è un gioco a somma zero con bot più veloci di te, insider informati, e nessun recourse. Se vuoi partecipare, trattalo come casinò: metti solo quello che sei disposto a perdere interamente, perché probabilmente andrà così.
08 / nft

NFT su Solana

Metaplex, compressed NFT e il mercato che ha sopravvissuto al 2022

🖼️ Come funzionano gli NFT su Solana

Non esiste uno standard ERC-721 come su Ethereum. Gli NFT Solana usano lo standard Metaplex: ogni NFT è un SPL Token con supply = 1 e decimali = 0, con un Metadata account che punta a un JSON con nome, immagine, attributi.

# Struttura di un NFT Solana (semplificata)
Mint Account        # supply=1, decimals=0, mint authority=null (frozen)
  └── Token Account # il tuo wallet tiene 1 unità di questo token
  └── Metadata Account # gestito da Metaplex Token Metadata Program
        ├── name:   "DeGod #1234"
        ├── symbol: "DGOD"
        ├── uri:    "https://..."  # punta al JSON con immagine e attributi
        ├── creators: [...]          # lista creator con percentuale royalty
        └── seller_fee_basis_points: 500  # 5% royalty (non enforced on-chain)
⚠️ Le royalty non sono enforced
Su Solana le royalty degli NFT sono solo una indicazione nel metadata — i marketplace possono scegliere di non applicarle. Magic Eden e altri hanno reso le royalty opzionali nel 2022, causando guerra tra creator e marketplace. Alcune collection hanno migrato a standard con royalty on-chain (pNFT di Metaplex), ma il problema resta aperto.

🌳 Compressed NFT (cNFT)

Il problema degli NFT normali: ogni NFT crea 3-4 account on-chain → costa ~0.012 SOL per NFT. Per una collection da 10.000 pezzi: 120 SOL solo di rent.

La soluzione: Compressed NFT usa un Merkle tree per comprimere milioni di NFT in un singolo account. Mintare 1 milione di cNFT costa circa 50 SOL invece di 12.000. Il tradeoff è che la proof di ownership richiede dati off-chain (via Helius o simili).

09 / sviluppo

Sviluppare su Solana

Rust + Anchor. Più complesso di Solidity, più potente.

🦀 Stack di sviluppo

ToolRuolo
RustLinguaggio nativo per i program Solana. Compilato a BPF bytecode.
AnchorFramework che astrae la complessità di Rust + Solana. IDL generato automaticamente, client TypeScript incluso. Quello che Hardhat è per Ethereum.
Solana CLIDeploy, airdrop su devnet, gestione keypair, interazione con la chain.
Solana Web3.jsLibreria JavaScript per interagire con la chain dal frontend.
@solana/spl-tokenLibreria JS per interazioni con SPL Token.
Helius / QuickNodeRPC provider con API avanzate (webhooks, indexing, cNFT support).

Anchor — un esempio minimo

// Program in Rust + Anchor
use anchor_lang::prelude::*;

declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");

#[program]
pub mod counter {
    use super::*;

    pub fn initialize(ctx: Context<Initialize>) -> Result<()> {
        ctx.accounts.counter.count = 0;
        Ok(())
    }

    pub fn increment(ctx: Context<Increment>) -> Result<()> {
        ctx.accounts.counter.count += 1;
        Ok(())
    }
}

// Definizione degli account richiesti da ogni istruzione
#[derive(Accounts)]
pub struct Initialize<'info> {
    #[account(init, payer = user, space = 8 + 8)]
    pub counter: Account<'info, Counter>,
    #[account(mut)]
    pub user: Signer<'info>,
    pub system_program: Program<'info, System>,
}

#[derive(Accounts)]
pub struct Increment<'info> {
    #[account(mut)]
    pub counter: Account<'info, Counter>,
}

// Struttura dati dell'account
#[account]
pub struct Counter {
    pub count: u64,
}

🚀 Workflow di sviluppo

# Setup
sh -c "$(curl -sSfL https://release.solana.com/stable/install)"
cargo install --git https://github.com/coral-xyz/anchor anchor-cli

# Creare e buildare un progetto Anchor
anchor init mio-programma
cd mio-programma && anchor build
anchor test   # lancia un validator locale, deploya, esegue i test TypeScript

# Deploy su devnet
solana config set --url devnet
solana airdrop 2     # SOL gratis su devnet per i test
anchor deploy

# Interagire dal CLI
solana balance
solana transaction-history INDIRIZZO
solana account PROGRAM_ID

🧪 Reti di sviluppo & Faucet

ReteUsoCome ottenere SOL
LocalnetValidator locale sul tuo PC. Zero latenza, reset istantaneo, ideale per sviluppo attivo.solana airdrop 500 — illimitato in locale
DevnetRete di test condivisa, simile a mainnet. Dati persistono tra sessioni. La più usata per testing.solana airdrop 2 (CLI) oppure faucet.solana.com
TestnetUsata per testare release del validator client. Instabile, non per sviluppo dApp normale.faucet.solana.com (limitato)
Mainnet-betaLa rete reale. SOL valgono soldi. Ancora "beta" nel nome per ragioni storiche.compri SOL
# Scegliere la rete
solana config set --url localhost      # localnet
solana config set --url devnet         # devnet
solana config set --url mainnet-beta   # mainnet
solana config get                      # mostra configurazione corrente

# Avviare un validator locale
solana-test-validator
# --reset           → pulisce lo stato al riavvio
# --clone PROGRAM   → clona un programma da mainnet/devnet in locale
# --url devnet      → fork da devnet (come anvil --fork su Ethereum)

# Airdrop SOL su devnet/localnet
solana airdrop 2                       # 2 SOL al tuo wallet
solana airdrop 2 INDIRIZZO             # a un indirizzo specifico
# Su devnet il CLI è limitato a 2 SOL per volta — usa il faucet web per di più
# Faucet alternativi: faucet.solana.com, faucet.quicknode.com/solana/devnet
ℹ️ Workflow consigliato Sviluppa e testa su localnet (veloce, gratuito, resettabile). Quando il programma funziona, deploya su devnet per testare con wallet reali e altri utenti. Solo quando sei sicuro, deploya su mainnet. Non saltare i passaggi — un bug su mainnet costa SOL veri.
10 / staking

Validatori & Staking

Come funziona il consenso e come guadagnare reward

🏗️ Come funziona il consenso PoS di Solana

Solana usa PoS (con PoH come orologio). I validatori sono selezionati per proporre blocchi proporzionalmente al loro stake totale (proprio + delegato da altri). Ogni epoch dura ~2-3 giorni.

  • Validator: deve avere hardware potente (32+ core, 768GB+ RAM, 10Gbps rete, SSD NVMe). Costo mensile di gestione: 500-2000$.
  • Stake delegate: deleghi i tuoi SOL a un validatore, che vota e propone blocchi. Guadagni ~6-8% APY. I SOL rimangono tuoi.
  • Commission: il validatore trattiene una percentuale dei reward (tipicamente 5-10%).
  • Cooldown: per unstake ci vogliono ~2-3 giorni (fine epoch).

💧 Liquid Staking — mSOL, JitoSOL, bSOL

Il problema dello staking normale: i SOL in stake non sono usabili in DeFi durante il cooldown. Il liquid staking risolve questo: depositi SOL, ricevi un token liquido (mSOL, JitoSOL, bSOL) che cresce di valore rispetto a SOL man mano che si accumulano i reward.

ProtocolloTokenNote
MarinademSOLIl più grande. Distribuisce stake tra ~100 validatori. APY ~7%.
JitoJitoSOLAggiunge MEV reward allo staking. APY leggermente più alto.
BlazeStakebSOLFocus su decentralizzazione — favorisce validatori piccoli.
11 / sicurezza

Sicurezza

Stessi rischi di Ethereum, più qualche specialità della casa

🛡️ Rischi specifici di Solana

RischioDescrizione
Missing owner checkIl program non verifica che l'account passato sia effettivamente di proprietà del program atteso. Chiunque può passare un account finto.
Missing signer checkIl program non verifica che un account abbia firmato la transazione. Qualsiasi utente può impersonare l'admin.
Arithmetic overflowRust in modalità release non panicha sull'overflow — usa checked_add/checked_mul sempre in codice finanziario.
Token-2022 estensioni malevoleTransfer fee nascosta, permanent delegate del creatore. Leggi le estensioni prima di comprare.
Fake token accountPassare un token account di una mint diversa da quella attesa. Sempre verificare la mint del token account.

🎯 Regole pratiche per l'utente

Attenzione

  • Non interagire con token sconosciuti ricevuti
  • Non fare "simulate" → "approve" senza leggere cosa firma
  • Stai attento ai siti pump.fun fake
  • Non cliccare link da DM su Discord/Telegram
  • Verifica sempre l'URL del sito prima di connettere il wallet

Buone pratiche

  • Hardware wallet (Ledger + Solflare) per somme importanti
  • Wallet separato per DeFi speculativa
  • Chiudi i token account vuoti — recuperi il rent
  • Usa Phantom o Backpack che mostrano simulazione tx
  • Controlla le token extensions prima di comprare
12 / strumenti

Strumenti

Il kit per muoversi nell'ecosistema senza improvvisare

🔍 Explorer & Dati

  • Solscan — block explorer principale. Tx, account, token, programmi.
  • Solana Explorer — explorer ufficiale. Più grezzo ma più dettagliato.
  • SolanaFM — ottimo per analizzare programmi e instruction data.
  • Step Finance — portfolio tracker Solana con tutte le posizioni DeFi.
  • DeFiLlama — TVL per protocollo Solana.
  • Birdeye / Dexscreener — chart di token, volume, liquidità.

🛠️ Dev & Infra

  • Helius — RPC premium con webhook, indexing, API NFT e cNFT. Il migliore per sviluppo serio.
  • QuickNode — RPC multi-chain con Solana.
  • Solana Playground — IDE browser per Anchor, zero setup.
  • Anchor — framework di sviluppo, standard de facto.
  • Metaplex SDK — per tutto quello che riguarda NFT.
  • Codama — generatore di client da IDL. Alternativa più moderna a Anchor client.
🧭 Dove conviene usare Solana rispetto a Ethereum

Solana vince quando hai bisogno di fee basse per molte transazioni, velocità sotto il secondo, o stai costruendo qualcosa che Ethereum L1 non può fare per costi (cNFT da milioni di pezzi, gaming on-chain, orderbook su chain).

Ethereum vince quando hai bisogno di massima decentralizzazione e sicurezza, compatibilità con l'ecosistema EVM più grande del mondo, o stai gestendo somme dove il rischio di downtime è inaccettabile.

Non sono in competizione — risolvono problemi diversi con tradeoff diversi. Chi vi dice che "X ucciderà Y" sta vendendo qualcosa.