An update as promised: all systems are now ‘Go’ on the technical side (pun intended) and we intend to release Frontier this week.
Thanks to everyone who provided feedback on my previous blog post. What became apparent is that before the big day, many of you wanted to know more about what exactly the sequence of events would be and how to prepare your machine for launch.
A transparent and open launch.
Frontier users will first need to generate and then upload the Genesis block to their Ethereum client. The Genesis block is more or less a database file: it contains all the transactions from the sale of Ether, and when a user enters it into the client, it represents their decision to join the network on their terms: it is the first step towards consensus.
Because the ether pre-sale took place entirely on the bitcoin blockchain, its content is public, and anyone can generate and verify the Genesis block. In the interest of decentralization and transparency, Ethereum will not provide the Genesis block as a download, but instead has created an open source script that anyone can use to generate the file, a link to which can be found later in this article.
Since the script is already available and the release needs to be coordinated, an argument to the script must be provided to “launch” Frontier in unison. But how can we do this? Y stay decentralized?
The argument must be a random parameter that no one, not even us, can predict. As you can imagine, there aren’t too many parameters in the world that match this criteria, but a good one is the hash of a future block on the Ethereum testnet. We had to choose a block number, but which one? 1,028,201 turns out to be both prime and palindromic, just the way we like it. So #1028201 is it.
Sequence of steps for release:
- Final steps for launch revealed: You are reading this now.
- Block #1028201 is formed on the Ethereum tesnet and hashed.
- The hash is used by users around the world as a unique parameter to the Genesis block generation script.
what can you do today
First, you’ll need the client installed, I’ll use Geth as an example, but the same thing can be achieved with eth (the C++ implementation of Ethereum). Geth installation instructions for Windows, Linux and OSX can be found on our wiki.
Once you’ve installed a client, you need to download the python script that generates the genesis file. It is called ‘mk_genesis_block.py’ and can be downloaded here.
Depending on your platform, you can also download it from the console by installing curl and running;
curl -O https://raw.githubusercontent.com/ethereum/genesis_block_generator/master/mk_genesis_block.py
This will create the file in the same folder where you invoked the command. Now you need to install the pybitcointools created by our own Vitalik Buterin. You can get this via the python package manager pip, so we’ll install pip first and then the tools.
The following instructions should work on OSX and Linux. Windows users, good news, pip comes with the standard python installer.
curl -O https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py
or (if you already had it installed),
sudo pip install --upgrade bitcoin
One last step, if you’re using Eth, we recently supported the new Genesis block parameter, so you’ll need to choose the right version of software to be ready for the big day:
cd ~/go-ethereum/ git checkout release/1.0.0 git pull make geth
Those who wish to be ‘as prepared as possible’ can follow the instructions up to this point, that being said, a pull from git just before the fateful crash, it is probably recommended to operate the latest version of any software.
If you have been running the clients before:
- Back up your keys (some of them may be eligible for Olympic rewards); They are located at ./ethereum/keystore
- Delete your old chain (it is located in ./ethereum, delete only the following 3 folders: ./extra, ./state, ./blockchain)
- You can leave your ./ethereum/nodes, ./ethereum/history and ./ethereum/nodekey in place safely
- Having the DAGs pre-built in ./ethash won’t hurt, but feel free to remove them if you need space.
For a full breakdown of where the configuration files are located, check out this page in our forums.
Then it’s a matter of waiting for block #1028201, which at the current block resolution time, should form around Thursday night GMT+0.
Once 1028201 has been formed, its hash will be accessible by querying a node running the testnet using web3.eth.getBlock(1028201).hashhowever, we will also make that value available on this blog, as well as in all of our Social media channels.
You can then generate the Genesis block by running:
python mk_genesis_block.py --extradata hash_for_#1028201_goes_here > genesis_block.json
By default, the script uses Blockr and Blockchain.info to get Genesis presale results. You can also add the –view switch if you prefer to use the private Ethereum server to get this information. If you have problems with the script, please raise an issue on your github.
While we won’t provide the Genesis block as a file, we will still provide the hash of the Genesis block (shortly after we generate it ourselves) to ensure that invalid or malicious third-party files are easily discarded by the community.
Once you are happy with the generation of the Genesis block, you can upload it to the clients using this command:
./build/bin/geth --genesis genesis_block.json
either:
./build/eth/eth --genesis genesis_block.json
From there, instructions on how to create an account, import your presale wallet, make transactions, etc., can be found in Frontier’s ‘Getting Started’ guide at http://guide.ethereum.org/
Note that if you have used Ethereum before, you should generate new keys using a Recent Client (RC) and not reuse testnet keys.
A couple more things…
We would also like to tell you a bit about the “thaw” phase, the period during which the gas limit per block will be set very low to allow the network to grow slowly before transactions can take place. You should expect network instability from the start of the release, including forks, possible abnormal display of information on our http://stats.ethdev.com page and various peer-to-peer connectivity issues. Just like during the Olympic phase, we expect this instability to settle after a few hours or days.
We’d also like to remind everyone that while we intend to provide a secure platform for the long term, Frontier is a technical release aimed at a developer audience, and not a general public release. Please note that early software is often plagued by bugs, instability issues, and complex user interfaces. If you prefer a more user-friendly experience, we recommend that you wait for future Homestead or Metropolis Ethereum releases.
Be especially careful with third-party websites and software of unknown origin: Ethereum will only publish software through its github platform at https://github.com/ethereum/.
Finally, for clarity, it is important to note that the Olympic The program ended in block 1M this morning, however the bug bounty is still active — and will continue until further notice. Security vulnerabilities, if found, should continue to be reported to https://bounty.ethdev.com/.
—
updates
07/27/15– Additional instructions for users upgrading from previous installations
07/28/15: minor edits, added link to github script
07/29/15: Added recommendation to create new keys and not reuse testnet ones