We recommend using a bootable USB key with Ubuntu (Linux) flashed to the USB device. It is a very easy solution and will allow you to use an independent and air gapped operating system to create the .json file needed for CLWP to set your withdrawal address automatically when the Shanghai Fork goes live.
For this example we have used a 64GB USB key. However 8GB should be easily sufficient for the job.
Use the links below to download the two packages and let's move to the next step of formatting the USB and preparing it as a bootable device.
Formatting is the process of prepping a storage device, like a hard drive, solid-state drive, flash drive etc, to store information. It creates a filing system that organises your data and allows you to maximise the space for your files. It’s typical to format a drive when a new operating system is going to be used or additional space is required
You now have a bootable Ubuntu USB key ready to use.
Congratulations! Lets now quickly got to step 5 and prepare the 2nd USB key you will need."
When you use the Ubuntu bootable USB key you will not be installing the OS. You can run Ubuntu in test mode. The point of using the bootable USB key is it is isolated from your computer hard disk and is intended to be 100% malware and virus free and it can be air gapped! Ubuntu allows us to boot up directly from the USB key.
This however means you need to prepare a 2nd USB key. This must be inserted into your computer before you boot up Ubuntu, otherwise the key may not be detected once Ubuntu is running in test mode. it will scan the 2nd USB on boot. So with this last step we will get your CLWP set withdrawals files ready.
*If you use the latest Mac M1 silicon chip you will have to download the ethdo repository manually.
You will need your Validator Node withdrawal keys ready and this is why you want all camera devices well out of the way! We must have the work environment as secure as possible!
If you using an Apple Mac
If you are using a PC
To boot from a CD, DVD or USB device, make sure that the device has boot sequence priority over the hard drive.
BIOS (Basic Input Output Subsystem) is a programmable chip that controls how information is passed to various devices in the computer system. A typical method to access the BIOS settings screen is to press ESC, F1, F2, F8 or F10 during the boot sequence.BIOS settings allow you to run a boot sequence from a floppy drive, a hard drive, a CD-ROM drive or an external device. You may configure the order that your computer searches these physical devices for the boot sequence.
The first device in the order list has the first boot priority. For example, to boot from a CD-ROM drive instead of a hard drive, place the CD-ROM drive ahead of the hard drive in priority.
"Some computer manufacturers allow you to select the device that contains the boot sequence from a special device selection menu. The example below uses a Dell system board."
To set boot priority using a device selection menu:
Note: Using an incorrect BIOS setting can cause a system malfunction. Please follow the BIOS guide provided with your computer motherboard. If you read these instructions and you are not sure how to change a setting, it is better to leave it as the default setting.
Full Credit for this PC tutorial goes to MDTechVideos
Now you have successfully booted from your USB key, there is one last simple step.
Now Ubuntu has booted we need to quickly put it into Airplane mode to be extra sure we are air gapped.
CLWP-instructions.txt
# Copy the three files from your 2nd USB drive to the documents folder and work from there!
# Paste your new public withdrawal wallet address here! -->
# Open the terminal and copy and paste each line followed by Enter (Linux)
cd '/home/ubuntu/Documents'
tar -zxf ethdo-1.27.1-linux-amd64.tar.gz
tar -zxf offline-preparation.json.mainnet.*.tar.gz
cp offline-preparation.json.mainnet offline-preparation.json
# now that ethdo is running and your offline file is ready. Edit the command below with your twenty four word mnemonic originally created when the node was activated, and your new consensus layer withdrawal address then run the command.
#This will run a script that checks every node in the offline-preparation.json list until it finds your node. The resulting "change-operation.json" file will be cryptographically generated and the only code still unencrypted is the public wallet address. It is very important that you again verify that the withdrawal wallet address is correct - if it's incorrect, then delete the .json file, and run the command again (./ethdo validator credentials set --offline..) with the correct address to create a new .json file. You cannot edit the withdrawal wallet address in the .json file directly, as the signature will no longer be valid!
./ethdo validator credentials set --offline --mnemonic="your twenty four word seed phrase goes here" --withdrawal-address=0xY0UR4dressG0esH3re00000000007ffA7201727B6C
# Lastly clear the terminal history
history -c
# Your document folder should now contain a file "change-operations.json" repeat this operation for each node and make sure the files are kept separately in folders and renamed with each node ID for example 123456.json
# Note: Make sure you copy your .json files back to the 2nd USB drive before you power down Ubuntu or once powered down these files will be lost forever and you will have to start again!
If your resulting .json file code resembles the format below you know your node was found and your CLWP set withdrawal command was performed correctly. Double check the "validator index" is correct and triple check the "execution_address" is correct, because when this goes live on chain there is no way to change this address ever again!
[{"message":{"validator_index":"1234567","from_bls_pubkey":"0xa83acb5c8f56c7baba357778df7ab318819964a206f52408a0532db4a0b688619569041539a80929889beac5c7da6bc2","to_execution_address":0xY0UR4dressG0esH3re00000000007ffA7201727B6C"},"signature":"0xaeeb1587ff4b5dabb541d91889ab18c9be54680fe52f76d219f07be9544091c101b5fcc07d41d9ea6c236e2917c5ff9f128d238a4fdfc7b28ee7707f4fc5677df96ff039a68720bf2ea6410ae624f008357a24d7ca8cc0d37d253bb77caf4ee3"}]
Below we will guide you through the steps to successfully uploading your .json files to GitHub.