## 4 Implementation
### Smart Contract
An example of this process is presented in Figure 4. After verification of the game, the system operator is able to approve or reject the request (Figure 5). Then, feedback should be provided to a game developer with the decision and their game id. This process is intentionally kept manual to prevent abuse. It is worth mentioning that the admin key should be kept in secret. Once the request is approved, the local API is used to interact with the blockchain and register the game. Similarly, for the game developer, it would be risky to exposethe signing key to the public, so local API is used to register collections and generate boosters [35]. Figure 4: Example of registration process. The backend applications were written in the Rust programming language, which has great support in blockchain communities. It also effectively handles memory safety, which reduces potential attack vectors. This is important for applications handling critical information such as private keys. The blockchain interaction is simple, through the use of a foundry toolkit, which allows generating Rust bindings for smart contracts from contract ABI--an Application Binary Interface--generated from smart contract code, thus simplifying interaction. The interaction with the blockchain is performed through RPC (Remote Procedure Call) using JSON-RPC protocol [36]. Wide range of providers are available, it is also possible for anyone to run their own client to avoid external dependencies [37]. For the proof of concept, Infura was used as provider [38]. For game developers and admin backends, a limited amount of calls requiring blockchain interaction is needed as it is only called during the registration of the game or collection. Generating booster boxes is done locally by signing metadata to ensure scalability. ### Mobile Application

The mobile application was prepared to allow interaction with QR codes provided in the packs (Figure 6). Upon scanning the QR code, the contents are shown to the user, enabling that user to select the cards they want to mint. The user can also decide to transfer their token to prove their custody of their asset. It is using react native toolset--well known and easy to use. This way future extensions and modifications are simple both for users and game developers. Here again, contract ABI was used to simplify interaction, and Infura was chosen as the RPC provider. Scalability is also important for the mobile application because each user can redeem their boosters very often, possibly reaching hundreds or even thousands of calls per day. The application is just an example implementation. It is only required to make interaction easier for users, thus fulfilling the requirement regarding ease of use. The system is fully operational without it. Figure 5: Administrator view of the requests. Such application can be easily created using existing libraries and contract ABI. This proves two crucial characteristics of the protocol. The application does not require any game developer or system operator knowledge. Any user capable of writing code can create their own application to fully interact with the system. This enables users to continue to use the protocol even in the case when either the game developer or system operator goes down. Secondly, as the application lacks game developer controlled data, which proves that the cards are in fact fully owned by the players. This means that a wide range of supplementary applications can be created, ranging from management and trading applications to fan-made game modes. ## 5 Verification

With EVM-based smart contract at its core, providing expandable protocol--by leaving 160 bits of each token for developer use--results in the system being open and transparent. The code of the application deployed on the blockchain is always available to anyone. The interaction follows well-defined and widely adopted standards. This has been verified by confirming that one of the the biggest NFT marketplaces properly listing the tokens and allows management of them in the form of trading (Figure 7).