Skip to main content

CosmWasm and Rollmint

CosmWasm is a smart contracting platform built for the Cosmos ecosystem by making use of WebAssembly (Wasm) to build smart contracts for Cosmos-SDK. In this tutorial, we will be exploring how to integrate CosmWasm with Celestia's Data Availability Layer using Rollmint.

NOTE: This tutorial will explore developing with Rollmint, which is still in Alpha stage. If you run into bugs, please write a Github Issue ticket or let us know in our Discord. Furthermore, while Rollmint allows you to build sovereign rollups on Celestia, it currently does not support fraud proofs yet and is therefore running in "pessimistic" mode, where nodes would need to re-execute the transactions to check the validity of the chain (i.e. a full node). Furthermore, Rollmint currently only supports a single sequencer.


The script for this tutorial is built for Mocha Testnet. If you choose to use Arabica Devnet, you will need to modify the script manually.

You can learn more about CosmWasm here.

In this tutorial, we will going over the following:

  1. Setting up your dependencies for your CosmWasm smart contracts
  2. Setting up Rollmint on CosmWasm
  3. Instantiate a local network for your CosmWasm chain connected to Celestia
  4. Deploying a Rust smart contract to CosmWasm chain
  5. Interacting with the smart contract

The smart contract we will use for this tutorial is one provided by the CosmWasm team for Nameservice purchasing.

You can check out the contract here.

How to write the Rust smart contract for Nameservice is outside the scope of this tutorial. In the future we will add more tutorials for writing CosmWasm smart contracts for Celestia.