Ethereum Blog

Final Steps

Introduction

user

Stephan Tual

CCO at Ethereum. Passionate about the potential for social change engendered by blockchain technology.


LATEST POSTS

A message from Stephan Tual 03rd September, 2015

Ethereum Protocol Update 1 04th August, 2015

announcement

Final Steps

Posted on .

An update as promised: all systems are now ‘Go’ on the technical side (pun intended) and we intend to release Frontier this week.

Thank you to everyone who provided feedback on my previous blog post. What became apparent is that prior to the big day, many of you wanted to know more about what the sequence of events would exactly be, and how to prepare your machine for the release.

A transparent and open release

Frontier users will need to first generate, then load the Genesis block into their Ethereum client. The Genesis block is pretty much a database file: it contains all the transactions from the Ether sale, and when a user inputs it into the client, it represents their decision to join the network under its terms: it is the first step to consensus.

Because the ether pre-sale took place entirely on the bitcoin blockchain, its contents are 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 on in this article.

Since the script is already available and the release needs to be coordinated, an argument to the script has to be provided in order to ‘kick off’ Frontier in unison. But how can we do this and stay decentralized?

The argument needs to 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 pick 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 to the release:

  • Final steps to the release revealed: You are reading this now.
  • Block #1028201 is formed on the Ethereum tesnet, and is given a hash.
  • The hash is used by users around the world as a unique parameter to the Genesis block generation script.

What you can do today

First, you’ll need the client installed, I’ll use Geth as an example, but the same 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 have installed a client, you need to download the python script that generates the Genesis file. It’s 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. You now need to install the pybitcointools created by our very own Vitalik Buterin. You can obtain this through the python package manager pip, so we’ll install pip first, then the tools right afterwards.

The following instructions should work on OSX and Linux. Windows users, good news, pip ships with the standard Python installer.

curl -O https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo pip install bitcoin

or (if you had it installed already),

sudo pip install --upgrade bitcoin

One last step, if you are using Eth, we recently to support the new Genesis block parameter, so you’ll need to pick up the correct release of the software to be ready for the big day:

cd ~/go-ethereum/
git checkout release/1.0.0
git pull
make geth

Those who would like to be ‘as ready as possible’ can follow instructions up to this point, that said, a git pull just before the fateful block is probably recommended to operate the newest version of any software.

If you have been running the clients before:

  • Back up your keys (maybe some of them are eligible for Olympic rewards) – they are located in ./ethereum/keystore
  • Delete your old chain please (it’s located in ./ethereum, delete the following 3 folders only: ./extra, ./state, ./blockchain)
  • You can safely leave your ./ethereum/nodes, ./ethereum/history and ./ethereum/nodekey in place
  • Having DAGs pregenerated in ./ethash will not hurt, but feel free to delete them if you need the space

For a complete breakdown as to where the config files are located, please check out this page on our forums.

Then, it’s a matter of waiting for block #1028201, which at the current block resolution time, should be formed approximately Thursday evening GMT+0.

Once 1028201 has formed, its hash will be accessible by querying a node running the testnet using web3.eth.getBlock(1028201).hash, however we will also make that value available on this blog as well as all our social media channels.

You will then be able to 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 fetch the Genesis pre-sale results. You can also add the --insight switch if you’d instead prefer to use the private Ethereum server to obtain this information. If you are facing issues with the script, please raise an issue on its github.

While we will not provide the Genesis block as a file, we will still provide the Genesis block hash (shortly after we generate it ourselves) in order to insure that third party invalid or malicious files are easily discarded by the community.

Once you are satisfied with the generation of the Genesis block, you can load it into the clients using this command:

./build/bin/geth --genesis genesis_block.json

or:

./build/eth/eth --genesis genesis_block.json

From there, instructions on creating an account, importing your pre-sale wallet, transacting, etc., can be found on the ‘Getting Started’ Frontier guide at http://guide.ethereum.org/

Note that if you’ve used Ethereum before, you should generate new keys using a recent (RC) client, and not reuse testnet keys.

A couple more things…

We also would like to give you a bit of heads up on the ‘thawing’ 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 at the very beginning of the release, including forks, potential 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/days.

We would also like to remind everyone that while we intend to provide a safe platform in the long term, Frontier is a technical release directed at a developer audience, and not a general public release. Please keep in mind that early software is often affected by bugs, issues with instability and complex user interfaces. If you would prefer a more user friendly experience, we encourage you to wait for the future Homestead or Metropolis Ethereum releases.

Please be especially wary of third party websites and software of unknown origin — Ethereum will only ever publish software through its github platform at https://github.com/ethereum/.

Finally, for clarity, it’s important to note that the Olympic program ended at block 1M this morning, however, the bug bounty is still on — and will continue until further notice. Security vulnerabilities, if found, should continue to be reported to https://bounty.ethdev.com/.

Updates

27/07/15: added instructions for users upgrading from previous installations
28/07/15: minor edits, added link to script github
29/07/15: added recommendation to create new keys and not reuse testnet ones

profile

Stephan Tual

CCO at Ethereum. Passionate about the potential for social change engendered by blockchain technology.

Comments
user

Author Tymat

Posted at 9:37 pm July 27, 2015.
user

Author Gerry Hussein

Posted at 9:43 pm July 27, 2015.

And we are offff!!!

Reply
user

Author Roswell

Posted at 10:18 pm July 27, 2015.

I’m certainly excited for this release! Will GPU mining be included, I’m thinking and hoping not now? 🙂

Reply
    user

    Author Christoph Jentzsch

    Posted at 10:27 pm July 27, 2015.

    yes, GPU mining is included

    Reply
      user

      Author Roswell

      Posted at 6:02 am July 28, 2015.

      CRAP. Should’ve gotten my GPU rig earlier. Ah well. Can’t wait to start mining again when I can! 😀

      Reply
user

Author Paul Paschos

Posted at 10:52 pm July 27, 2015.

Congratulations DEV on reaching this important milestone! It was a long road, but you made it here!

Reply
user

Author Def Aced

Posted at 11:02 pm July 27, 2015.

interesting

Reply
user

Author Greg Slepak

Posted at 11:11 pm July 27, 2015.

Someone on Hacker News compared this to the Apollo launch (and got downvoted for it).

I concur, this is explosive news for humanity.

MAJOR CONGRATS to the entire Ethereum team!

Thank you all for your hard work! You’re almost at the finish line to 1.0! 💃🎉🎊

Reply
    user

    Author aakilfernandes

    Posted at 5:36 am July 3, 2016.

    Ha, just came across this comment. That was me!

    Reply
user

Author Brad A

Posted at 11:35 pm July 27, 2015.

(-: I couldn’t be more excited or happier! 🙂

Congratulations to Vitali and all the bright minds and positive spirits working on Ethereum.

Congratulations for achieving this important nascent milestone!

Wow!
Now….
On your marks……Get set……….

Reply
user

Author Dima Starodubcev

Posted at 11:39 pm July 27, 2015.

Two years ago I could not even dream that I will be genesis investor of something very close to Artificial Superintelligence. Thanks every of 9k people who make THAT possible and of course Ethdev.
https://www.youtube.com/watch?v=AUedS4Fv4Eg

Reply
    user

    Author Bob Bond

    Posted at 6:13 am August 3, 2015.

    It’s not a supercomputer. It’s not AI either. It’s a very slow processing platform, which has one key advantage – that being resilience to compromise.

    Reply
      user

      Author Dima Starodubcev

      Posted at 12:03 pm August 4, 2015.

      Sure I understand this. But this slow processing platform allow, for instance, to bind another slow processing platform on the second tier and again and again multiplying capabilities. And none of pre ethereum blockchains was capable to do it so easy.
      So you can think of Ethereum the way you want to think of it. But I have invested in Ethereum and will build applications because I believe that this is very intelligent thing and it will improve “thinking” capabilities with squared Moores Law 🙂

      Reply
user

Author cyber•Fund

Posted at 11:45 pm July 27, 2015.

Uploading…

Reply
user

Author pablox43

Posted at 2:11 am July 28, 2015.

Congratulations!!

Reply
user

Author Ian Ridgwell

Posted at 3:04 am July 28, 2015.

Excited for this but still surprised by bow how obtuse instructions are. None of this is approachable to anyone who isn’t already knees deep in the technology and that feels like an over site. Ethereum ‘seems to’ want to move away from the quagmire of ‘crypto sub-culture’ and with that comes the responsibility to lessen the tech burden on potential users. Will be good to start seeing video tutorial coming from the community any day now. Exciting times ahead.

Reply
    user

    Author Follow the Cycles

    Posted at 4:36 am July 28, 2015.

    “We would also like to remind everyone that while we intend to provide a safe platform in the long term, Frontier is a technical release directed at a developer audience, and not a general public release. Please keep in mind that early software is often affected by bugs, issues with instability and complex user interfaces. If you would prefer a more user friendly experience, we encourage you to wait for the future Homestead or Metropolis Ethereum releases.”

    Reply
      user

      Author Ian Ridgwell

      Posted at 8:09 am July 30, 2015.

      If you want to exclude a chunk of people meritocraticly that is fine but it is not ‘fair’ and that is a term I hear constantly regarding the ethereum launch.The process is not hard it is the instructions that are lacking. We could involve a great many more people with minimal effort. It seems a waste to neglect any audience no matter how technically beneath you/us they may be.

      Reply
        user

        Author Sjors

        Posted at 12:00 am July 31, 2015.

        More then 20 Hours spend the last days and it got me nowhere. Fair Launch my ass i can’t even get my Ether out of my wallet when the trading starts. And mining just forget it.

        Was going through everything but the win-builds program keeps failing to dowload the whole list and after erasing and trying it again for more then 50 times i almost smashed my computer to bits.

        Reply
          user

          Author jeffanthony

          Posted at 4:01 am August 1, 2015.

          use ubuntu linux and get over it

user

Author xeroc

Posted at 9:15 am July 28, 2015.

According to your Python script, you are going to pull data from http://178.19.221.38:3000 only .. this is

Not decentralized because who knows what this machine tells you
Not an encrypted connection!? Seriously?
Can be DDOSed

Can you not add some more insight-nodes? How about SSL?

I must say, I am a little disappointed by this. Anyway, good luck with the launch!

Reply
    user

    Author Greg Slepak

    Posted at 7:16 am July 29, 2015.

    I’m not 100% sure, but I think the hash that’s passed in should protect against HTTP MITM attacks.

    Reply
      user

      Author xeroc

      Posted at 8:20 am July 29, 2015.

      sure .. but who is protecting me against the admin of the machine? why should i trust him?

      Reply
        user

        Author Greg Slepak

        Posted at 9:24 am July 29, 2015.

        If the hash protects you from MITM attacks, it also protects you from any other attack, including a malicious admin.

        Reply
          user

          Author xeroc

          Posted at 12:22 pm July 29, 2015.

          Yhea .. right ..
          So it seems to be all fine .. only thing missing would be a fallback source
          but required data is cached on the disk .. so :thumbsup:

    user

    Author embi

    Posted at 9:37 am July 30, 2015.

    You got it wrong, better read the post again… you can specify manually
    your preferred insight address with the parameter –insight, so YES that is decentralized, since you can specify another ip in the source… That ip is
    just the ethereum team server, you can try it in your browser…

    But if you don’t like it you can omit the insight parameter and it will use blockr and blockchain.info to fetch the data.

    The response just contains the public
    ledger with the crowfounding addresses and info, that information is publicly
    available, it doesn’t matter at all if you get a MITM attack when you
    are receiving that… anyway as I stated above you can specify your
    very own server, with https if you prefer, that provides that info to
    the client.

    Somebody correct me if I im not right

    Reply
      user

      Author xeroc

      Posted at 9:40 am July 30, 2015.

      Thanks for the clarification .. We discussed this above already!

      Cheers

      Reply
user

Author Manfred Karrer

Posted at 10:56 am July 28, 2015.

Congratulations! Great job!

Reply
user

Author Rasmus Svensson

Posted at 3:54 pm July 28, 2015.

Yes congratulations indeed!

A questions regarding the genesis block generation script:

If the hash for block 1028201 would be:
0xdedd99132abf351483b23b700363f52f05804fe161f87d41ff572a1fbd14b310

The command would be
python mk_genesis_block.py –extradata 0xdedd99132abf351483b23b700363f52f05804fe161f87d41ff572a1fbd14b310

Is that correct?

Thanks!

Reply
user

Author @koqoo

Posted at 5:45 pm July 28, 2015.

Congrats Ethereumers!

Reply
user

Author Velzen Jewellery

Posted at 6:36 pm July 29, 2015.

mmm,, i hoop no big gay has more then 51% of gas

Reply
user

Author Tomoaki Sato

Posted at 9:02 pm July 29, 2015.

Congratulations!

Reply
user

Author Jared Boice

Posted at 4:58 am July 30, 2015.

I hope it gets easier than this. I consider myself above-average when it comes to computers and that looks like a whopper of a process, and I certainly wouldn’t expect the average person to be able to do all that.

Reply
user

Author WTFologist

Posted at 3:17 pm July 30, 2015.

Instructions fail on OSX 10.9.5:

new-host:~ joe$ mkdir ethereum

new-host:~ joe$ cd ethereum/

new-host:ethereum joe$ curl -O https://raw.githubusercontent.com/ethereum/genesis_block_generator/master/mk_genesis_block.py

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 10513 100 10513 0 0 5456 0 0:00:01 0:00:01 –:–:– 5492

new-host:ethereum joe$ curl -O https://bootstrap.pypa.io/get-pip.py

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 1380k 100 1380k 0 0 444k 0 0:00:03 0:00:03 –:–:– 444k

new-host:ethereum joe$ sudo python get-pip.py

Password:

The directory ‘/Users/joe/Library/Caches/pip/http’ or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo’s -H flag.

/tmp/tmpUQyr5C/pip.zip/pip/vendor/requests/packages/urllib3/util/ssl.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

The directory ‘/Users/joe/Library/Caches/pip/http’ or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo’s -H flag.

Collecting pip

/tmp/tmpUQyr5C/pip.zip/pip/vendor/requests/packages/urllib3/util/ssl.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

Downloading pip-7.1.0-py2.py3-none-any.whl (1.1MB)

100% |████████████████████████████████| 1.1MB 12kB/s

Collecting wheel

Downloading wheel-0.24.0-py2.py3-none-any.whl (63kB)

100% |████████████████████████████████| 65kB 176kB/s

Installing collected packages: pip, wheel

Successfully installed pip-7.1.0 wheel-0.24.0

new-host:ethereum joe$

new-host:ethereum joe$ sudo -H python get-pip.py

/tmp/tmp9JDoQM/pip.zip/pip/vendor/requests/packages/urllib3/util/ssl.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

/tmp/tmp9JDoQM/pip.zip/pip/vendor/requests/packages/urllib3/util/ssl.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

Requirement already up-to-date: pip in /Library/Python/2.7/site-packages

new-host:ethereum joe$ sudo pip install bitcoin

The directory ‘/Users/joe/Library/Caches/pip/http’ or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo’s -H flag.

/Library/Python/2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

InsecurePlatformWarning

The directory ‘/Users/joe/Library/Caches/pip/http’ or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo’s -H flag.

Collecting bitcoin

/Library/Python/2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

InsecurePlatformWarning

Downloading bitcoin-1.1.35.tar.gz

Building wheels for collected packages: bitcoin

Running setup.py bdist_wheel for bitcoin

Complete output from command /usr/bin/python -c “import setuptools;file=’/private/tmp/pip-build-5nS_Pn/bitcoin/setup.py’;exec(compile(open(file).read().replace(‘rn’, ‘n’), file, ‘exec’))” bdist_wheel -d /tmp/tmphfHaQ4pip-wheel-:

usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] …]

or: -c --help [cmd1 cmd2 ...]

or: -c --help-commands

or: -c cmd --help

error: invalid command ‘bdist_wheel’

Failed building wheel for bitcoin

Failed to build bitcoin

Installing collected packages: bitcoin

Running setup.py install for bitcoin

Successfully installed bitcoin-1.1.35

new-host:ethereum joe$

Reply
user

Author Nicolò Paternoster

Posted at 8:06 pm July 30, 2015.

Am I the only one who can’t build on mac following the instructions?

././secp256k1/src/num_gmp.h:10:10: fatal error: ‘gmp.h’ file not found

#include <gmp.h>

^

1 error generated.

make: *** [geth] Error 2

Reply
user

Author John Galt

Posted at 6:34 am August 2, 2015.

This is a huge accomplishment. Great job.

Reply
user

Author Bruno Marrocos Moura

Posted at 8:11 am August 13, 2015.

WHAT IS MY ERROR ? … python3 mk_genesis_block.py

File “mk_genesis_block.py”, line 293

print json.dumps(evaluate(), indent=4)

^

SyntaxError: invalid syntax

Reply
    user

    Author Sebastian

    Posted at 6:59 pm October 19, 2015.

    Same problem here!

    Reply
    user

    Author vallardb

    Posted at 1:48 am January 13, 2016.

    Use python 2

    Reply
user

Author Sebastian

Posted at 7:02 pm October 19, 2015.

Hey people,

The lack or difficulty to get vital information is a bit discouraging: The official getting started website links to this blog post on how to get your genesis file (https://www.ethereum.org/cli). Here it states that we rely on that one vital hash_for_#1028201. However, I could not find any ethereum testnet block explorer which could give me this hash and, contrary to the promises made above, I can also not find it here in the blog, comments and on Twitter. Furthermore, when adding a random hash (0xdedd99132abf351483b23b700363f52f05804fe161f87d41ff572a1fbd14b310) I get an error:

File “mk_genesis_block.py”, line 293
print json.dumps(evaluate(), indent=4)
^
SyntaxError: invalid syntax

And also, on the main page it states “use a different genesis block”, how I should do this is quite unclear. Take another hash of some random block (test net?)?

Any help would be appreciated!

Reply

Leave a Reply to pablox43
Cancel Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

View Comments (40) ...
Navigation