
Costruire su Bitcoin richiede un'officina attrezzata. Il codice tocca i fondi reali non appena lascia i regimi test, quindi l'ambiente di sviluppo deve essere totalmente isolato dal mainnet, riproducibile, e leggibile. La buona notizia : la cassetta degli attrezzi Bitcoin è matura nel 2026, in gran parte Rust e C++, quasi interamente open sourceOpen sourceSoftware il cui codice sorgente è pubblico e modificabile da chiunque. Garanzia di auditabilità fondamentale in Bitcoin.Vedi nel lessico →, e sta su una macchina dev media.
Questo articolo non copre i framework d'applicazione (walletWallet (portafoglio)Software o dispositivo che gestisce le tue chiavi Bitcoin e permette di firmare le transazioni. Un wallet non « contiene » davvero i tuoi bitcoin, contiene le chiavi che dimostrano che ne sei proprietario.Vedi nel lessico → chiavi in mano, BTCPay, ecc.) che hanno i loro articoli dedicati. Si concentra sui mattoni che chiamate dal vostro codice : il comando bitcoind e bitcoin-cli, le modalità regtest e signet, l'indexer electrs, l'APIAPI (Application Programming Interface)Interfaccia che permette a un programma di interrogare un altro programma o servizio. mempool.space espone un'API pubblica per interrogare la chain.Vedi nel lessico → RPCRPC (Remote Procedure Call)Protocollo standardizzato per chiamare funzioni su un programma remoto. Bitcoin Core espone più di 200 comandi RPC.Vedi nel lessico → e il bus ZMQZMQ (ZeroMQ)Libreria che permette ai programmi di scambiarsi messaggi in tempo reale. Bitcoin Core la usa per notificare nuove transazioni e nuovi blocchi.Vedi nel lessico →, la libreria crittografica libsecp256k1libsecp256k1Libreria crittografica di riferimento per Bitcoin, scritta in C, mantenuta dagli sviluppatori di Bitcoin Core. Usata da quasi tutti i wallet seri.Vedi nel lessico → e i suoi binding, i moderni Software Development Kit BDK e LDK, e gli ambienti di simulazione Lightning (Polar, Mutinynet).
Il filo conduttore è lo stesso metodo : iniziare in regtest sulla propria macchina locale, salire poi a signet per validare su una rete Bitcoin condivisa senza valore, e solo dopo considerare il mainnet, con importi simbolici prima. Ogni altra sequenza si paga in bug costosi.
Bitcoin Core : bitcoind, bitcoin-cli, regtest e signet
Bitcoin CoreBitcoin CoreImplementazione di riferimento del software Bitcoin, scritta in C++ e mantenuta da una comunità open source. È il software utilizzato dalla maggior parte dei nodi.Vedi nel lessico → è l'implementazione di riferimento del protocollo Bitcoin e il cuore di ogni ambiente dev serio. Il binario bitcoind espone il nodoNodo (node)Computer che esegue il software Bitcoin e partecipa alla rete validando blocchi e transazioni. Un « full node » conserva una copia completa della blockchain.Vedi nel lessico → (validazione dei blocchi, relay delle transazioni, RPCRPC (Remote Procedure Call)Protocollo standardizzato per chiamare funzioni su un programma remoto. Bitcoin Core espone più di 200 comandi RPC.Vedi nel lessico →), bitcoin-cli è il client a riga di comando, e bitcoin-tx, bitcoin-util, bitcoin-walletWallet (portafoglio)Software o dispositivo che gestisce le tue chiavi Bitcoin e permette di firmare le transazioni. Un wallet non « contiene » davvero i tuoi bitcoin, contiene le chiavi che dimostrano che ne sei proprietario.Vedi nel lessico → sono utilità complementari. Installazione : binari ufficiali su bitcoincore.org per Linux/macOS/Windows, o compilazione dalla sorgente GitHubGitHubPiattaforma web dove sono ospitati gran parte dei progetti open source del mondo, fra cui Bitcoin Core, electrs, BDK, LDK. Permette di vedere il codice, lo storico delle modifiche e di proporre contributi.Vedi nel lessico → bitcoin/bitcoin (Autoconf classico, più di 3 milioni di righe C++).
Modalità regtest. La modalità più utile per il dev : una rete Bitcoin interamente privata sulla vostra macchina, dove generate blocchi su richiesta tramite generatetoaddress. Avvio : bitcoind -regtest, poi bitcoin-cli -regtest createwallet test, getnewaddress, generatetoaddress 101 INDIRIZZO per crearvi 50 BTC istantaneamente. Nessun valore reale, iterazione in millisecondi, possibilità di forkFork (soft fork, hard fork)Modifica delle regole del protocollo. Un soft fork resta compatibile con i vecchi nodi (SegWit, Taproot); un hard fork crea una catena separata (Bitcoin Cash nel 2017).Vedi nel lessico → e rewind a volontà. Ideale per i test automatizzati e lo sviluppo di script TaprootTaprootAggiornamento maggiore di Bitcoin attivato a novembre 2021 (BIP 341). Porta più privacy, flessibilità per gli script e l'efficienza delle firme Schnorr.Vedi nel lessico →.
Modalità signet. Una rete Bitcoin pubblica ma senza valore, firmata da un coordinatore (la fondazione Bitcoin Core o un firmatario alternativo come Mutinynet). Stesse regole del mainnet (Bitcoin reale, Taproot attivato, transazioni Lightning), ma le monete sono gratuite tramite faucet. Ideale per i test d'integrazione con altri attori e per validare che il vostro codice funzioni su una vera rete Bitcoin prima del mainnet. Attivazione : bitcoind -signet, faucet su signetfaucet.com per recuperare 0.01 sBTC.
API RPC, ZMQ e indicizzazione electrs
L'APIAPI (Application Programming Interface)Interfaccia che permette a un programma di interrogare un altro programma o servizio. mempool.space espone un'API pubblica per interrogare la chain.Vedi nel lessico → JSON-RPCRPC (Remote Procedure Call)Protocollo standardizzato per chiamare funzioni su un programma remoto. Bitcoin Core espone più di 200 comandi RPC.Vedi nel lessico → è la porta d'ingresso principale in Bitcoin CoreBitcoin CoreImplementazione di riferimento del software Bitcoin, scritta in C++ e mantenuta da una comunità open source. È il software utilizzato dalla maggior parte dei nodi.Vedi nel lessico → dal vostro codice. Più di 200 comandi documentati, da getblockcount (lettura semplice) a sendrawtransaction (broadcast). Autenticazione tramite cookie automatico in locale o tramite rpcauth in bitcoin.conf per usi di rete. Librerie client per la maggior parte dei linguaggi : python-bitcoinrpc (Python), bitcoin-core/rpc (Rust), bcoin (Node.js), btcd/rpcclient (Go). Performance tipica : 1 000 a 10 000 richieste al secondo su un Bitcoin Core locale in SSD NVMe, sufficiente per la maggior parte delle applicazioni.
Il bus ZMQZMQ (ZeroMQ)Libreria che permette ai programmi di scambiarsi messaggi in tempo reale. Bitcoin Core la usa per notificare nuove transazioni e nuovi blocchi.Vedi nel lessico → viene a completare l'RPC quando si vuole essere notificati in tempo reale senza polling : a ogni nuova transazione ricevuta nella mempoolMempoolArea di attesa in cui le transazioni Bitcoin sostano prima di essere incluse in un blocco. Più la mempool è piena, più aumentano le commissioni necessarie.Vedi nel lessico →, a ogni nuovo blocco validato, a ogni hashHash (impronta)Funzione che trasforma un dato di dimensione qualunque in un'impronta di dimensione fissa. Lo stesso input dà sempre lo stesso output, ma dall'output non si risale all'input.Vedi nel lessico → blocco accettato. Configurazione : zmqpubrawblock=tcp://127.0.0.1:28332 in bitcoin.conf, più un client ZMQ nel vostro codice (libzmq, binding per tutti i linguaggi). Indispensabile per gli indexer, watchtowerWatchtowerServizio che sorveglia il tuo nodo Lightning mentre sei offline e attiva una transazione difensiva se qualcuno tenta di chiudere un canale con uno stato fraudolento.Vedi nel lessico → Lightning, servizi di scan in tempo reale.
electrs (electrum-rs, Rust) è l'indexer Electrum di riferimento, più veloce e leggero di ElectrumX. Osserva Bitcoin Core tramite RPC più ZMQ, indicizza gli script (indirizzi) in un database RocksDB locale, ed espone il protocollo Electrum sulla porta 50001 per i walletWallet (portafoglio)Software o dispositivo che gestisce le tue chiavi Bitcoin e permette di firmare le transazioni. Un wallet non « contiene » davvero i tuoi bitcoin, contiene le chiavi che dimostrano che ne sei proprietario.Vedi nel lessico → client (Sparrow, Electrum, Specter). Permette la richiesta per indirizzo istantanea che Bitcoin Core da solo non fornisce. Indispensabile per chi sviluppa un wallet o un servizio di tracking per indirizzo.
libsecp256k1 e librerie crittografiche per linguaggio
libsecp256k1libsecp256k1Libreria crittografica di riferimento per Bitcoin, scritta in C, mantenuta dagli sviluppatori di Bitcoin Core. Usata da quasi tutti i wallet seri.Vedi nel lessico → è la libreria crittografica di riferimento per Bitcoin, scritta in C, mantenuta dagli sviluppatori di Bitcoin CoreBitcoin CoreImplementazione di riferimento del software Bitcoin, scritta in C++ e mantenuta da una comunità open source. È il software utilizzato dalla maggior parte dei nodi.Vedi nel lessico →. Implementa la curva ellittica secp256k1secp256k1Curva ellittica matematica utilizzata da Bitcoin per generare coppie di chiavi private / pubbliche. Diversa da SHA-3 / Keccak (Ethereum).Vedi nel lessico → utilizzata per le firme Bitcoin (ECDSAECDSAAlgoritmo di firma storico utilizzato da Bitcoin prima di Taproot. Firma una transazione con una chiave privata per dimostrarne la proprietà.Vedi nel lessico → e SchnorrSchnorrAlgoritmo di firma più moderno, attivato da Taproot nel 2021 (BIP 340). Più efficiente, permette l'aggregazione di firme (MuSig2).Vedi nel lessico → da TaprootTaprootAggiornamento maggiore di Bitcoin attivato a novembre 2021 (BIP 341). Porta più privacy, flessibilità per gli script e l'efficienza delle firme Schnorr.Vedi nel lessico → 2021), con un focus estremo sulla performance a tempo costante (resistenza agli attacchi side-channel) e la verifica formale. Compilazione : autotools standard, dipendenze minime.
Per la maggior parte degli sviluppi, non chiamate libsecp256k1 direttamente ma tramite i binding del vostro linguaggio. Python : python-bitcoinlib (full stack), coincurve (FFI diretta a libsecp256k1). Rust : rust-bitcoin e rust-secp256k1 (le fondamenta su cui BDK è costruito). JavaScript : bitcoinjs-lib (JS puro) o tiny-secp256k1 (FFI WebAssembly). Go : btcd/btcec, dchest/siphash. C++ : Bitcoin Core stesso espone l'APIAPI (Application Programming Interface)Interfaccia che permette a un programma di interrogare un altro programma o servizio. mempool.space espone un'API pubblica per interrogare la chain.Vedi nel lessico →.
Per le operazioni comuni (firmare una transazione, verificare una firma, derivare una chiave figlia BIP32), passare da una libreria di alto livello evita le trappole. Per i temi avanzati (MuSig2MuSig2Protocollo di aggregazione di firme Schnorr (BIP 327). Permette a più firmatari di produrre un'unica firma indistinguibile da una firma singola.Vedi nel lessico →, aggregazione Schnorr, FROST), libsecp256k1 espone moduli sperimentali aggiornati con i BIPBIP (Bitcoin Improvement Proposal)Documento standard che descrive un miglioramento proposto al protocollo Bitcoin. Numerati (BIP 32, BIP 39, BIP 174, ecc.). Processo aperto e pubblico su GitHub.Vedi nel lessico → (327 MuSig2 per esempio). Consiglio : non scrivere mai crittografia fatta in casa in produzione, appoggiarsi sempre a libsecp256k1 o a un binding mantenuto.
BDK e LDK : moderni Software Development Kit
Bitcoin Dev Kit (BDK) è una libreria Rust di alto livello per costruire walletWallet (portafoglio)Software o dispositivo che gestisce le tue chiavi Bitcoin e permette di firmare le transazioni. Un wallet non « contiene » davvero i tuoi bitcoin, contiene le chiavi che dimostrano che ne sei proprietario.Vedi nel lessico → Bitcoin senza reinventare la ruota. Mantenuta dalla BDK Foundation (Steve Myers, Lloyd Fournier, riccardobl, team). Copre il PSBTPSBT (Partially Signed Bitcoin Transaction)Formato standard (BIP 174) che permette di costruire una transazione su un dispositivo, firmarla su un altro e trasmetterla da un terzo. Base del workflow multisig moderno.Vedi nel lessico →, il multi-descriptor, la selezione degli UTXOUTXO (Unspent Transaction Output)« Pezzo » di bitcoin ricevuto e non ancora speso. Un wallet non ha un unico saldo, ha una collezione di UTXO la cui somma costituisce il saldo.Vedi nel lessico →, l'integrazione Electrum/Esplora/Bitcoin CoreBitcoin CoreImplementazione di riferimento del software Bitcoin, scritta in C++ e mantenuta da una comunità open source. È il software utilizzato dalla maggior parte dei nodi.Vedi nel lessico →, e le firme hardware. Binding stabili per Kotlin, Swift, Python, JavaScript tramite uniffi-rs. Usato in produzione da Mutiny Wallet, Bitkey di Block, Bull Bitcoin e altri.
Lightning Dev Kit (LDK) è l'equivalente lato Lightning NetworkLightning NetworkRete di pagamento di secondo livello sopra Bitcoin. Permette pagamenti quasi istantanei e quasi gratuiti tramite canali aperti tra utenti.Vedi nel lessico →, mantenuto da Spiral (filiale di Block). Libreria Rust modulare per integrare Lightning in un'applicazione esistente, senza dipendere da un demone LND o CLN esterno. Voi fornite il vostro proprio storage, la vostra propria fonte di catena (Bitcoin Core RPCRPC (Remote Procedure Call)Protocollo standardizzato per chiamare funzioni su un programma remoto. Bitcoin Core espone più di 200 comandi RPC.Vedi nel lessico → o Esplora), il vostro proprio trasporto di rete. Usato da Cash App per i suoi pagamenti Lightning, Mutiny Wallet, e numerosi servizi regolati.
Scegliere tra BDK più LDK custom o un demone Lightning classico (LND, Core LightningLND, Core Lightning (CLN), EclairTre implementazioni principali del protocollo Lightning. LND (di Lightning Labs) è la più diffusa.Vedi nel lessico →, Eclair) dipende dal progetto. Applicazione mobile autonoma : BDK più LDK per integrare tutto senza dipendere da un server. Servizio backend che può gestire un demone : LND o CLN, più maturo, più documentazione, più plugin. La tendenza 2024-2026 va verso BDK e LDK per i wallet sovrani che vogliono evitare la dipendenza da un demone remoto.
Polar e Mutinynet : ambienti di simulazione
Polar (polarlightning.com, open sourceOpen sourceSoftware il cui codice sorgente è pubblico e modificabile da chiunque. Garanzia di auditabilità fondamentale in Bitcoin.Vedi nel lessico → MIT) è uno strumento grafico per orchestrare reti Lightning di test su regtest. Interfaccia drag-and-drop : aggiungere un nodoNodo (node)Computer che esegue il software Bitcoin e partecipa alla rete validando blocchi e transazioni. Un « full node » conserva una copia completa della blockchain.Vedi nel lessico → Bitcoin CoreBitcoin CoreImplementazione di riferimento del software Bitcoin, scritta in C++ e mantenuta da una comunità open source. È il software utilizzato dalla maggior parte dei nodi.Vedi nel lessico →, più nodi LND o CLN, creare canali tra di loro, fare pagamenti di test. Ideale per sviluppare e debuggare un'applicazione Lightning prima del signet : vedere visivamente i canali, i pagamenti, le rotte scelte, e correggere i bug senza commissioni.
Mutinynet (mutinynet.com, lanciato da Mutiny WalletWallet (portafoglio)Software o dispositivo che gestisce le tue chiavi Bitcoin e permette di firmare le transazioni. Un wallet non « contiene » davvero i tuoi bitcoin, contiene le chiavi che dimostrano che ne sei proprietario.Vedi nel lessico → nel 2023) è un signet alternativo con due particolarità preziose per il dev. Primo, i blocchi sono a 30 secondi invece di 10 minuti : iterazione ultra rapida. Secondo, c'è un faucet generoso e pubblico, più un explorer dedicato. Ideale per i test d'integrazione dove serve una vera rete Bitcoin condivisa ma senza la lentezza del mainnet né la rarità dei faucet signet classici.
Workflow tipo. Regtest locale per il dev solo e i test unitari rapidi. Polar per debuggare gli scenari Lightning multi-nodo. Mutinynet per i test d'integrazione con altri servizi (il vostro wallet contro un BTCPay in signet, per esempio). Signet ufficiale per validare che parlate davvero con un Bitcoin standard. Mainnet per ultimo, e solo dopo audit del codice serio.
Risorse di apprendimento e buone pratiche
Documentazione ufficiale. bitcoin.org/en/development per i fondamentali, doc.bitcoincore.org per la versione corrente di Bitcoin CoreBitcoin CoreImplementazione di riferimento del software Bitcoin, scritta in C++ e mantenuta da una comunità open source. È il software utilizzato dalla maggior parte dei nodi.Vedi nel lessico →, githubGitHubPiattaforma web dove sono ospitati gran parte dei progetti open source del mondo, fra cui Bitcoin Core, electrs, BDK, LDK. Permette di vedere il codice, lo storico delle modifiche e di proporre contributi.Vedi nel lessico →.com/bitcoinbook/bitcoinbook (il Mastering Bitcoin di Andreas Antonopoulos, 3a edizione 2023) per la pedagogia. Per i BIPBIP (Bitcoin Improvement Proposal)Documento standard che descrive un miglioramento proposto al protocollo Bitcoin. Numerati (BIP 32, BIP 39, BIP 174, ecc.). Processo aperto e pubblico su GitHub.Vedi nel lessico →, github.com/bitcoin/bips resta la fonte di verità (coperto nell'articolo BIP importanti del tema Approfondir).
Corsi e tutorial strutturati. Chaincode Labs Bitcoin Protocol Development (corso gratuito online, 12 settimane, serio, livello intermedio ad avanzato). Programming Bitcoin di Jimmy Song (Python, fare da sé le primitive crypto a scopo pedagogico, libro poi corso). Learning Bitcoin from the Command Line (github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line, gratuito, molto progressivo).
Buone pratiche. Uno, leggere le release note di ogni versione di Bitcoin Core per restare aggiornati (breakage, deprecazioni). Due, non commettere mai una chiave privataChiave privata (private key)Numero segreto che dimostra il possesso di bitcoin su un indirizzo. Chi possiede la chiave privata possiede i bitcoin. Da non condividere mai e da non conservare mai in chiaro.Vedi nel lessico → né una seed phraseSeed phrase (frase di recupero)Sequenza di 12 o 24 parole (di solito in inglese) che codifica la tua chiave maestra. Backup universale di un wallet : con queste parole puoi ripristinare i tuoi fondi su qualsiasi software compatibile.Vedi nel lessico → in un repoRepo (repository)Repository di codice su GitHub o piattaforma equivalente. Il repo di Bitcoin Core è github.com/bitcoin/bitcoin.Vedi nel lessico → Git, anche di test, anche temporaneamente (la history Git resterà). Tre, isolare gli ambienti regtest/signet/mainnet tramite variabili d'ambiente e data directory separate. Quattro, firmare i propri commit release e pubblicare i binari con PGP per gli utenti a valle. Cinque, contribuire in cambio : un PR su Bitcoin Core, BDK, LDK, electrs, è anche così che la sicurezza collettiva progredisce.
Avvertenza
Contenuto esclusivamente educativo e informativo: né consulenza d'investimento, né fiscale o legale. Bitcoin comporta rischi importanti, tra cui una forte volatilità e la possibile perdita del capitale investito. Ogni lettore resta responsabile delle proprie decisioni; in caso di dubbio, consultare un professionista qualificato nella propria giurisdizione.
Vedi anche
Per far girare un nodoNodo (node)Computer che esegue il software Bitcoin e partecipa alla rete validando blocchi e transazioni. Un « full node » conserva una copia completa della blockchain.Vedi nel lessico → Bitcoin CoreBitcoin CoreImplementazione di riferimento del software Bitcoin, scritta in C++ e mantenuta da una comunità open source. È il software utilizzato dalla maggior parte dei nodi.Vedi nel lessico → in pratica a casa, vedi Nodo Bitcoin personale e Eseguire un nodo Bitcoin. Per i BIPBIP (Bitcoin Improvement Proposal)Documento standard che descrive un miglioramento proposto al protocollo Bitcoin. Numerati (BIP 32, BIP 39, BIP 174, ecc.). Processo aperto e pubblico su GitHub.Vedi nel lessico → che formalizzano i protocolli, vedi BIP importanti. Per la panoramica, vedi Strumenti Bitcoin.