This thread is an update to my first Reddcoin staking tutorial
that was written 7 months ago. The reason for the update
My Reddcoin Core software crashed and became unusable. My Raspberry Pi 3B would lag and freeze, I couldn't stake anymore.
Instead of just redoing everything the same way, I wanted to see if I could improve on 3 points:
- Use an OS that was lighter
- Update the Reddcoin Core software (126.96.36.199 => 188.8.131.52)
- Make improvements to the configuration.
If you would like to tip me
- OS: using Lubuntu instead of Ubuntu MATE. Lubuntu uses less resources (130 MB RAM vs. 190 MB RAM on initial boot).
- Reddcoin Core: v184.108.40.206-a8767ba-beta instead of v220.127.116.11-92768f9-beta.
- Swap: using a swap partiton instead of a swap file. Also adjusting the swap size: from 1 GB to 2 GB, after reading the comments to my previous tutorial.
- All data to USB: Blockchain data and the swap are now stored on the USB drive, instead of the SD card.
- Private keys: added instructions on how to backup the private keys of your Reddcoin addresses!
Writing a tutorial like this takes time and effort; tips are appreciated. My Reddcoin address: RqvdnNX5MTam855Y2Vudv7yVgtXdcYaQAW
- Hardware: Raspberry Pi 3 Model B.
- OS: Lubuntu 16.04.2 (Xenial).
- Storage space: I am using an 8 GB microSD card for the OS, and a 128 GB USB drive for data. Minimums I would recommend: 8GB SD card and 32 GB USB drive.
- Reddcoin Core client version: v18.104.22.168-a8767ba-beta (most recent version at this moment). ↳ Screenshot
- You need software to write the OS to the SD card. I use Etcher. Download Etcher: https://etcher.io/.
- Run Etcher.
- Select image: select the lubuntu-16.04.2-desktop-armhf-raspberry-pi.img.xz file.
- Select drive: select your microSD card.
- Plug the SD card into your Raspberry Pi and power it up.
- Lubuntu should boot up.
- Set up Lubuntu, connect to the internet (wired or wireless). ↳ As username, I chose "rpi3b". You will see this username throughout this whole tutorial.
- Make sure date and time are correct ([Menu] > System Tools > Time and Date). ↳ Click on Unlock to make changes. I personally change Configuration to "Keep synchronized with Internet servers". ↳ Screenshot
- Reboot ([Menu] > Logout > Reboot). I am connected to wifi, but have issues getting wifi to work on initial boot. A reboot solves this issue.
- Make sure system is up-to-date, install never versions.
- Open LXTerminal ([Menu] > System Tools > LXTerminal). ↳ Screenshot
- Enter the following in LXTerminal: sudo apt update && sudo apt upgrade ↳ Screenshot
- You will be asked if you really want to continue. Enter Y (yes).
- Updates are being installed! Wait until it's finished.
- Install programs that will be used in this tutorial.
- GParted: to partition the USB drive.
- Htop: to see the amount of memory (RAM) and swap that is in use.
- Enter the following in LXTerminal to install these 2 programs. sudo apt install gparted && sudo apt install htop ↳ Screenshot
- Create 2 partitions on the USB drive: 1) Swap partition 2) data partition (for the Reddcoin blockchain) The swap partition is necessary: The Reddcoin wallet can be memory intensive. To prevent any crashes or freezes, add 2 GB of 'virtual' memory by creating a swap partition.
- Important: Backup your USB drive if needed. The USB drive will be formatted, so the data on the USB drive will be wiped.
- Please use the USB drive solely for this purpose, do not combine it with other stuff.
- Keep your USB drive plugged in, do not (randomly) plug it out.
- Plug your USB drive in.
- GParted will be used to create the partititons. Start GParted via LXTerminal: sudo gparted ↳ Screenshot
- In GParted, switch from your SD card (default) to your USB drive. ↳ Screenshot ↳ Screenshot
- You will now see the all the partition on USB drive. Delete every partition (right mouse click). If you can't select Delete, do an Unmount first. ↳ Screenshot ↳ Screenshot
- After deleting all partition, you will only see 'unallocated' space on your USB drive. ↳ Screenshot
- Create the first partition: the swap partition. Right click on the blank space, select New and enter the following:
- New size (MiB): 2048
- File System: linux-swap
- Click on Add. ↳ Screenshot
- Create the second partition: the data (blockchain) partition. Richt click, select New and enter:
- File system: ext4
- Label: usb
- Click on Add. ↳ Screenshot
- Apply the changes. Click on the check mark or select Edit > Apply All Operations. ↳ Screenshot ↳ Screenshot
- Important: The name of the swap partition is needed later, so please write it down. Mine is /dev/sda1 (first partition on first drive (drive 'a')). ↳ Screenshot
- Reboot. After the reboot, the data partition you just created should be visible on your desktop. ↳ Screenshot
- The swap partition is created, so now we can enable and use it.
- The swap in use can be monitored with the program Htop. Open Htop ([Menu] > System Tools > Htop) to see the 'Swp' (swap) in use. ↳ Screenshot By default, swap is not used, so 0K. ↳ Screenshot You can leave Htop open.
- To enable the swap partition, open LXTerminal and enter the following commands: (Assuming /dev/sda1 is your swap partition.)
- You've enabled the swap partition. Switch back to Htop and check the 'Swp' (swap) value. It should read '2.0G'. ↳ Screenshot
- To make sure the swap file is persistent (so it survives a reboot), you have to add a line to the /etc/fstab file.
- In LXTerminal, enter the following command to open the file in Leafpad (text editor): sudo leafpad /etc/fstab ↳ Screenshot
- In Leafpad, add this text in a new line: /dev/sda1 swap swap defaults 0 0 ↳ Screenshot (I've added spaces to vertically align the text.)
- Save and close the file.
- Reboot your Pi.
- To see if the swap partition is in use after a reboot, open Htop ([Menu] > System Tools > htop) and check the 'Swp' (swap) value. It should read '2.0G'. ↳ Screenshot
- So, the swap partition is enabled and in use, and the data partition is prepared. We now can install the necessary software for the Reddcoin wallet; enter the following commands into LXTerminal:
- sudo apt-get update && sudo apt-get install git build-essential libqt4-dev libprotobuf-dev protobuf-compiler libtool autotools-dev autoconf libssl-dev libboost-all-dev wget pkg-config ↳ Screenshot
- sudo add-apt-repository ppa:bitcoin/bitcoin ↳ Screenshot
- sudo apt-get update
- sudo apt-get install db4.8 ↳ Screenshot ↳ Screenshot
- sudo apt-get install libminiupnpc-dev ↳ Screenshot
- sudo apt-get install libqrencode-dev ↳ Screenshot
- Reboot your Raspberry Pi.
- After the reboot, open LXTerminal again. Download, unpack, configure, build and install Berkeley DB.
- Set the working directory to your USB drive: cd /media/rpi3b/usb (rpi3b is the username I chose; if you have a different username, change it to yours.) ↳ Screenshot
- sudo wget http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz ↳ Screenshot ↳ Screenshot
- sudo tar xfvz db-4.8.30.NC.tar.gz ↳ Screenshot
- cd db-4.8.30.NC
- cd build_unix
- sudo ../dist/configure --enable-cxx
- sudo make This took about 10 minutes for me.
- sudo make install
- Set BerkeleyDB variables (in LXTerminal):
- export CPATH="/uslocal/BerkeleyDB.4.8/include" ↳ Screenshot
- export LIBRARY_PATH="/uslocal/BerkeleyDB.4.8/lib" ↳ Screenshot
- sudo leafpad /etc/ld.so.conf.d/daemon-libs.conf ↳ Screenshot
- Add this line in Leadpad: /uslocal/BerkeleyDB.4.8/lib/ ↳ Screenshot
- Save and close the file.
- Back in LXTerminal: sudo ldconfig ↳ Screenshot
- Download the source of the Reddcoin wallet and build it.
- Set the working directory to your USB drive: cd /media/rpi3b/usb (rpi3b is the username I chose; if you have a different username, change it to yours.)
- Download Reddcoin Core source files: sudo wget https://github.com/reddcoin-project/reddcoin/archive/arm_support_v2.zip ↳ Screenshot ↳ Screenshot
- Unzip the file: sudo unzip arm_support_v2.zip ↳ Screenshot
- rename the folder from ''unzip arm_support_v2'' to ''reddcoin'' (easier to use when needed) sudo mv reddcoin-arm_support_v2/ reddcoin/ ↳ Screenshot
- cd reddcoin ↳ Screenshot
- sudo ./autogen.sh ↳ Screenshot
- sudo ./configure --disable-tests --enable-sse2=no ↳ Screenshot
- sudo make ↳ Screenshot ↳ Screenshot ↳ Screenshot (This will take some time; with me it took just over 1 hour.)
- sudo make install ↳ Screenshot ↳ Screenshot
- Speed up synchronizing with the Reddcoin blockchain by bootstrapping.
- Set the working directory to your USB drive: cd /media/rpi3b/usb (rpi3b is the username I chose; if you have a different username, change it to yours.)
- Download the bootstrap file (1.45 GB): sudo wget https://github.com/reddcoin-project/reddcoin/releases/download/v22.214.171.124/bootstrap.dat.xz ↳ Screenshot ↳ Screenshot
- Unpack the file (large file, takes around 15 minutes to unpack): sudo xz -d bootstrap.dat.xz ↳ Screenshot
- After a successful unpack, your will find the file bootstrap.dat in your USB root folder. ↳ Screenshot
- On the first run of the Reddcoin Core client, it will ask for a data directory to store the blockchain and wallet data.
- Start the Reddcoin Core client: sudo /media/rpi3b/usb/reddcoin/src/qt/reddcoin-qt ↳ Screenshot
- The welcome screen will appear and ask you about the data directory. I suggest a new folder on your USB drive, I picked blockchain. The directory will be created with all the necessary files. ↳ Screenshot
- Select Use a custom data directory. ↳ Screenshot
- Click on the three dots (...) on the right. ↳ Screenshot
- Click on Create Folder at the upper right corner. Type and enter in the folder name. (In my case: blockchain.) Click on Open. ↳ Screenshot ↳ Screenshot ↳ Screenshot
- After selecting the directory, the Reddcoin Core client will start. Wait till it's fully loaded and close it.
- Move the bootstrap.dat file to your data directory you selected in the previous step. By doing this, Reddcoin Core will use the bootstrap.dat file to import the blockchain, which speeds up syncing. sudo mv bootstrap.dat /media/rpi3b/usb/blockchain/ (Assuming blockchain as data directory.) ↳ Screenshot
- The Reddcoin Core client set up is completed, but you still have to sync fully with the blockchain before you can send, receive and stake.
- Launch the Reddcoin Core client again: sudo /media/rpi3b/usb/reddcoin/src/qt/reddcoin-qt ↳ Screenshot ↳ Screenshot
- Keep the client running until it's fully synchronized. It will use the bootstrap file first, and download the rest of the blockchain to complete the sync. This can take some time (it took 2 days for me). Syncing the blockchain uses a lot of resources, so the software may react slow.
- You can see the progress in the debug window (Help > Debug window). ↳ Screenshot
- When the synchronization is completed, the red (out of sync) will disappear on the Overview screen! ↳ Screenshot
- When synchronization is complete, you can start staking your Reddcoins.
- For staking, your wallet needs to be encrypted: Settings > Encrypt... Do not forget your password! ↳ Screenshot ↳ Screenshot ↳ Screenshot ↳ Screenshot ↳ Screenshot
- Your wallet will be encrypted, and the Reddcoin Core client will be closed. Launch the Reddcore Client again. sudo /media/usb/reddcoin/src/qt/reddcoin-qt
- To start stake, you need to unlock your wallet (by entering your password).
- Settings > Unlock Wallet... ↳ Screenshot
- Make sure "For staking only" is checked before clicking OK. ↳ Screenshot
- You can only stake with Reddcoins that have matured: coins have to be at least 8 hours in your wallet to mature.
- The grey arrow at the bottom should be green when staking. Hover over that icon to see the progress of staking. ↳ Screenshot
This video shows how long it takes to start Reddcoin Core. TL;DR:
- [01:11] Reddcoin Core started (sudo password entered).
- [01:13] Message shown on screen: Loading block index...
- [10:14] Message shown on screen: Verifying blocks...
- [10:18] Message shown on screen: Loading wallet...
- [12:49] Message shown on screen: Done loading
- [13:13] Reddcoin Core ready to use.
Backup your wallet to prevent losing the RDDs in your wallet! There are two methods to backup, do both
. Make new backups if you create a new receiving address!
- Method 1: Backup your wallet.dat. Open Reddcoin Core. Use the menu to backup: File > Backup Wallet... ↳ Screenshot
Boot with only 1 USB drive plugged in:
- Method 2: Backup your private keys. In case you lose your wallet.dat backup, you still can import your private keys later when needed.
- To extract your private keys:
- If you have a passphrase on your wallet, unlock your wallet first. Settings -> Unlock Wallet... (make sure 'For staking only' is not checked) ↳ Screenshot ↳ Screenshot
- Extract your private keys. Debug window -> Console -> dumpprivkey ↳ Screenshot
- You can write down your private key or copy and save it in a document. Make sure you save it somewhere only you can access it.
- To import later: Debug window -> Console -> importprivkey [label] [label] is optional. ↳ Screenshot (without a label) ↳ Screenshot (with a label)
Make sure only the USB drive (with the swap partition and data partition) is plugged in when you boot up your Raspberry Pi. This to make sure the swap partition (/dev/sda1) is recognized correctly. If you boot up with multiple USB drives, Lubuntu might see the USB drive with the swap partition as the second drive (instead of the first drive), and ignore the 2 GB swap partition. If this happens, starting Reddcoin can render the Raspberry Pi unresponsive. Connection issues
If you have issues syncing the blockchain because you have 0 network connections, please follow the instructions in this thread
. Start Reddcoin Core easier
Run a shell script (.sh file), so you can start Reddcoin just by double clicking on an icon on your Desktop.
- Right Click on your Desktop and select Create New -> Empty File. ↳ Screenshot
- Enter a file name, make sure it ends with .sh, and click on OK. I've chosen for Reddcoin.sh. ↳ Screenshot The file will be created on your Desktop. ↳ Screenshot
- Add the command to start Reddcoin to the file.
- Right click on the file, select Leafpad (to open the file in a text editor). ↳ Screenshot
- Add the following to the file and save the file: sudo /media/rpi3b/usb/reddcoin/src/qt/reddcoin-qt ↳ Screenshot
- To be able to execute the shell script (.sh), it has to have 'execute permissions'.
- Right click on the file, and select Properties. ↳ Screenshot
- Click on the Permissions tab.
- For Execute, select Anyone, and click on OK. ↳ Screenshot
- To start Reddcoin Core, double click on the file. A new window will pop-up, asking you what you want. Execute in Terminal is what we want, so you can click on enter. ↳ Screenshot Reddcoin Core will now start. Do not close the Terminal window, you can minimize it if needed.
Adjust minimization options, so you can safely press on the X button (the close/exit button on the upper right corner).
RealVNC VNC Viewer (client) and VNC Connect (server):
- Activate 'Minimize on close'. Settings -> Options... -> Window (tab) -> Minimize on close. ↳ Screenshot Reddcoin will still run when you click on the X button. To close/exit Reddcoin, right click on the Reddcoin icon in the system tray (bottom right corner). ↳ Screenshot
To remote connect to the Raspberry Pi, I use VNC Viewer ad VNC Connect from RealVNC.
Chromium as browser:
- On your Raspberry Pi:
- Download VNC Connect from the RealVNC website: https://www.realvnc.com/en/connect/download/vnc/raspberrypi/.
- After your download is finished, open the file and click Install Package. ↳ Screenshot
- To run the VNC Connect once:
- Open [Menu] > Run, and enter: vncserver-x11 ↳ Screenshot
- To auto run on startup:
- Open Default applications for LXSession ([Menu] > Preferences > Default applications for LXSession). ↳ Screenshot
- In LXSessions configuration, select Autostart in the menu left.
- Under Manual autostarted applications, enter vncserver-x11 and click on + Add. ↳ Screenshot ↳ Screenshot
- Reboot your Raspberry Pi and check if VNC Connect is started automatically after the reboot.
- When VNC Connect is running, you'll see a VNC icon on the right bottom corner. Double click the icon to open VNC Connect and to see the IP address you need to enter to connect to your Raspberry Pi. ↳ Screenshot
The updates break Firefox, the browser crashes when you try to run it. Install another browser, Chromium, to solve this issue.
Updates / Upgrades
- In LXTerminal, enter: sudo apt install chromium-browser ↳ Screenshot
- You can run Chromium via [Menu] > Internet -> Chromium Web Browser ↳ Screenshot
If Software Updater shows up and tells you that there is updated software available, do not install the updates using Software Updater. Use LXTerminal
to update Lubuntu.
- Open LXTerminal and enter this command to update: sudo apt update && sudo apt upgrade ↳ Screenshot
Credits in previous tutorial:
- cryptoBUZE on reddit.com; for getting the official arm_support_v2.zip to work.
- worstkaas on reddit.com; for his suggestion of using 2 GB instead of 1 GB for the swap space.
- My main source: damsal01 on reddcointalk.org. His RDD address for donation: Rqd8xDv6oV9BYFaVrLdkWcR5JU6sPPZTKs.
- hieplenet on reddit.com. His RDD address for donation: RaF3TeWqgTzAdnaZQffnsxS74dag13zsAY.
- joroob on Github.com. He made some adjustments to the reddcoin wallet source code so it will compile on ARM cpus. His RDD address for donation: Rb8754QZvpbw6DjrMV1qX9SnHzYnSyXRMC.
This is my handout for paranoid people who want a way to store bitcoin safely. It requires a little work, but this is the method I use because it should be resistant to risks associated with:
- Bad random number generators
- Malicious or flawed software
- Hacked computers
If you want a method that is less secure but easier, skip to the bottom of this post. The Secure Method
- Download bitaddress.org. (Try going to the website and pressing "ctrl+s")
- Put the bitaddress.org file on a computer with an operating system that has not interacted with the internet much or at all. The computer should not be hooked up to the internet when you do this. You could put the bitaddress file on a USB stick, and then turn off your computer, unplug the internet, and boot it up using a boot-from-CD copy of linux (Ubuntu or Mint for example). This prevents any mal-ware you may have accumulated from running and capturing your keystrokes. I use an old android smart phone that I have done a factory reset on. It has no sim-card and does not have the password to my home wifi. Also the phone wifi is turned off. If you are using a fresh operating system, and do not have a connection to the internet, then your private key will probably not escape the computer.
- Roll a die 62 times and write down the sequence of numbers. This gives you 2160 possible outcomes, which is the maximum that Bitcoin supports.
- Run bitaddress.org from your offline computer. Input the sequence of numbers from the die rolls into the "Brain Wallet" tab. By providing your own source of randomness, you do not have to worry that the random number generator used by your computer is too weak. I'm looking at you, NSA ಠ_ಠ
- Brain Wallet tab creates a private key and address.
- Write down the address and private key by hand or print them on a dumb printer. (Dumb printer means not the one at your office with the hard drive. Maybe not the 4 in 1 printer that scans and faxes and makes waffles.) If you hand copy them you may want to hand copy more than one format. (WIF and HEX). If you are crazy and are storing your life savings in Bitcoin, and you hand copy the private key, do a double-check by typing the private key back into the tool on the "Wallet Details" tab and confirm that it recreates the same public address.
- Load your paper wallet by sending your bitcoin to the public address. You can do this as many times as you like.
- You can view the current balance of your paper wallet by typing the public address into the search box at blockchain.info
- If you are using an old cell phone or tablet do a factory reset when you are finished so that the memory of the private keys is destroyed. If you are using a computer with a boot-from-CD copy of linux, I think you can just power down the computer and the private keys will be gone. (Maybe someone can confirm for me that the private keys would not be able to be cached by bitaddress?)
- To spend your paper wallet, you will need to either create an offline transaction, or import the private key into a hot wallet. Creating an offline transaction is dangerous if you don't know what you are doing. Importing to a client side wallet like Bitcoin-Qt, Electrum, MultiBit or Armory is a good idea. You can also import to an online wallet such as Blockchain.info or Coinbase.
The only thing you need bitaddress.org to do is to honestly convert the brainwallet passphrase into the corresponding private key and address. You can verify that it is doing this honestly by running several test passphrases through the copy of bitaddress that you plan on using, and several other brainwallet generators. For example, you could use the online version of bitaddress, and brainwallet
. If you are fancy with the linux command line, you can also try "echo -n my_die_rolls | sha256sum". The linux operating system should reply with the same private key that bitaddress makes. This protects you from a malicious paper wallet generator. Trusting your copy of bitaddress.org
Bitaddress publishes the sha1 hash of the bitaddress.org website at this location: https://www.bitaddress.org/pgpsignedmsg.txt
The message is signed by the creator, pointbiz. I found his PGP fingerprint here: https://github.com/pointbiz/bitaddress.org/issues/18
"527B 5C82 B1F6 B2DB 72A0 ECBF 8749 7B91 6397 4F5A"
With this fingerprint, you can authenticate the signed message, which gives you the hash of the current bitaddress.org file. Then you can hash your copy of the file and authenticate the file.
I do not have a way to authenticate the fingerprint itself, sorry. According to the website I linked to, git has cryptographic traceability that would enable a person to do some research and authenticate the fingerprint. If you want to go that far, knock yourself out. I think that the techniques described in this document do not really rely on bitaddress being un-corrupt. Anyway, how do we know pointbiz is a good guy? ;-)
There are a lot of skilled eyes watching bitaddress.org and the signed sha1 hash. To gain the most benefit from all of those eyes, it's probably worthwhile to check your copy by hashing it and comparing to the published hash. "But we aren't supposed to use brainwallets"
You are not supposed to use brainwallets that have predictable passphrases. People think they are pretty clever about how they pick their passphrases, but a lot of bitcoins have been stolen because people tend to come up with similar ideas. If you let dice generate the passphrase, then it is totally random, and you just need to make sure to roll enough times. How to avoid spending your life rolling dice
When I first started doing this, I rolled a die 62 times for each private key. This is not necessary. You can simply roll the die 62 times and keep the sequence of 62 numbers as a "seed". The first paper address you create would use "my die rolls-1" as the passphrase, the second would be "my die rolls-2" and so on. This is safe because SHA256 prevents any computable relationship between the resulting private key family.
Of course this has a certain bad security scenario -- if anyone obtains the seed they can reconstruct all of your paper wallets. So this is not for everyone! On the other hand, it also means that if you happen to lose one of your paper wallets, you could reconstruct it so long as you still had the seed.
One way to reduce this risk is to add an easy to remember password like this: "my die rolls-password-1".
If you prefer, you can use a technique called diceware
to convert your die rolls to words that still contain the same quantity of entropy, but which could be easier to work with. I don't use diceware because it's another piece of software that I have to trust, and I'm just copy/pasting my high entropy seed, so I don't care about how ugly it is. Why not input the dice as a Base 6 private key on the Wallet Details tab?
Two reasons. First of all, this option requires that you roll the die 99 times, but you do not get meaningful additional protection by rolling more than 62 times. Why roll more times if you don't have to? Second, I use the "high entropy seed" method to generate multiple private keys from the same die rolls. Using the Base 6 option would require rolling 99 times for every private key. I'm a big nerd with exotic dice. How many times to roll?
Put this formula in Excel to get the number of times to roll: "=160*LOG(2,f)" where f = number of faces on the die. For example, you would roll a d16 40 times. By the way, somewhat unbelievably casino dice are more fair than ordinary dice The "Change address" problem:
You should understand change addresses because some people have accidentally lost money by not understanding it.
Imagine your paper wallet is a 10 dollar bill. You use it to buy a candy bar. To do this you give the cashier the entire 10 dollar bill. They keep 1 dollar and give you 9 dollars back as change.
With Bitcoin, you have to explicitly say that you want 9 dollars back, and you have to provide an address where it should go to. If you just hand over the 10 dollar bill, and don't say you want 9 dollars back, then the miner who processes the transaction gives 1 dollar to the store and keeps the remainder themselves.
Wallet software like Bitcoin-Qt handles this automatically for you. They automatically make "change addresses" and they automatically construct transactions that make the change go to the change address.
There are three ways I know of that the change problem can bite you:
- You generate a raw transaction by hand, and screw up. If you are generating a transaction "by hand" with a raw transaction editor, you need to be extra careful that your outputs add up to the same number as your inputs. Otherwise, the very lucky miner who puts your transaction in a block will keep the difference.
- You import a paper wallet into a wallet software and spend part of it, and then think that the change is in the paper wallet. The change is not in the paper wallet. It is in a change address that the wallet software generated. That means that if you lose your wallet.dat file you will lose all the change. The paper wallet is empty.
- You import a paper wallet into a wallet software and spend part of it, and then think that the change is in the change address that the wallet software generated. If the transaction did not need to consume all of the "outputs" used to fund the paper wallet, then there could be some unspent outputs still located at the address of the paper wallet. If you destroyed the paper wallet, and destroyed the copy of the private key imported to the wallet software, then you could not access this money. (E.g. if you restored the software wallet from its seed, thinking all of the money was moved to the wallet-generated change addresses.)
For more on this, see here The hot paper wallet problem
Your bitcoin in your paper wallet are secure, so long as the piece of paper is secure, until you go to spend it. When you spend it, you put the private key onto a computer that is connected to the internet. At this point you must regard your paper wallet address as hot
because the computer you used may have been compromised. It now provides much less protection against theft of your coins. If you need the level of protection that a cold paper wallet provides, you need to create a new one and send your coins to it. Destroying your paper wallet address
Do not destroy the only copy of a private key without verifying that there is no money at that address. Your client may have sent change to your paper wallet address without you realizing it. Your client may have not consumed all of the unspent outputs available at the paper wallet address. You can go to blockchain.info
and type the public address into the search window to see the current balance. I don't bother destroying my used/empty paper wallet addresses. I just file them away. Encrypting your private key BIP 0038
describes a standardized way to encrypt your paper wallet private key. A normal paper wallet is vulnerable because if anyone sees the private key they can take the coins. The BIP38 protocol is even resistant to brute force attacks because it uses a memory intensive encryption algorithm called scrypt. If you want to encrypt your wallets using BIP38, I recommend that you use bitcoinpaperwallet
because they will let you type in your own private key and will encrypt it for you. As with bitaddress, for high security you should only use a local copy of this website on a computer that will never get connected to the internet. Splitting your private key
Another option for protecting the private key is to convert it into multiple fragments that must be brought together. This method allows you to store pieces of your key with separate people in separate locations. It can be set up so that you can reconstitute the private key when you have any 2 out of the 3 fragments. This technique is called Shamir's Secret Sharing
. I have not tried this technique, but you may find it valuable. You could try using this website http://passguardian.com/
which will help you split up a key. As before, you should do this on an offline computer. Keep in mind if you use this service that you are trusting it to work properly. It would be good to find other independently created tools that could be used to validate the operation of passguardian. Personally, I would be nervous destroying the only copy of a private key and relying entirely on the fragments generated by the website.
Looks like Bitaddress has an implementation of Shamir's Secret Sharing now under the "Split Wallet" tab. However it would appear that you cannot provide your own key for this, so you would have to trust bitaddress. Durable Media
Pay attention to the media you use to record your paper wallet. Some kinds of ink fade, some kinds of paper disintegrate. Moisture and heat are your enemies.
In addition to keeping copies of my paper wallet addresses I did the following:
- Order a set of numeric metal stamps. ($10)
- Buy a square galvanized steel outlet cover from the hardware store ($1)
- Buy a sledgehammer from the hardware store
- Write the die rolls on the steel plate using a sharpie
- Use the hammer to stamp the metal. Do all the 1's, then all the 2's etc. Please use eye protection, as metal stamp may emit sparks or fly unexpectedly across the garage. :-)
- Use nail polish remover to erase the sharpie
If you trust electrum
you might try running it on an offline computer, and having it generate a series of private keys from a seed. I don't have experience with this software, but it sounds like there are some slick possibilities there that could save you time if you are working with a lot of addresses. Message to the downvoters
I would appreciate it if you would comment, so that I can learn from your opinion. Thanks! The Easy Method
This method is probably suitable for small quantities of bitcoin. I would not trust it for life-altering sums of money.
- Download the bitaddress.org website to your hard drive.
- Close your browser
- Disconnect from the internet
- Open the bitaddress.org website from your hard drive.
- Print a paper wallet on your printer
- Close your browser
In this chapter, we will build the command-line bitcoin client, also known as bitcoind on Linux. Review the instructions for compiling the bitcoind command-line client on your platform by typing more doc/build-unix.md. Alternative instructions for Mac OS X and Windows can be found in the doc directory, as build-osx.md or build-msw.md, respectively. Qt uses a command line tool that parses these project files in order to generate "makefiles", files that are used by compilers to build an application. This tool is called qmake . But, we shouldn't bother too much about qmake, since Qt Creator will do the job for us. The Core Developers of Bitcoin released the 0.9.0 FINAL of Bitcoin Core (aka Bitcoin QT). DOWNLOAD: Code: 15616baea0640277c81a8ca4d3e0d963834b8a7d bitcoin-0.9.0 Install Bitcoin Core. On your Putty terminal, type the following line to add the Bitcoin Personal Package Archive (PPA) to your system: sudo apt-add-repository ppa:bitcoin/bitcoin Bitcoin Core is a community-driven free software project, released under the MIT license. Verify release signatures Download torrent Source code Show version history. Bitcoin Core Release Signing Keys v0.8.6 - 0.9.2.1 v0.9.3 - 0.10.2 v0.11.0+ Or choose your operating system. Windows exe - zip. Mac OS X dmg - tar.gz. Linux (tgz) 64 bit. ARM Linux 64 bit - 32 bit. Linux (Snap Store) Support ...
The Blocknet Qt Desktop shortcut can run commands upon start without you ever touching the command line. It is a much easier way unless you want to or are used to using the command line. We cover chapter 3 of Andreas Antonopoulos' book Mastering Bitcoin. Featured are examples of bitcoin-cli commands, and simple Python scripts to interact with the bitcoin blockchain. Referenced links: I've seen several comments in the AeroCoin ANN thread on Bitcoin Talk that people aren't able to get the AeroCoin wallet to sync. This video will help you do just that. Also - the conf file now ... bitcoin miner for windows, bitcoin miner for windows 10, bitcoin miner forum, bitcoin miner for sale, bitcoin miner for mobile, bitcoin miner game, bitcoin miner generator, bitcoin miner group fabric, In the brief presentation, Stephanie Isom shows you how to use perform a command line in XENITH Real-Time Data and News. To see more instructional videos, vi...