Skip to content

Instantly share code, notes, and snippets.

@danielabrozzoni
Last active January 18, 2024 23:14
Show Gist options
  • Save danielabrozzoni/5b4516c27dadceed6484cbbae93d5a14 to your computer and use it in GitHub Desktop.
Save danielabrozzoni/5b4516c27dadceed6484cbbae93d5a14 to your computer and use it in GitHub Desktop.
Spendere Bitcoin dal terminale usando bitcoin-cli

Spendere Bitcoin dal terminale usando bitcoin-cli

In questo (si spera corto) tutorial proveremo a spendere alcuni Bitcoin utilizzando bitcoin-cli.

In questo tutorial uso la rete signet, ma ovviamente gli stessi passaggi funzionano anche per mainnet, testnet, e regtest.

Prerequisiti:

  • bitcoind avviato e syncato
  • Avere alcuni sats da spendere con bitcoin-cli (potete ottenerli con un faucet se siete su signet/testnet, o minando su regtest)

0. Come funzionano le transazioni Bitcoin

Iniziamo analizzando dal punto di vista teorico come funziona una transazione Bitcoin.

Una transazione Bitcoin è composta da input e output.

Ogni output contiene l'indirizzo a cui voglio mandare i fondi, e quanto voglio mandare.

Ogni input contiene informazioni che indicano quale transazione precedente fornisce i bitcoin che si stanno trasferendo e la firma digitale del proprietario di quei bitcoin per confermare l'autorizzazione del trasferimento.

IMG_0339 (2) con sfondo

Selection_266

Ogni volta che creiamo una transazione, il nostro portafogli effettua vari passaggi:

  1. Scelta degli input da utilizzare
  2. Creazione della transazione
  3. Firma della transazione
  4. Broadcast

In questo tutorial utilizzeremo bitcoin-cli per rifare gli stessi passaggi, in modo da capire piú a fondo il funzionamento delle transazioni Bitcoin.

1. Vedere quanti UTXO/coin ho disponibili

Uso il comando bitcoin-cli listunspent per vedere quanti UTXO (anche chiamati coin) ho nel mio portafogli. In questo caso, ho due UTXO che posso spendere.

Selection_264

2. Creare la transazione

Creo la transazione usando il comando bitcoin-cli createrawtransaction seguito da una lista di UTXO che voglio spendere (per ogni UTXO devo specificare txid e vout) e da una lista di destinatari (nella forma indirizzo:quantitá).

Il comando mi ritorna una stringa di numeri e lettere: questa è la mia transazione in formato "hex" non firmata.

Selection_259

3. Firmare la transazione

Uso il comando bitcoin-cli signrawtransaction seguito dalla stringa che ho ottenuto al passaggio prima. Questo comando firma la transazione creata prima, e mi ritorna la transazione firmata, e mi dice che la transazione è completa, cioé ho firmato tutti gli input disponibili.

Selection_260

4. Esaminare la transazione

Usiamo il comando bitcoin-cli decoderawtransaction per esaminare la transazione che abbiamo appena creato e firmato. Notiamo il txid, la lista degli input (vin), la lista degli output (vout).

Selection_265

5. Broadcast

Uso il comando bitcoin-cli sendrawtransaction per fare il broadcast della transazione.

Selection_262

Fatto! 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment