Skip to content

DiGo-Certify/DiGo-certify-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

229 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DiGo Certify

Contributors GitHub repo size GitHub Actions Workflow Status GitHub License



Logo

SCAR: A Blockchain based approach for academic registry

Academic certificates registry on blockchain for secure and tamper-proof verification.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Evaluation and Static Analysis
  5. License
  6. Contact
  7. Acknowledgments

About The Project

Block Chain and Smart Contracts

SCAR, Smart Contract Academic Registry is a multiplatform application that allows a entity to register academic certificates on a blockchain, and allows a third party to verify the authenticity of the certificate.

(back to top)

🧰 Built With

Node

React Native

Expo React Native

Smart Contract

Hardhat

Ethereum

Javasript

(back to top)

⭐️ Star us

If you like this project, don't forget to give it a star on GitHub! Every star make us very happy and we will be very grateful to you!

🚀 Getting Started

We need to install the DiGo Certify app on your device. The following instructions will guide you through the installation process.

📋 Prerequisites

  1. You need to have node to run the application.

    NodeJS

  2. Install npm globally on your machine:

npm install npm@latest -g
  1. Install Expo Go on your smart phone:

    App Store Play Store

  2. Install a wallet provider application, such as Metamask, on your smart phone:

    App Store Play Store

🛠️ Installation and Usage

📄 Clone or fork DiGo Certify App:

git clone https://github.com/DiGo-Certify/DiGo-certify-app.git && \
cd DiGo-certify-app/

⛓️ Start a local blockchain in a separate terminal:

cd code/services/ethereum
npm run node

📦 Install dependencies, configure local demo accounts, deploy the registry contracts, and seed institutional issuers:

./install.sh --local

🚴‍♂️ Run the app:

cd code
npm start

📱 Scan the QR Code provided with your smart phone to run the app

(back to top)

Reference Implementation Workflow

This branch is shaped around the certificate life cycle described in the paper:

  1. Start the local Hardhat node with npm run node from code/services/ethereum.
  2. Run ./install.sh --local from the repository root. The script installs dependencies, writes the local Hardhat deployer and demo institution wallets to code/config.json, deploys the OnchainID and T-REX suite, and creates institutional ClaimIssuer contracts.
  3. Sign in with a wallet configured as an accredited institution in code/config.json.
  4. As a student, import a funded local private key from the Home tab to create or resolve the OnchainID identity and authorize accredited issuer keys.
  5. Open the Admin tab and issue a certificate to the student wallet. Submitting the same issuer/topic again updates the certificate claim.
  6. The certificate is stored as an ERC-735 claim on the student's identity. Sensitive certificate references are encrypted in the claim data, while the validation digest is stored as the claim URI.
  7. The student can see issued certificates on the Home tab.
  8. A verifier can validate a pasted certificate URL or uploaded certificate file from the Validation tab without connecting a wallet. Validation checks the digest, the issuer's current accreditation for the certificate topic, and the claim signature.
  9. An accredited institution can revoke its certificate claim from the Admin tab.

The intended demo path is: accredited institution -> identity activation and issuer authorization -> identity-bound claim issuance/update -> student certificate listing -> wallet-free validation -> revocation.

For a custom RPC deployment, run ./install.sh without --local and provide the owner wallet and RPC URL when prompted. The local mode is the recommended replication path for the prototype.

For physical phone testing, use a phone-reachable RPC URL instead of 127.0.0.1. Keep the phone and Mac on the same network, start Hardhat with npm run node, find your Mac IP with ipconfig getifaddr en0, then run:

./install.sh --local --rpc http://YOUR_MAC_IP:8545/

The Hardhat node script listens on 0.0.0.0, so the phone can reach it over Wi-Fi when the network/firewall allows it. If the phone is not on the same network, use an externally reachable RPC URL, such as ngrok or an INESC server, with the same --rpc flag.

🧪 Evaluation and Static Analysis

The on-chain layer includes benchmarking scripts (gas, cost, scalability, and latency) and a Slither static-analysis setup, all under code/services/ethereum. The scripts, run commands, and caveats are documented in the on-chain layer's README → Benchmarks.

(back to top)

📜 License

Distributed under the GNU GENERAL PUBLIC LICENSE License. See LICENSE.txt for more information.

(back to top)

📬 Contact Us

📥 Diogo Rodrigues(developer) - diogo.rodrigues.business@gmail.com

📥 Gonçalo Frutuoso(developer) - goncalo.frutuoso@tecnico.ulisboa.pt

📥 Cátia Vaz(supervisor) - cvaz@isel.pt

📥 Alexandre Francisco(supervisor) - aplf@tecnico.pt

(back to top)

(back to top)

About

Mobile Dapp for academic certificate validation

Topics

Resources

License

Stars

4 stars

Watchers

2 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors