spruned bitcoin clientLinks: -
Guida utilizzo spruned con BTC-RPC-Explorer-
spruned su Github-
documentazione spruned su readthedocs (non sempre aggiornata, servono contributors!)-
spruned mailing list \ groups.ioCiao!
spruned è un Bitcoin Light Node che emula le API RPC di Bitcoind. Lo presento per la prima volta su bitcointalk! Il progetto è in cantiere da quasi un anno, a intermittenza, e ha raggiunto un buon livello di maturità e stabilità.
spruned è:- un client bitcoin
- uno pseudonodo
- qualcosa che gira su microcomputers molto poco potenti e VPS oversold senza alcun problema
spruned non è:- un nodo bitcoin a tutti gli effetti
- un wallet
Il comportamento di spruned differisce da quello di un full node, ed è il seguente:- Un full node scarica l'intera catena dei block headers, anche spruned, questa operazione consta in circa 150mb download
- Un full node scarica l'intera blockchain, spruned potenzialmente non ne scarica neanche uno, di blocco, finchè non gli sarà detto di farlo. All'utilizzo del comando "getblock" spruned va a prendere il blocco direttamente dagli altri nodi P2P (full nodes)
- Un full node fa relay dei dati che ha in pancia, spruned no, scarica soltanto (questo cambierà)
- Un full node ha in pancia l'intero indice delle transazioni Bitcoin avvenute in Blockchain, spruned no. Queste transazioni vengono scaricare dai servers electrum a richiesta.
- Un full node fa moltissime verifiche di coerenza dei dati (concatenazione, crittografia, pow, formalità degli scripts), spruned ne fa molte meno, lo stretto necessario relativo alle proprie transazioni.
A fronte di questi compromessi:- Un full node non riesce a girare su un raspberry zero con una SD da 2gb e fornire le API RPC complete,
spruned sì, e gli avanza anche un po' di ram :-)
Alcuni controlli crittografici sono effettuati:- Block Headers con Checkpoints verificati dal Genesis Block all'ultimo blocco utile (144 indietro) dall'ultima release di spruned (nuovi checkpoints ogni release da mainchain Bitcoin Core)
- POW su ogni Block Header verificata contro la difficoltà. Non viene verificata tuttavia che la difficoltà sia adeguata.
- Ogni transazione viene verificata con la merkle proof dai servers Electrum contro gli headers che si hanno in pancia: spruned non presenterà mai transazioni risultati incluse in blockchain che non lo siano davvero. Se dice che una tx è in blockchain, potete fidarvi, il controllo è crittografico.
Alcuni controlli non crittografici sono effettuati:- Quorum Mechanism, spruned chiede le informazioni vitali (come i block headers fuori dai checkpoints) a diversi nodi e verifica che queste tornino su tutti.
- Quorum Based Fee Estimation con percentile ed esclusione delle fonti inadeguate.
- Cache FIFO dimensionabile da parametro, per evitare di riscaricare 2 volte la stessa informazione a distanza di poco.
Features di decentralizzazione:- Autoboot via DNS seed, censimento e utilizzo di nuovi peers forniti dai peer connessi.
- No servers centrali
Features di privacy:- Supporto Tor nativo, con possibilità di restare solo su darknet o usare Tor come proxy e andare su peers clearnet attraverso exit node
- Nessun server centrale utilizzato, il trust model è superiore a quello di Electrum poiché integrato con la rete P2P, il privacy model è analogo a quello di Electrum.
Compatibilità:- spruned emula la API RPC di bitcoind, questo vuol dire che permette di eseguire molti software che richiedono Bitcoind, come LND, Clightning, OpenTimestamps, BTC-RPC-Explorer e sostanzialmente qualunque software che abbia bisogno del network layer delle API RPC di bitcoind.
- spruned implementa zeromq, emulando gli stessi quattro canali di bitcoind, per garantire ulteriore compatibilità delle API, anche oltre il segmento RPC
Todo parziale (nemmeno in ordine di priorità):- esistere :-) (immagine, sito web, binari, installers, compatibilità fra diverse piattaforme fra cui anche Android grazie al framework Kivy)
- decentralizzare la rete Electrum (vorrei che spruned tenesse un subset delle informazioni che tengono i servers electrum e le offrisse agli altri spruned interconnessi, andare davvero su Electrum network sarebbe solo un fallback)
- random sharding e relaying di informazioni su rete Kademlia (forse, Kademlia, per ora mi sembra la migliore, ma vedremo, ci sono IPFS e tante novità in giro. serve un sistema con supernodi bitcoind backed)
- relaying P2P (ad oggi spruned scarica soltanto informazioni dalla rete P2P e usa la rete Electrum per inviare nuove transazioni)
- requests obfuscation (chiedere più informazioni di quelle di cui si ha davvero necessità).
- implementare un HD wallet gestibile tramite le API RPC con compatibilità bitcoind
Supportare spruned:- Potete donare! E' davvero apprezzato anche un piccolo contributo. L'indirizzo di donazioni Bitcoin è
3FVGopUDc6tyAP6t4P8f3GkYTJ5JD5tPwV- Potete partecipare! Programmatori, webmasters, persone con un buon inglese per scrivere la documentazione.
- Potete usarlo! Ed è forse il contributo maggiore: usatelo e segnalate ogni bug o nuovo use case!
- Potete "starrare" su
Github! Siete iscritti? Mettete una stella, i progetti con molte stelle hanno una buona reputazione e più facilità di trovare contributors (e quindi velocizzare lo sviluppo).
- Potete parlarne! Vi piace l'idea di un light node? Vi piace l'idea di creare una layer 2 che decentralizzi la rete Electrum e fornisca un set di informazioni che la rete P2P non può fornire? Frequentate un meetup? Parlate di spruned!
- Potete iscrivervi al
groups.io \ mailing list! Se il gruppo prendesse vita potrebbe effettivamente essere fonte di idee.
- Vi piace davvero? Seguitemi su twitter (riferimenti qui sotto) e ritwittate l'hashtag #spruned sotto cui di solito presento le nuove releases
Sono reperibile su:- freenode khs9ne \ mn3mnonic
-
twitter khs9ne- telegram gdassori
Provate spruned anche con docker! La
Guida utilizzo spruned con BTC-RPC-Explorer vi darà tutti i riferimenti necessari!
P.S.
Lo so, ho un solo post, ma per qualche motivo il mio account da hero member è stato sospeso anni fa, e non è stato *mai* possibile riuscire a contattare Theymos per ripristinarlo.