Secret governance module

In addition to collaborating with the CosmWasm team, we have been exploring ways to contribute within the Cosmos ecosystem. One particularly exciting opportunity involves extending the gov module to enable privacy-preserving voting for on-chain governance. As we’ve covered before, secret ballots are essential. Voter anonymity is essential to guard against coercion because if participants are able to prove who they voted for, then bribery can be contractual.

Based on our discussion with @assaf, this could work in two possible ways:

  1. Other zones could issue transactions to our chain via IBC
  2. Other zones could fork our gov module (similar to how our team forked CosmWasm) to their chains and have built-in secret voting

Unrelated to secret contracts, this module (secret governance) can be implemented by any Cosmos SDK blockchain that operates nodes with Intel SGX or has an IBC connection to the Enigma Network.

Approaches:

  1. We could fork the gov module from cosmos-sdk and use our new enclave lib to run computations
  2. We could implement a new proposal handler for secret voting (while using our new enclave lib to run computations) and register it with the existing gov module - this is probably the best way

Over time, we may contribute several different modules, beginning with our compute module that enables privacy-preserving smart contracts. This can either be achieved by running multiple modules in the same SGX enclave or assigning a new enclave for each module. In other words, the node will load an enclave (similar to a library) for secret contracts, a different enclave for secret voting and other modules, such as secret account and payments (extending the auth and bank modules to use SGX).

6 Likes

This is indeed a very exciting potential development. We would need to weigh the pros and cons of implementing it as a module. I expect that would require A LOT more work, compared to implementing this logic as a secret contract in the WASM layer.

1 Like