summary: A cryptocurrency wallet is the software program, service, device, or physical medium used to store private and public keys needed to interact with blockchains enabling users to send and receive cryptocurrency and monitor their balances.
content: A cryptocurrency wallet is the software program, service, device, or physical medium which allows a user to store the private and public keys which are needed to interact with blockchains enabling users to send and receive cryptocurrency and monitor their balances. More sophisticated cryptocurrency wallets offer additional features including the ability to encrypt information such as the user's private key and to sign information. Signing can for example result in executing a smart contract, a cryptocurrency transaction, identification or legally signing a 'document'. Overview Private and Public Key Generation When setting up a cryptocurrency wallet a user will generate both a public and private key to store in the wallet. The public key is used to receive cryptocurrency like how a bank account number could be used to receive fiat currency. The private key is used to send cryptocurrency and sign transactions like a PIn or bank password. To generate a private key a random number is generated and used with a length that depends on the algorithm size of the cryptocurrency's technology requirements. The number is then converted to a private key using the specific requirements of the cryptocurrency cryptography algorithm requirement. A public key is then generated from the private key using whichever cryptographic algorithm requirements are required. Bitcoin for example uses elliptic curve multiplication, a one-way cryptographic function, to generate a public key from the private key. <br