Skip to content

pemmenegger/permapass

Repository files navigation

PermaPass

PermaPass is a prototype application of a permanent passport system for construction products using decentralized technologies. It was developed as part of the author's Master's Thesis at the University of Zurich in collaboration with ETH Zurich in the spring semester 2024. A permanent passport consists of a physical component (QR Code or HaLo NFC chip) that links to its digital identity (Decentralized Identifier (DID), Non-Fungible Token (NFT), or Physical-Backed Token (PBT)) stored and managed by an EVM blockchain. The goal of PermaPass is to show how such a system can be implemented and to evaluate and compare the different passport solutions.

Introduction

This repository represents the technical implementation of the PermaPass prototype. The prototype consists of a decentralized application (dApp) as a user interface allowing users to interact with a construction products' physical components (QR Code or HaLo NFC chip) and their decentralized managed digital identities (DID, NFT, or PBT)

Repository Structure

The repository is divided into the following main directories:

Directory Description Technologies
dapp React Native Smartphone App enabling interactions with physical data carriers and their digital identities stored on an EVM-compatible blockchain. React Native and Expo
ethereum Smart contract implementations of digital identities. Solidity and Hardhat
evaluation Evaluation data and plots resulted in executing evaluation scripts. Python with Matplotlib
web-api An API that supports the dapp with functionalities that were required but not supported by React Native. Express.js

Details on the individual components can be found in the respective README.md files of the corresponding directory.

Run It Locally

Make sure you have installed the latest version of Node.js and yarn on your local machine. To setup and run the PermaPass prototype locally, follow these steps:

  1. Web API: Start the Web API locally as described in the web-api directory.
  2. Ethereum: Add environment variables as described in the ethereum directory.
  3. Ethereum: Run a local hardhat node as described in the ethereum directory.
  4. Ethereum: Deploy all smart contracts to the local hardhat node as described in the ethereum directory.
  5. Decentralized Application (dApp): Add environment variables as described in the dapp directory.
  6. Decentralized Application (dApp): Start the Expo app as described in the dapp directory.
  7. Interact with the smartphone app to create, read, update, and delete passports.