After a little chaos, Kusama is ready for the next chapter: CC-3 and at long last the governance handover.
On the face of it Kusama has had probably a little less chaos than some might have been led to expect from the network which self-avowedly come into with world promising nothing but. Despite growing to be operated by 150 validators, the vast majority of which are volunteers far and wide from the community, it has, broadly speaking, remained stable. The glitches have appeared relatively minor (like finality — but not block production — halting for several hours) and temporary (like block production halting for a few minutes every several hours in recent times).
That all said, it has been instrumental in uncovering a small number of rather important issues which otherwise might have gone unnoticed: complex, dynamic systems such as Polkadot, and especially those which introduce multiple bleeding edge or research-laden technologies, will sometimes have emergent effects that are difficult to predict ahead of time. In the course of Kusama, several bugs were found and fixed, one of which was “baked in” to the underlying meta-protocol environment that Substrate provides, making it a something that could only be fixed with either a hard-fork (i.e. an abrupt change in the underlying protocol) or hard-spoon (i.e. a chain-restart with a new, fixed protocol and the old transactions/state).
In addition to the fixed issues a number of additional features have been implemented during the course of Kusama CC-2 that can be integrated much more easily with a fresh chain. These include:
- On-chain authority discovery, allowing for authority nodes or their publicly contactable representatives to be discovered and connected to. This is the first step towards a much more directed and coherent network overlay allowing for much more efficient topology of nodes.
- A move from bare, to prefixed, storage mappings. Previously items that formed the key/value pairs of maps in a pallet’s on-chain storage were indexed in the Merkle trie using a blob derived opaquely from the combination of the key and mapping name. This meant that they could not be efficiently enumerated en-masse. Now, the items of mappings will be prefixed with their storage item’s name, allowing for, amongst many other things, easy migration and removal.
- A revamp of the NPoS system, including the ability for the council to easily repatriate slashed funds to stakers in the case of a known issue where there was neither malicious intent nor gross incompetence.
A such, we will be transitioning from Kusama CC-2 on to a new underlying chain, Kusama CC-3. To minimise disruption, we’ll be moving most of the state/transactional history over from CC-2 to CC-3. We’ll be resetting the number of validators down from 150 to something more sensible given that we know not all of them will make the upgrade on time. And since we really want to begin testing the social elements of Polkadot/Kusama, we will be unleashing governance and removing the get out of jail free card that is Sudo.
Unless we encounter any major roadblocks, this will all happen in the next few days, with tomorrow (my time 😜) bringing the move from CC-2 to CC-3, and the move to decentralised governance completed by the end of the weekend.
This afternoon has seen the release of the final CC-2 update, v0.6.18. This fixes a number of known issues with consensus, network usage and synchronisation and also introduces some nice analytic features such as Grafana integration and profiling. All nodes, and especially validators, are encouraged to upgrade to help test the new logic.
Tonight (27th November) we will be preparing the new release v0.7.0 “Kusama CC-3” which includes the final alterations in logic and the other changes we need to see in the genesis block. We will also be updating our transaction-scraping and injection script ready for the spoon and making operational preparations for the new validator network.
On the morning of the 28th, we intend to provision boot nodes and start the CC-3 chain (in PoA mode as normal). We will then release v0.7.0, allowing everyone who wants to to connect to the latest Kusama. At this point, we will also halt the CC-2 chain with a final Sudo.
Once halted (and therefore no new transactions can arrive), we will scrape and inject everyone’s CC-2 transactions in the fresh CC-3 chain. Finally, we will enable era rotations and the transition to NPoS from PoA should happen by the end of Thursday. We will increase the validator counts modestly, but hope to have between 25 and 50 by the end of the day.
Kusama CC-3 will begin with full decentralised governance enabled (by no balance transfers). Balance transfers will be enabled just as soon as the Kusama stakeholding community decide to enable them. Sudo will be removed upon the first successful community-delivered upgrade.
For more information on Kusama, visit its website, use the network with Polkadot JS, see the code at the Polkadot Github repository, view the v0.6.18 release notes, or see the network in action over the telemetry service.