Skip to main content

How existing CW projects can deploy on the ccw-vm

This section explains how CosmWasm developers can test their contracts on the ccw-vm. Generally, the entire codebase of a CosmWasm project can be compiled and uploaded to the ccw-vm on Picasso. However, there is a minor difference between ccw-vm and the Cosmos chains' VM which is the data field of the Response type. Normally, it should be up to the users to use this data field and format it however they want. But currently in Cosmos chains, after the instantiation of the contract, the data field is formatted with protobuf and the SDK adds the instantiated contract's address in that field. The ccw-vm leaves this field up to the user and doesn't touch it at all.

Some contracts make use of this field, for example; contract A might instantiate an instance from contract B and can use the data field to read the address that is instantiated. However, ccw-vm does not interfere with the data field, so any contract that tries to read the contract address from this data field will fail. Instead of reading the address from the data field, contracts can read this address from the emitted events. A default instantiate event with the contract_address attribute key is emitted on every instantiate call.

Developers can test the deployment of their projects on Picasso through a standard Command Line Interface (CLI) that interacts with Pallet CosmWasm. At Composable, we utilize Nix to reproducibly build all necessary packages. To get started testing out CW contracts on the ccw-vm, check out our guide here.