COMP4142 E-PAYMENT AND CRYPTOCURRENCY
Project Specification
Have an in-depth understanding on how the blockchain system works.
Be able to write a UTXO (unspent transaction output) blockchain platform.
Objective
This is a group project (group size 5-6 recommended). Please allocate among yourselves the tasks and indicate the contributions made by each one of you. All team members need to have fairly equal contributions in this project. A workload table and contribution list need to be included in the project report.
Requirements
A group of 2 students or less can have full marks even with fewer functions implemented (this will be judged by TA/instructor). We still hope you can finish most functions, which is the purpose of the group project. To be fair, with fewer students, some difficult functions may not be finished. A group of 7 or 8 students is allowed and more functions/features should be designed, justified, and reported. For instance, we have 6 goals to achieve. 7 students need to achieve another 1 critical goal and 8 students need to achieve 2 more.
1. Grouping: Nov. 11, 2023
2. Demonstration: Dec. 1, 2023 (In the class)
3. Submission of all project deliverables: Dec. 6, 2023, in the blackboard
Project Schedule
Please see the project submission part for more information about the project
demonstration and final project deliverables.
Note: Late submission will be penalized unless there is a proper reason justified.
1. Blockchain Prototype: construct the blockchain system according to the following structure. The block should have the following basic content.
Goals
a) Index: the height of the current block.
b) Timestamp.
c) Previous Block Hash.
d) Current Block Hash.
e) Difficulty: the number of bits at the beginning of block hash, dynamic
change.
f) Nonce: the random number used to calculate the block hash.
g) Merkle root of transactions.
h) Data: transaction.
2. Mining and UTXO: implement a dynamic-difficulty Proof-of-Work algorithm. a) Design a Proof-of-Work algorithm. For example, adjust the nonce and
generate a hash until it has a hash with a leading number of zeros.
b) Achieve dynamic difficulty. For example, adjusting the difficulty of the
current block dynamically based on the time taken to generate the
previous (10, 20, or more) blocks.
3. Transaction: implement pay-to-public-key-hash (P2PKH) transactions and
verify transactions.
a) Implement pay-to-public-key-hash (P2PKH) transactions.
b) Use asymmetric cryptography to create digital signatures and verify
transactions.
4. Network: basic interactions and validation should be realized.
a) Create an API to broadcast the new blocks and get the blocks from the other nodes. The API should allow a user to interact with the blockchain by the HTTP request, socket, or different ports.
b) Achieve a function to check if the new blocks that we receive from other miners are valid or not. (Hint: recompute the hash of the block and compare it with the given hash of the block.)
5. Storage: choose your database in the implementation.
a) Store the raw data of the whole blockchain in the disk.
b) Store the latest state (e.g., chain height, full node list, neighbor list) of the
blockchain in memory.
c) Store the transactions (UTXO) in a transaction pool.
6. Wallet: manage all transactions that you can spend.
You could refer to some open-source projects to implement your blockchain system but you must refer to them in your report. Otherwise, it could be seen as plagiarism.
Project Submissions
Date: Dec. 1, 2023
In the class, 2-3 members can do the presentation.
1. Project Presentation and Demonstration
Deadline: Dec. 6, 2023
The final submission (softcopy) contains the following items for each group:
2. Final Deliverables
1) A group report (pdf format, no page limits) to show how you implemented the blockchain system and how you achieved the 6 goals. You could also include what you have learned or tried but not demonstrated or included in
this project. Please also denote any coding/description referring to other
sources (e.g., using ChatGPT).
2) Each student needs to submit a short individual report (no more than half a
page), where you should describe your responsibility and contribution in detail.
You should include all the required documents in a compressed file (.rar, .7z, etc.).
Each group only needs to submit once and name it after one group mate.
Note: The softcopy files should be submitted to the blackboard.
100
12 (lab 3, referring code in
lab 1)
12
12
8
8
12
12
16
8
Total marks
1. Blockchain Prototype
Grading Scheme
2. Mining and UTXO
3. Transaction and Verification
4. Network
5. Storage
6. Wallet
7. Presentation (time control, clear logic)
8. Demonstration (real, interactive) of all functions
9. Group report and individual contribution
Presentation Note: Suppose a 10-minute presentation for each group. Include 4 minutes for slide presentation to talk about how you implement 1-6. Another 4 minutes for the real-time, interactive demonstration with TA. The left 2 minutes for Q&A.