ADD: Churn in Service Nodes
Current: The blockchain is stuck with 1 Service Node
Desired: Potential Service Nodes can apply to be whitelisted and be churned into consensus.
Phase 1 - Build
Clone and build ssd sscli bnbcli tsscli
- Load offline Admin
bnbkey
Phase 2 - Key-Gen
Generate keys:
- Observer
bepkey - Validator
bepvkey - Signer
bnbkey
Phase 3 - Application
Apply for whitelisting from existing Service Nodes of:
- Observer
bepaccount - Validator
bepvaccount - Signer
bnbaccount - Admin
bnbaccount
Suggest: Potential Service Node does it via 3 pool transactions from their potential Admin account:
APPLY:O:bepxxxxxAPPLY:V:bepvxxxxxAPPLY:S:bnbxxxxx
Phase 4 - Whitelisting
All existing Service Nodes get notified and decided to approve each key, identified via the admin key:
WL:O:bepxxxxx:bnbadminxxxWL:V:bepvxxxxx:bnbadminxxxWL:S:bnbxxxxx:bnbadminxxx
KVStore counts votes and stores the key-set for the new Service Node.
Phase 4 - Churning
At a pre-determined blocktime (suggest once a week on a Wednesday), then the protocol does the following:
-
New Service Node signer proves ownership of whitelisted signer key
-
All nodes then participate in MPC key-gen
-
Final pool address is outputted.
-
All nodes send a POOL tx from their signer key:
POOL:bnbpooladdr -
Once new Pool Address has been accepted into the statechain with 100% votes from existing committee then:
Statechain allows:
- Additional Observer
- Additional Validator
- Additional Signer
Statechain then:
- Transfers all assets from old pool to new pool
- Reconciles user-transactions