How to recover your crypto from your Ballet wallet during an apocalypse?

Ballet Crypto
7 min readSep 26, 2022

--

In the event the Ballet team, our website, and the Ballet Crypto App are no longer around, how would you recover your crypto?

Hopefully things don’t get this grim. (Image source)

It’s no secret that crypto wallet security is at the forefront of many crypto users today, especially amongst newcomers to the space. There are numerous wallets out there to use and numerous methods to store your private key. And also numerous ways to recover your private keys in different scenarios.

Let’s suppose that the worst case scenario has happened where the apocalyptic trifecta of the Ballet team, the Ballet website, and the Ballet Crypto App are no longer around. Oh no! What to do!? How would you recover and access the crypto inside the physical metal Ballet wallet?

Luckily your private keys are still there. And most importantly, your encrypted private keys are still visible to the eye. Unlike other popular hardware wallets, thankfully you won’t need to worry about certain electronic components being obsolete or in need of complicated firmware updates. There is a reason why we designed it to do away with all those complexities.

But back to the topic!

The below are 3 different methods you can use to restore your private keys and the associated digital assets cryptographically tied to them. Some of the methods may require you to take action now in being certain you will have the necessary resources down the road for those apocalyptic scenarios.

Hopefully you have access to the internet during this hypothetical scenario ;)

METHOD 1

Saving our open-source decryption tool from Balletcrypto.org

Step 1.

First navigate to BalletCrypto.org and then right click to save the .html page into your computer. This is our open-source decryption tool that will allow you to enter your BIP38 formatted encrypted private key and passphrase to reveal the unencrypted private keys. It will also reveal the wallet’s public key and all of the cryptocurrencies’ individual private keys and public addresses.

Step 2.

After saving this .html file to your computer, you should then move this file to a secure offline computer. It is highly recommended for you to run this open-source program on a computer that is permanently offline. Online computers may be at risk of hacking and/or having malware installed, which may allow others to steal access to the private key information that will be generated and shown by this program.

Step 3.

When the apocalyptic doomsday does arrive, you can open the file on your offline computer and input your passphrase as well as your BIP38 formatted decrypted private key.

Step 4.

If you scroll down on the page, you will be able to see the wallet’s public key and all of the cryptocurrencies’ individual private keys and public addresses.

METHOD 2 [Technical]

Using the open-source javascript implementation of BIP38 from bitcoinjs.

This method would require some very basic programming knowledge but it’s not totally necessary. Using a text editor such as Visual Studio Code would be suitable. The source code can be found here at the below github link (you may want to bookmark this page):

https://github.com/bitcoinjs/bip38

All the steps can be found through the above link but we’ll also briefly explain the steps below.

Step 1.

If you have already downloaded and installed a proper text editor, such as Visual Studio Code, you would then need to download and install Node.js, which acts as the server to your javascript files.

Step 2.

From the command line of your text editor, you would need to install the bip38 library of bitcoinjs.

npm install — save bip38

Step 3.

You will also need to install the wif library.

npm install wif

Step 4.

Enter in your BIP38 encrypted private key as a string in the variable labeled as encryptedKey and input your passphrase, in string format, as an argument in the variable labeled as decryptedKey.

Step 5.

Run script. Your WIF encoded private key should be revealed in the command line terminal.

Step 6.

You can then import this WIF encoded private key into other wallet providers. The WIF encoded private key format is the standard format for private keys so most wallet providers should support this.

METHOD 3 [More Technical and Fun!]

Generating the public key and other cryptocurrencies’ public addresses yourself through a few other open-source non-bitcoin related python libraries.

This would be a continuation of the previous method in the event that you do not want to use a wallet provider. The Ballet blog titled “How does the Ballet wallet support multi-cryptocurrencies” would be a great basis to get an idea of the rationale for the below steps.

Step 1.

Take your WIF encoded private keys and run it through bitcoin’s secp256k1 elliptic curve mathematics, which consists of point addition and point multiplication, to generate the public key.

(The above script is taken from https://github.com/wobine/blackboard101/blob/master/EllipticCurvesPart4-PrivateKeyToPublicKey.py)

The result should come out like this:

Step 2.

Convert your compressed public key into a public address for bitcoin using the script below.

(The above script is taken from https://gist.github.com/circulosmeos)

The result should come out to the below:

key_hash =      9f7943a823a613d1f09fcf5a0a05f2df03cb724fchecksum =      29be3eafab6491d7427c5dd94832b7e37f63123658e616782b79b6e43e0474d5key_hash + checksum =   009f7943a823a613d1f09fcf5a0a05f2df03cb724f 29be3eafbitcoin address =       1FYDi6HstkUrwSs8Ly6yp6avU3w73vBepv

From here you can use a separate bitcoin network explorer to look up the balance and transactions related to the bitcoin address.

Step 3:

With the raw public key in hand, you can then generate the other corresponding supported cryptocurrencies’ public addresses. Essentially all the supported cryptocurrencies within the Ballet Crypto app are all stemming from the same private key. More on this topic can be found in this blog, which explains how does the Ballet wallet support multi-cryptocurrencies.

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

For more information on the proper formatting for a particular cryptocurrency’s address in the Ballet Crypto App which was not mentioned above, you could easily find them on their respective network’s official technical docs.

Conclusion

Hopefully none of these methods will be needed in the short to intermediate timeframe. Ballet and the Ballet wallet plans to be in this for the long game. We’re not a one and done kind of crypto project. What we’ve been able to build is pivotal for the infrastructure of this industry. Building a fundamentally manageable and secure storage solution for digital asset users is the cornerstone of what allows the ethos of crypto to persist. And most importantly, we’ve been able to produce an innovative wallet that is essentially a cold storage solution but has the capabilities to be easily interacted with. Bridging together the once thought of diametrically opposing characteristics of simple and secure. And since everything about our wallet is open-source, any information regarding the technology behind our wallet is also publicly available.

About us

Ballet is a U.S. company that provides simple and secure cryptocurrency storage solutions for the global mainstream market. Ballet is the team behind the world’s first multi-currency, non-electronic, physical crypto wallet. The company was founded in 2019 by Bobby Lee and an international team of cryptocurrency industry veterans. Ballet is headquartered in Las Vegas, Nevada in the United States, and has an office in Shanghai, China.

For more on our products please check us out at: https://www.ballet.com/

Interact with us on our other social media platforms:

Twitter: https://twitter.com/BalletCrypto/

Facebook: https://www.facebook.com/balletcrypto.global/

Instagram: https://www.instagram.com/balletcrypto/

Telegram: https://t.me/BalletCrypto/

Reddit: https://www.reddit.com/r/BalletCrypto/

LinkedIn: https://www.linkedin.com/company/balletcrypto/

Youtube: https://www.youtube.com/channel/UCi2y_uFMqgdst7xe7FolG3w/

Weibo: https://www.weibo.com/BalletCrypto?from=myfollow_all/

Discord: https://discord.gg/e58FqyDA

Anchor: https://anchor.fm/ballet-crypto

--

--

Ballet Crypto

The team behind the world’s first multi-currency, non-electronic, physical crypto wallet.