This community-built FAQ covers the “Blockchain Summary” exercise from the lesson “Build your own Mini-Blockchain!”.
Paths and Courses
This exercise can be found in the following Codecademy content:
Introduction to Blockchain
FAQs on the exercise Blockchain Summary
There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (
) below.
If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.
Join the Discussion. Help a fellow learner on their journey.
Ask or answer a question about this exercise by clicking reply (
) below!
Agree with a comment or answer? Like (
) to up-vote the contribution!
Need broader help or resources? Head here.
Looking for motivation to keep learning? Join our wider discussions.
Learn more about how to use this guide.
Found a bug? Report it!
Have a question about your account or billing? Reach out to our customer support team!
None of the above? Find out where to ask other questions here!
I have a few questions regarding the Blockchain class in the exercise:
- What is the use of the attribute
all_transactions
in the Blockchain class? In the class, the value of all_transactions
was never changed and remains as empty list.
- How to use the
proof_of_work
method? Should there be a method for miners to find the nonce for the proof, broadcast it and then waiting for 51% of the participants to verify the proof before a new block is being added to the chain in add_block
method?
2 Likes
In this lesson an object-oriented approach is used (i.e. blockchain, block as classes with methods). In the real world is this necessary, or do developers also use functional programming to deal with the same sequences (i.e. hashing, adding blocks, validating, etc.)?
(#3 on the very last step)
I thought this step was supposed to demonstrate something about checking for invalid data after a block has been modified 
Should this still print True after changing block_two_transactions to fake_transactions?
from blockchain import Blockchain
block_one_transactions = {"sender":"Alice", "receiver": "Bob", "amount":"50"}
block_two_transactions = {"sender": "Bob", "receiver":"Cole", "amount":"25"}
block_three_transactions = {"sender":"Alice", "receiver":"Cole", "amount":"35"}
fake_transactions = {"sender": "Bob", "receiver":"Cole, Alice", "amount":"25"}
local_blockchain = Blockchain()
local_blockchain.add_block(block_one_transactions)
local_blockchain.add_block(fake_transactions)
local_blockchain.add_block(block_three_transactions)
print(local_blockchain.validate_chain())
can you find any answer about proof_of_work
ok, I solved it.
I just made 2 diffirence;
1)in blockchain/add_block:
new_block.generate_hash()
# proof = proof_of_work(block)
delete that and made it:
new_block.hash = self.proof_of_work(new_block)
with that way,we send the new_block to the proof_of_work method and it will return us a true hash value(00…)
and we assignment that true hash value to the new_block.hash
2)in block/print_contents:
print(“current hash:”, self.generate_hash()) ----> print(“current hash:”, self.hash)
if you dont do that , when you used print_contents every time you will take a diffirent hash values so our true hash (from add_block) will change and give us another hash value we dont want that.
this way, you can use the proof_of_work method