Skip to content

Haarlem/digitale-waardepapieren

Repository files navigation

IOTA Verifiable Claims Proof of Concept

Status: 👩‍🔬 Proof of Concept

This project is an example of how to use the IOTA tangle with Discipl library to publish digital verifiable claims. These digital certificates replace the certificates the City of Haarlem has to print on expensive forge-proof paper. Thus increasing the speed and decreasing the cost of our digital service delivery.

We believe there are many more applications for digital verifiable claims in public administrations. This proof of concept demonstrates where we can start. However, once these verifiable claims are digital many others can also be digitised on the same infrastructure, dramatically lowering the barrier to using verifications.

Components

This proof of concept is made out of three components that the three handle discrete steps set out in the scenario.

  • ClaimPage: A webserver that hosts the web-page where citizens can download their certificate.
  • ClaimServer: A server for the public administration that can handle the claim for a certificate and return it to the client of the ClaimPage.
  • Scanner: A webserver that hosts the web-app that can be used to scan the generated QR code and verify the certificate.

Trying it out and running the dev environment

We've created separate docker-compose files for both development and production. For both environments you need docker and docker-compose.

Development mode is easy to set up with just 1 command, the Docker VM will also autoreload when making changes. The full stack can be obtained and started by doing the following:

In production

For production, we'll only spawn the claim server, the rest (scanner and city demo page) should be hosted using a well-optimized static file server, like Nginx.

This manual assumes you've got a working version of NodeJS (min v6) installed.

  • Run docker-compose -f docker-compose.production.yml up -d
  • cd to the directories ClaimPage and Scanner, and do the following steps in each:
    • Run npm install
    • Run npm run build
    • Now you can use the output in the dist-folder to host said page. The files in dist are static, so a simple static file server would suffice.

Please feel free to file Issues and Pull Requests against this project. Thanks for contributing.

Licence

© 2018 Gemeente Haarlem
This project is licenced under the GNU General Public Licence