[DIDATTICO] Sperimentare con i bitcoins senza rischi: usiamo la TestNet

rrupoli

I quaderni di rrupoli - Amazon Libri
Registrato
7/7/17
Messaggi
2.941
Punti reazioni
2.078
Leggo che diversi neofiti hanno difficoltà a fare esperimenti con software wallet e paper wallet sulla Blockchain a causa anche degli elevati costi di transazione (transaction fees).

Prima di metterci soldi veri, per non rischiare di perdere soldi a causa di un errore tecnico o scarsa conoscenza degli strumenti, esiste una vera e propria palestra pensata per gli sviluppatori ma che può essere usata anche da chi muove i primi passi nel mondo del sistema Bitcoin.

Questa palestra è chiamata TestNet ed è a tutti gli effetti una completa rete Bitcoin dotata di blockchain, di software wallet e paper wallet che la supportano.

La TestNet rappresenta il modo più sicuro per sperimentare creazione di indirizzi, import e sweep di chiavi private, transazioni reali sulla blockchain (invio e ricezione di BTC), gestione degli indirizzi di resto, simulazione di perdita di un wallet, etc...


In breve potete senza alcun rischio acquisire padronanza sull'uso degli strumenti da usare per maneggiare bitcoins prima di metterci soldi veri.

Per iniziare ad acquisire padronanza occorrono pochi strumenti:

------------------------------------------------------------------
Un affidabile software wallet (Electrum):
https://download.electrum.org/3.0.5/electrum-3.0.5-setup.exe

Installatelo e create un shortcut sul desktop per fare partire Electrum in modalità TestNet:
"C:\Program Files (x86)\Electrum\electrum-3.0.5.exe" --testnet

Lanciandolo sarete già in grado di operare sulla blockchain Bitcoin TestNet.

electrum testnet.png


----------------------------------------------------------------------------------------

Poi vi serve un generatore di paper wallet affidabile che crei indirizzi compatibili Bitcoin TestNet:

Bitcoin Paper Wallet Generator

Potete usare in questo caso la versione online per comodità in quanto opereremo con bitcoin creati per la TestNet (senza valore economico).

paperwallet testnet.jpg


------------------------------------------------------------------------------------------

A questo punto cosa manca ? I bitcoin !!!!

Bene, dopo aver creato un paper wallet chiedete con moderazione qualche bitcoin gratuito per la TestNet qui:

Faucet - Bitcoin TestNet sandbox

Inserite l'indirizzo del vostro paper wallet (gli indirizzi TestNet iniziano con 'm', 'n' oppure con '2'), vi verrà accreditato 1 bitcoin per poter iniziare a fare esperimenti.

IMPORTANTE: il servizio è mantenuto da sviluppatori volenterosi allo scopo di agevolare altri sviluppatori, non fate più di una o due richieste abusando del servizio, i bitcoin TestNet non hanno e non avranno mai alcun valore economico in quanto periodicamente la TestNet viene resettata e si riparte daccapo annullando tutti i BTC già emessi in precedenza (siamo infatti già alla TestNet3).


-----------------------------------------------------------------------------

Come verificare se vi sono stati accreditati i bitcoins sul vostro indirizzo ?

Basta verificarlo su blockchain.info a questo link:

Bitcoin Block Explorer - Blockchain

Come vedete la blockchain TestNet si presenta molto simile a quella reale, ovviamente il numero di transazioni per blocco è molto inferiore e i tempi di validazione di una transazione sono abbastanza rapidi.

Inserite in alto a destra il vostro indirizzo e scoprite se i bitcoin sono stati accreditati.

TestNet.jpg


A questo punto avete tutto quello che vi serve per:

- creare dei paper wallet
- importarli in Electrum tramite "sweep" oppure "import"
- inviare bitcoin da Electrum ad un altro indirizzo (che potrebbe essere un altro vostro indirizzo TestNet od altri)
- ricevere bitcoin da altre faucet o da vostri amici
- verificare le vostre transazioni sulla blockchain e studiarne la struttura
- creare un portafoglio Electrum in modalità seed e fare transazioni con gli indirizzi gestiti dal wallet
- simulare la perdita di un portafoglio Electrum cercando di ripristinarlo usando la seed
- fare un prelievo parziale da un paper wallet con Electum facendovi restituire il resto nello stesso paper wallet (per non doverlo ristampare)
- etc...

Quando avrete acquisito piena padronanza degli strumenti di controllo dei bitcoins sarete pronti per il grande salto nella Blockchain con soldi veri.

Buona sperimentazione.
 
Eccellente.

Ben fatto, @rrupoli.

Propongo di fissare un thread in alto ''didattico'' che fornisca documenti ufficiali (in inglese preferibilmente con copia in italiano - ma a me va bene solo l'inglese) e strumenti per il mondo delle criptovalute.
 
Bello, concordo sul fatto che sia da mettere in rilievo.
 
Ho cominciato a smanettare in modalità testnet.

Ho preso alcuni bitcoin dal sito che hai linkato e li ho inviati ad uno dei miei indirizzi di electrum. Poi ho provato a passare una frazione degli stessi in altri indirizzi sempre di electrum.

Come mai appena vado nella sezione "indirizzi" il saldo del primo indirizzo (al quale ho inviato 1.3 BTC) è zero? Eppure in basso su Electrum mi dà il saldo totale comprensivo dei 1.3 BTC (al quale ha sottratto le spese di transazione che sono mi pare 0.00003 BTC).
 
Ottimo ma... Dove sta la fregatura? :D
 
Scherzo... Potremmo creare un gruppo di scambisti di vuote cripto e creare un minimarket delle finte finte a scopo didattico deduttivo.
 
Scherzo... Potremmo creare un gruppo di scambisti di vuote cripto e creare un minimarket delle finte finte a scopo didattico deduttivo.

È una ottima idea. (perché io, a differenza delle Casalinghe di Voghera, non metto manco un centesimo se non so cosa faccio :D)
Intanto se qualcuno conosce la soluzione al mio problema ...
 
Ho cominciato a smanettare in modalità testnet.

Ho preso alcuni bitcoin dal sito che hai linkato e li ho inviati ad uno dei miei indirizzi di electrum. Poi ho provato a passare una frazione degli stessi in altri indirizzi sempre di electrum.

Come mai appena vado nella sezione "indirizzi" il saldo del primo indirizzo (al quale ho inviato 1.3 BTC) è zero? Eppure in basso su Electrum mi dà il saldo totale comprensivo dei 1.3 BTC (al quale ha sottratto le spese di transazione che sono mi pare 0.00003 BTC).

Prova a guardare negli indirizzi di resto (addresses/change).
Se non riesci a capire dove sono finiti i bitcoin devi dare un'occhiata alla transazione sulla blockchain, inserisci in blockchain.info la TxID (l'identificativo della transazione) e vedi in quali indirizzi sono finiti i tuoi BTC.
Se posti qualche indirizzo ci si può guardare (ovviamente devono essere tutti indirizzi che iniziano con 'm','n' oppure '2', cioè indirizzi TestNet)

Se non vuoi usare gli indirizzi di resto vai in Tools/Preferences/Transactions e deseleziona la checkbox "Use change addresses".
 
Ultima modifica:
Scherzo... Potremmo creare un gruppo di scambisti di vuote cripto e creare un minimarket delle finte finte a scopo didattico deduttivo.

Purtroppo succede di tanto in tanto che qualcuno provi a vendere i BTC TestNet siccome vi è una certa scarsità (alcune faucets sono già esaurite).
Appena gli sviluppatori se ne accorgono si indispettiscono e provvedono a resettare la TestNet per cui tutti i bitcoins minati fino a quel momento spariscono dalla blockchain.
Non a caso ora siamo alla TestNet3, cioè è già stata resettata 2 volte...
 
Prova a guardare negli indirizzi di resto (addresses/change).
Se non riesci a capire dove sono finiti i bitcoin devi dare un'occhiata alla transazione sulla blockchain, inserisci in blockchain.info la TxID (l'identificativo della transazione) e vedi in quali indirizzi sono finiti i tuoi BTC.
Se posti qualche indirizzo ci si può guardare (ovviamente devono essere tutti indirizzi che iniziano con 'm','n' oppure '2', cioè indirizzi TestNet)

Se non vuoi usare gli indirizzi di resto vai in Tools/Preferences/Transactions e deseleziona la checkbox "Use change addresses".



Sì, ho messo change e ho trovato l'indirizzo dove avevo depositato la prima somma.
Ma perché nella lista iniziale non compariva più?

In pratica gli indirizzi che hanno ricevuto BTC compaiono in "receiving" e gli altri in "change"? Perché? Io non trovavo più il primo indirizzo al quale avevo inviato dal faucet dei BTC.
Inoltre non capisco un'altra cosa: il wallet (electrum) mi dà in basso a sinistra la somma totale di tutti i BTC sommando tutti quelli presenti in tutti gli indirizzi che ho?



PS

Quando invio BTC electrum mi fa immettere l'indirizzo del destinatario. Ma da quale indirizzo preleva i BTC?
 
Ultima modifica:
Sì, ho messo change e ho trovato l'indirizzo dove avevo depositato la prima somma.
Ma perché nella lista iniziale non compariva più?

In pratica gli indirizzi che hanno ricevuto BTC compaiono in "receiving" e gli altri in "change"? Perché? Io non trovavo più il primo indirizzo al quale avevo inviato dal faucet dei BTC.
Inoltre non capisco un'altra cosa: il wallet (electrum) mi dà in basso a sinistra la somma totale di tutti i BTC sommando tutti quelli presenti in tutti gli indirizzi che ho? ESATTO, compresi gli indirizzi di resto



PS

Quando invio BTC electrum mi fa immettere l'indirizzo del destinatario. Ma da quale indirizzo preleva i BTC?


Sperimentare con la TestNet ti serve proprio per capire come Electrum ragiona.
Di norma tu indichi solo l'indirizzo in cui vuoi trasferire i BTC e lasci ad Electrum l'onere di scegliere da quali indirizzi prelevare.

Puoi impostare due strategie alternative fra loro: priority o privacy (preferences/transactions/coin selection)
Impostando priority, Electrum cercherà di usare prima gli indirizzi che contengono BTC da più tempo fino a raggiungere la cifra richiesta da trasferire.
Impostando privacy l'algo è più complesso e tende a raggruppare UTXO di piccolo importo fino ad arrivare alla cifra richiesta.

Devi ricordare che ogni indirizzo rappresenta un "portafoglio" dentro il quale vi possono essere diverse "banconote" rappresentate dai cosiddetti UTXO (Unspent Transaction Output).
Electrum dovrebbe cercare di usare meno UTXO possibili in modo da pagare meno fees (più UTXO usi, più aumenta la dimensione della transazione, più fees paghi).
Se la logica di "coin selection" di Electrum non ti soddisfa puoi comporre la transazione manualmente come preferisci, vedi sotto.


USO AVANZATO DI ELECTRUM:

Se vuoi avere un maggior controllo degli indirizzi da usare per un pagamento ci sono alcune strategie.
Puoi per esempio congelare temporaneamente un indirizzo (vai su un indirizzo, tasto destro e poi "freeze") per indicare ad Electrum di non usare quell'indirizzo per i pagamenti (poi potrai sbloccarlo con "Unfreeze").

Oppure puoi creare una transazione indicando ad Electrum esattamente quale indirizzo e quale UTXO usare per quel pagamento specifico.
Per farlo, tasto destro sull'indirizzo dal quale vuoi prelevare e poi clicca su "Send From", ti apparirà una finestra Send potenziata in cui potrai scegliere quale UTXO (banconota) usare per pagare da quell'indirizzo (portafoglio).

Il massimo controllo lo ottieni selezionando tutti gli indirizzi con Shift (o aggiungendone uno per uno tenendo premuto Ctrl) e poi tasto destro del mouse "Send From".
Ti apparirà una Send potenziata con TUTTI gli UTXO controllati dal tuo wallet e potrai scegliere di usare solo quelli che preferisci.
In pratica sei tu a decidere esattamente quali banconote usare e da quali portafogli prenderle per fare il pagamento richiesto.
Non solo, puoi anche decidere di fare un pagamento multiplo nella medesima transazione allo scopo di risparmiare fees.
Invece di inserire un solo indirizzo nella box "Pay to" basta inserire una riga per ogni destinatario specificando la cifra da versare ad ogni indirizzo:
indirizzo1 , 0.5
indirizzo2 , 0.45
indirizzo3 , 0.123



Le UTXO, come le banconote cartacee, sono sempre spese per intero, non sono frazionabili, per cui se non trovi un UTXO dell'esatto ammontare che ti serve (tenuto conto anche delle fee) devi sceglierne una più capiente oppure ne usi molteplici (pagherai più fees in questo caso perchè la transazione si ingrossa). Il resto finirà come al solito in un indirizzo di resto oppure ritornerà nell'indirizzo iniziale sotto forma di nuova UTXO (a seconda di come hai impostato l'opzione in Electrum).

Se non ti è chiaro il concetto di UTXO leggiti lo spiegone sotto:

-------------------------------------------------------------------------------------------------
Un parallelismo tra Bitcoin e banconote cartacee può aiutarti a cogliere il meccanismo sottostante.

Nel mondo reale supponi di avere un portafoglio con dentro alcune banconote.

Nel mondo virtuale il tuo portafoglio è rappresentato da un bitcoin address (indirizzo).
Le banconote dentro il portafoglio sono rappresentate dai cosiddetti UTXO (Unspent Transaction Output).

Esattamente come una banconota cartacea, gli UTXO non sono frazionabili ma vanno sempre spesi interamente.
Gli UTXO sono quindi le banconote del sistema Bitcoin, ma a differenza delle banconote cartaceee essi possono contenere qualunque valore in bitcoin.

Cioè mentre nel mondo reale vi sono tagli fissi per le banconote (5, 10, 20, 50 Euro, etc), nel mondo del Bitcoin gli UTXO possono contenere qualunque valore (0.5, 0.03, 3.12, 0.00000234 bitcoins, etc)

Non solo, nel mondo del Bitcoin tu puoi avere decine di address, dunque decine di portafogli, ognuno dei quali può contenere decine di UTXO.

Quando tu fai un pagamento in bitcoin, il tuo software wallet sceglierà uno degli indirizzi (portafogli) che gestisce e userà per il pagamento uno o più UTXO (banconote) associati a quell'indirizzo.
Esattamente come al mercato tu scegli le banconote la cui somma porta alla cifra finale, il tuo software wallet sceglie gli UTXO da usare per il pagamento.

Se ti spetta un resto esso ti verrà restituito (sotto forma di UTXO) in uno dei tuoi indirizzi controllati dal software wallet.
Volendo puoi indicare al software wallet di versare il resto nello stesso address da cui hai speso i bitcoin (ma di default il resto viene versato in un indirizzo diverso).

In breve, da un punto di vista tecnico tu potresti possedere un unico address con il quale ricevi bitcoins (sottoforma di UTXO associati a quell'indirizzo) e dal quale disponi pagamenti (usando uno o più UTXO associati a quell'indirizzo) attendendoti che ti venga versato il resto nello stesso indirizzo.
-------------------------------------------------------------------------------------------------------
 
Ultima modifica:
Purtroppo succede di tanto in tanto che qualcuno provi a vendere i BTC TestNet siccome vi è una certa scarsità (alcune faucets sono già esaurite).
Appena gli sviluppatori se ne accorgono si indispettiscono e provvedono a resettare la TestNet per cui tutti i bitcoins minati fino a quel momento spariscono dalla blockchain.
Non a caso ora siamo alla TestNet3, cioè è già stata resettata 2 volte...

Si può resettare anche la rete dei bitcoin reali?
 
Si può resettare anche la rete dei bitcoin reali?

Ufficialmente no, nel senso che nessuno può decidere di premere un bottone per resettare la blockchain di produzione non essendo codificata nel source code questa possibilità.
Per resettare la blockchain di produzione occorrerebbe cancellare ad un'ora X TUTTE le copie della blockchain presenti in TUTTI i server sul pianeta, eventualità decisamente remota.

In letteratura esiste però un attacco chiamato "51% attack" per il quale se le prime 3 mining farm (BTC.com, AntPool, BTC.TOP) decidessero di unire le forze potrebbero prendere il controllo della blockchain validando solo le transazioni che desiderano, validare 2 volte la stessa transazione (double spending) o fare qualunque altra porcheria essi desiderino.
E' evidente che un tale comportamento provocherebbe l'immediato crollo di fiducia nel bitcoin ed il conseguente collasso del sistema, contro lo stesso interesse delle mining farm suddette.

Tale ipotetico catastrofico scenario avrebbe dunque natura preminentemente politica (per coercizione governativa, motivazione ideologica, etc), non utilitaristica.
 
Indietro