This is very clearly explained. Thank you. One small addition would help. To be explicit about which hashed values need to be provided and why. I'm inferring from what was presented that the 4 hashed values that need to be provided in this example are the siblings of the newly computed value at each level. See ~3:30. Once the hash for m6 is computed, it becomes part of the Merkle Tree at level 5. Then it is combined with the sibling to the right, also at level 5. When the hash is computed, the new value at level 4, one level up, is combined with its sibling, the blue node is given, in the position to the right and a new hash is computed. That new value for the node at level 4 is combined with the provided sibling node at level 4 to yield the grey node at level 3. Once that's computed then it is combined with the provided sibling node at level 2, and finally, the hash computed is combined with the given blue sibling to the right to yield the root node, which is compared to verify that it was not modified. Level 2, the sibling is at the right Level 3, the sibling is at the left Level 4, the sibling is to the left Level 5, the sibling is at the right side of the computed node,
Absolutely incredible. I love you. Adopt me. Be my teacher fovever. Don't stop being you. It makes sense, I have learned abut merkle trees about 5 times never gave a shit until you explained it to me, then I saw why we use them.
Well explained, simple and comprehensive. Thank you, few clarifications, please do help with them MERKLE TREE Properties says 1. Number of leaves always 2^n, where n = 0, 1, 2, 3 .. etc Explained even number of leafs, what happens when n=0, that means single leaf for a parent node? in this case how the appended hash will be achieved for that node? since there will be a single hash. 2. Each node will have 0 or two children Then, what is the significance of the node with '0' children?
Robert, I love your videos, you're an amazing teacher. I am an IOTA developer and I think you should keep the title Merkle Trees as most IOTA devs that develop MAM don't know the Merkle tree is used.
Great explanation sir! But I have a doubt ..... how are the hashes of the intermediate levels of the Merkle tree readily available from other nodes? if they are available then why don't we just get the hash of the message we want to check if it's tampered with?
what is the standard protocol for adding to a Merkle Tree if your data doesn't break nicely into a power of 2? i.e. if we currently have 8 blocks of data and then want to append another one.
I'm excited to see exchanges like MEXC Binance and others allowing users to validate their assets using the binary hash tree. This is gonna increase users trust for them. Yeah
3:49 If we need to prove m6 is not modified, Why we need to send m7's hash and the hash of the sibling? Shouldn't we send m6's hash and such? I don't understand that part.
Hi Professor, I have a question. In the example where you explained about what are the hash values, Alice needs to send Bob while using Merkle Hash Tree. Can you please tell me how to decide that what hashed sibling values Alice has to send? For instance, if we look at the leaf node m6 then off course m6 hash is not required to be sent (because Bob should compute it) so we select hash of m7. but later on why the hashed value from the leftmost part of the tree? why not the rightmost part of the tree? Sorry, I am pretty naive to this field I hope you will guide me. Thank you for your amazing effort in making these videos. I hope you will come up with more videos covering other crypto areas as well.
So the data is indeed sent to Bob (then Bob computes hash). Call the level of the data level 0. When Bob calculates the hash of the data that was sent, he has available one hash on level 1 (one level higher than the original data). Then, in order to proceed to calculate the root hash, you need the hash value of the sibling of the data that was sent... Because you want to combine this sibling's level 1 hash with the hash you computed from the data that was sent. If you have that sibling's hash, you can compute a hash of level 2 by combining the two level 1 hashes you have available now. But in order to be able to proceed to a level 3 hash, you need the 'neighbor' hash of the level 2 hash you calculated. This explains exacly the hashes you need to send in a Merkle tree. :)
@@BongboBongbongThank you sir. Can you please tell me which type of traversal it is? If I am not wrong there are further classifications for traversal styles in Merkle Tree.
You are very sharp! I was thinking doing that, but I have decided to make it part of the IOTA tutorial series otherwise IOTA developers / interested parties are going to say "hey... IOTA has nothing to do with blockchain.." when referring a link to a blockchain tutorial. And the next tutorial 19 "Masked Authenticated Messaging" will nicely build upon tutorial 18.
This is very clearly explained. Thank you. One small addition would help. To be explicit about which hashed values need to be provided and why. I'm inferring from what was presented that the 4 hashed values that need to be provided in this example are the siblings of the newly computed value at each level. See ~3:30.
Once the hash for m6 is computed, it becomes part of the Merkle Tree at level 5. Then it is combined with the sibling to the right, also at level 5. When the hash is computed, the new value at level 4, one level up, is combined with its sibling, the blue node is given, in the position to the right and a new hash is computed. That new value for the node at level 4 is combined with the provided sibling node at level 4 to yield the grey node at level 3. Once that's computed then it is combined with the provided sibling node at level 2, and finally, the hash computed is combined with the given blue sibling to the right to yield the root node, which is compared to verify that it was not modified.
Level 2, the sibling is at the right
Level 3, the sibling is at the left
Level 4, the sibling is to the left
Level 5, the sibling is at the right side of the computed node,
Thank you very much.
i watched a lot of videos on Merkle trees but this is the only one that really helped me understand what it is. Thank you!
This is by far the best explanation I have seen on Merkle trees
This is so brilliantly done. Thank you for this and keep up the great work. I use this frequently to explain the usage of Merkle Trees to people.
It has been a long time since I watched a tutorial explained in this great and well-organized way. Well done, and thank you!
Absolutely incredible. I love you. Adopt me. Be my teacher fovever. Don't stop being you. It makes sense, I have learned abut merkle trees about 5 times never gave a shit until you explained it to me, then I saw why we use them.
Excellent tutorial! Waiting anxiously for your next video :)
Well explained, simple and comprehensive. Thank you, few clarifications, please do help with them
MERKLE TREE Properties says
1. Number of leaves always 2^n, where n = 0, 1, 2, 3 .. etc
Explained even number of leafs, what happens when n=0, that means single leaf for a parent node?
in this case how the appended hash will be achieved for that node? since there will be a single hash.
2. Each node will have 0 or two children
Then, what is the significance of the node with '0' children?
Robert, I love your videos, you're an amazing teacher. I am an IOTA developer and I think you should keep the title Merkle Trees as most IOTA devs that develop MAM don't know the Merkle tree is used.
Great explanation sir!
But I have a doubt ..... how are the hashes of the intermediate levels of the Merkle tree readily available from other nodes? if they are available then why don't we just get the hash of the message we want to check if it's tampered with?
That was really good. Do you also explain why you must follow the path of the blue nodes, they all seem to be the opposing hash.
Along with merkle tree , this video also explain its usage (for usage explanation jump to ~2:20) .. nice video.
Saw this comment at 2:18.
what is the standard protocol for adding to a Merkle Tree if your data doesn't break nicely into a power of 2? i.e. if we currently have 8 blocks of data and then want to append another one.
Thank you for the lucid explanation.
Thank you, this was a very nice tutorial and a perfect preperation for a paper I am about to read, bless you
Very clear and well explained. Thank you!
Excellent explanation Sir. Thanks.
Good explanation!
How to define the message is m6 but not other?
Thanks for this amazing tutorial !!
Excellent video!!!!!!
I'm excited to see exchanges like MEXC Binance and others allowing users to validate their assets using the binary hash tree. This is gonna increase users trust for them. Yeah
3:49 If we need to prove m6 is not modified, Why we need to send m7's hash and the hash of the sibling? Shouldn't we send m6's hash and such? I don't understand that part.
best 6 minutes of my life
I don't understand why verification by merkle tree requires siblings of successors from message block to root.
great video!
thank you, very well-explained!
Jian Yaaaaaang
Thanks for the great tutorial! :)
Hi Professor, I have a question. In the example where you explained about what are the hash values, Alice needs to send Bob while using Merkle Hash Tree. Can you please tell me how to decide that what hashed sibling values Alice has to send? For instance, if we look at the leaf node m6 then off course m6 hash is not required to be sent (because Bob should compute it) so we select hash of m7. but later on why the hashed value from the leftmost part of the tree? why not the rightmost part of the tree? Sorry, I am pretty naive to this field I hope you will guide me. Thank you for your amazing effort in making these videos. I hope you will come up with more videos covering other crypto areas as well.
So the data is indeed sent to Bob (then Bob computes hash). Call the level of the data level 0. When Bob calculates the hash of the data that was sent, he has available one hash on level 1 (one level higher than the original data). Then, in order to proceed to calculate the root hash, you need the hash value of the sibling of the data that was sent... Because you want to combine this sibling's level 1 hash with the hash you computed from the data that was sent. If you have that sibling's hash, you can compute a hash of level 2 by combining the two level 1 hashes you have available now. But in order to be able to proceed to a level 3 hash, you need the 'neighbor' hash of the level 2 hash you calculated.
This explains exacly the hashes you need to send in a Merkle tree. :)
@@BongboBongbongThank you sir. Can you please tell me which type of traversal it is? If I am not wrong there are further classifications for traversal styles in Merkle Tree.
Thnak u so much this was so easy to understand
thanks, it clears a lot
Thank you so much
Very helpful. Thanks.
good stuff :)
💗 Great video! 😍 😻
4:17
15, not 16
Thank you!!
Thank you! :)
Binary tree Data Structure
Lucid af!
Got it!
I like Merkle tree more...
Merkle Tree is not IOTA specific I suggest changing the name to blockchain basics
You are very sharp! I was thinking doing that, but I have decided to make it part of the IOTA tutorial series otherwise IOTA developers / interested parties are going to say "hey... IOTA has nothing to do with blockchain.." when referring a link to a blockchain tutorial.
And the next tutorial 19 "Masked Authenticated Messaging" will nicely build upon tutorial 18.
Thanks, I really want to learn about IOTA functionalities :)
IOTA has a Miracle Tree :-)
Mobilefish.com thank you for sharing all the tutorials, they are great
Merkle trees are not specfic to blockchains; authors choice, authors power, authors altruism.