SHIELD v2 -> v3 Upgrade Instructions

Last updated 3 months ago

This is a guide to assist users with the upgrade process from SHIELD v2 Core wallets to v3, due to the network-wide codebase upgrade that took place in early July 2018.

SHIELD v3 is a complete upgrade of SHIELD, bringing the SHIELD codebase up-to-date with Bitcoin Core 0.16.1. This brought a multitude of improvements to SHIELD, including Segregated Witness, better peering, and hierarchical deterministic wallet support, among many other things.

Note: Please note that SHIELD v2 and SHIELD v3 share the same data folder. This means that:

  1. You should not need to relocate the wallet.dat file during the upgrade.

  2. You may wish to delete residual data to save some space in your data folder.

    • These files and folders are safe to delete (take care not to delete anything else!):

      • the txleveldb folder and its contents

      • the database folder and its contents

      • the blk0001.dat file (NOT inside the blocks folder!)

    • These files are safe to delete before the upgrade, but please don't delete them afterwards:

      • the peers.dat file

      • the db.log and debug.log files

For Users

Migrating from v2 Core to v3 Electrum (casual users on Windows)

This will move your coins to your Electrum wallet in an one-way manner. The coins are sent to the Electrum wallet across the SHIELD network, and will move from your old address to your new one.

  1. In the v2 wallet, go to the menu bar in the top-left corner, and choose File -> Backup wallet, and save the resulting .dat file somewhere safe. This is your wallet data, and while its coins will be moved once you complete these steps, it's still recommended that you keep this file as a backup.

  2. Now to start the coin migration process, go to Help -> Debug window -> Console

  3. Enter the command listaddressgroupings to see all your coins, and the specific addresses that "hold" them.

  4. For each address that you want to migrate to the Electrum wallet, enter the command dumpprivkey ADDRESS, where ADDRESS is a single address. You may need to enter this command multiple times - once for each address.

  5. You will receive a private key for each address (an example: VS1fK1j4Yj7dGMx2tPBvK2F4PsFaRsAxAi4bw329DKFDEvCX2iv). Note these private keys down somewhere (e.g. in a Notepad window), as you will be using them to move your coins.

  6. Now download the Electrum wallet, and set up a wallet, as per these instructions. Once you see the main Electrum wallet interface with the various tabs like History, Send etc., you can proceed with step 7.

  7. Choose Wallet -> Private keys -> Sweep

  8. (pictured below) Now enter each of the private keys you obtained earlier in step 3 on a new line in the input box with the prefix S:, as shown in the image below. Then hit Sweep. Note: at this stage, your coins still remain unmoved.

  9. If SHIELD funds were successfully found with your private keys, you should now see a pre-made transaction in the Send tab, paying to an address in your Electrum wallet. Proceeding and hitting the Send button will irreversibly move the funds from your old wallet to your new Electrum wallet.

Congratulations! You should now see your new imported balance, ready for use.

Migrating from v2 Core to v3 Core (other users)

  1. Please make sure you have at least 1 recent backup of your wallet.dat file in a safe place, and that the previous SHIELD v2 client is closed. You can back this file up in one of two ways:

    • Go to the top-left corner of the SHIELD v2 client, and choose File -> Backup wallet, and save the resulting .dat file somewhere safe, or

    • Close the wallet, and go to the wallet's data folder and copy the wallet.dat file from there, and paste it somewhere safe.

  2. Download the relevant binary for your operating system.

  3. If you have previously used Tor nodes with your QT wallet, you will need to change your SHIELD.conf file and change the tor= line to onion=. If you have not used them, or do not know what they are, skip this step.

  4. (optional): Use the bootstrap to synchronise your wallet faster.

  5. Open the Core wallet binary (shield-qt) and wait for header and block synchronisation to complete.

For Exchanges

  1. Backup the wallet.dat and the SHIELD.conf files from the data folder.

  2. Clear the contents of the data directory except for SHIELD.conf and wallet.dat.

  3. Clone the source code and compile, or download the relevant binary for your OS.

  4. Please make some changes to the SHIELD.conf configuration file, located in the data folder:

    • Change any tor= lines to onion=.

    • Remove any gen= lines.

    • (optional) To create the old S-prefixed addresses, add the line addresstype=legacy. Script E-prefixed addresses are otherwise the default.

    • (optional): To call certain “legacy” rpc functions, you may need to add the line deprecatedrpc=accounts

  5. (optional): Download and extract the bootstrap to synchronise your daemon faster.

  6. Open the binary and wait for the headers and blocks to sync automatically.

For Pools

  1. Backup the wallet.dat and the SHIELD.conf from the data folder (note: pools that host multiple SHIELD algorithms may have specified their own custom paths).

  2. Clear the contents of the data folder(s) except for SHIELD.conf and wallet.dat.

  3. Clone the source code and compile, or download the relevant binary for your OS.

  4. Please make some changes to the SHIELD.conf configuration file, located in the data folder:

    • Change any tor= lines to onion=.

    • Remove any gen= lines.

    • Make sure there is an algo= line in SHIELD.conf for the chosen algorithm for this daemon's stratum; the choices are x17, scrypt, myr-gr, lyra2v2, blake2s, x16s.

      • (e.g. algo=x16s)

    • For YiiMP pools that are not yet on the latest YiiMP source code, please add the line addresstype=legacy, otherwise mined funds may be lost!

    • YiiMP pools require the line deprecatedrpc=accounts for normal functioning. (This may also apply to non-YiiMP pools.)

  5. YiiMP pools that hosted the v2 client required Daemon > RPC type to be set to PoS. This setting needs to be changed to PoW for SHIELD v3. (This may also apply to non-YiiMP pools.)

  6. YiiMP pools should enable the following settings on the daemon config page:

    • Settings -> Has getinfo

    • Settings -> Use segwit

  7. (optional): Download and extract the bootstrap to synchronise your wallet faster.

  8. Open the binary/binaries and wait for the headers and blocks to sync automatically.