Register
Submit a solution
The challenge is finished.

Challenge Overview

Welcome to Topcoder - Challenge Review Processing with Blockchain challenge creation and member registration


Challenge Objectives 
 

  • Create setup for POC for Challenge Review process using Hyperledger Fabric v1.2, for showcasing the blockchain capabilities in Topcoder platform

Project Background
 
  • Topcoder is trying to determine if Blockchain can be used to control the review process of challenges
  • To build the blockchain network Hyperledger Fabric 1.2 is going to be used
  • To store the submission files IPFS (Inter-Planetary File System) must be used
  • The idea is to have the chaincode of Hyperledger Fabric 1.2 doing all business logic and the challenge data related to review process (review, appeal, appeals response and manager response) will be store into the blockchain ledger
  • This is a challenge of a series of challenges to build this PoC application

Technology Stack
 
  • Hyperledger Fabric 1.2
  • IPFS (Inter-Planetary File System)
  • Node.Js - for chaincode and client SDK
  • Docker

Individual requirements
 
  • The new review process flow using blockchain can be found in forum. Please register to get access.
  • In this challenge we want to address the review flow as described below:

1. Use the setup from previous challenge (found in forum). Below is the configuration:
  • Network: topcoder-review
  • Orgs: Topcoder, Clients, Members, & Moderators
  • Peers: 2 peers for each org
  • Channels: topcoder-client (Topcoder and Clients) and topcoder-review (Topcoder, Members, and Moderators)
  • Orderer: Solo

2. Swagger file has been provided in forum. Both REST API models and Blockchain models (will be saved to ledger) have been provided. Blockchain models are the ones starting with Chaincode prefix.

3. JWT authentication will be introduced. Use secret mysecret to generate the tokens for different roles (make it configurable). JWT payload example:

{
  "sub": "3146c815-0301-49d0-a749-3433da4029aa",
  "user": {
    "name": "John Doe",
    "email": "jdoe@email.com",
    "id": "3146c815-0301-49d0-a749-3433da4029aa"
  },
  "iat": 1516239022,
  "exp": 1616239022
}

4. All endpoints defined in swagger must be implemented. Check description for details. Existing endpoints must be updated if necessary. Any issues or improvements must be discussed in forum.

5. Below is a final example of the scorecard and review objects inside project.

{
  "projectId": 1,
  "copilotId": 1,
  "name": "A great name",
  "description": "A long description",
  "challanges": [
    {
      "challengeId": 1,
      "name": "A great name",
      "description": "A long description",
      "scorecard": {
        "name": "A scorecard",
        "questions": [
          {
            "text": "1st question",
            "weight": 50,
            "order": 1
          },
          {
            "text": "2nd question",
            "weight": 50,
            "order": 2
          }
        ]
      },
      "members": [
        {
          "memberId": 5,
          "status": 1
        },
        {
          "memberId": 7,
          "status": 0
        }
      ],
      "reviewers": [
        {
          "memberId": 3
        },
        {
          "memberId": 2
        }
      ],
      "submissions": [
        {
          "submissionId": 1,
          "memberId": 5,
          "originalFileName": "work_005.zip",
          "fileName": "submission_001_work_005.zip",
          "ipfsHash": "A VERY BIG HASH",
          "timestamp": "ISO 8601 timestamp",
          "reviews": [
            {
              "reviewerId": 11,
              "reviews": [
                {
                  "question": 1,
                  "score": 9,
                  "appeal": {
                    "appeal": "a 1st appeal",
                    "appealResponse": "an appeal responsel",
                    "finalScore": 9
                  }
                },
                {
                  "question": 2,
                  "score": 5,
                  "appeal": {
                    "appeal": "a 1st appeal",
                    "appealResponse": "an appeal responsel",
                    "finalScore": 9
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
 
6. All IDs can be either positive Long values or UUID strings. They must be unique in the whole system


Final Submission Guidelines

  • Zip file with updated submission
  • Updated Swagger file

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30069998