HD wallet

acronimo di: Hierarchical Deterministic wallet

Wallet deterministici gerarchici

Difficoltà: intermedio

Argomento: tecnologia


DEFINIZIONE

Un wallet può contenere al suo interno diversi indirizzi. Per diversi motivi anche legati alla sicurezza e alla privacy, è meglio evitare l'address reuse ovvero di avere un unico indirizzo sul quale gestire più transazioni, ma è opportuno usare diversi indirizzi, o coppie di chiavi (chiave privata e corrispondente chiave pubblica).

La generazione di diversi indirizzi al'interno dello stesso wallet inizialmente era effettuata generando in modo casuale i nuovi indirizzi, e risultava abbastanza scomoda, fino a quando con il BIP32 sono stati introdotti gli HD Wallet, dove la H sta per Hierarchical o gerarchico ovvero una serie di chiavi organizzate in modo gerarchico come in un albero, e la D sta per Deterministico ad indicare che le chiavi derivate non vengono generate in modo casuale ma attraverso una apposita funzione.

Le chiavi di questo albero vengono generate, o derivate, da una singola chiave che chiamiamo Master Key conosciuta anche come seed (seme). Questo meccanismo deterministico consente di poter generare tantissime chiavi, senza la necessità di fare il backup delle chiavi ogni volta che ne generiamo nuove ma mantenendo solo la copia del seed.

I wallet Hierarchical Deterministic, gerarchici deterministici, creati inizialmente per Bitcoin è stata successivamente adottata in molte altre cripto.

Gli HD Wallet per descrivere il modo con il quale vengono generate le nuove chiavi e come indentificarle, utilizzano una sequenza definita come Derivation Path

Per effettuare il backup di un wallet HD è quindi opportuno, oltre al seed, conoscere anche il derivation path.

Purtroppo le diverse implementazioni effettuate dagli sviluppatori di wallet non seguono le stesse modalità, nel corso del tempo sono nati degli standard che non sono adottati allo stesso modo dai produttori di wallet, e questo fa in modo che non sempre sia semplice o addirittura possibile ripristinare un back up da un wallet ad uno di un altro sviluppatore.


aggiornato il 2021-11-10