Skip to content

asc-lab/blockchain-multichain

Repository files navigation

Private Blockchain (private DLT) using MultiChain

Application for proposals using blockchain with MultiChain.

Check out our blog if you want to learn more:

Architecture overview

MultiChain PoC Architecture

Repo info

  • multichain-app - Angular 6 client application
  • multichain-cli - example test scenario and execute this by MultiChain CLI
  • multichain-cluster - blockchain infrastructure
  • multichain-server - Java & Spring Boot & MultiChain Java API

Architecture

Our solution consists of 5 services:

  • multichain-master - multichain seed node
  • multichain-slave - multichain 2nd node
  • multichain-explorer - multichain 3rd node with UI for browsing blockchain
  • multichain-server - application backend (Spring Boot + in-memory database)
  • multichain-app - application frontend (Angular 6 served by nginx)

Use case

Your organization wants to implement an internal system for submitting different types of applications (for example: request for new equipment).
Each request must be approved by the manager.
Requests should be indisputable and immutable.

Example request and decision structure:

Request {userId, managerId, creationTime, requestContent}
Decision {managerId, Request, decisionResult, decisionTime}

JSON:

{
	"userId": "",
	"managerId": "",
	"creationTime": "",
	"requestContent": ""
}

{
	"managerId": "",
	"Request": {
            {
                "userId": "",
                "managerId": "",
                "creationTime": "",
                "requestContent": ""
            }
	},
	"decisionResult": "",
	"decisionTime": ""
}

Local development

Remember that MultiChainJavaAPI (using to connect with MultiChain) is not available in Maven Central Repository so you must build this library locally based on installation instruction in README.

Deployment & running

Each service is packaged as a separate container. To run whole system you can use docker + docker-compose.

Docker Compose

Prerequisites: local docker & docker-compose
To run application you simply execute command:

run.sh

Services are started with tty attached to current terminal.
To stop application just press:

Ctrl+C

Screens

Desktop main version

Mobile menu

Initial users

Request list

Decision list

DOCS

License

This project is released under the Apache 2.0 license (see LICENSE)