Bitcoin, diario di un newbie (questioni puramente tecnico pratiche)

sentiero762

Nuovo Utente
Registrato
12/5/14
Messaggi
436
Punti reazioni
31
Ciao a tutti, siccome dal punto di vista teorico la blockchain e i bitcoin sembrano abbastanza semplici, ma mi scontro con questioni pratiche, vi informo e nel frattempo vi faccio domande sul mio approccio iniziale. IL mio obiettivo è comprare un po' di bitcoin come riserva.
Vi spiego a che punto sto.
1) Ho aperto un account binance e ho versato 60 euro. Ho comprato 0.0025 btc, equivalenti a circa 50 euro.
2) Ho scaricato Electrum per macos (il mio sistema operativo), ho creato un portafoglio con relativo seed (12 parole in inglese che identificano la chiave privata del mio wallet... Giustooo?)
3) Ho scaricato anche Bitpay, per vedere se lo stesso wallet creato con Electrum (vuoto) era possibile vederlo, inserendo il seed, su un altra piattaforma di wallet, ma mi ha dato errore.
DOMANDA 1: quindi praticamente ogni software/piattaforma di wallet crea il seed in modo autonomo? Quindi se io creo il mio wallet con Electrum, come faccio ad aprirlo su altre piattaforme di wallet o magari su un wallet hardware? Ma l'algoritmo di creazione del seed non è uno standard?

Ora mi accingo a trasferire (anche per vedere se ho capito tutto il funzionamento di chiavi pubbliche e private) i miei 2,5mBtc (millibitcoin) sul wallet Electrum, ma temo di sbagliare...
Se qualcuno mi può confermare che il metodo sia questo:
1) vado sul wallet spot di binance
2) sulla riga corrispondente a bitcoin clicco su prelievo e imposto il prelievo di 0,1mBtc, spero sia fattibile, pagando 0,3mBtc di commissione.
3) Parallelamente su Electrum clicco su ricevi, mi genera la chiave pubblica o indirizzo pubblico del mio wallet che inizia con btc1... (quella è come l'IBAN del conto corrente giusto?)
4) Su binance copio l'indirizzo pubblico del mio wallet (che inizia con btc1....)....

Aspetto e spero, se sbaglio perdo circa 5 euro.. Che buttali via..

Grazie a tutti coloro che mi risponderanno...
 
Ciao a tutti, siccome dal punto di vista teorico la blockchain e i bitcoin sembrano abbastanza semplici, ma mi scontro con questioni pratiche, vi informo e nel frattempo vi faccio domande sul mio approccio iniziale. IL mio obiettivo è comprare un po' di bitcoin come riserva.
Vi spiego a che punto sto.
1) Ho aperto un account binance e ho versato 60 euro. Ho comprato 0.0025 btc, equivalenti a circa 50 euro.
2) Ho scaricato Electrum per macos (il mio sistema operativo), ho creato un portafoglio con relativo seed (12 parole in inglese che identificano la chiave privata del mio wallet... Giustooo?)
3) Ho scaricato anche Bitpay, per vedere se lo stesso wallet creato con Electrum (vuoto) era possibile vederlo, inserendo il seed, su un altra piattaforma di wallet, ma mi ha dato errore.
DOMANDA 1: quindi praticamente ogni software/piattaforma di wallet crea il seed in modo autonomo? Quindi se io creo il mio wallet con Electrum, come faccio ad aprirlo su altre piattaforme di wallet o magari su un wallet hardware? Ma l'algoritmo di creazione del seed non è uno standard?

Ora mi accingo a trasferire (anche per vedere se ho capito tutto il funzionamento di chiavi pubbliche e private) i miei 2,5mBtc (millibitcoin) sul wallet Electrum, ma temo di sbagliare...
Se qualcuno mi può confermare che il metodo sia questo:
1) vado sul wallet spot di binance
2) sulla riga corrispondente a bitcoin clicco su prelievo e imposto il prelievo di 0,1mBtc, spero sia fattibile, pagando 0,3mBtc di commissione.
3) Parallelamente su Electrum clicco su ricevi, mi genera la chiave pubblica o indirizzo pubblico del mio wallet che inizia con btc1... (quella è come l'IBAN del conto corrente giusto?)
4) Su binance copio l'indirizzo pubblico del mio wallet (che inizia con btc1....)....

Aspetto e spero, se sbaglio perdo circa 5 euro.. Che buttali via..

Grazie a tutti coloro che mi risponderanno...

Non conosco nello specifico Electrum, il procedimento che hai elencato per spostare da Binance ad Electrum comunque è corretto. In generale quando esegui transazioni assicurati di effettuare la transazione sulla chain corretta (con btc è banale, ma quando/se cominci con altre chain effettivamente l'errore di sbagliare chain può accadere). Altre note di carattere generale:
- avendo in mano il seed del wallet, puoi generare tutte le chiavi pubbliche (gli addresses) di quel wallet, in quanto l'algoritmo di generazione è deterministico... pertanto con il seed puoi sempre ritornare in possesso di tutti i tuoi address generati (in passato) e generabili (in futuro)
- con la chiave privata di un address puoi invece eventualmente tornare in possesso di quel solo address, senza ovviamente poter rigenerare gli altri addresses
- il consiglio che mi sento di darti, se ne hai la possibilità, è di generare il seed su un device hardware (es. ledger) e quando crei dei wallet su piattaforme online di crearli da zero (cioè con un nuovo seed che poi non userai). In questi wallet poi puoi importare i tuoi address originari (quelli del ledger per capirci) usando le chiavi private dei singoli address, di modo che non venga salvato da nessuna parte il tuo seed originario. Per il motivo che ho scritto sopra, con in mano la tua chiave privata uno può accedere alla peggio ad un solo address, mentre con in mano il seed può accedere a tutti i tuoi address
 
Ultima modifica:
Ciao sentiero762.

DOMANDA 1: quindi praticamente ogni software/piattaforma di wallet crea il seed in modo autonomo?
Non è detto. Per esempio, lo stesso Electrum legge alcuni tipi di seed per motivi di retrocompabilità (vecchi seed Electrum) e compatibilità cross-wallet (BIP39).

Quindi se io creo il mio wallet con Electrum, come faccio ad aprirlo su altre piattaforme di wallet o magari su un wallet hardware?
Non puoi a meno che i programmatori del tuo nuovo wallet non abbiano implementato tale funzionalità, che sarebbe possibile in quanto il sorgente di Electrum è open.
Naturalmente puoi tranquillamente esportare chiavi private/pubbliche di indirizzi specifici e importare quelle, facendo attenzione al fatto che le chiavi importate non sono "backuppate" nel seed del nuovo wallet.

Ma l'algoritmo di creazione del seed non è uno standard?
Esatto, non lo è.

Il seed generato da Electrum consiste di 12 parole prese dalla wordlist inglese del BIP39, ma senza necessariamente soddisfare il requisito che lo renderebbe BIP39-valido, cioè che gli ultimi 4 bit del seed siano uguali ai primi 4 bit del checksum (sha256) dei primi 128 bit del seed stesso.

Il requisito che invece deve soddisfare è il seguente:
le prime 3 cifre dell'output della funzione hmac.digest(key, msg, digest) convertito in esadecimale devono essere 100,
dove la chiave segreta key è il binario della stringa "Seed version", il messaggio msg è il binario del seed normalizzato (in pratica, una stringa composta dalle parole del seed scritte in minuscolo, separate da 1 spazio e ulteriori semplificazioni) e il digest è la funzione di hash sha512.
 
Grazie a tutti.. Mi sa che devo studiare ancora

Grazie a tutti.. Mi sa che devo studiare ancora.. E magari vi tormenterò con altre domande banali..:bow:
 
Ciao sentiero762.


Non è detto. Per esempio, lo stesso Electrum legge alcuni tipi di seed per motivi di retrocompabilità (vecchi seed Electrum) e compatibilità cross-wallet (BIP39).


Non puoi a meno che i programmatori del tuo nuovo wallet non abbiano implementato tale funzionalità, che sarebbe possibile in quanto il sorgente di Electrum è open.
Naturalmente puoi tranquillamente esportare chiavi private/pubbliche di indirizzi specifici e importare quelle, facendo attenzione al fatto che le chiavi importate non sono "backuppate" nel seed del nuovo wallet.


Esatto, non lo è.

Il seed generato da Electrum consiste di 12 parole prese dalla wordlist inglese del BIP39, ma senza necessariamente soddisfare il requisito che lo renderebbe BIP39-valido, cioè che gli ultimi 4 bit del seed siano uguali ai primi 4 bit del checksum (sha256) dei primi 128 bit del seed stesso.

Il requisito che invece deve soddisfare è il seguente:
le prime 3 cifre dell'output della funzione hmac.digest(key, msg, digest) convertito in esadecimale devono essere 100,
dove la chiave segreta key è il binario della stringa "Seed version", il messaggio msg è il binario del seed normalizzato (in pratica, una stringa composta dalle parole del seed scritte in minuscolo, separate da 1 spazio e ulteriori semplificazioni) e il digest è la funzione di hash sha512.

Ok, quindi se ho capito bene:
0) Un paper wallet è una coppia di indirizzo pubblico e chiave privata dove ricevere e mandare Btc, l'equivalente di un conto corrente con Iban e password dispositiva.. E' corretta questa semplificazione?
1) un wallet creato con Electrum è un insieme di 30 paper wallet: 20 di tipo receiving, e 10 di tipo change (che differenza c'è?). Ho letto velocemente che si possono aggiungere altri paper wallet, ma al momento non mi interessa.
2) Per risalire al proprio wallet Electrum si usa il seed che al momento è utilizzabile solo con ELectrum o con altri wallet compatibili, che al momento non ho trovato.
3) Se Electrum dovesse cessare di esistere dovrei recuperare il mio wallet. Lo posso fare solo avendo precedentemente esportato tutti i paper wallet contenuti nel wallet Electrum, cosa che allora forse è il caso di fare magari con le opportune accortezze... O no?
4) Per importare un paper wallet esterno in Electrum devo usare la funzione "spazza" o "sweep", che ancora non ho capito bene... Se qualcuno mi erudisce e mi dice se tale funzione c'è anche in altri software wallet...

Quando provo a impostare la ricezione di bitcoin da Binance a Electrum ho visto che mi mette come indirizzo pubblico il primo dei 20. Nelle successive transazioni sarà sempre quello? Quando si esaurirà il primo e si passerà al secondo e così via?

Grazie ancora
 
Ciao sentiero762, avevo elaborato una risposta, ma non ho avuto tempo e mi è passato di mente.
Spero che ci leggi ancora o magari non ti serve più, altrimenti, forse, lo leggerai in futuro.

0) Un paper wallet è una coppia di indirizzo pubblico e chiave privata dove ricevere e mandare Btc, l'equivalente di un conto corrente con Iban e password dispositiva.. E' corretta questa semplificazione?
A livello di funzionalità sì, ma rimane il fatto che l'indirizzo deriva dalla chiave pubblica che a sua volta è determinata univocamente* dalla chiave privata mentre iban e password dispositiva sono fra loro indipendenti.

*dalla una chiave privata deriva una sola chiave pubblica, ma alla stessa chiave pubblica potrebbero essere associate, ahinoi, più chiavi private.

1) un wallet creato con Electrum è un insieme di 30 paper wallet: 20 di tipo receiving, e 10 di tipo change (che differenza c'è?). Ho letto velocemente che si possono aggiungere altri paper wallet, ma al momento non mi interessa.
Partiamo dal presupposto che non vi è alcuna differenza a livello di protocollo fra indirizzi receiving e change. Sono tutti indirizzi validi per ricevere bitcoin.
Il motivo per cui Electrum fa questa distinzione è che Bitcoin si basa sul modello UTXO (Unspent Transaction Output) e, quando fai una transazione, ci sono N input (tutti gli indirizzi da cui vengono prelevati bitcoin) ed M output (tutti gli indirizzi verso i quali vengono spesi i bitcoin).
Per semplificare, immaginiamo che in una transazione i bitcoin provengano da 1 solo input/indirizzo e non vengano spesi tutti.
In tal caso, i restanti devono essere comunque "spesi" mandandoli a un nuovo indirizzo (di resto), che può anche lo stesso indirizzo che invia i bitcoin, ma per la privacy si consiglia di usarne uno nuovo.
Se nella transazione non c'è alcun indirizzo di resto (meglio evitare ahah), i bitcoin non spesi finiscono nella ricompensa del miner che ha creato il blocco.

2) Per risalire al proprio wallet Electrum si usa il seed che al momento è utilizzabile solo con ELectrum o con altri wallet compatibili, che al momento non ho trovato.
3) Se Electrum dovesse cessare di esistere dovrei recuperare il mio wallet. Lo posso fare solo avendo precedentemente esportato tutti i paper wallet contenuti nel wallet Electrum, cosa che allora forse è il caso di fare magari con le opportune accortezze... O no?
Sì oppure potresti salvare una copia del software. In realtà, basterebbe soltanto la parte che contiene l'algoritmo di generazione delle chiavi private. Il codice è aperto e in Python. Con un po' di impegno si può estrapolare.

4) Per importare un paper wallet esterno in Electrum devo usare la funzione "spazza" o "sweep", che ancora non ho capito bene... Se qualcuno mi erudisce e mi dice se tale funzione c'è anche in altri software wallet...
Puoi importare un paper wallet e usarlo senza spazzare nulla, ma continuando a custodire separatamente la sua chiave privata perché soltanto con questa potrai firmare le transazioni relative a quell'indirizzo.
Oppure puoi usare la funzione "spazza" che dovrebbe trasferire tutti i bitcoin del paper wallet su un indirizzo receiving di Electrum. A quel punto, il seed di Electrum sarà sufficiente per recuperare il possesso dei bitcoin perché da questo derivano le chiave private di tutti gli indirizzi receiving e change.
Quest'ultimo aspetto è molto importante perché da tale incomprensione molte persone hanno perso i propri soldi irreversibilmente.
Dunque, mi ripeto.
I seed dei wallet gerarchici determistici (HD) come Electrum non contengono alcuna informazione riguardo le chiavi private importate da wallet esterni.
Ecco perché potrebbe essere meglio spazzare tutti i fondi del paper wallet a favore di un indirizzo "controllato" dal seed generato da Electrum. Il costo di una trasazione Vs. la possibile perdita dei propri fondi se non si hanno le idee chiare. Basterebbe non cestinare mai le chiavi private dei paper wallet, anche perché se il paper wallet non è stato svuotato/spazzato correttamente, chi trova la chiave nel cestino potrà utilizzarla a sua volta per entrare in possesso dei tuoi bitcoin (solo quelli del paper wallet naturalmente).

Quando provo a impostare la ricezione di bitcoin da Binance a Electrum ho visto che mi mette come indirizzo pubblico il primo dei 20. Nelle successive transazioni sarà sempre quello? Quando si esaurirà il primo e si passerà al secondo e così via?
Puoi usare qualsiasi indirizzo receiving (o persino change) e anche generarne più di 20, perché dovrai aggiungerlo tu su Binance. Non serve Electrum. Ce n'è più di uno di default per il discorso della privacy, cioè che per ogni transazione dovresti fornirne uno differente al tuo pagatore.
 
Indietro