Running WasmVM Without CometBFT

Hello Cosmos community,

I am exploring the possibility of running WasmVM without relying on Cosmos’ default consensus engine, CometBFT. Instead, I want to integrate it with a different consensus mechanism. I have a few questions regarding the structural requirements and design implications for this setup:

  1. Transaction Structure:
  • What would be the recommended format for transactions in such a setup?
  • Are there any specific fields in the Cosmos SDK transaction structure that are tightly coupled to CometBFT and need to be redefined for a custom consensus?
  1. Block Structure:
  • How should the block structure be designed when decoupling from CometBFT?
  • Are there essential fields or metadata required for compatibility with WasmVM?
  1. Account Structure:
  • Is it possible to use a custom account model? If yes, what constraints does WasmVM impose on account structure?
  1. Consensus Integration:
  • What are the key considerations when integrating WasmVM with an alternative consensus mechanism?
  • Are there any existing examples or projects that have implemented WasmVM with a non-CometBFT consensus engine?

I aim to understand how much flexibility WasmVM offers in these areas and what changes are required to make it work with a non-CometBFT consensus system.

I’d greatly appreciate insights, references to documentation, or guidance from those who might have explored similar use cases.

3 Likes

I would recommend talking to composable. I think that they made it possible to run CW contracts on polkadot.

1 Like

The primary way to use the CosmWasm VM is through the x/wasm module in wasmd. This connects the contracts with a Cosmos SDK based application and IBC.

If you have a Cosmos SDK based setup then swapping out consensus should not be a big deal. I heard rumors of folks using Rollkit instead. The only thing that CosmWasm contracts see from CometBFT is the block time.

If you want to build without Cosmos SDK than that is a different story. A few forks built chains with CosmWasm entirely in Rust without Cosmos SDK. But none of that is actively maintained as far as I can tell. This path raises the whole question of transaction formats and client compatibility.

3 Likes

Landslide has developed their implementation on top of Avalanche core while adding ComsWasm and IBC support to the chain.

1 Like

And guess which protocol is going to launch on Landslide :wink:

3 Likes