didedu
DIDEdu - A decentralized open source solution, which is using Decentralized Identifiers and Verifiable Credentials to make students' studying process in the university easier and more secure
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.2%) to scientific vocabulary
Keywords
Repository
DIDEdu - A decentralized open source solution, which is using Decentralized Identifiers and Verifiable Credentials to make students' studying process in the university easier and more secure
Basic Info
Statistics
- Stars: 9
- Watchers: 2
- Forks: 1
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
README.md
DIDEdu
DIDEdu is an open source decentralized solution, which is developed to present the advantages of implementing Decentralized Identifiers (DIDs) and Verifiable Credentials (VCs) in a system. Decentralized Identifiers are a new type of identifiers, that enable a verifiable, distributed digital identity. With the help of this technology, DIDEdu offers to its users: - Issuing of credentials for completed obligations (exams, exercises, lectures, assignments, etc.), subjects, years and programs; - Authentication/Registration for individual activities (exams, colloquiums, tests, etc.) using credentials or presentations; - Signing in the website only with a DID; - Secured data storage; - Easy to use and user friendly interface; - Cheaper usage of the Blockchain using Batches;
The main logic is in the DID service, which is developed in Kotlin and is using the Atala PRISM SDK. Atala PRISM SDK is a development kit, which is following the W3C standard and is working on the Cardano Blockchain. It allows developers to use already implemented functionalities, which helps them develop solutions, that are using DIDs and VCs. The website, where the functionalities can be tested is called DIDEdu and is developed in Typescript, CSS and HTML. It is also using a MySQL data to store some data, which is needed to make the user's experience better. I have also developed a simple digital wallet in Javascript, CSS and HTML as a chrome-extension. It is only used as a local storage, that stores the data in a MongoDB database and is not an actual working digital wallet, that communicates with blockchain. The Cardano Blockchain doesn't have a digital wallet yet, which works with DIDs and VCs, which is why I had to create one. These three systems communicate with each other and allow the users to feel all the benefits from the usage of the DIDs and VCs in the educational process.
Usage
https://user-images.githubusercontent.com/61247744/187813639-f10956c1-b78e-4311-9770-d488d0e355fe.mp4
The following video (presentation) shows the main decentralized identifiers' functionalities, that DIDEdu is implementing. - Generating DID - Verifying batch/credential - Issuing batch/credential - Generating verifiable presentation - Revocation
Installation
Before starting the installation, please make sure you have cloned (pulled) the repository.
bash
git clone git@github.com:nikolayVv/DIDEdu.git
Configuration
The first thing you have to do is to add a system environment variable with the name "PRISMSDKPASSWORD". This will allow the DID service to access the libraries that Atala PRISM SDK is offerring. To get this password, you must become part of the Atala PRISM developers' community by joining the Atala PRISM Pioneer Program.
After that is done you have to build the gradle file in the DID service. This can be done authomatic by using a development environment like IntelliJ. You will also need to install the libraries needed for the DIDEdu webpage. Make sure you have npm installed!
bash
cd DIDEdu
npm install
cd app_public
npm install
Running
Now after all libraries are installed, it's time to start the systems. First start the DID service, by running the "DidServiceApplication.kt" file in the development environment. After that you will need to import the digital wallet in your Chrome browser by opening the extensions tab, switching to Developers mode and loading the folder "digitalWallet". When this is done on different terminals run:
- digital wallet server,
bash
cd digitalWallet
cd app_server
npm run start
- DIDEdu server and
bash
cd DIDEdu
npm run start
- DIDEdu webpage
bash
cd DIDEdu
cd app_public
ng serve --open
After the last terminal loads, the website must show in a new tab, in your browser. If it doesn't load and everything is running without errors, you can find the webpage on localhost:4200.
Contributing
Pull requests are welcome! For changes, please fork the repository!
License
Acknowledgements
This solution is developed as part of my thesis for receiving a Bachelor's degree from the University of Ljubljana Faculty of Computer and Information Science. I would like to give very special thanks to: - my mentor Assoc. Prof. dr. Dejan Lavbič, who came up with the theme of the thesis and helped me write it and develop a solution for it; - the Atala PRISM team for giving me a spot in the first cohort of the Atala PRISM pioneer program, where I learned, how to work with the Atala PRISM SDK; - the IOG's Technical Community for their help through the developing process;
Owner
- Name: Nikolay Vasilev
- Login: nikolayVv
- Kind: user
- Location: Ljubljana, Slovenia
- Repositories: 3
- Profile: https://github.com/nikolayVv
Software Developer
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: Vasilev
given-names: Nikolay
title: "DIDEdu-DiplomskoDelo"
version: 2.0.4
date-released: 2022-08-01
url: "https://github.com/nikolayVv/DIDEdu"
GitHub Events
Total
- Watch event: 1
- Push event: 1
Last Year
- Watch event: 1
- Push event: 1
Dependencies
- com.fasterxml.jackson.module:jackson-module-kotlin * implementation
- com.h2database:h2 * implementation
- com.soywiz.korlibs.krypto:krypto-jvm 2.7.0 implementation
- com.squareup.retrofit2:converter-gson 2.9.0 implementation
- io.iohk.atala:prism-api v1.3.3 implementation
- io.iohk.atala:prism-credentials v1.3.3 implementation
- io.iohk.atala:prism-crypto v1.3.3 implementation
- io.iohk.atala:prism-identity v1.3.3 implementation
- io.ktor:ktor-server-cors 2.0.1 implementation
- io.projectreactor.kotlin:reactor-kotlin-extensions * implementation
- org.jetbrains.kotlin:kotlin-reflect * implementation
- org.jetbrains.kotlin:kotlin-stdlib-jdk8 * implementation
- org.jetbrains.kotlinx:kotlinx-coroutines-reactor * implementation
- org.jetbrains.kotlinx:kotlinx-datetime 0.3.2 implementation
- org.jetbrains.kotlinx:kotlinx-serialization-json 1.3.2 implementation
- org.slf4j:slf4j-simple 1.7.36 implementation
- org.springdoc:springdoc-openapi-kotlin 1.6.8 implementation
- org.springdoc:springdoc-openapi-webflux-ui 1.6.8 implementation
- org.springframework.boot:spring-boot-starter-data-r2dbc * implementation
- org.springframework.boot:spring-boot-starter-validation * implementation
- org.springframework.boot:spring-boot-starter-webflux * implementation
- io.r2dbc:r2dbc-h2 * runtimeOnly
- 861 dependencies
- @angular-devkit/build-angular ~13.3.4 development
- @angular/cli ~13.3.4 development
- @angular/compiler-cli ~13.3.0 development
- @types/jasmine ~3.10.0 development
- @types/node ^12.11.1 development
- jasmine-core ~4.0.0 development
- karma ~6.3.0 development
- karma-chrome-launcher ~3.1.0 development
- karma-coverage ~2.1.0 development
- karma-jasmine ~4.0.0 development
- karma-jasmine-html-reporter ~1.7.0 development
- typescript ~4.6.2 development
- @angular/animations ~13.3.0
- @angular/common ~13.3.0
- @angular/compiler ~13.3.0
- @angular/core ~13.3.0
- @angular/forms ~13.3.0
- @angular/platform-browser ~13.3.0
- @angular/platform-browser-dynamic ~13.3.0
- @angular/router ~13.3.0
- mdb-angular-ui-kit ^2.2.0
- rxjs ~7.5.0
- tslib ^2.3.0
- zone.js ~0.11.4
- 299 dependencies
- chai ^4.3.6 development
- chromedriver ^100.0.0 development
- mocha ^9.2.2 development
- mochawesome ^7.1.3 development
- selenium-webdriver ^4.1.2 development
- axios *
- cookie-parser *
- debug *
- dotenv *
- express *
- express-jwt *
- hbs *
- http-errors *
- jsonwebtoken *
- morgan *
- mysql *
- dotenv * development
- bcryptjs ^2.4.3
- bip39 ^3.0.4
- body-parser *
- cors *
- express *
- express-validator ^6.14.0
- jsonwebtoken ^8.5.1
- mongoose ^6.3.2
- morgan *