Drakon è una rete blockchain peer-to-peer progettata per essere scalabile, sicura e facile da usare. Questo repository contiene il codice sorgente per un nodo Drakon, eseguibile su qualsiasi sistema con Node.js.
- Blockchain da completare con supporto per transazioni e mining opzionale
- Rete P2P basata su libp2p
- Scoperta automatica dei peer tramite nodi bootstrap e DHT
- API REST per interagire con il nodo
- Gestione integrata dei wallet
- Sincronizzazione automatica della blockchain tra nodi
- Node.js v14 o superiore
- NPM v6 o superiore
Per avviare un nodo Drakon standard (full node):
node src/node-runner.jsPuoi personalizzare il nodo tramite variabili d’ambiente o argomenti da riga di comando:
API_PORT: Porta per l’API REST (default: 7001)P2P_PORTo--port: Porta per la rete P2P (default: 6001)DATA_DIRo--data-dir: Directory dati (default: ~/.drakon-node)MINING_ENABLED: Abilita il mining (default: false)BOOTSTRAP_NODES: Lista di nodi bootstrap in formato JSONIS_BOOTSTRAP: Imposta il nodo come bootstrap (default: false)
Esempio:
API_PORT=8080 P2P_PORT=9000 MINING_ENABLED=true node src/index.jsPer avviare un nodo di ingresso (bootstrap node), che facilita la scoperta dei peer:
PUBLIC_IP=34.147.53.15 node src/bootstrap-runner.js --port 6001 --data-dir ./bootstrap-dataIl file src/bootstrap-runner.js importa e utilizza la classe BootstrapNode e gestisce la persistenza di PeerId e configurazione tramite NodeStorage.
node-runner.js: Avvia un nodo completo (full node) che partecipa alla blockchain, può minare e gestisce transazioni.bootstrap-runner.js: Avvia un nodo di ingresso che facilita la scoperta e connessione dei peer, ma non partecipa direttamente alla blockchain o al mining.
La rete Drakon include due nodi bootstrap pubblici già configurati:
Server 1: // // // // ///
Server 2: 34.147.53.15:6001 (ID: 12D3KooWPvDR3QboCJAZ2W1MyMCaVBnA73hKHQj22QudgJRzDRvz)
I nuovi nodi si connettono automaticamente a questi server, ma puoi forzare la connessione manuale:
BOOTSTRAP_NODES='{'/ip4/34.147.53.15/tcp/6001/p2p/12D3KooWPvDR3QboCJAZ2W1MyMCaVBnA73hKHQj22QudgJRzDRvz'}]'Il nodo espone un’API REST (default: porta 7001):
GET /status: Stato del nodoGET /blocks: Elenco blocchiGET /peers: Peer connessiPOST /transactions: Nuova transazione
Tutti i dati sono salvati nella directory .drakon-node (o quella specificata):
storage/node-info.json: Dati necessari all'avvio e riavvio di un nododata/: Database blockchainwallet/: File walletpeer-id/: Identificativo permanente del nodoknown-peers.json: Cache peer conosciuti
- Verifica che le porte 6001 (P2P) siano aperte nel firewall
- Controlla che l’IP del bootstrap sia raggiungibile
- Assicurati che il PeerId sia corretto
- La porta è già in uso: cambia porta con
P2P_PORTo--port - Permessi insufficienti: verifica i permessi dell’utente
Per assistenza o per entrare in contatto con gli sviluppatori:
- Francesco Guarino - guarinofrancesco42@gmail.com
Questo progetto è sotto licenza MIT - vedi il file LICENSE per i dettagli.