Note: Gaia-8000 failed immediately. We are now on Gaia-8001, using SDK v0.24.1.

Dear Cosmonauts,

Today marks the release of the Cosmos-SDK v0.24.0, and the associated Gaia-8000 testnet. While past testnets have focused on new features, development for Gaia-8000 was motivated primarily by stability concerns.

As we saw in the Gaia-7000 series, sanity checks in the software have been catching a considerable number of bugs in the state machine. Each time they do, the software crashes (on purpose) and the testnet halts. But that’s no match for the Cosmos community: in every case the community of nodes and validators was able to quickly dump the latest state and restart the testnet with an incremented version. Bravo!

In the meantime, the development team has been focused on hunting down, understanding, and fixing the bugs. In particular, a simulation framework was built for testing diverse sequences of transactions that has since caught many more bugs, all of which have been fixed. It’s been a great team effort and a considerable boost to the software’s robustness.

You can find much more detail, including full post-mortems and links to github issues and pull-requests, in the forum.

Note: Gaia-8000 is not the adversarial testnet for the Game of Steaks.

Ever since Game of Steaks was announced, we’ve seen a flurry of new validator candidates flock to the testnets. Today, we are well above the 100 validator limit, and are seeing increasing maturity in validator configuration. There is palpable excitement over just how *cool* all of this is. More details on Game of Steaks coming soon.

Cosmos-SDK v0.24.0: Summary of Changes.

Aside from the many bug-fixes and stability improvements, v0.24.0 includes many other improvements and a few new features, as outlined below. See the changelog for complete details.

Gaia Features

The primary new feature in the state-machine is that validators will now be slashed for not voting on governance proposals. So vote or die!

UX Improvements

A variety of CLI flags have changed in order to be more clear and consistent. For instance:

The REST API was also refactored to become more, well, REST-ful:

SDK Core

CheckTx no longer runs the handler, just the ante handler. So it should check signatures and deduct fees, but it won’t do full message processing. This should clarify the intended usage of CheckTx.

Some additional refactoring was done to improve the APIs, for instance:

A new kind of store was added, called a *transient store*, for operations that don’t need to be persisted between blocks (just between transactions).

Tendermint Improvements

Tendermint should find peers sooner:

and it should sync up faster:

Randomized testing (simulation framework)

Chris wrote a simulation framework that’s helped catch many more bugs:

The simulator can be used by any developer building and testing applications with the Cosmos-SDK, and should help significantly improve the robustness of, and confidence in, Cosmos-SDK applications.

In Closing

The state-machine of the Cosmos Hub, with in-protocol delegation, has turned out to be quite complex. Delegation is designed to be lazy and efficient, and this has come with a lot of edge cases around validator set rotation, re-delegation, auto-unbonding, slashing, and so on.

Dealing with this complexity will require ongoing efforts to simplify where possible, improve the specification, and make extensive use of the simulation framework to catch bugs before they even hit the testnet. We are also beginning a code and security audit process and will soon expand the scope of the Tendermint bug-bounty to include the Cosmos-SDK.

Now that the state-machine is nearly feature complete, the primary concern as we approach launch is greater robustness and stability. When we can launch several testnets with the final new features without any bugs — consistently — that’s a pretty good indicator that we’re ready for mainnet. We’re not there yet, but we’ll see what Gaia-8000 has in store.

Up, up, and away!

Your Fellow Cosmonauts

Be up to date on the latest in testnet