HW1: “Project Idea Pitches”
CS 359B Spring 2018
Deadline: April 11, 2018 11:00 am
Note: This HW will make a lot more sense after Monday’s lecture
Our goals for this quarter are for every team to deliver a functional, working project. While we do encourage original, mind-blowing ideas, your project shall pass at least the following sanity checks:
- Be feasible in 6-8 weeks
- Clearly benefit from blockchain
- Result in a functional, working deliverable that can get real usage
A good rule of thumb for you to apply is to consider the following question:
Can I build my dapp using only the following tools?
- Smart contracts written in the solidity language deployed on the Ethereum distributed system.
- An accompanying web app that is taking the role of the interface between the smart contracts and the users.
Exceptions to the rule:
- Instead of a web app you can build a mobile app. (note: we will only be showing how this is done with the webapps in class)
- You can use a language different than solidity for your smart contracts. (note: we will only be teaching solidity in class).
- You can write your dapps on top of other blockchain programming platforms, such as NEO, QTUM, IOTA. (note: we will be mainly teaching the Ethereum platform in class)
- You might be able to create a brand new blockchain. (e.g. with a novel proof of work algorithm.) But in addition to a solid mathematical foundation it would require a lot more effort than creating a dapp, and this topic is not covered thoroughly in this class. So, if you want to pursue a project in this direction please talk to us in advance to convince us that you know what you are doing, and that you will be able to complete a significant amount of the work by the end of the quarter.
In brainstorming project ideas, we ask you to think of the following questions:
- What problem is your idea solving?
- What is the advantage of using a blockchain in this application over a traditional centralized app?
- What are the challenges of putting it on the blockchain? You might consider both technology challenges and business challenges.
- What are the building blocks to make this idea feasible? What are the external dependencies? For instance, you might think of requiring oracles to get real-world data onto the blockchain, or cat images for CryptoKitties stored on their central servers.
- What data is stored on the blockchain, and what functionality lies on the blockchain?
- How can you create a working deliverable for this idea in 6-8 weeks and begin attracting users? Can this idea be implemented with smart contracts and a web/mobile interface?
As a worked example, consider a dapp for tickets to events.
- The problem today is that it is impossible to resell tickets easily after the purchase. Therefore, smart contract interoperability can increase ticket liquidity (Fictitious answer, to demonstrate a clear need.) Also, one cannot be sure that centralized ticket reselling websites do not discriminate pricing based on buyer’s geolocation, history, etc. (Again, fictitious concern.)
- More advantages might include clear rules for transfer of tickets, having a unified protocol for events and providers, and easy authentication of ticket validity.
- Technology challenges might be the cost of storage on the blockchain, low transaction throughput, and diminished privacy. There also must exist some form of offline verification to authenticate ticket owners at the event venue. Business challenges could include significant difficulties in signing up the existing ticket issuing companies as they realize no value in the resale.
- In terms of external dependencies, there must be some level of trust that tickets issued are indeed associated with valid real-world tickets. For the app, we plan to own the backend for ticket issuance, so every new ticket starts life as a token.
- Ticket ownership information (i.e. a mapping from accounts to tickets owned) is stored on the blockchain; logic for transferring and perhaps buying tickets is also included as functionality at the blockchain level. Actual details on events and seats corresponding to each ticket would be stored off-chain on providers’ servers.
- To create a working deliverable for this product, we might first create a smart contract framework which allows creation of custom tokens representing tickets to events, various parameters to be set regarding transferability, etc. We would then build a web UI for such tokens to be issued, held, and managed that would completely abstract the underlying blockchain architecture away from the end user.
Take into consideration the answers you would give to the above questions before you settle with an idea. If you are not satisfied, you may want to reconsider and come up with a different concept. Be creative; there are countless possibilities and your idea does not need to use the ticketing dapp as a carbon copy.
Deliverables for HW1
1. Warmup: Revisit your slides from HW0 and add a new slide at the end to answer this question:
- Is it possible to deliver this functionality merely in terms of smart contracts on an existing blockchain or it needs to be its own blockchain? Why? (bullet points)
2 (a). Your own idea: By the deadline, we ask that you submit a short response to the questions (1-6) above on the step 7 of the dapps.stanford.edu website. (If step 7 is not a link, hit ⌘R or ^R twice.) You can edit your submission as much as you want until the class. Also, we recommend you to submit earlier than the deadline as we will try to give early feedback to early submitted ideas. (Teamwork is encouraged, see FAQ below)
2 (b). Prepare to give a one-minute presentation on your idea in class.
Class presentation instructions
You do not need to prepare slides for your own idea; we will have your answers on dapps.stanford.edu visible on the projector as a visual aid. You will have 1 minute to present and then your classmates will have 1 more minute to write feedback for you on dapps.stanford.edu. Because in one minute you can only say about four sentences, choose your words wisely. A good presentation could be the following (disregard the content, it’s fictitious):
“Consider a dapp for tickets to events. It is necessary, because today it is impossible to resell tickets online independently. We will store ownership information on-chain and ticket details off-chain. To build it in 8 weeks we will convince our friends at Bing Hall to allows us to run their ticketing system for the quarter so we will own the ticket origination backend.”.
Note, that this presentation example only mentions questions 1, 4, and 6 and glances over the idea very briefly. But your presentation can be different. You should first and foremost make sure your classmates will understand your idea, especially if it is non-trivial. It is necessary for your classmates to at least understand your idea. If time permits, then you should address the questions that are the most challenging, i.e. the ones for which the answer would be the least obvious. It is ok if you only address one question if that question happens to be the hardest. People can read themselves your responses to your other questions.
Practice your presentation to make sure it fits in 60 seconds.
FAQ posted on slack
Q: Is the HW1 a group assignment or individual?
A: Individually submitted, but collaboration is encouraged. I.e., if 3 students sit down together to brainstorm they must come up with at least 3 idea. Then each student will submit one of the 3 top ideas they came up with. Each student should submit a different idea. In such a setting, we encouraged to also discuss the answer to the questions together. In the end, each student's write up should be typed by themselves.