1. Clone the eos-bios repo
2. Download the latest eos-bios release
OR build from source:
go get -u -v github.com/eoscanada/eos-bios/eos-bios
Provide them with your desired 12 character account name and public key. They will run
eos-bios invite YOUR_ACCOUNT_NAME YOUR_PUBKEY
Copy the sample_config
folder to a folder named stageX
where X is the stage number we are launching. Edit my_discovery_file.yaml
:
seed_network_account_name
, make it match what you provided for an invite.seed_network_http_address
, this should be the address of the seed network you want to orchestrate from.seed_network_peers
this one warrants its own section.target_http_address
is the address foreos-bios
to reach your nodetarget_p2p_address
is a publicly reachable address advertised to mesh the networktarget_account_name
,target_appointed_block_producer_signing_key
,target_initial_authority
: the values you want to use on the target networktarget_contents
are all the pieces of content we need to agree on that will make it into the chain, like system contracts, ERC-20 snapshots, etc.. You will see consensus achieved with the members on your first orchestration. Use the sample_config values for now.
This file should contain the private key(s) to control your seed network account
eos-bios publish
The sample config gives you Docker hooks. You can use systemd or Kubernetes!
In hook_join_network.sh
you need to add your public and private keys
Run
eos-bios orchestrate
and wait for the boot to happen!
Run one of the following commands:
eos-bios discover
eos-bios list
eos-bios discover --serve
The seed_network_peers
section of your discovery file looks like this:
seed_network_peers:
- account: eosexample
comment: "They are good"
weight: 10 # Weights are between 0 and 100 (INT value)
- account: eosmore
comment: "They are better"
weight: 20
This means you are comfortable launching the network with both
eosexample
(at 10% vote weight), and eosmore
(at 20%). eos-bios
will compute a graph of the network based on that peering information.
These are all account names on the seed network used to boot a new network.
-
Do they fully understand the boot sequence ? Do they understand all actions that need to be processed in order to have a chain that qualifies as mainnet. (they decide on boot_sequence.yaml)
-
Can they compile system contracts and compare their source code, making sure that the proposed contracts are legit, do not contain rogue code, etc.. (they decide on target_contents)
-
Do they understand how to make sure the snapshot.csv is valid, up-to-date and reflect the last Ethereum snapshot ? (they decide on snapshot.csv)
-
Can they properly boot the network and have they practiced being the BIOS Boot node.
-
Can they properly boot a node and mesh into the network, have they practiced
join
?
The reason for those is because of the design of eos-bios
.. votes
determine who gets which role, and based on the role you have, you
have critical decisions to make and the community relies on you for
the critical things, in the order above.