Challenge Overview
Project Overview
SoftBank is a Japanese multinational telecommunications and Internetcorporation, with operations in broadband, e-commerce, Internet,technology services, and other businesses.
A blockchain, widely known as the base technology of Bitcoin, is a distributed database that maintains a list of transactional data records hardened against tampering and revision.
SoftBank is going to develop the new platform based on the blockchain technology and a variety of services on top of it.
- As a proof of concept, they are going to develop a prototype of Blockchain based Donation Service.
- In this service prototype, each donation is recorded into the blockchain and everyone can see how their money is distributed and used.
- Volunteers provide their computing resource to record the transaction in the blockchain.
Tips for Success: Asking questions early and getting PM's feedback is very important for the success of this challenge.
Competition Task Overview
In the previous challenge we have implemented some of the features from the prototype.
In this challenge we need to implement the remaining features / pages. Here are the details:
- 1. Integrate with Facebook API (We are not going to support Google+):
- 1.1. When you tap the login link, you do not need to show the sso select modal dialog, but just jump to the facebook auth page and then go back to our site.
- 1.2. The user info should be stored in the mongodb user table.
- 1.3. By default, the user record does not have organizationIndex column.
- 1.4. When you set the value to the column and insert the corresponding record to the organizations table, that user will be an organization person and they can see the organization pages.
- 2. Mining as a volunteer:
- 2.1. Since w3.js does not support mining start and stop, you need to
make a RPC call to make it happen.Updated.See the forum link. - 2.2. You will probably need to use websocket to track the real time mining status.
- 2.3. You may stop mining when you leave the page.
- 2.4. The mining result should be shown when you finish mining. You can also see the mining statistics in the volunteer history tab of the user page.
- 2.5. You should probably need to store the mining history in the database.
- 2.6. Mining count should be the count of the mining successes.
- 2.7. You can just compare the mining time for the miner rank.
- 2.8. You can calculate achieved point from mining time + mining count * 100.
- 2.9. You may calculate it real time as long as it finishes in several seconds.
- 2.1. Since w3.js does not support mining start and stop, you need to
- 3. "Distribute / Transfer", "Transfer trace" by organizations and "Donation trace" by donor:
- 3.1. The organization person can distribute the donated money to another project or spend (transfer) the money in their organization.
- 3.2. The distribution label is "Distribute to other organization", but replace it with "Distribute to other project" and show the active project list.
- 3.3. When you project the money, call the contract method sendProjectCoins to your organization address and then fundProject to another project.
- 3.4. When you spend (transfer) the money, call the contract method sendProjectCoins to your organization and then withDraw.
- 3.5. "Transfer trace" page shows what organizations the donated money are distributed to and how much is used in the organization.
- 3.6. "Donation trace" page should show the almost same information as "Transfer trace". See the prototype html and revise the current implementation.
- 4. Graphs in the organization page
- 4.1. There are graphs in the organization page. They are implemented with JavaScript, but values are dummy.
- 4.2. We would like to use the actual values for them. We may probably need to calculate on mongodb.
- 4.3. Since this is the prototype, you do not need to write a calculation batch but the real time calculation is fine.
- 5. Add the logout link at the right top of the user page.
It should call something like /api/v1/logout internally and navigate to the landing page. - 6. Call issueCoin automatically when the user makes a donation.
Currently you need to call /api/v1/user/issueCoin before you make a donation. We would like to call issueCoin automatically when you make a donation. You may need to wait 10 or more seconds waiting for minings. It is fine.
Browsers Requirements
Mobile versions
- - iPhone 5, 6, 6 Plus, 6s, 6s Plus Safari Browsers
- - Android versions 4.4+ Default Browsers
Desktop versions on Windows & Mac - (you only need to implement pages for the charity organization)
- - IE 11+ Browsers
- - Latest Chrome Browsers
- - Latest Safari Browsers
Note - please include actual browsers you have tested in the submission document/readme file.
Final Submission Guidelines
Submission Deliverables
A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials
Below is an overview of the deliverables:
- Full code that covers all requirements.
- A complete and detailed deployment document explaining how to deploy the application including configuration information.
Final Submission
For each member, the final submission should be uploaded via the challenge detail page on topcoder.com.