Show / Hide Table of Contents

Understanding Wallets

For a user to begin interacting with Neo or other blockchains, they must first create a unique user "wallet" locally on their machine, allowing them to create any number of accounts (keypairs) that can be used to make transactions on the network. This is different from modern centralized applications where users must create a user account, which is then stored on a centralized server where it is managed exclusively by the service provider.

Although a wallet is used to access NEO, GAS, and other Neo-based tokens, the name "wallet" is actually a misnomer. At its core, a wallet is a cryptographic public/private key pair which is used to sign and authenticate database transactions that occur on the Neo network.

Let's first consider how a user would perform a write operation on a traditional centralized database, and compare it to how a user would perform a write operation on the Neo blockchain. This should help clear up the misconception that coins are stored on a wallet, as opposed to them being stored in the blockchain.

Centralized Database

In client/server architecture, a user would first create an account using identity credentials such as an email/password combination. These credentials are then stored on the service's database. When the user logs in to the service they receive a session token in their local environment which allows them to perform write operations on the services database.

So if this centralized application was a banking service, the "coins" would be stored on the bank's servers, and you would be able to perform transfers after providing valid credentials to the bank.

Advantages:

  • If the user loses their credential information, it can be recovered by the service provider

  • Email/Password is a standardized UX paradigm that almost all internet users are accustomed to

Disadvantages

  • Storing all user credentials in a centralized server makes it an attractive target for hacking

  • A separate set of credentials needs to be generated for every single service

But most importantly, and a phrase often spread in the cryptocurrency community:

"Not your keys, not your coins."

The nature of traditional client/server architecture means that the end user has very little control of whatever data is being stored in the server's database. Although this is particularly relevant for financial applications, it applies more broadly to general user data.

Neo Blockchain

Let's contrast this with how a user would perform write operations on the Neo blockchain. A user would first generate a public/private key pair. These key pairs are stored locally on the user device, in a dedicated hardware module, or somewhere else in the client. These key pairs NEVER touch a remote server. When a user wishes to perform a write operation on the Neo blockchain (database), they generate a transaction locally with their intended operation. For example, this operation could be sending 1 NEO to a friend. They then sign this transaction with their cryptographic signature, which is generated using a private key.

This transaction is then verified and propagated across the network which then finalizes the write operation. We can see that no other entity can perform write operations to the remote database on the user's behalf without explicit authorization because the cryptographic signature can ONLY be generated by the user.

Advantages

  • No central point of attack for a hacker. This removes a lot of responsibility from the service provider

  • User public identities can be shared amongst various service providers

  • Your Keys, Your Coins

Disadvantages

  • No recovery mechanism if a user lose their credentials

  • New UX pattern for users who are not experienced with this kind of system

In summary, we can accurately describe a wallet as a public/private key pair which is used to perform write operations on a distributed database (blockchain). It has advantages and disadvantages when compared to typical client/server authentication architecture, but we believe that the security and user control that this system provides allows for a more robust experience overall.

In the next chapter, we will now go into some of the specifics about Neo key architecture.