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:
- Other zones could issue transactions to our chain via IBC
- 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:
- We could fork the gov module from cosmos-sdk and use our new enclave lib to run computations
- 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).