Veil X - Reimagining a crypto wallet

We designed and built a modern wallet for Veil, a privacy-focused cryptocurrency.

Cryptocurrencies were created by a community of hackers who were living in the future. In a world in which people trade privacy and freedom for the ability to spend government-issued inflating currencies, these visionaries invented a system of money that was sound, digital, and permissionless. And as each year passes, it looks increasingly likely these nerds just may change the world.

The interface between humans and cryptocurrency networks is the “wallet”, a mobile or desktop application allowing one to receive, hold and spend one’s money. Since early wallets were created for the most part by technologists untrained in product design, they turned out, well, let’s just say analogously to the 100-button television remote control.

Our company had the opportunity to move the user experience of the cryptocurrency wallet forward, which we’re excited to tell you about today.

The Veil cryptocurrency

The Veil Project is creating a privacy-focused cryptocurrency, with the unique feature that its network is secured by both traditional “miners”, in a process known as Proof-of-Work, and users of the currency itself, in a process known as Proof-of-Stake. Proof-of-Stake happens directly in the wallet, and results in “rewards” for the user. In this way, their wallet can be perceived analagously to a traditional savings account.

The Veil Project launched with a standard wallet based on the software used for Bitcoin, and tailored to the specifics of Veil. As you can see, the UI is a little intimidating.

For cryptocurrency to bridge the gap from early tech adopters to the mainstream, wallet design needs to make the jump from Blackberry to iPhone. The Veil project recognizes this, and hired Makalu to design and build a new wallet experience, from the ground up—to be called, “Veil X”.

Since a staking wallet in control of its own private keys likely can’t reach the ease of use of an iPhone, we’re very happy with the progress we made in this project, and can’t wait to share the results with you here today.

We’ll begin by walking you through the features and design thinking that went into Veil X, and conclude with a discussion about the technology we used.

Design walkthrough

First things first, we need to ensure new users have a smooth onboarding experience. In our case, Veil X needs to support three different methods to communicate with the software that interacts with the blockchain:

  1. Automatic — The default option downloads and installs the blockchain software directly from Veil’s GitHub repository, and displays the unique checksum information allowing vigilent users to verify.
  2. Manual — For advanced users who already have the “daemon” installed, we provide an option to point Veil X to that software.
  3. Remote — Finally, if a user maintains a remote blockchain server, Veil X provides a means to connect via the “RPC” interface.

The first time Veil X is run, the app guides the user through the process of downloading and running the blockchain software, as demonstrated in this video:

Once Veil X has launched, the user is presented with its dashboard screen. Let’s take a high-level look at each of its main areas.

Auto-updating With the original Veil wallet, the user often is unaware that there’s a newer version available, which can be particularly problematic when there’s a “network fork”. In Veil X, we notify the user when there’s a new version available, allow them to auto-update, and inform them of what’s new, fixed and improved.

Balance information Veil X can hold several “types” of coins, including “legacy coins” that are being phased out. To complicate matters, each of these coins can exist in different states, including “unconfirmed” and “immature”.

The most important distinction for the user in all this, is what’s spendable and what’s not. To communicate this clearly, we display the spendable balance in blue, and non-spendable balances below.

Staking chart Everybody loves earning interest! To reinforce that goodness about the Veil network, we display a chart, graphing the amount of Veil they’ve earned through staking on a day-by-day basis during the past week, and month, including rollover popups of each day’s earnings details.

Rich transaction interactions There’s several supported ways to interact with the list of transactions, including searching, filtering and inspecting details. A common piece of meta-information about a transaction is its “ID”, which is usually copy and pasted into an online “blockchain explorer”. Naturally, in Veil X, we link the ID directly to the explorer, and if you’re running on the testnet, we even switch to the correct one!

Sometimes a user will need help with a transaction, and the support team will ask them to send the details of a transaction. To make that easy, we add handy copy-to-clipboard controls in the UI.

Lazy loading of the transaction list On the more technical side, imagine you had a wallet with tens of thousands of transactions. That could slow things down in the user interface. To help, we’ve applied a technique called “lazy loading”, where the only transactions the UI loads are the ones in the current viewport of the screen. You can see this in the video—i.e. when scrolling quickly, you’ll see template transactions that get filled when the viewport loads into computer memory. It happens quickly, so it’s hardly noticeable, but wow does it make a performance difference when you have many transactions!

Shielded transaction amounts The coin technology used in Veil is called “RingCT”, originating from the cryptocurrency, Monero. RingCT hides the amount sent, which makes it a great foundation for a “privacy-focused” currency, but presents challenges for the wallet. Knowing how much RingCT someone just sent you requires waiting for one blockchain “confirmation”, and a temporary “unlock” of the wallet.

This video demonstrates how we addressed that whole confusing process in the user interface, including an indication of an unconfirmed transaction, and a “Reveal” button that temporarily unlocks the wallet, allowing us to determine and display the transaction value.

Receive address management Since you frequently want to know your receive address, we display that prominently and persistently in the UI, including a copy-to-clipboard control and a QR code for convenience. access.

Sending One of the strangest things we discovered in the traditional crypto wallets was the implementation of “sending” as a “tab” or “area” in the user interface. Sending, however, is an action and as such, it should be implemented in a modal workflow, which is what we did in Veil X, including niceties such as an option to deduct fees from the sent amount, as well as the ability to “send everything”.

Wallet management & backup Another strange thing we discovered about the existing wallet was that when you backed up your wallet file, the application wouldn’t pre-name the backup file. Since many users doesn’t know it should end with “.dat”, they’d often mis-name them, making them unimportable. We made sure to solve these problems in our backup workflow.

Configuration file editing One of the most common frustrations for existing Veil users happens when they need to edit the wallet’s configuration file. For starters, the underlying blockchain software doesn’t create a configuration by default, leaving user to create one themselves. That can lead to the creation of a Microsoft Word file, instead of a text file. Or adding .txt as the file extension, instead of .conf. Once a file exists, a second frustion can occur when discovering your operating system doesn’t know which application to use to open a “.conf” file.

How did we solve all these problems? We added a configuration file editor directly in Veil X itself. If there’s no configuration file, we create one for them, and by editing directly in the app, no external application is needed.

RPC Console Sometimes a user will need to directly interact with the blockchain software, which is done through the “RPC Console”, which is a command line interface. Although RPC interface use is rare, we took the effort to make its experience as nice as the rest of Veil X.

Synchronization status Like any non-custodial wallet, Veil X needs to be synchronized with the blockchain network in order to properly reflect balances. In Veil X, anytime the synchronization process is ongoing, we indicate that in the UI.

Non-default network & connection-type indications By default, Veil X will download and manage its own copy of the low-level blockchain software, known as “veild”, and that software will connect to the operational blockchain network. Veil X also allows you to connect to a remote RPC server, and to connect to the “testnet” network, that is used for testing.

We made sure the user knows when they are connected to a non-default network or connection method, by highlighting that in the UI.

Keyboard shortcuts For those who spend a lot of time in the application, we added some useful keyboard shortcuts, for getting to the About, Settings and Console screens.

Helpful help We hope it’s rare, but we know that from time to time our users will need some help, and in Veil X, we making finding help as easy and friendly as possible.

The technology behind the scenes

The original Veil wallet, like in many crypto projects, is based on a framework called “Qt”. For Veil X, we started with a modern framework called React that’s cross-platform and based on HTML, CSS and JavaScript. This foundation allows us to create a much nicer user experience, deploy versions to Mac OS X, Windows and Linux, an will be extensible to allow us to create mobile versions for iOS and Android in the future.

Conclusion

At Makalu, we believe cryptocurrency and blockchain technologies will impact a diverse spectrum of existing industries, particularly finance, as well as enabling completely new possibilities in areas like asset tokenization, privacy, and accessibility. In all these areas, user experience will be the key to bridging old and new paradigms. In that regard, we couldn’t have been more excited for our first opportunity to jump in with the design and development of a cryptocurrency wallet.

Veil X will be formally released with the project’s network fork which moves exclusively to the use of the RingCT token type, planned for later this year. When that happens, you’ll be able to download and experience the wallet for yourself!

Finally, for readers already familiar with this new brave world, please have a look at our second crypto project, which involved scratching our own itch with Crypto Email Alerts.