As you may know it's really important to move all your crypto currency out from exchanges website, not because they are bad, but because a 100% secure solution don't exist.
Some examples :
- 400 000 $ lost from jaxx
So the only solution is to use a cold wallet, a wallet offline, and keep it in a safe place, where no one can see it and it can't be damage by anything.
you have few solutions :
- paper wallet
- harware wallet like ledger nano S
- usb stick with encrypted data in it, like the home made tezor
- your memory and brain
There is a big down side with this solution, what happend if your house or flat is on fire? Can you be sure that your cold wallet will not melt like snow under sun ? I don't have millions dollars in crypto currency, but I want to keep safe.
First for the solution I'm going for you need to have some tools, and motivation. I want to print a kind of paper wallet on hard and almost undestructive material.
I looked for a solution I can do alone at home, or safe place with offline tools.
My future wallet need to be in metal, with public and private key on it, not reconizable as crypto currency wallet by thief. I didn't want to spend money on it,
I build recently a CNC machine so it was perfect to use it for this project. Engraving a QRCode on each face of a piece of metal should do the job.
- One QRCode for the wallet address
- One QRCode for the private key
I can control my CNC with Chilipeppr witch can be ran offline, but I had no idea how to create my GCode for it using and offline solution. I spend time to look for it, but I found nothing so I decide to make my own software.
I'm a beginer for using CAD tools to create a complex QRCode without error manually. I looked the GCode structure, it's a list of command to move the drill. Generating it using a program is not difficult.
I choose python because it's simple, and work on all platform and there is a tonne of library. I found a lib able to create qrcode from a text, the only thing to do then it's to generate a file for the cnc machine.
No need to do it, I did it and you can use it and modify it as you like.
The path used by Drill is not optimized but work perfectly, just take more time.
- Create a USB Stick with a linux distrib of your choice
- Boot it on a laptop, connect to internet
- Open a browser, open tabs
- for generating you bitcoin or ethereum wallet (don't do it)
- for Chilipeppr
- Download my python script, verify everything is working fine, by testing with dummy values
- Disconnect from internet, go in a bunker without network I love swiss basement
- Generate your paper wallet
- Generate both QRCode in GCode using my python script
- Engrave using Chilipeppr both QRCode, I will do one one each side of the aluminum
- I will try to decode the public address QRCode by puting paint to fill all hole and using my smartphone to decode it
- Power off your computer, remove the battery for at least 15min (should empty residual power for RAM)
- Destroy the usb stick
- Store the piece of metal on a safe and hidden place
You can go in a fablab or hacker space to use CNC. but take care of curious eyes.
It's a pure python3.5 project, using only one library pyqrcode To install it, it's easy using pip
$ pip install qr2cnc
Then the gcode generator is ready to use, first get some help
$ qr2cnc -h
usage: qr2cnc [-h] [-d DEPTH] (-w WIDTH | -s STEP) [-o OUTPUT_FILE] TEXT
Generate CNC QRCode GCode from a string.
positional arguments:
TEXT Text to encode in a QRCode
optional arguments:
-h, --help show this help message and exit
-d DEPTH, --depth DEPTH
Depth of each hole of QRCode
-w WIDTH, --width WIDTH
Total size in mm of the final QRCode
-s STEP, --step STEP Step per bit in mm of the final QRCode
-o OUTPUT_FILE, --output OUTPUT_FILE
Output GCode file
Then the real usage, for an Ethereum wallet
$ qr2cnc -d .7 -s 1.05 -o wallet_address.gcode 0x585ADc1b6268eC65C516d2E1933311d44fd8F13B
Total size of QRCode 38.850mm with steps of 1.050mm
Generation of the GCode is done in wallet_address.gcode
No, I'm joking, never show your final product to someone but you can send me some coins for a drink. Or at least a comment to know if somebody use it.