Trusting Clients in Client/Server Model

  1. In a world where we cannot trust our clients, should the server be the adjudicator for game logic – such as, a client requests to cast a spell -> the server determines whether or not that is possible given the server’s mana value of that player?

  2. Are there security layers that can be implemented to make #1 possible; such that a client may be trusted with game data that would be fatal if tampered with?

Thank you.