You are on page 1of 15

COURSE PACK (FALL 2023-24)

Course Title BITCOIN AND CRYPTO CURRENCIES Course Type INTEGRATED


B.Tech., (CSE, All
Course Code E2UU501B Class
Specializations) – Semester 5
Credit Weekly
Activity Total Number of Classes Assessment in
s Hours
per Semester Weightage
Lecture 3 3
Instruction Tutorial 0 0 Self-
delivery Theory Tutorial Practical CIE SEE
Practical 1 2 study
Self-study 0 7
45 0 30 105 50% 50%
Total 4 12
Course Lead Mr. K Hariprasath Course Coordinator Mr. K Hariprasath
Names
Course Theory Practical
Instructors
Mr. Hariprasath K Mr. Hariprasath K

COURSE OVERVIEW

This course provides an in-depth understanding of Bitcoin, cryptocurrencies, and the underlying
technology of blockchain. It covers the basics of cryptographic foundations, explores the principles
of blockchain technology and delves into programming aspects using Python and Solidity. Students
will gain a comprehensive knowledge of how cryptocurrencies work, the security mechanisms behind
them, and how to develop blockchain applications.

PREREQUISITE COURSE

PREREQUISITE YES NO (√)


COURSEREQUIRED

COURSE OBJECTIVE

Students will be familiarized with algorithms for encryption, hashing and digital signature to
implement secured transactions in cryptocurrencies using blockchain. They will use Python for
implementing cryptocurrencies and Solidity for developing smart contracts and decentralized
applications.
COURSE OUTCOME

After the completion of the course, the student will be able to:

Select and apply appropriate Encryption, Hashing and Digital Signature


E2UU501B.1
cryptographic algorithms to design architecture of a cryptocurrency
Apply functional components of blockchain to design generic platform for
E2UU501B.2
cryptocurrencies
Develop functional components for different use cases of cryptocurrency using
E2UU501B.3
Python
E2UU501B.4 Develop smart contracts and decentralized applications (dApps) using Solidity

Knowledge Level (KL)


CO No. Remember Understand Apply Analyze Evaluate Create
(KL1) (KL2) (KL3) (KL4) (KL5) (KL6)
E2UU501B.1 × ×
E2UU501B.2 × ×
E2UU501B.3 × ×
E2UU501B.4 × ×

PROGRAM OUTCOMES

Engineering Knowledge: Apply the knowledge of mathematics, science, Engineering


PO1 fundamentals, and an engineering specialization to the solution of complex engineering problems

Problem Analysis: Identify, formulate, review research literature, and analyze complex
PO2 engineering problems reaching substantiated conclusions using first principles of mathematics,
natural sciences, and engineering sciences.
Design/development of solutions: Design solutions for complex engineering problems and
design system components or processes that meet the specified needs with appropriate
PO3
consideration for the public health and safety, and the cultural, societal, and environmental
considerations.
Conduct investigations of complex problems: Use research-based knowledge and research
PO4 methods including design of experiments, analysis and interpretation of data, and synthesis of the
information to provide valid conclusions
Modern tool usage: Create, select, and apply appropriate techniques, resources, and modern
PO5 engineering and IT tools including prediction and modeling to complex engineering activities
with an understanding of the limitations.
The Engineer and society: Apply reasoning informed by the contextual knowledge to assess
PO6 societal, health, safety, legal and cultural issues and the consequent responsibilities relevant to
the professional engineering practice.
Environment and sustainability: Understand the impact of the professional engineering
PO7 solutions in societal and environmental contexts, and demonstrate the knowledge of, and need
for sustainable development
Ethics: Apply ethical principles and commit to professional ethics and responsibilities and norms
PO8
of the engineering practice.
Individual and teamwork: Function effectively as an individual, and as a member or leader in
PO9
diverse teams, and in multidisciplinary settings.
Communication: Communicate effectively on complex engineering activities with the
engineering community and with society at large, such as, being able to comprehend and write
PO10
effective reports and design documentation, make effective presentations, and give and receive
clear instructions.
Project management and finance: Demonstrate knowledge and understanding of the
PO11 engineering and management principles and apply these to one’s own work, as a member and
leader in a team, to manage projects and in multidisciplinary environments.
Life-long learning: Recognize the need for and have the preparation and ability to engage in
PO12
independent and life-long learning in the broadest context of technological change.

PROGRAM SPECIFIC OUTCOMES (PSOs)

Have the ability to work with emerging technologies in computing requisite to Industry
PSO1 4.0.
Demonstrate Engineering Practice learned through industry internship and research
PSO2
project to solve live problems in various domains.

COURSE ARTICULATION MATRIX

PO PO PO PO PO PO PO PO PO PO PO PO PS PS
CO/PO
1 2 3 4 5 6 7 8 9 10 11 12 O1 O2

E2UU5
01B.1 2 1 2 1

E2UU5
01B.2 2 2 2 2 `
E2UU5
01B.3 2 2 2 1 2 1 2

E2UU5
01B.4 2 2 2 1 2 1 2 1
COURSE ASSESSMENT

CIE TOTAL Final


Type of Course α Marks
SN Lab work LAB*
(B) MTE CIE SEE CIE*0.5+S
o + Record EXAM
EE*0.5

1 Integrated 50 25 25 100 100 100

α
Lab Work-15 marks + Lab Record-10 marks

*Passing Criteria-30% of marks to be secured in the lab Exam conducted by two examiners (one
internal and one external)

COURSE CONTENT

THEORY

Introduction to Bitcoin and Cryptocurrencies - History and evolution of cryptocurrencies - Bitcoin:


Origins, architecture, and features -Alternative cryptocurrencies (altcoins) -Cryptocurrency market
overview and analysis Cryptographic Foundations - Basics of cryptography and encryption -Hash
functions and digital signatures -Public and private key cryptography -Cryptographic protocols in
cryptocurrencies Blockchain Technology - Distributed ledger technology and consensus mechanisms
-Blockchain architecture and components - Blockchain types: public, private, and consortium - Mining,
transaction validation, and block creation Programming with Python for Cryptocurrencies -
Introduction to Python and relevant libraries -Retrieving and analyzing cryptocurrency data -Wallet
management and transaction processing -Building simple cryptocurrency applications Introduction to
Solidity Programming - Solidity language overview -Smart contracts and their role in DApps -
Developing, testing, and deploying smart contracts - Interacting with Ethereum blockchain using
Solidity Advanced Topics in Cryptocurrencies - Decentralized finance (DeFi) and its applications -
Security considerations and best practices - Scaling solutions and future developments in
cryptocurrencies
PRACTICAL
1. Learn to use Pythonic Objects to store, organize and fetch data.
2. Learn to use Matplotlib to slice and create customized views and visualizations.
3. Learn to use Cryptographic algorithmic libraries to implement encryption and hashing.
4. Learn to use Data structure algorithms in Python.
5. Implement a linked list of objects in Python.
6. Use the CoinGecko API to retrieve real-time cryptocurrency price data.
7. Write a Python script to fetch data for a specific cryptocurrency and display it.
8. Enhance the script to plot the price history using a library like Matplotlib.
9. Develop a Python class representing a basic blockchain.
10. Implement functions to add blocks, validate the chain, and calculate the hash.
11. Test the blockchain by adding blocks and checking the integrity of the chain.
12. Use a Python library like bitcoinlib to generate a Bitcoin address and private key.
13. Develop a script to create a transaction and sign it using the private key.
14. Broadcast the transaction to the Bitcoin network using a public API.
15. Build a simple web-based blockchain explorer that displays the blocks and transactions in
your blockchain.
16. Explore ways to secure your blockchain, such as preventing double spending. Learn
about consensus algorithms like Proof of Work (PoW) or Proof of Stake (PoS).
17. Implement PoW in the blockchain and perform transactions.
18. Create a basic peer-to-peer network for nodes to communicate and synchronize their
blockchain data.
19. Develop a basic wallet system for users to create accounts, send transactions, and view
their balance.
20. Write a simple Solidity contract to store and retrieve a value on the Ethereum blockchain.
21. Compile the contract using the Solidity compiler (e.g., solc).
22. Deploy the contract to a test network like Ropsten and interact with it using a web3
library in Python.
23. Use the Uniswap API or a similar DEX to retrieve token price and liquidity data.
24. Develop a Python script to query the DEX for trading pairs and display the information.
25. Demonstrate the process of swapping tokens using the DEX and monitor the transaction
status.
26. Write a Solidity contract that contains a bug (e.g., a logical error or vulnerability).
27. Use a testing framework like Truffle to write unit tests for the contract.
28. Identify and fix the bug and rerun the tests to ensure the contract behaves as expected.
29. Develop a simple DApp using Solidity for the smart contract and web3 libraries in
Python for the frontend.
30. Create a user interface to interact with the contract and display relevant data.

LESSON PLAN FOR THEORY and PRACTICAL

FOR THEORY 15 weeks * 3 Hours=45 classes (1 credit= 1 lecture Hour)


FOR PRACTICAL 15 weeks * 2 hours=30 Hours lab session (1 credit=2 lab hours)

Theory/
L-No Topic for Delivery Skill Competency
Practical Plan
1. History and evolution of cryptocurrencies Theory
2. Bitcoin: Origins, architecture, and features Theory
3. Alternative cryptocurrencies (altcoins) Theory Apply encryption
Practical and hashing
4.
Introduction to Pythonic Object oriented approach functions to create a
5. Practical blockchain platform.
6. Cryptocurrency market overview and analysis Theory
7. Basics of cryptography and encryption Theory
8. Hash functions Theory
9. Introduction to Python Library - Matplotlib Practical CO1
10. Introduction to cryptographic libraries Practical
Apply PKI
11. Digital signatures Theory cryptographic
Public Key cryptography algorithms and
12. Theory
Digital signatures to
13. Private key cryptography Theory enable secured
14. Introduction to Data structure approach in Python Practical storage of data
15. Implement a linked list of objects in python Practical
16. Cryptographic protocols in cryptocurrencies Theory
17. Distributed ledger technology Theory
18. Consensus mechanisms Theory
19. Learn about cryptographic algorithms like SHA- Practical
256 for hashing and digital signatures. Create Design and deploy
20. Practical Blockchain
Python functions to perform these operations.
21. Blockchain architecture Theory components and
22. Blockchain components Theory consensus algorithm
Blockchain types: public, using Python scripts
23. Theory
Use the CoinGecko API to retrieve real-time
24. Practical
cryptocurrency price data. CO1, CO2
Write a Python script to fetch data for a specific
25. Practical
cryptocurrency and display it.
26. Blockchain types: private Theory
27. Blockchain types: consortium Theory Implement
28. Mining Theory transaction
Enhance the script to plot the price history using a validation across
29. Practical chain using Python
library like Matplotlib.
scripts
Develop a Python class representing a basic
30. Practical
blockchain
31. Block creation Theory
32. Transaction validation Theory
33. Introduction to Python and relevant libraries Theory
Implement functions to add blocks, validate the
34. Practical Design
chain and calculate the hash.
Test the blockchain by adding blocks and cryptocurrency
35. Practical platform using
checking the integrity of the chain. Python libraries
36. Introduction to Python and relevant libraries Theory
37. Introduction to Python and relevant libraries Theory
38. Methods of retrieving cryptocurrency data Theory
Use a Python library like bitcoinlib to generate a
39. Practical
Bitcoin address and private key. Fetch and analyze
Develop a script to create a transaction and sign blockchain data CO2, CO3
40. Practical from ledger
it using the private key.
41. Retrieving cryptocurrency data Theory
42. Analysing cryptocurrency data Theory
43. Wallet management and transaction processing Theory
Broadcast the transaction to the Bitcoin network
44. Practical
using a public API. Design wallet to
Broadcast the transaction to the Bitcoin network store crypto and
45. Practical enable transaction
using a public API.
46. Wallet management and transaction processing Theory
47. Wallet management and transaction processing Theory
48. Building simple cryptocurrency applications Theory
49. Build a simple web-based blockchain explorer that Practical
displays the blocks and transactions in your Apply the
50. blockchain. Practical mechanism of
51. Building simple cryptocurrency applications Theory various crypto
Building simple cryptocurrency applications Theory functional features
52.
53. Solidity language overview Theory
Write a simple Solidity contract to store and
54. Practical
retrieve a value on the Ethereum blockchain.
Compile the contract using the Solidity compiler
55. Practical
(e.g., solc). CO3, CO4
56. Solidity language overview Theory
Solidity language overview Theory Design Smart
57.
contracts using
58. Smart contracts and their role in DApps Theory Solidity
Deploy the contract to a test network like Ropsten
59. Practical
and interact with it using a web3 library in Python.
Use the Uniswap API or a similar DEX to retrieve
60. Practical
token price and liquidity data.
61. Smart contracts and their role in DApps Theory
62. Developing, testing, and deploying smart contracts Theory
63. Developing, testing, and deploying smart contracts Theory
Develop a Python script to query the DEX for Develop customized
64. Practical
trading pairs and display the information. contracts for Tokens
Demonstrate the process of swapping tokens using
65. Practical
the DEX and monitor the transaction status.
Interacting with Ethereum blockchain using
66. Theory
Solidity
Interacting with Ethereum blockchain using
67. Theory Deploy functional
Solidity
Interacting with Ethereum blockchain using components to
68. Theory enable crypto
Solidity
communication
Write a Solidity contract that contains a bug (e.g., using solidity. CO4
69. Practical
a logical error or vulnerability).
Use a testing framework like Truffle to write unit
70. Practical
tests for the contract.
71. Decentralized finance (DeFi) and its applications Theory
72. Security considerations and best practices Theory
Scaling solutions and future developments in
73. Theory
cryptocurrencies Design and develop
Identify and fix the bug and rerun the tests to scalable DApps
74. Practical using web3 libraries
ensure the contract behaves as expected.
Develop a simple DApp using Solidity for the
75. smart contract and web3 libraries in Python for the Practical
frontend.
Text Books:
1. "Mastering Bitcoin: Unlocking Digital Cryptocurrencies" by Andreas M. Antonopoulos,
O'Reilly Media; 3rd edition (December 19, 2023) ISBN - 1098150090
2. Online Documentation: Solidity Documentation (https://soliditylang.org/)

Reference Books:
1. "Applied Cryptography: Protocols, Algorithms, and Source Code in C" by Bruce Schneier
2. "Blockchain Basics: A Non-Technical Introduction in 25 Steps" by Daniel Drescher
3. "Python for Data Analysis" by Wes McKinney
4. Article: "Security Considerations for Blockchain Applications" by Binance Academy Explore
our content | Binance Academy

NPTEL/MOOCS/SWAYAM/Courses/Video:
1. "DeFi 101" by ConsenSys Academy - Courses (cryptohiveacademy.com)
2. "Bitcoin and Cryptocurrency Technologies" by Princeton University (Highly Recommended)
- Bitcoin and Cryptocurrency Technologies | Coursera
3. "Cryptography I" by Stanford University - Cryptography I Course (Stanford) | Coursera
4. "Blockchain Basics" by University of California, Berkeley - Blockchain Technology | edX
5. "Ethereum and Solidity: The Complete Developer's Guide" by Stephen Grider - Code with
Ethereum & Solidity: The Complete Developer Guide | Udemy
PRACTICE PROBLEMS (SELF STUDY & ASSIGNMENTS)

Students are advised to follow the same order of the below practice problems to get a better
understanding of implementing a cryptocurrency from scratch to the fully operational level. Use
Python to demonstrate the following practice problems.

S.No Experiment description K Level


1. Set up a local blockchain using a framework like Ganache or Truffle. K3
2. Develop a simple Python program to generate a Bitcoin wallet address. K3
3. Develop a Python program to generate a Bitcoin private key. K3
4. Build a simple blockchain that possess data and hash pointer in Python. K6
5. Create a blockchain explorer to view transactions and blocks. K6
6. Implement a basic proof-of-work algorithm in Python. K3
7. Design a transaction structure for a blockchain. K6
8. Create a Python program to mine Bitcoin. K6
9. Implement a basic consensus algorithm for Proof of Stake. K3
10. Simulate a Bitcoin transaction between two hash addresses using Python. K3
11. Create a Python script to broadcast a transaction to the Bitcoin network. K6
12. Develop a Python script to retrieve blockchain data using an API. K3
13. Implement a basic cryptocurrency wallet in Python. K3
14. Create a Python program to sign a Bitcoin transaction. K6
15. Create a Python program to handle double spending in a blockchain. K6
16. Develop a Python script to query and analyze Bitcoin transaction data. K3
17. Create a Python-based decentralized application (DApp). K6
18. Develop a simple smart contract in Python. K3
19. Implement a two-factor authentication system using blockchain. K3
20. Implement a cryptocurrency exchange platform using Python. K3
21. Build a Python-based token issuance platform. K6
22. Create a Python-based blockchain explorer. K6
23. Design a Python-based system for timestamping documents on the K6
blockchain.
24. Implement a Python script to create and verify digital signatures for K3
transactions.
25. Create a Python-based decentralized file storage system. K6
26. Build a Python program to explore the concepts of Non-Fungible Tokens K3
(NFTs).
27. Develop a Python script for conducting atomic swaps. K3
28. Implement a Python-based blockchain-based simple chat application. K3
29. Create a Python-based decentralized finance (DeFi) application. K6
30. Design a Python program to implement RAFT consensus algorithm. K6
31. Build a Python-based blockchain analytics tool for integrity check. K3
32. Develop a Python script for blockchain data visualization using matplotlib. K3
33. Create a Python program to simulate 51% attacks on a blockchain network. K6
34. Create a Python program to implement multi-signature wallet functionality. K6
35. Implement a Python script to explore Merkle Trees in the blockchain. K3
36. Build a Python-based proof-of-authority (PoA) consensus algorithm for a K3
private blockchain.
37. Build a Python program to create a decentralized marketplace on the
K3
blockchain that enables price checking and availability.
38. Build a Python script to implement zero-knowledge proofs for privacy in
K3
blockchain transactions.
39. Develop a Python program to analyze the energy consumption of various
K3
blockchain networks.
40. Implement a Python script to implement Proof of Space and Time (PoST)
K3
consensus algorithm.
41. Design a Python program to demonstrate blockchain interoperability. K6
42. Build a Python-based application for handling on-chain and off-chain data. K3
43. Develop a Python script to explore the concept of confidential transactions. K3
44. Implement a Python script to analyze the impact of network latency on K3
blockchain performance.
45. Develop a Python script to simulate 51% defense mechanisms in blockchain K3
networks.
SUGGESTED PROJECTS

1. Basic Blockchain Implementation:


• Create a basic blockchain with the ability to add blocks and validate the chain. This is
a foundational project to understand the core blockchain concepts.

2. Cryptocurrency Wallet:
• Develop a cryptocurrency wallet that allows users to create accounts, view balances,
send transactions, and generate wallet addresses.

3. Decentralized Voting System:


• Build a blockchain-based voting system where votes are securely recorded and counted
on the blockchain, ensuring transparency and integrity.

4. Supply Chain Management:


• Design a supply chain system that uses a blockchain to track the production, shipment,
and delivery of products, ensuring transparency and traceability.

5. Token Creation:
• Create your own cryptocurrency token on top of an existing blockchain platform (like
Ethereum) or build a custom blockchain for token creation.

6. Smart Contracts:
• Implement a simple smart contract system on a blockchain, allowing parties to create
self-executing agreements.

7. Blockchain-Based Notary Service:


• Develop a service that timestamp documents and verify their authenticity using
blockchain technology, serving as a digital notary.

8. Identity Verification System:


• Create a blockchain-based identity verification system where users can securely store
and verify their identity documents.

9. Blockchain Explorer:
• Build a web-based tool that allows users to explore the blocks, transactions, and
addresses on a blockchain network.
10. Proof of Stake (PoS) Blockchain:
• Implement a blockchain that uses a proof-of-stake consensus mechanism instead of
proof of work (PoW).

11. NFT (Non-Fungible Token) Marketplace:


• Develop a platform for creating, buying, and selling NFTs, including minting NFTs
and auctioning them.

12. Blockchain-Based Game:


• Create a decentralized game that uses blockchain technology for in-game assets,
transactions, and player ownership.

13. Blockchain-Based Chat Application:


• Build a secure and private chat application that uses blockchain to encrypt and store
messages.

14. Decentralized Finance (DeFi) Protocols:


• Explore DeFi concepts and create protocols like lending, borrowing, and yield farming
on a blockchain.

15. Cross-Chain Communication:


• Implement a project that allows communication and asset transfer between two
different blockchain networks.

16. Blockchain Data Analytics:


• Develop a tool for analyzing and visualizing blockchain data, such as transaction
history and network activity.

17. Interoperable Blockchain Bridge:


• Create a bridge that allows assets and data to move between different blockchain
networks, such as Ethereum and Binance Smart Chain

18. Blockchain-Based Certification:


• Build a platform for issuing and verifying educational and professional certifications
on a blockchain.

19. Healthcare Records Management:


• Design a blockchain solution for securely managing and sharing healthcare records,
ensuring patient privacy and data integrity.
20. Decentralized Autonomous Organization (DAO):
• Develop a DAO that allows participants to make decisions and vote on proposals using
blockchain technology.

21. Blockchain-Based Music Streaming Platform:


• Create a decentralized music streaming service where artists can upload their music,
and listeners can stream it, with transparent royalty distribution using blockchain.

22. Blockchain for Real Estate Transactions:


• Build a platform for securely managing real estate transactions and ownership records
on a blockchain, simplifying the buying and selling process.

23. Tokenized Assets Exchange:


• Develop a decentralized exchange where users can trade tokenized assets, including
real estate, art, and other investments.

24. Decentralized File Storage:


• Create a blockchain-based file storage system, allowing users to store files securely
and privately on a distributed network.

25. Blockchain-Based Supply Chain Verification:


• Enhance the supply chain project by integrating IoT devices to monitor and record the
status and location of products in real-time on the blockchain.

26. Blockchain-Powered Social Network:


• Develop a decentralized social networking platform where users have control over
their data and interactions, leveraging blockchain for privacy and security.

27. Energy Trading on Blockchain:


• Build a platform that enables peer-to-peer energy trading, allowing users to buy and
sell excess renewable energy on a blockchain network.

28. Tokenized Art Auction House:


• Create an online art auction platform where artists can tokenize their artworks as NFTs
and sell them to collectors on a blockchain.

29. Blockchain for Legal Contracts:


• Develop a blockchain-based system for creating, signing, and managing legal
contracts, ensuring the integrity and immutability of agreements.
30. Decentralized Identity Verification for IoT:
• Implement a blockchain-based identity verification system for IoT devices, ensuring
secure communication and data integrity in IoT networks.

31. Blockchain-Based Online Marketplace:


• Build a decentralized e-commerce platform where users can buy and sell goods and
services using cryptocurrency as the medium of exchange.

32. Supply Chain Finance:


• Create a blockchain platform that allows suppliers to access financing options by
tokenizing their invoices and using them as collateral.

33. Blockchain-Based Prediction Markets:


• Develop a prediction market platform where users can bet on the outcomes of future
events, harnessing the wisdom of the crowd.

34. Blockchain for Humanitarian Aid:


• Create a blockchain system to track and verify the distribution of humanitarian aid,
ensuring transparency and reducing fraud.

35. Blockchain for Intellectual Property Rights:


• Build a platform that uses blockchain to timestamp and protect intellectual property,
such as patents, trademarks, and copyrights.

Each of these project ideas presents an opportunity to explore different aspects of blockchain
technology and its real-world applications. As you work on these projects, you will gain valuable
experience in blockchain development, smart contracts, and decentralized applications, while also
improving your Python and Solidity programming skills.

You might also like