Once Upon a Time: BIOS Booting an EOSIO blockchain
Discussions within the EOS community has led me to believe that the EOS Software’s boot-up sequence will probably be something like the following, which I offer here in the spirit of capturing the consensus of the community. (Nothing here is a promise of what will actually happen or that any implied software feature will actually be created.)
Phase 0: Pre-Boot
- Prior to Go-Live, the Block Producer community will identify a quorum of their most technically proficient members, who are also willing to volunteer to join the Go-Live Pool. A target number of 50 has been suggested for the quorum.
- Just before Go-Live, the Pool members will use a provably random technique(*) to select 22 of their members to create the Go-Live Team. They then establish highly secure mutual VPN connections to help with resistance to DDOS and other attacks. They publish the list of their members, but not immediately.
- The EOS token distribution grace period ends at 22:00 UTC on 02-Jun-2018. At this moment, the EOS ERC-20 tokens can be frozen and an EOS.IO Software based blockchain containing an accurate snapshot of EOS beginning balances can be created.
- Once the Snapshot of beginning balances is taken and verified by 15 of the 22 members of the Go-Live Team (they publish this for external verification), they again use a provably random technique to select 1 of their members as the BIOS Boot node. This member now generates a new EOS keypair to be used solely for the BIOS Boot process.
Phase 1: BIOS Boot
- This one BIOS Boot node grabs the Genesis Block provided in the software distribution and bootstraps the chain:
- Builds the first new block;
- Installs the core operating contracts via a the system account that uses the newly created EOS keypair for the BIOS Boot;
- Installs a list of 21 Appointed Block Producers (ABPs) who will be charged with holding initial elections. This list consists of the other 21 members of the Go-Live Team;
- The BIOS Boot node assigns such system powers to the 21 ABPs as is necessary to hold initial elections, and no more; and
- finally he removes his own key from all system authorities. The BIOS Boot node should next publish his private BIOS Boot key (it’s now useless) so others can audit and re-create his work.
Phase 2: Appointed BPs
- The ABPs connect and validate the chain’s initial setup of system accounts and balances, and start making blocks. The BIOS Boot node then drops out and returns to the pool of BP Candidates. (The BIOS Boot node is ineligible for election until after 10 rounds of block production by Elected BPs.) Total elapsed time as a single node blockchain: less than 9 seconds. Once the 21 ABPs are visible and operating the chain, participants can connect.
- The remainder of the Go-Live Pool can connect and propose themselves as Candidate BPs for election.
- Token holders can connect and stake tokens for voting and cast votes on the election of BPs.
- The ABPs’ only job is to hold elections in which they themselves are ineligible, as is the BIOS BP. They replace themselves with 21 Elected BPs (EBPs). This election requires 21 EBPs to be created as a single group, to switch over to the now complete running chain, and will take some rounds to organise as the remaining BPs in the Go-Live Pool connect in. Other BP Candidates can also connect and place themselves into the running. (ABPs, like the BIOS Boot BP, are ineligible for election until 10 rounds of successful block production by 21 EBPs.)
Phase 3: Elected BPs
- The EBPs begin processing ‘normal’ transactions and holding the ongoing, once-per-round election for BPs that continues indefinitely, as part of the heartbeat of the blockchain. After 10 rounds, an EBP can be replaced by the former ABPs or the former BIOS BP, or any new contender, and some churn is expected over the first few hours and days as voters connect and cast initial votes.
Phase 4: Constitution Zero
At this point, we enter a new phase — the replacement of the default Constitution, numbered #0. This phase lasts longer:
- During this phase, proposed Constitutions are proposed by any holder of stake at any time to replace the default.
- Each proposed Constitution may be voted by all holders of stake according to the software algorithm in place at the time.
- A Constitution becomes Constitution #1 when it:
- reaches a plain majority (greater than 50% of active accounts on stake) and holds that for 15 days, OR,
- holds a leading position for 30 days.
Phase 5: Validation
Until validation, no tokens can be transferred between accounts and no block rewards can be paid. Validation occurs when
- accounts totaling 15% or more of the total EOS token balance connect to the network and perform a valid transaction. AND
- When a Constitution is selected as #1.
(*) the provably random selection method will be published later for audit.
block.one is a software company and is producing the EOS.IO software as free, open source software. This software may enable those who deploy it to launch a blockchain or decentralized applications with the features described above. block.one will not be launching a public blockchain based on the EOS.IO software. It will be the sole responsibility of third parties and the community and those who wish to become block producers to implement the features and/or provide the services described above as they see fit. block.one does not guarantee that anyone will implement such features or provide such services or that the EOS.IO software will be adopted and deployed in any way.
All statements in this document, other than statements of historical facts, including any statements regarding block.one’s business strategy, plans, prospects, developments and objectives are forward looking statements. These statements are only predictions and reflect block.one’s current beliefs and expectations with respect to future events and are based on assumptions and are subject to risk, uncertainties and change at any time. We operate in a rapidly changing environment. New risks emerge from time to time. Given these risks and uncertainties, you are cautioned not to rely on these forward-looking statements. Actual results, performance or events may differ materially from those contained in the forward-looking statements. Some of the factors that could cause actual results, performance or events to differ materially from the forward-looking statements contained herein include, without limitation: market volatility; continued availability of capital, financing and personnel; product acceptance; the commercial success of any new products or technologies; competition; government regulation and laws; and general economic, market or business conditions. Any forward-looking statement made by block.one speaks only as of the date on which it is made and block.one is under no obligation to, and expressly disclaims any obligation to, update or alter its forward-looking statements, whether as a result of new information, subsequent events or otherwise.