Intro
IQC is an Italian company based in Bologna.
IQC is a leadong provider of consulting services focused on supporting companies to improve processes, products and skills in order to bring them to achieve best performance. IQC is able to realize it thanks to innovative tools like Digital Badge and Performance Digital Tracebility. The value of IQC is based on the long experience of its founding partners that have supported several organizations in their knowledge-enhancement fostering italian know-how in the domestic and foreign markets.
The time of Industry 4.0 and human capital Big Data, IQC proposes the use of the Digital IQC Badge, an innovative tool providing a digital representation of the performance of organizations, processes/services and products as well as a wide ranging view of the skills and competences of workers.
As you can read in the official site “Open Badges” are verifiable, portable digital badges with embedded metadata about skills and achievements They comply with the Open Badges Specification and are shareable across the web. the badge, its recipient, the issuer, and any supporting evidence All the information can be viewed in the form of a badge. Specification, from non-profits to major employers“.
Badges that are issued by IQC (or by companies in agreement with IQC) are acquired as a result of gains of skills of any kind and then used by their owners to demonstrate what has been acquired. In order to give added value to the information contained in the badge itself, it was decided to insert the badge into a Blockchain to seal the information contained in the badge and make the badge no longer modifiable.
Architecture
We have chosen to use the Azure Workbench Blockchain infrastructure made available by Microsoft as a Cloud service. The scheme is this:
- Through the CBOX portal at http: http: //www.iqcbox.com/, you authenticate yourself as a issuer and issue badges after someone obtains certain skills
- The badge is managed and stored by the internal structures of the CBOX application
- At the same time a request is made to a gateway (Web App) for the insertion of the badge inside the blockchain
- The Badge is inserted in the Blockchain Workbench Azure
- Through the same gateway you can check the information entered in the Blockchain simply by providing the Badge ID
Workbench Workflow
As we have already investigated in my previous post the Azure Blockchain behaves like a finite states machine where there is a workflow of a contract that goes from one state to another. This flow represents the life cycle of the contract from when it is created until it reaches a state of success or possibly a state of error. In our case the workflow relates to a single contract called BadgeV2 which has a diagram of this type:
We have chosen to enter an additional transaction in the status of Issued to allow a issuer to invalidate (for any reason) a badge once issued. This operation can be done by Issuer himself who issued the badge.
Check a Badge
To check the presence of your badge, simply enter a URL that points to the Gateway application with a querystring containing the ID of the Badge to be checked or by clicking on the link in the CBOX portal where I can see all the badges issued in my name as shown
or connect to the search page and manually enter the ID in the textbox as shown in the figure:
Technically, we have taken advantage of the possibility offered by Azure Workbench Blockchain which offers access to an off-chain DB that is kept in sync with the information inside the Azure Ethereum nodes. This feature allows us to perform queries using EntityFramework without having to use the Rest API as described in the previous post. During the creation of the distribution, the Sql Off-Chain Synchronization Server DB is created with a series of already predefined Tables and Views. However, if we use (as we did in the Web App Gateway) EntityFramework Core is not possible access to the views (at least for now and without making strange tours), so we had to rewrite all the Lambda expression to access the properties of the contract corresponding to the issued badge.
The result of the query is the summary found in the blockchain done like this: