Skip to content

Latest commit

 

History

History
125 lines (81 loc) · 6.89 KB

17_6_Usare_Altre_Funzioni_in_Libwally.md

File metadata and controls

125 lines (81 loc) · 6.89 KB

17.6: Usare Altre Funzioni in Libwally

ℹ️ NOTA: Questa sezione è stata recentemente aggiunta al corso ed è una bozza preliminare che potrebbe essere ancora in attesa di revisione. Attenzione lettore.

Libwally è una libreria estesa che offre una notevole quantità di funzionalità relative ai wallet, molte delle quali non sono disponibili tramite bitcoin-cli. Di seguito è fornita una panoramica di alcune funzionalità non trattate precedentemente in questo capitolo.

Utilizzare Funzioni Criptografiche

Un certo numero di funzioni crittografiche possono essere accessibili direttamente da Libwally:

  • wally_aes — Utilizzare la crittografia o decrittografia AES
  • wally_aes_cbc — Utilizzare la crittografia o decrittografia AES in modalità CBC
  • wally_hash160 — Utilizzare l'hash RIPEMD-160(SHA-256)
  • wally_scrypt — Utilizzare la derivazione della chiave Scrypt
  • wally_sha256 — Utilizzare l'hash SHA256
  • wally_sha256_midstate — Utilizzare SHA256 per fare hash solo del primo blocco di dati
  • wally_sha256d — Effettuare un doppio hash SHA256
  • wally_sha512 — Utilizzare l'hash SHA512

Ci sono anche funzioni HMAC per gli hash SHA, utilizzate per generare codici di autenticazione dei messaggi basati sugli hash. Sono usate in BIP32, tra le altre cose.

  • wally_hmac_sha256
  • wally_hmac_sha512

Funzioni aggiuntive coprono la derivazione della chiave PBKDF2 e la matematica delle curve ellittiche.

Utilizzare Funzioni per gli Indirizzi

Libwally contiene un certo numero di funzioni che possono essere utilizzate per importare, esportare e tradurre gli indirizzi Bitcoin.

Alcune convertono tra indirizzi e bytes scriptPubKey:

  • wally_addr_segwit_from_bytes — Convertire un programma witness (in bytes) in un indirizzo Segwit
  • wally_addr_segwit_to_bytes — Convertire un indirizzo Segwit in un scriptPubKey (in bytes)
  • wally_address_to_scriptpubkey — Convertire un indirizzo legacy in un scriptPubKey (in bytes)
  • wally_scriptpubkey_to_address — Convertire un scriptPubKey (in bytes) in un indirizzo legacy

Alcuni riguardano il formato di importazione del wallet (WIF):

  • wally_wif_from_bytes — Convertire una chiave privata (in bytes) in un WIF
  • wally_wif_is_uncompressed — Determina se un WIF è non compresso
  • wally_wif_to_address — Derivare un indirizzo P2PKH da un WIF
  • wally_wif_to_bytes — Convertire un WIF in una chiave privata (in bytes)
  • wally_wif_to_public_key — Derivare una chiave pubblica (in bytes) da un WIF

Utilizzare Funzioni BIP32

Ci sono ulteriori funzioni HD-wallet BIP32, oltre a quelle trattate nel Capitolo 17.3: Usare BIP32 in Libwally.

  • bip32_key_get_fingerprint — Generare un'impronta BIP32 per una chiave estesa
  • bip32_key_serialize — Trasformare una chiave estesa in bytes serializzati
  • bip32_key_strip_private_key — Convertire una chiave privata estesa in una chiave pubblica estesa
  • bip32_key_unserialize — Trasformare bytes serializzati in una chiave estesa

Ci sono anche numerose altre a seconda che tu voglia allocare memoria o far fare a Libwally l'alloc per te.

Utilizzare Funzioni BIP38

BIP38 consente la creazione di chiavi private protette da password. Non lo insegniamo perché consideriamo pericoloso inserire questo tipo di fattore umano nella gestione delle chiavi. Vedi #SmartCustody.

Le principali funzioni sono:

  • bip38_from_private_key — Codificare una chiave privata utilizzando BIP38
  • bip38_to_private_key — Decodificare una chiave privata utilizzando BIP38

Utilizzare Funzioni BIP39

Alcune funzioni mnemoniche BIP39 sono state appena accennate nel Capitolo 17.2: Usare BIP39 in Libwally:

  • bip39_get_languages — Vedere un elenco delle lingue supportate
  • bit39_get_word — Recuperare una parola specifica dall'elenco delle parole di una lingua
  • bip39_get_wordlist — Vedere un elenco di parole per una lingua

Utilizzare Funzioni PSBT

L'elenco della maggior parte delle funzioni PSBT può essere trovato nel Capitolo 17.4: Usare PSBTs in Libwally.

Utilizzare Funzioni per gli Script

Capitolo 17.5: Usare Scripts in Libwally ha appena accennato alle funzioni degli Script di Libwally.

C'è un'altra funzione che ti permette di determinare il tipo di script trovato in una transazione:

  • wally_scriptpubkey_get_type — Determinare il tipo di script di una transazione.

Poi ci sono una serie di funzioni che creano scriptPubKey da bytes, scriptSig da firme e Witnesses da bytes o firme.

  • wally_script_push_from_bytes
  • wally_scriptpubkey_csv_2of2_then_1_from_bytes
  • wally_scriptpubkey_csv_2of3_then_2_from_bytes
  • wally_scriptpubkey_multisig_from_bytes
  • wally_scriptpubkey_op_return_from_bytes
  • wally_scriptpubkey_p2pkh_from_bytes
  • wally_scriptpubkey_p2sh_from_bytes
  • wally_scriptsig_multisig_from_bytes
  • wally_scriptsig_p2pkh_from_der
  • wally_scriptsig_p2pkh_from_sig
  • wally_witness_multisig_from_bytes
  • wally_witness_p2wpkh_from_der
  • wally_witness_p2wpkh_from_sig
  • wally_witness_program_from_bytes

Utilizzare Funzioni per le Transazioni

Abbiamo appena accennato alle funzioni che possono essere utilizzate per creare e convertire transazioni nel Capitolo 17.5: Usare Scripts in Libwally.

Ci sono numerose funzioni informative, alcune delle più interessanti sono:

  • wally_tx_get_length
  • wally_tx_get_total_output_satoshi
  • wally_tx_get_weight

Ci sono anche funzioni che influenzano un wally_tx, un wally_tx_input, un wally_tx_output, o uno stack di testimoni e che creano firme.

Utilizzare Funzioni Elements

Libwally può essere compilato per essere utilizzato con Elements di Blockstream, che include l'accesso alle sue funzioni per gli asset.

Riepilogo: Utilizzare Altre Funzioni in Libwally

C'è molto di più che puoi fare con Libwally, più di quanto possa essere trattato in questo capitolo o persino elencato in questa sezione. In particolare, puoi eseguire funzioni crittografiche, codificare chiavi private, costruire transazioni complete e utilizzare Elements. La documentazione di Libwally è il posto giusto per ulteriori informazioni, anche se al momento della scrittura sono sia limitate che obsolete. I file di intestazione di Libwally sono una riserva se la documentazione è incompleta o errata.

Cosa c'è dopo?

Continua a imparare su "Programmazione Bitcoin con Libwally" nel Capitolo 17.7: Integrare Libwally e Bitcoin-CLI