Author

Topic: spruned - Bitcoin Light Client & Full Node Emulator (Read 225 times)

hero member
Activity: 980
Merit: 1002
Development bounties

Ho intenzione di reinvestire 60€ delle donazioni ricevute (poco più di 100) in smarcatura di issues.
Potrei postare questa cosa sui canali internazionali ma preferisco farla qui, per parlare con dev italiani.

Al momento sono candidate a bounties le issues:

#40 add chainwork to blockheader serializer
#41 add difficulty to blockheader serializer
#42 add versionHex to blockheader serializer

Ogni issue risulta vanterà un bounty di 30€ che verrà pagato in Bitcoin, cambio determinato al momento del merge. Per ogni issue dovrà anche essere scritta la test coverage.

Quindi al momento il budget è per la soluzione di 2 issues sulle 3 elencate.*

Sono issues facili che richiedono:

- conoscenza di git per gestire il flusso in maniera autonoma
- una minima conoscenza di Python (davvero poca)
- una conoscenza tecnica della blockchain (si tratta di serializzazione degli headers)

Non è un gran budget, ma si tratta pur sempre di un progetto FOSS, e queste issues verosimilmente possono essere risolte in meno di 30 minuti, tests compresi.

Inoltre ho già dedicato migliaia di ore al progetto, e non ho intenzione di finanziarne anche personalmente lo sviluppo, queste le donazioni, queste le risorse da reinvestire :-)

Le offro principalmente affinché chi risolva le issues prenda anche confidenza con la codebase di spruned, quindi è apprezzato il lavoro da parte di chi pensa che anche in futuro potrebbe continuare a collezionare bounties.
Ovviamente ci sono degli standard di quality che debbono essere rispettati, quindi il flusso di review potrà prevedere dei commenti (tutto su github) che richiedano modifiche.

*
Ho rimosso quella del versionhex, che è obiettivamente troppo facile. Chiunque voglia farla in abbinamento a una delle altre due si beccherà un bounty da 40€ invece che da 30€, suvvia :-)
Il totale del budget arriva quindi a 70€ per la soluzione di tutte e 3 le issues.
legendary
Activity: 2562
Merit: 2640
Beh che dire, grazie della dritta, per anni non mi avevano risposto :-)

Bene, sono contento che l'info sia stata utile !   Wink
hero member
Activity: 980
Merit: 1002
Beh che dire, grazie della dritta, per anni non mi avevano risposto :-)
legendary
Activity: 2562
Merit: 2640
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.

Sono OT rispetto al contenuto del thread ma riguardo al recupero del tuo account hai visto che recentemente sono cambiate le modalità per il recupero di account rubati?

https://bitcointalksearch.org/topic/m.50414431

Un account rubato è cosa diversa dal ban ovviamente, ma magari potresti provare a seguire la stessa modalità per un contatto: se leggi nel thread linkato chi si è trovato in quella situazione ha risolto in poco tempo (prima ci volevano mesi).
Scusate - fine OT.
newbie
Activity: 6
Merit: 5
[reserved]
newbie
Activity: 6
Merit: 5
spruned bitcoin client



Links:

- Guida utilizzo spruned con BTC-RPC-Explorer
- spruned su Github
- documentazione spruned su readthedocs (non sempre aggiornata, servono contributors!)
- spruned mailing list \ groups.io


Ciao!

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 Tongue

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.
Jump to: