First GRIN Paper-Wallet with pre-loaded seed

This is my fist try of a GRIN paper wallet with a pre-loaded seed using the as a template.

How did I do it?
I generated a new GRIN wallet using the CLI wallet and wrote the Grin wallet recovery seed onto this paper wallet.
Then I transferred X amount of GRIN onto this wallet and securely deleted it from my computer.

Within the privat key part, you’ll find a seed which you can use to restore the GRIN wallet using

As you might see, I could need help from the friendly GRIN community in terms of design a paper wallet for storing GRINS.

How you can help?
Please help me design a paper wallet for GRIN and we can make it available for the whole community

First example of a GRIN paper wallet


Thank you for your work.
be careful with the ink.

Nice idea! Does it still use a QR code? I don’t know of any Grin software that would consume a QR code as its seed.

Does it still use a QR code?

No , I just wrote all 12 words on the right side of the paper wallet instead of the QR code.

Think about it, how can we make this as easy as a BTC paper wallet? The funding step could possibly be simplified?

Just a thought, but denominations could be in terms of time. So you could have a 1 second bill, an hour, 30 min, etc.


Very good idea @Grumpy

1 Like

We talked about this paper wallet on the latest episode of One Minute Crypto. Nice!


Absolutely good work, making it simple for entire community to use it without difficulties will be great.

Ah, I mean it’s okay but nothing revolutionary unfortunately. I still can’t generate a private key or mnemonic seed phrase completely offline then send grin to it. I’d need to be able to generate the key/seed phrase, expose it to the internet by receiving funds (or I guess use a USB to receive a slate file) then send a response back. I think it’s the best thing we’ve got for now.

The other issue is that if you need to move funds from your hot wallet to your cold wallet, you’d first need to input this seed into a wallet. Yikes. Anyway, appreciate the thought that went into this. We are far from a solution yet though, at least IMO.

As for the fearmongering bs post about protecting your private key, obviously don’t use paper for long-term storage. Use plastic, wood, metal, rock or anything else more durable. If you can etch it, scratch it, carve it etc. It’s better than paper (obviously).

‘Paper wallet’ has been taken too literally. It’s an offline backup of your keys. We need a better name for it.


These are good points which we need to address @Seppat .
I just took a shot in the dark and tried to make it work with a lot of unknowns yet.

As for the wallet , you are right its needed to be pre-loaded with GRINS and then saved on the paper but this is due to the nature of GRIN with no “addresses”.
I also thought about saving only the slate onto the paper but this would not work, afaik.

My intention where to have a small present for friends and family to distribute the GRIN spirit .

Does Grin have a way to sign a transaction in Javascript? Then the funding transaction could take place in browser, just before the wallet is printed.

What’s wrong with a wallet?

A wallet doesn’t run on a Chromebook! :wink:

How To: Grin Cold-Storage Wallet

These steps describe one possible method to create a grin wallet offline and add coins - i.e cold-storage.

  1. Download the grin-wallet - either the executable or the source code and compile it into an executable
  2. Partition and format a USB thumb drive (drive 1)
  3. Copy the grin-wallet executable to the USB thumb drive 1
  4. Copy a Grin TX slate file to the USB thumb drive 1
  5. On a second USB thumb drive, or a CD/DVD, (drive 2) create a bootable image (
  6. Unplug your network cable
  7. Boot the image you created on drive 2
  8. Insert and mount the drive with grin-wallet and slate file (drive 1)
  9. Create a new wallet - Run “grin-wallet init”
  10. Write down the seed words. Without these seed words your coins will be lost.
  11. Sign the slate file - Run “cd /mnt/drive1” and “grin-wallet receive -i slate_file”
  12. Verify that you have the slate_file.response on thumb drive 1
  13. Delete the wallet files - “rm -rf ~/.grin”
  14. Unmount the USB thumb drive containing the grin-wallet executable and slate files
  15. Shut down
  16. Plug in your network cable
  17. Boot your system as normal (not from the bootable thumb drive - drive 2)
  18. Mount the USB drive with the slate files (drive 1)
  19. Send the signed slate file (slate_file.response) back to the sender so they can finalize and broadcast the transaction.

Now the Grin blockchain has your coins, and you have the seed words necessary to generate a wallet that can claim and spend those coins. Your wallet private key and seed phrase has never been on-line.

You can spend your coins using the following steps:

  1. Download the latest grin node, and grin-wallet
  2. Start the grin node and let it sync
  3. Use the grin-wallet to re-create your wallet from the seed words
    The wallet will scan the blockchain and find your coins and they will be spendable now

Please see my post below for steps to create a wallet and sign a slate completely offline.

I had another thought. Something like the piper wallet printer, but for grin. With my piper printer I could generate/encrypt keys offline.

It would be super duper cool if there was some sort of like, kodak insta/photo printer to generate time denominated grin paper currency bills. I’m not sure if this is possible, I’m still wrapping my head around mimble wimble. With bitcoin i immediately understood everything, with grin it seems like there’s a bit of algebra I need to interpret to fully ‘get it’. But any way, just my little stream of thought. Cheers.

1 Like

We are still thinking of a process which can be handled by an average users which is hard at the moment, because as we have seen you need to have some good Linux knowledge to do so.

Personally I am using on and offline computer and finalize the TX on my main (hot) wallet and print the seeds onto the paper wallet.
But this requires a lot of knowledge and its not user friendly process.

We need to find another solution to do it locally or in the browser.

1 Like