On June 30th, the first Kava testnet launched with the participation of over 60 validators from around the world. Block production began shortly after the targeted time of 18:00 UTC and has continued steadily. We owe a massive thanks to our validator community for the support they provided to other validators and their coordination in getting the testnet started promptly, including working in the middle of the night and setting up a community block explorer.
Kava Testnet 1.0 Issue
Shortly after launch we heard from validators looking to join the testnet that their bonding transactions seemed to be failing silently. Additionally, validators who had been jailed reported that their attempts to rejoin the network were also failing without obvious error. We tracked down the issue and confirmed that the cosmos-sdk does not by default handle bonding transactions for less than 1000000 units.
Since open participation and community building are primary goals for the first Kava testnet, we are asking our community to support us in launching Kava Testnet 1.1. This will allow users looking to earn Founders Badges to participate and avoid the unbonding/unjailing issues we saw previously.
Kava Testnet 1.1 Details
The testnet will launch on Friday July 5th at 23:00 UTC. We will close genesis transaction submissions 24 hours prior on Thursday July 4th at 23:00 UTC and post the proposed genesis file shortly thereafter.
To ensure a smoother launch experience, some validators that were fully operational at 1.0 genesis time will be given an increased voting power. This will make it more likely that the chain starts immediately, in consideration of those who are working early/late.
Kava Testnet 1.0 Issue Explained
Unit Conversion Strikes Again!
Kava was launched with a base unit of 10^-1 and each validator started with 1M KAVA. Soon after launch, there were issues with validators un-jailing themselves and creating new validators. This was traced to a nuance in the default behavior of the cosmos sdk where coins are converted to a voting power before being passed to tendermint. The default conversion is to divide by 10⁶ and truncate to an integer. So validators with less than 1M KAVA could be created, but would not become bonded and participate in consensus. Similarly any validator who was slashed early on for downtime ended up with less than 1M tokens, so while technically able to unjail themselves, they ended up with a voting power of 0 and did not become bonded.
Testnet 1.1 will be using the base unit scale intended for mainnet: 10^–6. This keeps parity with the Hub and existing tooling. In Kava Labs’ previous work with Switch, we dealt with a lot of ERC-20s and in Ethereum land a best practice emerged of creating a base unit in parity with Ethereum (10^–18). We spent many long nights dealing with ERC-20s that did not conform to this standard. Similar with Cosmos it will likely be a standard that chains denominate in 10^–6, which in our opinion is a sensible default compared to 10^–18 (that’s a reeally small number, that most libraries don’t cover).
While a minor bump in Kava’s voyage to mainnet launch, an issue was created and the Tendermint team is keen on better communication of these defaults. This is the type of progress and smoothing out that we love to see in growing communities!
… see you all at launch!