Bitcoin Tool

Bitcoin Tool è uno strumento indispensabile, scritto in linguaggio C, per generare e convertire chiavi private e indirizzi Bitcoin. Il software è disponibile sulla pagina Github di Bitcoin-Tool e si utilizza da linea di comando, quindi senza alcuna interfaccia grafica. La compilazione e l’installazione è piuttosto semplice, su Linux e Mac basta utilizzare il comando “make” per generare il binario “bitcoin-tool”

Queste sono le opzioni da linea di comando:

--input-type : Input data type, can be one of :
    mini-private-key : 30 character Casascius mini private key.
    private-key      : 32 byte ECDSA private key
    private-key-wif  : 37/38 byte ECDSA private key in wallet import format
    public-key       : 33/65 byte ECDSA public key
    public-key-sha   : 32 byte SHA256(public key) hash
    public-key-rmd   : 20 byte RIPEMD160(SHA256(public key)) hash
    address          : 21 byte Bitcoin address (prefix + hash)

--input-format : Input data format, can be one of :
    raw             : raw binary data
    hex             : hexadecimal encoded
    base58          : Base58 encoded (almost never used in the wild)
    base58check     : Base58Check encoded

--output-type   Output data type, can be any one of those used for
                --input-type, or additionally :
    all             : all output types, as type:value pairs, most of which
                      are never used, probably for good reason.

--output-format Output data format, can be any one of those used for
                --input-format

--input         Specify input data on command line
--input-file    Specify input file name.  File size must be exactly what
                is expected for the corresponding --input-type.

--network       Set network type of raw keys.  Can be one of :
    bitcoin
    bitcoin-testnet
    litecoin
    litecoin-testnet
    feathercoin
    feathercoin-testnet
    dogecoin
    dogecoin-testnet
    quarkcoin
    quarkcoin-testnet

--fix-base58check : Attempt to fix a Base58Check string by changing
                    characters until the checksum matches.
--fix-base58check-change-chars : Maximum number of characters to change (default=3)

Il software bitcoin-tool accetta in input chiavi private, pubbliche o indirizzi ed esegue conversioni o genera gli indirizzi bitcoin che poi possono essere utilizzati per ricevere dei bitcoin.

Ad esempio, vediamo come generare un indirizzo a partire da una chiave privata pseudocasuale, utile ad esempio per accumulare bitcoin su un indirizzo generato tramite cold-storage.

Creiamo una chiave privata:

$ openssl rand 32 > key.bin

Visualizziamone il contenuto in formato esadecimale:

$ hexdump -e '32/1 "%02X" "\n"' key.bin

62A87AD3272B41E67108FEA10C57BA6ED609F2F7A2264A83B690CD45707090D1

Convertiamo la chiave privata in formato WIF (Wallet Input Format). Dato che si tratta di una chiave “raw”, dobbiamo impostare esplicitamente il tipo di rete a “bitcoin”, poiché non può essere determinato dalla chiave stessa.

$ ./bitcoin-tool \
    --network bitcoin \
    --input-type private-key \
    --input-format raw \
    --input-file key.bin \
    --output-type private-key-wif \
    --output-format base58check \
    --public-key-compression uncompressed

5JZjfs5wJv1gNkJXCmYpyj6VxciqPkwmK4yHW8zMmPN1PW7Hk7F

E’ obbligatorio specificare “–public-key-compression” perché l’output del formato WIF è diverso in base al tipo di compressione scelto per la chiave pubblica, non c’è modo di ricavare tale informazioni dalla chaive privata “raw”.

Generiamo ora la chiave pubblica compressa:

$ ./bitcoin-tool \
    --network bitcoin \
    --input-type private-key \
    --input-format raw \
    --input-file key.bin \
    --output-type private-key-wif \
    --output-format base58check \
    --public-key-compression compressed

KzXVLY4ni4yznz8LJwdUmNoGpUfebSxiakXRqcGAeuhihzaVe3Rz

Notare che la chiave privata in formato WIF è più lunga se viene attivata la compressione della chiave pubblica, perché è necessario un byte aggiuntivo per indicare che la chiave pubblica deve essere compressa (così come la chiave privata).

Mostriamo ora gli indirizzi di una chiave privata in formato WIF non compressa.

$ ./bitcoin-tool \
    --input-type private-key-wif \
    --input-format base58check \
    --input 5JZjfs5wJv1gNkJXCmYpyj6VxciqPkwmK4yHW8zMmPN1PW7Hk7F \
    --output-type address \
    --output-format base58check

1KYv3U6gWcxS5UfbNzP25eDEjd5PHHB5Gh

Mostriamo ora gli indirizzi di una chiave privata in formato WIF compressa.

$ ./bitcoin-tool \
    --input-type private-key-wif \
    --input-format base58check \
    --input KzXVLY4ni4yznz8LJwdUmNoGpUfebSxiakXRqcGAeuhihzaVe3Rz \
    --output-type address \
    --output-format base58check

1Lm2DPqbhsutDkKoK9ZPPUkDKnGxQfpJLW

Se vogliamo stampare un codice QR della chiave pubblica, possiamo utilizzare il software qrencode per generare un’immagine PNG dell’indirizzo bitcoin.

$ qrencode -d 300 -s 3 -l H 5JZjfs5wJv1gNkJXCmYpyj6VxciqPkwmK4yHW8zMmPN1PW7Hk7F -o privkey.png

 

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *