How It Works
In a nutshell DRM Mina uses a authorization system that challenges the users to prove that they have the right to play the game by changing a Mina state that only the a previously registered device can change. This is done by using zk-proofs of Mina.
DRM Mina contains 2 main contracts:
-
GameToken - This contract allow creators to publish their games, customize them and controls the sales of games.
-
DRM - This contract keep device information (their hash of course just for verify proofs) of users that have bought game, and their device's last session informations.
And some other zkPrograms:
-
DeviceSession - This program is used to create a one time session for a device to play a game. Takes device informations as private inputs and sessionIds as public inputs. Creates a proof for changing the last session of the device to the new session determined by the game itself.
-
DeviceIdentifier - This program is used to create a proof for a device to be registered. Takes device informations as private input, runs some checks and creates a proof for the device to be registered to the DRM contract.
-
BundledDeviceSession - This program is used to create a proof that settles at most 4 device sessions at once. Takes 1 device session proof and recursively creates a proof that can be settled to the DRM contract.