6.9 KiB
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 AESwally_aes_cbc— Utilizzare la crittografia o decrittografia AES in modalità CBCwally_hash160— Utilizzare l'hash RIPEMD-160(SHA-256)wally_scrypt— Utilizzare la derivazione della chiave Scryptwally_sha256— Utilizzare l'hash SHA256wally_sha256_midstate— Utilizzare SHA256 per fare hash solo del primo blocco di datiwally_sha256d— Effettuare un doppio hash SHA256wally_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_sha256wally_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 Segwitwally_addr_segwit_to_bytes— Convertire un indirizzo Segwit in unscriptPubKey(in bytes)wally_address_to_scriptpubkey— Convertire un indirizzo legacy in unscriptPubKey(in bytes)wally_scriptpubkey_to_address— Convertire unscriptPubKey(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 WIFwally_wif_is_uncompressed— Determina se un WIF è non compressowally_wif_to_address— Derivare un indirizzo P2PKH da un WIFwally_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 estesabip32_key_serialize— Trasformare una chiave estesa in bytes serializzatibip32_key_strip_private_key— Convertire una chiave privata estesa in una chiave pubblica estesabip32_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 BIP38bip38_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 supportatebit39_get_word— Recuperare una parola specifica dall'elenco delle parole di una linguabip39_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_byteswally_scriptpubkey_csv_2of2_then_1_from_byteswally_scriptpubkey_csv_2of3_then_2_from_byteswally_scriptpubkey_multisig_from_byteswally_scriptpubkey_op_return_from_byteswally_scriptpubkey_p2pkh_from_byteswally_scriptpubkey_p2sh_from_byteswally_scriptsig_multisig_from_byteswally_scriptsig_p2pkh_from_derwally_scriptsig_p2pkh_from_sigwally_witness_multisig_from_byteswally_witness_p2wpkh_from_derwally_witness_p2wpkh_from_sigwally_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_lengthwally_tx_get_total_output_satoshiwally_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