- All of available cards in the system have the same unique identifier.
- Each player start with main deck and extra deck consist of the cards choosed from their available cards. Each player must be able to prove their available cards to other players in some ways (blockchain, etc.).
- Each player generate encryption keys for each card they has in their decks.
- Each player send their decks to the opponent with identifier of each card is encrypted.
- When a player draw a card from their deck they will ask the opponent to send a card to them. The cards to send is depend on draw type.
- If it is normal draw from main deck, the opponent will choose a random card to send unless the player is already known what cards are on the top of their deck (e.g. the cards was returned from field to the deck). In that case, the opponent will send a card that expected by player.
- If it is a draw for a specific card, the player will send an encrypted identifier of a card they want to the opponent alongside with encryption key for that card. Then the opponent will find that card in player's decks and decrypt it's identifier to see what is that card before send it to the player.
- When player want to summon monster or activate spell card from their hand they will put that card in the field alongside encryption key to allow the opponent to decrypt that card.
- When player want to set a card they will encrypt card's identifier with a new generated key before set it to the field.
- When a player want to activate a card that was set in the field they will send two decryption keys to the opponent. One is a key to decrypt data when player set a card and another one is a key to decrypt card's identifier. If that card is already decrypted in some cases on 3.1 the player will send only one key.
- TODO