Table of Contents
High Level Overview
This project is focused on exploring Corda Application that will be managing rules of the Checkers game.
It was decided to keep out of scope all Corda Cluster management tasks. As result, SpringBoot server (which acts as a intermediary gateway between the world and a CordApp) will be using solely default admin
access rights.
flowchart TD
ReactJS <--> SpringBoot
subgraph midleware
direction LR
SpringBoot -.users.-U[(Hardcoded DB)]
end
SpringBoot -- admin ---> C[(Corda)]
C --- c1([Alice])
C --- c2([Bob])
C --- c3{Notary}
C --- c4([Kumar])
C --- c5([Charlie])
Although it is possible to add MDM instance to the game, and enforce users
, groups
, roles
and permissions
. At the moment, the setup will be using set of default users, provided by CSDE.
On a front end side, before initiating any interactions, a login credentials has to be provided. The name and a password of a user has to match SpringBoot hardcoded users, which on itself is a representation of set of predefined Corda users, aka VirtualNode
names from Corda Cluster. Such a scheme, ensures that SpringBoot server will always know on behalf of which identity a given operation shall be performed (despite the fact that in reality it will be executed under admin
role).
Major development milestones
Entities
-
ReactJs and SpringBoot Classic WebApp with ReactJS frontend and SpringBoot backend.
-
Corda Standard Dev Environment Hosting and enforcing Checkers game logic.
Messaging
-
Secure REST Client Communication channel between SpringBoot server and CordApp.
-
Holding Identity short Hash A CordaCheckers end user shall be able to perform actions (to play the game) on behalf of his representation in Corda Cluster. This means, that SpringBoot middleware shall be able to authenticate REST requests from React app and translate them onto request aimed to concrete virtual node: Alice, Bob, Kumar, Charlie, etc. One way of doing this, is to have hardcoded set of users. But this is boring. Instead, SpringBoot middleware is going to dynamically obtain information about available virtual nodes (their
names
andshort hashes
) and dynamically register set of relevant front end users. -
Sequence diagrams A high level overview of an execution pass for major actions.
TODOs
- Use jsonschema2pojo to generate POJO objects for SpringBoot server from REST API schemas provided by CSDE