Een cryptowallet houdt in werkelijkheid geen munten vast zoals een portemonnee met contant geld dat doet. De coins blijven altijd geregistreerd op de blockchain zelf; de eigenlijke taak van de wallet is het genereren en beschermen van de cryptografische sleutels die het eigendom van een bepaald adres bewijzen en uitgaven daarvandaan autoriseren. Elke wallet is opgebouwd rond een private key, een geheime code die transacties ondertekent, gekoppeld aan een public key en een adres die anderen veilig kunnen zien.
Wallets verschillen op twee onafhankelijke punten. Het eerste is internetblootstelling: een hot wallet, zoals een app of browserextensie, blijft voor het gemak online verbonden, terwijl een cold wallet, zoals een hardware device of papieren afdruk, de sleutels volledig offline houdt. Het tweede punt is wie de sleutels beheert: bij een non-custodial wallet blijft de gebruiker zelf volledig verantwoordelijk voor zijn sleutels en back-up, terwijl bij een custodial wallet, zoals gebruikelijk bij exchange-accounts, een derde partij dit namens de gebruiker doet.
De meeste moderne wallets zijn hierarchical deterministic, wat betekent dat één seed phrase van 12 of 24 woorden elke private key en elk adres kan reconstrueren die de wallet ooit heeft aangemaakt, waardoor back-up en herstel mogelijk zijn zonder elke sleutel apart te noteren. Het verliezen van die zin, of deze aan iemand anders blootstellen, is het grootste risico bij self-custody, want er is geen wachtwoordreset of supportlijn om een diefstal terug te draaien. Omdat elke coin of elk blockchainnetwerk zijn eigen adresformaat heeft, moet een wallet een bepaald asset expliciet ondersteunen voordat deze kan worden verzonden of ontvangen.