Crypto Currencies

26 Apr 2020 . Category: Investment

I recently set about putting a process in place to purchase various crypto currencies, in case I decide I’d like exposure to them.`

I wouldn’t be keen on storing any currencies at an exchange, and so I’d opt for off-line cold storage (in preference to a hardware wallet). Generating the addresses/keys on a computer that will never be connected to the internet.


My understanding of Etherium is that it is a platform where programmers can build decentralised applications. Smart Contracts are said to be it’s main use case. My worry with ethereum is that is is more of cool project that a type of money, and there are question marks as to how it will develop. Interesting posts here and here.

To transact, my starting point was this python script which I could follow and seemed reasonable. I supplemented this as follows:

  • Validate the generated address using python Web3 library
  • Using the generated private key, ensured it generates the same public key once converted back using another method.
  • Generate QR codes for the resulting ethereum address / private key.

My script output to the terminal as follows:

It generates a png containing the QR Codes:

After I have the required files, I would use gpg to encrypt them before transferring them off of the offline machine. Any intermediate files would then be deleted using the linux shred utility.


Bitcoin is the most well know crypto, acting as a schelling point for new money. It markets itself as a store of value and is seen as a competitor for fiat currencies. My concern is that as a competitor, it may become outlawed with its weak points being its interface to the banking system. I’ve seen some crytpo enthusiasts also complain that it is slow and doesn’t scale.

My starting point with bitcoin was the bitaddress site, which many use to generate their wallets. My plan was to review the code before using it - however, looking at the code there were over 10K lines of very low level code.

I then went about looking for python scripts, though couldn’t find a working solution. Bitcoin encoding is more difficult than that of ethereum.

I finally stumbled on a post on how to perform the encoding here and here, along with a corresponding github repo which I used to create a script.

While I didn’t trust the bitaddress code to generate the private key, the offline site does have the option of generating addresses in various formats and QR codes. My plan is to use that to validate the script output and to get a png with QR code etc.


Ripple is interesting in that it’s use case appears to be fast money transfer, a replacement for the swift system. Ripple was created by a private company who control a lot of the coins and development, which many see as a negative. On the plus side, it appears to have the backing of large banks.

Purchasing offline options were limited for Ripple. I initially found xrppaperwallet though couldn’t find much further information on the site and so didn’t pursue it further.

I then found a random github repository which looked more promising. Essentially it just executed a function in the ripple lib javascript library. The only question mark was if that library was trustworthy.

I tried to build the ripple javascript library myself, directly from their official github repository , which proved to be a bit complicated as (i)Installing yarn on ubuntu installs cmdtest instead (ii) ripple library now needs a jquery js file that the earlier one didn’t. Once I has the new trustworthy ripple-lib, I then just updated the generateSecretOffline page to use that instead.

In addition to the above, I also wrote a python script to generate QR Codes that I could then encrypt before transferring off of the offline machine.


Iain Benson is a real person and not a grassy plant viking. He lives in Scotland. In his spare time, Iain likes tinkering with his Raspberry Pi, going for long walks and drinking wine. Preferably all at the same time.