COMP4142 E-PAYMENT AND
CRYPTOCURRENCY
Project Specification
Objective
Have an in-depth understanding on how the blockchain system works.
Be able to write a UTXO (unspent transaction output) blockchain platform.
Requirements
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.
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.
Please write the documents in your own words and make sure the materials used
have been properly referenced. Please notice the PolyU plagiarism booklet:
http://edc.polyu.edu.hk/PSP/Plagiarism_Booklet.pdf
Project Schedule
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
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.
Goals
1. Blockchain Prototype: construct the blockchain system according to the
following structure. The block should have the following basic content.
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
1. Project Presentation and Demonstration
Date: Dec. 1, 2023
In the class, 2-3 members can do the presentation.
2. Final Deliverables
Deadline: Dec. 6, 2023
The final submission (softcopy) contains the following items for each group:
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.
Grading Scheme
Total marks 100
1. Blockchain Prototype 12 (lab 3, referring code in
lab 1)
2. Mining and UTXO 12
3. Transaction and Verification 12
4.Network 8
5. Storage 8
6. Wallet 12
7. Presentation (time control, clear logic) 12
8.Demonstration (real, interactive) of all functions 16
9. Group report and individual contribution 8
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
请加QQ:99515681 或邮箱:99515681@qq.com WX:codehelp