How does the Ballet wallet support multi-cryptocurrencies?

Ballet has always prided itself on being the world’s first multi-currency, non-electronic, physical crypto wallet. The latter two characteristics of non-electronic and physical are quite self explanatory and visible to understand. Just simply place a Ballet wallet in your hand to see for yourself. But the first characteristic of the Ballet wallet being multi-currency is harder to conceive for more users. And it is this that we will be explaining to you in this blog.

What is a multi-cryptocurrency wallet?

In general, a multi-cryptocurrency wallet allows you to hold different types of cryptocurrencies in your wallet device. Whether it be a wallet on an exchange, a software wallet, or even a hard wallet. Although there are a few bitcoin-only wallets (mostly used by the bitcoin maximalists of the industry), most wallets these days can support multiple crypto currencies. The Ballet wallet currently supports over +100 crypto currencies which can all be found here

A first initial assumption is that every crypto currency has its own set of public addresses, public keys, and private keys, which is true, but there is actually a shared commonality amongst many of them that most people do not realize. 

How does it work?

The reason why the Ballet wallet can support multiple crypto currencies is because of the shared commonality of the private and public keys amongst crypto currencies. Essentially, most major crypto currencies have a private key the size of 256 bits or 32 bytes, which is the same size as Bitcoin private keys. The format can essentially be encoded in anything but as long as the private key is of the 256 bit size, or 32 bytes, then this can be used as a private key within a similar shared cryptographic private-public key generation scheme. 

In this instance, bitcoin and litecoin can use the same exact private key as the other.

So essentially, the size of a Bitcoin private key or a Litecoin private key is the same: 256 bits. But the 256 bits for a Bitcoin private key could be completely different from the 256 bits for a Litecoin private key. Or they can be exactly the same set of 256 bits. For simplicity, the Ballet wallet has made it so that the same exact 256 bits for a private key is used for all the crypto currencies that are supported on the Ballet Crypto App. This way, you only ever need to store one set of private keys. Easy. 

Bitcoin’s elliptic curve cryptography

The cryptographic private-public key generation scheme standard that is used amongst the crypto currencies supported on the Ballet wallet is the secp256k1 curve. 

This curve was originally used by Bitcoin and has been adopted amongst many other crypto currencies out of familiarity, it’s time tested attractiveness, and considering that many early crypto currencies were just a mere fork of the Bitcoin code. Elliptic curve cryptography allows one to use their own pre-generated random private key, run it through the elliptic curve algorithm, in our case it is the secp256k1, and generate a completely random public key.

From the public key, different hashing and encoding algorithms can be applied to create a public address, which is used for the depositing of crypto currencies.  

Here is an example of a public address derivation from a public key for Bitcoin:

Other crypto currencies use a slightly different encoding method for generating their own network’s public addresses. This gives other crypto currencies its own uniqueness to its own network. 

Examples of slight differences in crypto addresses

Now that we know how bitcoin addresses are encoded, let’s take a look at how other major crypto currencies encode their public addresses. And don’t forget, they all stem from the same 256 bit private key.

For example, Ethereum addresses use the hashing algorithm of keccak256 and applied to the x and y coordinates of the public key. The last 20 bytes of that hash result is used to derive the public address, mostly prefixed with 0x, which implies its hexadecimal format. One of the many criticisms of Ethereum is that their address derivation scheme doesn’t implement a checksum in its public addresses which can cause for a lot of mistakes when typing in public addresses for example. 

Sample ETH address: 0xc0ffee254729296a45a3885639AC7E10F9d54979

Your Ethereum address and all other ERC20 tokens in the Ballet Crypto App all use the same public address as your Ethereum address. This is how other crypto wallets operate as well because ETH and ERC20 tokens are all on the Ethereum network. All ERC20 tokens are made through a token contract which is the ledger that track’s its respective ERC20’s token with its transactions and token holder’s balances. 

Litecoin uses exactly the same procedure as Bitcoin to generate addresses, the only difference is the network prefix. The version prefix of 0x03 is used to signify the Litecoin mainnet instead of 0x00 for bitcoin’s mainnet. When base58 encoded will you see Litecoin addresses starting with an ‘L’.

Sample LTC address: LP6ykd4pxFGBQhRdakJwNoC3CZ9G8K3F12

Dogecoin prefixes version byte 0x1E, which displays a ‘D’ in the first character of dogecoin addresses. 

Sample DOGE address: DJ5j8CDLEunbSWVeSZmARkrZatteABj9CD

XRP addresses uses a slight variated base58 dictionary consisting of the characters: rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz.

Sample XRP address: rMjkKZ24Nc3TMdZYhn2MYfdcTWJuLd4C1q


(Image Source:

If you have a chance to navigate to our open source decryption tool, you will be able to see how all the cryptos supported use the same private key hexadecimal format, but may use a slightly different WIF format, which all are different encoding formats from the hexadecimal format. 

The private keys bordered in blue use the original raw hexadecimal private key format. The ones bordered in blue use the Bitcoin formatted version. And the ones bordered in green just use their own WIF version, but all essentially stemming from the same raw hexadecimal private key format in blue. 

There are other popular crypto currencies that the Ballet wallet does not support due to their decision to use a completely different cryptographic elliptical curve than Bitcoin’s. For example, Cardano, Polkadot, and Stellar all use the Ed25519 standard which would not be compatible with BIP38’s private key generation scheme. Another popular smart contract protocol, NEO, uses the secp256r1 curve. Regardless, we hope this piece gives you more insight as to how multi-cryptocurrency wallets work.