# Digital Management of Competencies in Web 3.0: The C-Box(r) Approach
## 3 The C-Box(r) Platform
### Business Logic
#### 3.3.3 Creation and Verification Workflows  
Figure 8 shows the process by which an Issuer can issue Verifiable Credentials with the C-Box application. * The Issuer user issues a digital badge to multiple users from the dedicated page of the platform **(1)** in the case of a human user issuing the badge manually, or by using the C-Box(r) API services in the case of a third-party application integrated with C-Box(r). * Following the usual authentication and validation checks **(2)**, the Assertion Service handles all release procedures **(3)**, including the creation and saving of images in the blob repository **(4)** and saving the related data in the database **(5)**. * The Verifiable Credentials release procedure is carried out by the Blockchain Service **(6)**: that is, the C-Box(r) module provides access to all the functions belonging to the  
Figure 8: Creation of verifiable credentials in C-Box®. Figure 7: Confirmation from the smart contract. blockchain, such as the smart contract, which first retrieves the DID files of the learners **(7)** saved in the Database. * Now, the Blockchain Service can query the relevant issuer node and create the VC through the CreateClaim API, specifying the learner's DID, the reference scheme, and the information related to the certification to be issued **(8)**. * The issuer node adds this information to its storage system **(9)**. * Once the claims have been added for all learners, the Blockchain Service takes care of saving the addition of the new claims in the blockchain **(10)**. * \"Publish Identity State\" is an API of the Issuer node that retrieves the current state of the database in which the clear information has been saved. Using an algorithm that employs merkle tree roots, the storage system obtains a string describing the current state of the issuer node's storage system. This string is saved on a dedicated smart contract **(11-13)** specifying the previous and current states of the issuer node. This asynchronous blockchain publishing procedure minimizes the number of transactions made on Polygon, thus avoiding excessive and unnecessary gas consumption in Polygon. Figure 9 describes the process by which a verifier can request a user (holder) to prove possession of a particular certification. Before our re-engineering effort, in C-Box(r), the verification of the validity of a competence was carried out through the consultation of badges that attest to the competencies held by the badge holder whose skills one wants to verify. Polygon Id changes this process: verifiers can set up queries based on claims mapped by Open Badges issued by a set of issuers. The query encapsulates the criteria that a user must meet in order to meet the requirements of the verifier and can include multiple requirements. As shown in Figure 10, the verifier request is encapsulated in a QR code (generate zk request) and is shown to the user. The user scans the QR code with his/her wallet application to generate a ZKP. Note that the verification process does not involve any interaction between the verifier and the issuer that issued the claim but is a simple query to the verifiable data registry (Polygon) that verifies that the verifiable credentials that certify compliance with the required criteria are valid and not revoked. The Verifier thus obtains cryptographic proof that the user fulfils the requests without the user having to share additional information beyond that requested. Back to Figure 9, a verifier user can decide to set up a check based on verifiable credentials using either an SDK provided by Polygon Id or directly from the C-Box portal. Figure 9: Verification of verifiable credentials in C-Box®. * The verifier first chooses the type of credential to check, creating the request based on a specific credential schema. He then advance a \"VC verification request\" to the web application **(1)**. * The blockchain service translates the request into a query and generates a URI **(2)** from which a QR code is produced **(3)** and displayed on the screen **(4)**.