(I’m writing this in late April as a speculative look at the June 2–3 EOS community launch of a public blockchain Mainnet based on the EOSIO Software, to highlight some of the more subtle aspects of the launch process.)

It’s 11 PM Eastern Time on Saturday, June 2nd, 2018. I’m sitting in the Blacksburg offices of block.one with an unopened bottle of Dom Perignon Champagne at my elbow, and a couple of empty glasses. My colleagues and I are watching the live streams from around the globe.

Some of them are already celebrating. I’m not. Not yet.

The EOSIO Software has performed well, and a self-selected group of Block Producer candidates has proven their technical prowess: they’ve launched the first public blockchain Mainnet based on both the EOSIO Software and a clean snapshot of the now-frozen ERC-20 based EOS tokens.

If the EOS Mainnet is a rocket, then the launch was the dramatic moment. The software got up and running, and there was a lot of cheering. But like a rocket launch, clearing the launchpad is not the whole game — not by a long shot.

That’s why I’m not celebrating yet. I’m waiting for this metaphorical rocket to achieve a stable orbit. That’s going to take a while.

Shaky start

It hadn’t gone perfectly smoothly up to now. The first BIOS Boot node tried to launch at 6:15 PM Eastern, but they’d rushed the snapshot. The tokens had only been frozen at 6 PM Eastern (22:00 UTC). Their hash of the snapshot didn’t match the hash derived by their launch partners.

As a result, the appointed block producers took over from the boot node, saw the discrepancy, and destroyed the first chain mercilessly.

That was exactly as planned — consensus doesn’t mean we always agree, it means we know what to do when we don’t agree. “Beautiful,” I’d muttered at the time. “Way to go, Alexandre.”

Still, it rattled a few of the more nervous observers. Twitter started to blow up with a range of reactions, led by Bitcoin maximalists scorning our entire effort.

The EOS community’s BP candidates ignored the Twitter storm; they kept their heads down, working on the launch.

EOS focused media

EOS Go were partnered with their Chinese language counterparts IMEOS to host a couple of Live Stream video channels. They had various people on to comment as the night (or morning, depending on one’s location) wore on, speaking from EOS Meetup launch parties and BPs’ offices around the globe. I listened with half an ear, impressed once more by the EOS community, but focused on monitoring the vote.

DDoS and phishing attacks

By now we’d had:

Several DDOS attacks on various BP candidates.

The usual phishing and fake airdrop announcements had come, gone, and come again.

Some fake chains were proclaimed, and one even appeared to have been launched, albeit with a totally fake token distribution, and none of its block producers were recognizable.

Predictably, some people had fallen for one or another of the scams. It was sad, but par for the course with cryptocurrencies.

Launch

Then at 7:22 PM Eastern the Mainnet indisputably launched. A new BIOS Boot node, run by a different BP candidate, had gotten everything right. The Boot node, having created the initial chain and named 21 Appointed BPs (ABPs), handed over the keys and dropped out. (The Boot node operator, now a little bit famous, rejoined the pool of regular BP candidates.)

Next, the snapshot hash had been validated by the ABPs. The system contracts were also validated. Satisfied, the ABPs then settled down to make blocks and count votes.

Sure enough, the 21 ABPs had hiccuped a few times, dropping blocks and stepping on each others’ toes. Some of the BPs started to fear this net was forking, and started scanning logs. Before we could get too worried, the seeming fork resolved on its own, and the 21 appointed BPs settled into a steady two minute and six second rhythm of producing half-second blocks, accepting registrations from BPs, and processing BP votes from an excited group of EOS token holders.

Within five minutes, all 21 appointed BPs had replaced themselves via the election process. This new chain was running with a slate of all elected BPs.

Elected BPs take over

The elected BPs were even messier at first, as each early round saw a different set of top 21 vote getters being voted in to produce a round, only to be outvoted 2:06 later by a different group. Not enough voters had shown up yet for a pattern to emerge. Even a few new votes totally changed the early results.

Several of these BPs were relative unknowns, and their inexperience showed — they had subtle configuration errors, or tried to produce blocks out of turn.

One named “Blocky McBlockface” was voted in but literally couldn’t connect as a BP — his software was, somehow, three revisions out of date. So much for getting elected on a humorous name. Once the word spread, he was voted back out, never to be seen again.

Waiting to unlock

That was all nearly four hours ago. Here at 11 PM, the current top 21 BPs are fairly stable, and had been for the last 90 minutes. The blocks are coming fast and sure. Votes are continuing to come in as more and more token holders connect.

But the chain is still locked up tight. Nobody can create a smart contract yet; nobody can transfer a token.

Now my phone buzzes. My friend Bob is texting me: “What’s wrong? Why can’t I sell any of my EOS?”

This again.

How EOS Unlocks

I text back: “Read the email I’m about to send you.”

Then I pull together some of the articles and illustrations we’d been sharing with the community for weeks and months.

Dear Bob - The EOSIO Software is set up to only unlock all functions of the Mainnet three (3) days after the chain proves it’s legitimate, by attracting at least 15% of token holders to connect and agree on 21 BPs. See, anybody can download the open source software. It’s public. And anybody can snapshot the token distribution. That’s public too. But we only want one Mainnet, not dozens. We need the community to converge. So we built in a lock. All tokens start off fully staked, half for CPU and half for bandwidth. And the “unstake” command won’t work until we get that 15% threshold of token holders agreeing on a top 21. By voting, the token holders prove they own their accounts — because they sign with their EOS private keys. By voting on a particular chain, they’re vouching for that chain being the one they want to have as the Mainnet. And the 15% threshold means it would be very hard for two chains to simultaneously achieve Mainnet status. Here’s a screen shot of current elected BPs and their votes as a percent of possible per-person votes. [screen shot here] As you see, the front runners are just at 8%. Lots of time. People are still getting warmed up. Two or three whales will tip us over the top. And even after we hit 15% and the “unstake” command becomes available, it takes three days for unstaking of tokens used for CPU or bandwidth. So relax. Even if we hit 15% by the time you get this email, you’ll need to issue “unstake” before you can sell anything. And then you’ll need to wait 3 days. Have an awesome evening. Warmly, -Thomas

I double check it and hit “send.”

Just now I hear a cheer from the EOS Go live feed, followed by a couple of my colleagues yelling “We hit 15%! We hit it! We’re in orbit! Houston, we have orbital insertion!”

Now it’s time to pop open the Dom Perignon.