-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Braindump: Kahoot Clone #182
base: main
Are you sure you want to change the base?
Conversation
Would be great to have this to be used at the PBA |
Hello @coax1d and the whole Tuxedo team, this "Kahoot clone" is Bounder (Bet On Understanding) and is a component of the decentralised e-learning platform I'm building. |
@JoshOrndorff, |
Yeah, that back-of-the-receipt diagram is pretty rough lol. I wanted to make sure I didn't lose it so I posted it. Here is a legend for the notation. I'm starting to like this notation a lot. Here is also a somewhat better version of the diagram. It is not only fixing the scribbles, it also changes some things reflecting my more recent thinking. I think we can optimistically allow the question reveals to be off-chain and only require an on-chain reveal when there is some availability problem. |
Hi @JoshOrndorff , Thank you for the above dig. BounderPiece : 1. CreateGame operation Inputs: Note : The game metadata hash can be a reference to the off-chain information about the game, like question sets, difficulty, etc. 2. JoinGame operation 3. StartGame operations 4. Settle Operation: 5. CloseGame Operation: I think it may be difficult to achieve everything on-chain due limitation of storing large quiz content (questions, answers, explanations, images, etc.) directly on-chain looks expensive due to storage fees. So we can have Hybrid approach: |
Your summary is close. One misc point: My diagram says "UGC" for universal game creator, not ugl. I want you to carefully consider the use of the word "input". It has one definition that means UTXOs consumed by a transaction. It has another definition that means data that the user supplies to the process. It is important not to mix these up. For example when you are summarizing the game creation:
The teacher deposit and the universal game creator are really inputs in the UTXO sense. They are pre-existing state that is consumed by this transaction. However, the game metadata is completely different. It is not previously stored on chain and therefore cannot possibly be an input. The point of this transaction is to put that metadata on chain. It is an output in the utxo sense. (Admitted that it is an input of data from the user). Another thing I noticed is that you mention closing the game outputting a UTXO that represents the results. Why do you want to do this? Once the game is settled and payouts are made, why have this results UTXO always taking up storage? The blockchain itself already keeps a permanent record of the result (and even the entire game play) so there is no need to also keep it in state. |
@AltiMario This PR begins to prototype what an onchain clone of the popular education / classroom game kahoot.it might look like.
The code is based on this transaction lifecycle diagram I came up with at lunch.
This PR should not be merged here. Rather the code is to share ideas. If it is to be kept, it should move to Mario's own project repo. But I thought it might get better review from Tuxedo experts here.