<aside> 🙂 Eternal Privacy Playgrounds
1 - Why your game needs hidden information
2 - An ontology of hidden information mechanics
3 - An ontology of trustless privacy techniques
4 - Knitting our ontologies together
</aside>
Now that we’ve covered the problem and solution vectors, we can start to build bridges between the crytographic toolbox and concrete hidden information mechanics.
Overall, there are two main approaches to implementing secrets on a blockchain:
In recent years, the former has received more attention than the latter, and consequently enjoys a clearer design space. For the latter, we will gesture at some possible answers and research directions, despite the enormous ambiguity of our problem. As we shall see, many implementations require a combination of both.
This is the simplest case, in which Alice’s stats (such as wealth) are concealed. In this case, Alice’s total wealth is stored locally, offchain. To gain entry to the in-world yacht club, Alice submits a proof to doorman Bob that her wealth falls above a particular threshold.
<aside> 🙂 To make the ZK proving system more programmable and generalisable, we could even implement simple ZKVMs, run clientside by Alice, to generate proofs on demand. In the past, we’ve called these specialised ZKVMs “battle servers” because of their ability to facilitate twitchy gameplay and hidden information.
</aside>
Much like private swaps between players, we have a rich toolbox of techniques inherited from DeFi, to implement secret social agreements between players. Whether it’s MACI for private voting, Semaphore for private group membership or just simple commit-reveal and ZK schemes to prove secrets, the scope for hidden group coordination mechanics is relatively well-understood.
Now onto the juicy stuff. Fog of war is the canonical example of implementing secrets baked into the shared world.
Dark Forest made significant progress in this regard. In Dark Forest, the map is procedurally generated by players exploring the map. Players identify hashes for each coordinate on a 2D plane, and if the hash has particular properties, the “discovered” / generated terrain also takes on particular properties, according to some probability distribution. For example, if the hash falls within a particular range, we might discover (generate) a particularly rare planet.