Project is a system for applicants' application process. There exist two sides: universities and applicants.
Students do not receive private/public keys, we decided to store it in MongoDB with other relevant information. It can be improved, the solution would require transaction sign in the web (iroha-js library).
- Each of the universities is registered before the blockchain network is started.
The
genesis block
initialization:
wild-university
token is created- each of the university is registered as a domain
university-specific-wild-speciality
token is created as an asset with university domain- each of the
university-specific-speciality-%s
is created as an asset with university domain
- Student can:
- register in a system in order to obtain 5
university-wild
tokens - select up to 5 universities (exchange
university-wild
touniversity-specific-wild-speciality
tokens) - select at most 3 specialities in each of the university (exchange
university-specific-wild-speciality
touniversity-specific-speciality-A
token) - deselect those (exchange
university-specific-speciality-A
touniversity-specific-wild-speciality
or 5xuniversity-specific-wild-speciality
intouniversity-wild
) - exhange specialities (exchange
university-specific-speciality-A
touniversity-specific-speciality-B
)
The pipeline:
- Universities register in a system (their information about university and its specialities is stored in MongoDB)
- The
/iroha
POST request is called (iroha chain starts) - Students can register in a system and select interested specialities
Internal:
Spring-boot
server +iroha-java
clientMongoDB
iroha-nodes
in docker-compose file
Rests:
university/
- registration and description retrival methodsapplicant/
- registration, description and exchange methods- Take a look at
.../resources/postman-iroha-universities-collection.json
for detailed information
Project is splitted into two units:
blockchain/IrohaMain
- testing custom Iroha communication (can be rewritten as tests)server/SpringMain
- initializes Spring web appserver/TestMain
- testing custom Iroha communication with already instantiated Iroha nodes and stored data in Mongo db (can be rewritten as tests)
client/
- java maven projectblockchain/
- module with iroha logicmodels/
- shared moduleserver/
- web Spring applicationdocker-compose.yml
- MongoDB instancemongodb/
- initialization file for Mongo DB
docker/
- folder with required files for iroha instancesgenesis-*/
- concrete folder for university, contains onlyconfig.docker
genesis-university-example/
- shows four files required for university to be instantiated as Iroha node.genesis.block
- defines used ports and postgres instance (mirrors content ofdocker-compose.yml
file)node.priv
- private key for university, generated each time when Iroha is instantiated manually or from web client.node.pub
- public key for university, generated each time when Iroha is instantiated manually or from web client.genesis.block
- genesis block, generated automatically from universities collected by web client or manually (seeIrohaMain
in client/blockchain)
docker-compose.yml
- dc file for instantiation of 3 instances, creates network per eachdocker-compose-single.yml
- currently nonrelevant dc file (was used to run one instance)