Today we launched Althea Testnet #1 with more than twenty validators!
A big thank you to everyone who participated and took the time to setup a node. We're looking forward to a bright future for the Althea blockchain when it's launched next month.
Our goal is to keep this testnet running through multiple upgrades and code changes, all the way through to the Althea Gravity Incentivized Testnet, which will be our last testnet before the launch of the Althea chain. Anyone is welcome to join at any time, simply follow the instructions at github.com/althea-net/althea-chain.
Testing results: Day 0
Our first day of testing revealed several issues. Mainly around how validator set updates are generated and signed.
Validator set updates are messages that go from Cosmos -> Ethereum to synchronize the validator set in the Gravity Ethereum contract with the changing validator set.
The Gravity module on the Cosmos side of the bridge will automatically generate a new update every time the validator set power changes more than 1%.
In our small scale testing this worked perfectly. But as more than 25 validators joined the set validator set updates started being generated every block.
These extra validator sets are obviously not required, since actual voting power isn't changing. But due to rounding errors involving validator rewards the condition was always tripped.
Gravity orchestrators, run by the validators. Are responsible for signing these validator set updates and then relaying them to Ethereum. Due to a design oversight the orchestrator process could only sign updates at a maximum speed of one per block.
If validator sets are generated at a rate of once per block and can only be signed at a rate of once per block, falling behind is just a matter of time.
One of our testing goals for testnet1 is to check that Gravity slashing works. One of Gravity's slashing conditions is to slash a validator who has left a validator set update unsigned for more than 16 hours.
Since no one's orchestraor could keep up 16 hours after launch everyone was slashed and the chain halted.
This is obviously really valuable testing. Informing us of both implemetnation problems and a minor design issue.
- we have re-architected the validator set update signature system to handle up to 100 signatures per block. Allowing validators to easily catch up and keep up.
- we have tweaked the validator set generation condition not to produce spurious validator sets. This fix will need to be revisted in greater detail
Other fixes from day one
- Properly play back interleaved events in order: If a deposit and a withdraw occur in the same block they where not brought back to the Cosmos chain in the correct order by the oracle.
- Delegate Ethereum and Cosmos keys where not saved and loaded from the genesis file along with the rest of the Gravity state
- Handle a condtion where event nonces could get out of sync due to an improper state lookup
- Two or three obscure crashing condtions are now handled
Now that have these issues fixed we can move on to setting up niceties like a block explorer and web wallets.
Exciting things are coming to the Althea testnet in the next few weeks. Including the first Gravity tokens sent over IBC and the first Cosmos based asset to ever set foot on Ethereum!
Learn more about Gravity here - https://github.com/althea-net/althea-chain
Chat - https://discord.gg/CjJwMJdb