I am looking for suggestions or references on how to build proper trustlessness and provability into my DApps. These are DApp distinctives, but I find that thinking this through is like peeling back an onion.
What factors must be taken into account, and are there any factors that do not necessarily have to be addressed to be a credible DApp? Is provability accomplished just by the fact that the code is visible in the block chain using tools like ether.camp, or should a developer make more demonstrable provisions?
For example, I am contemplating a game contract that can be instantiated by human sponsors in the wild. Once launched, a new player of a given game instance would provide an entrance fee and compete for prizes. I presume the following must be clear:
- How funds are trustlessly held and disbursed by code.
- That game rules and play elements are contractually controlled.
- That all parameters a sponsor can configure are visible along with how they are set for a given game instance.
But how are things like the following ‘proven’ to be sufficiently ‘trustless’:
- That a ‘bad actor’ sponsor cannot exploit a game instance somehow, say exploiting aggregated player data that might not visible to players.
- That game physics/computations are true and unexploitable.
- That the base contract code is beyond manipulation by a sponsor or the original writer.
To summarize, what factors, principles, or references can anyone suggest for helping with good DApp design in the area of acceptable trustlessness and provability?