300 days of development, 2 public testnets, and 1.0 release of CosmWasm
At the end of July, we cut the 0.10 release of wasmd, which built on the nearly complete 0.9 release and added support for permissioned deployments of CosmWasm, as well as fixing some attack vectors where contracts could use too much gas. This means we are feature complete for the 1.0 release, focusing only polishing the code and any needed bugfixes. Welcome news for the projects looking to launch with the CosmWasm module later this year.
There is a technical-oriented overview of the governance proposals for those who wish to dive into the details, but the short is if you configure your chain as a permissioned system, you need a on-chain governance vote to upload code (generic token contract) and another to instatiate it (create one specific token). Execution is permissionless, but the on-chain governance holds the right to migrate your contract, which would replace the running code with other code (fixing bugs or bricking it). It also allows the on-chain governance to delegate powers like instantiate and migrate to multisigs of some specialists on a contract-by-contract basis. By default this is all disabled and we provide a permissionless environment. The actual controls enabled can be set up via build flags and genesis config options.
Much thanks to Reuven from Secret Network for reporting some errors in how we handled gas on contract to contract queries, and inventing an infinite query loop attack that could burn 10–100x the gas limit before stopping. Thanks to his reporting, these issues have now been fixed in 0.10 and the bar is even higher for bug hunters out there.
To share this release with the world and run it through the paces in an open environment, we are planning two public testnets in August running this code. Regen ran a public testnet with the 0.7 version in March and April with over 70 validators and no significant issues. This time, we will be launching the testnets ourselves to get even more feedback and watch for subtle issues.
On August 11th, we will start coralnet, a permissionless network that we invite all aspiring CosmWasm developers to upload contracts to, see what they can build, and maybe see what they can break. We would love to see all projects planning to run on CosmWasm (or considering it) to join this network.
This is designed to be a place to learn and experiment. Not just for running dApps, but also for running validators, connecting block explorers and wallets, and experimenting with new CosmWasm-specific visualization tools. Everyone is encouraged to join in and bring their own ideas.
The governance work included in the 0.10 release was built for the Cosmos Hub Proposal 25, and the final deliverable is a permissioned testnet, where Cosmos Hub validators can control which contracts can be uploaded and instantiated on the network. Importantly, there is a master switch to fix or kill and broken contract.
On August 18th, we will launch gaiaflex, a permissioned network, much like coralnet, but configured such that the on-chain governance must approve all contracts uploaded and instantiated (but not their execution). This will look like many other gaia testnets (cosmos prefix, muons, etc) and will be open to all Cosmos Hub token holders who voted on that proposal (we give voting addresses testnet tokens in genesis). In fact the binary is very much like gaia, except updated to launchpad and with the CosmWasm module added.
We’d love to see you join the testnets. To help you out, we have prepared some documentation to help you set up your node. If you want to join coralnet, please follow these instructions to get some staking tokens in the genesis file. For gaiaflex, just check if you voted on Proposal 25 and set up a node, you will be included. You can view the (in progress) genesis info in our new testnets repo.
Note that for sake of simplicity will be doing “centralized starts” on both networks, that means we will start with one node run by CosmWasm, but hope that soon many other nodes from the community join in and take over the majority of the voting power of the network. It means you don’t have to be ready at the minute we start, but can jump when you can during the first day or two, until we arrive at a stable network.
For Web Developers
If you built a wallet or a block explorer, and it works on Launchpad (Cosmos SDK 0.39), then it should work on both our testnets without modifications. We would be happy to work with you to deploy this on one or both of our public testnets, and give you advice and assistance on any ways you could add CosmWasm enhancements to it, like handling governance proposals related to CosmWasm or properly displaying transactions executing smart contracts.