A few crypto-decades ago, the Algorand powers that be decided to celebrate Algorand’s Birthday on June 19th. That was the day of the Dutch Auction, through which the ALGO token was first distributed to the broader public, so it was certainly a milestone date. But was it The Birthday?
A few years into MainNet’s lifetime, a then-undoxxed crypto anarchist1 pointed out that the Genesis block, as well as the first few blocks, acktchually have June 11th timestamps, thus starting the Genesarian schism of the Algorand religion. The Dutchaversarist Foundation was put in an awkward position. It certainly frowned upon the heresy but acknowledging it would only help it spread, so instead it spent years quietly suppressing this rationalist movement built around page 1 of our divine ledger.
But as it turns out, both were wrong, and years later the best guess at an accurate Algorand birthday would spawn yet another rationalist faction, the Duodecimailsts2. They are pretty sure that Algorand MainNet launched on June 12th, 2019.
Genesis Timestamp
Block zero, the “genesis block”, is not a block; it is a pre-agreed upon configuration file with which the network launched. It can be queried on any Algorand node. It contains all information required to bootstrap a network, including the distribution of the 10 billion ALGO supply, initial participation key information for the bootstrap nodes, the fee pool address, and so on.
They can also include optional information, like a Genesis timestamp. MainNet’s genesis file included such a timestamp: 1560211200, a.k.a. Tue, 11 Jun 2019 00:00:00 UTC. When a genesis timestamp is present, it is treated like a “block zero” timestamp, which restricts possible block one timestamps based on the Algorand block timestamp rules.
The Algorand block timestamp rules
Algorand block timestamps are recorded as a Unix Timestamp3, and they are selected by the block proposer - within reason. Consensus rules4 govern the “round time” - the difference between successive block timestamps:
- Round time can not be less than zero
- Round time can not be more than 25 seconds
If a proposed block has a timestamp that violates these rules, it will be rejected - so block proposers will pick the closest valid timestamp according to their clock.
Nodes in temporal distress will propose with a round time of zero if they consider the previous timestamp to be in the future, or with the maximum offset of 25 seconds if their clocks are running way ahead.
First MainNet Blocks
The first 6637 blocks on MainNet exhibit a round time of 25 seconds. But this doesn’t mean that the protocol was slower back then - after block 6638 we observe the average round time converging around ~4.25 seconds and sustaining that.
So if the first block’s timestamp was bound by the genesis timestamp, and we had thousands of consecutive blocks with maximum timestamp, it should follow that all proposing nodes considered their local time to be “way ahead” of the timestamps recorded in the blocks, thus recording 25-second round times. So the June 11 midnight UTC launch time is called into question.
From an anthropological perspective, it is reasonable to doubt that Algorand inc, based in Boston, would choose to undertake such a significant engineering operation at 8PM on a Monday.
| Round | Timestamp | Round Time | Avg RT (15 rounds) |
|---|---|---|---|
| genesis | 1560211200 | ||
| 1 | 1560211225 | 25 | |
| 2 | 1560211250 | 25 | |
| 3 | 1560211275 | 25 | |
| 4 | 1560211300 | 25 | |
| 5 | 1560211325 | 25 | |
| … | … | … | … |
| 6636 | 1560377100 | 25 | 25 |
| 6637 | 1560377125 | 25 | 25 |
| 6638 | 1560377129 | 4 | 23.6875 |
| 6639 | 1560377133 | 4 | 22.375 |
| … | … | … | … |
| 6664 | 1560377239 | 1 | 4.25 |
| 6665 | 1560377243 | 4 | 4.25 |
| 6666 | 1560377243 | 0 | 4.125 |
| 6667 | 1560377243 | 0 | 3.6875 |
| 6668 | 1560377256 | 13 | 4.25 |
| 6669 | 1560377260 | 4 | 4.25 |
More numbers on Google Sheets. As an aside, we can also see that at launch some nodes had persistent clock drift, which explains the 15-round-sample aberrations in average round time, but on average timekeeping was fine after block 6638.
Duodecimalist napkin math
Where does all this leave the actual launch date? Well, since Algorand Has Never Had Downtime™, we will discard the possibility that MainNet started, then stopped, then started again, and instead we will take this reasonable leap of faith:
Assumption: the average round time exhibited from block 6638 onwards (4.25 seconds) was approximately the average round time leading up to that block.
To work backwards from that, we anchor “real time” at block 6638 being 2019-06-12 22:05:29 UTC, and pin the actual launch at ~28211 seconds5 before that, which leads to Duodecimalist tenet #1:
This also pleases the anthropologists, as it works out to 10:15 AM Boston time.
Recognized Duodecimalist Launch Milestones
The Duodecimalists acknowledge the following MainNet launch milestones:
- June 11th: Genesis Timestamp
- June 12th: MainNet Launch Date
- June 15th: First Transactions
- June 19th: Public Opening via Dutch Auction
Revelation. Et tu? Vote!
Faced with the Blinding Light of Duodecimalist Revelation, reformed Genesarians must take the painful journey of acknowledging their former folly. Surely Algorand never has, and never will, stall - and surely Algorand Inc would not turn on MainNet lights at 8PM on a Monday and then go home… What were we thinking!
Are you convinced? Let it be known by voting with your wallet. Do not worry, it is not expensive.
What do you consider Algorand’s Birthday? Vote on-chain with your wallet by selecting your choice:
Parting Thoughts
While not proven beyond reasonable doubt, I do think Occam’s razor places MainNet launch on June 12th.
I had fun writing this. I’m trying to improve my writing, but I can’t seem to stop trying to thread the humour needle and occasionally stabbing my thumb in the process.
The conspiracy and religious references are tongue in cheek. Algorand is not a religion, I am not poking fun at religion in general, nor your religion in particular.
And in case you need your food for thought chewed for you: these views are personal, not representing my employer.
Me. ↩︎
Duodecim is the Latin word for Twelve. ↩︎
Number of non-leap seconds elapsed since Jan 1, 1970. Learn more ↩︎
Code: Bookkeeping rules - Spec: MaxTimestampIncrement ↩︎
Duration of 6638 rounds at 4.25 seconds each. ↩︎
