Oh I forgot. Asshat hackernews admins banned this account because I got into a disagreement withsomeone. What a bunch of snowflakes. use VPN account from now on and incognito mode, to distrupt their censorship capability.
These are not "Rules of Programming", but are excellent "Guidelines for Performance". Having 30yrs under my belt I have come to all the same conclusions as Rob Pike over my years, so these are very deserving of some serious contemplation for those with < 10yrs experience.
In my current job we have lots of large and often 'sparsely populated' objects which means basically you can never count on any of the properties you were hoping would be present will actually be present. This means the data objects are essentially useless (at least for knowing what data you have to work with as you are writing code), and violate Pike's rules mentioned about data object design being critically important. In the modern world the younger generation of developers thinks "functional programming is great, and OOP (inheritance, etc) is obsolete", and only after 20yrs of coding they look back and eventually realize OOP had it right all along.
In architectures with massive numbers of sparsely populated objects only the guy who originally wrote any given function will be able to understand it, and everyone else who tries to work in the code is pretty much screwed.
It's not "the" blockchain. There's not just one of them. Putting the word "the" in front is like saying "The Database". Let's all learn how "The Database" works. Silly right? We say "The Internet" because there is indeed only one internet.
That motherboard site was so bloated with ADs and other nonsense that I couldn't even get it to scroll. And I have a pretty fast machine. Amazing how unusable the web is becoming.
And I'll just be using a VPN from now on, also, because I'm tired of you banning me every time some dickhead tries to start something that I end up finishing for them.
The idea that each hashed payload need be a Merkle tree was just a typo by that Wiki author. I'm glad you finally agreed by saying "Merkle tree exists at a higher level of abstraction". Sadly though, when you said "each block in the blockchain contains a Merkle Tree", you actually meant it literally.
If you think the Anders video IS INDEED actual blockchain (and properly called such), then you AGREE with me insofar as terminology. (Although Anders does include the "Proof of Work" piece, which is not in all blockchains)
> You say: "A Merkle tree of degree one can only contain one element"
Are you "stating a tautology" there? (lmfao) or do you genuinely not understand that a tree of order one can still be arbitrarily deep? I'll assume that was a typo or one of your "not to be taken liteally" senences. Maybe you're talking in abstractions again.
BTW: I checked the actual Merkle patent (https://www.google.com/patents/US4309569) to see if i was right that he had considered the OBVIOUS tweak of including DATA from nodes. The last three sentences in his patent mention it.
Direct from Merkle patent:
"The present invention has been described with respect to authentication of signatures. However, its use is not limited to signatures. It may be used to authenticate a piece of information in a list of information, or one item in a list of items. Thus, although the best mode contemplated for carrying out the present invention has been herein shown and described, it will be apparent that modification and variation may be made without departing from what is regarded to be the invention"
In every post i've made it has been crystal clear I'm referring to "blockchain the data-structure"... The "consensus component" is an algorithm for detecting if one blockchain disagrees with other blockchains, and ignoreing it if it does.
A very literal reading of the Merkle sentence on wikipedia could conclude that it's stating each block of a blockchain must contain a valid Merkle tree, and so technically that sentence on the Wiki is incorrect; because, aside from re-hashing the prior hash (along with each node data), the blockchain algorithm doesn't care what the 'data' payload is. I was giving the Wiki editor the benefit of the doubt, assuming he just worded that sentence incorrectly.
The only difference between an order-one (degree-one) merkle tree (wired like a 'linked list' graph) and a blockchain, is that merkle doesn't require new data to hash on each non-leaf node, but has data only on leaf nodes. In merkle, each level up the tree is rehashing ONLY the actual child hashes below it, so that all hashes are ultimately determined only by "hashes of hashes" (recursively) of LEAF nodes.
So this means from a coding standpoint every order-one merkel is a single line of code away from being a blockchain. That is: The line of code that adds the 'node data' byte array to the SHA256 Hash Digester input stream, before outputting the node's hash. However this may also be a case where the Merkle wiki is not fully complete and accurate, because I cannot fathom that Merkle never thought of a case where each node contains data of it's own to add into the hashing. I bet the original source material from Merkle does include node data as an option, and would make him technically the actual first inventor of blockchain.
I just wonder what goes on in your mind when you try to ponder the phrase "simplest possible blockchain"...because you don't think there's a specific single characteristic of a "blockchain", but there actually is.
Regarding Merkle: Even the Wikipedia page on "blockchain" explains the Merkle connection and it's precisely what I said, and the Merkle Wiki page says: "Hash trees are a generalization of hash lists and hash chains.", which was also my point.
The simplest implementation of a blockchain would be about 100 lines of Java code (assuming simple CRC hash). It's a linked list where each node rehashes not only that node's data but also the hash from the prior node. I'm sorry, but that's the actual definition.
You should send some snark towards this guy, since that's your core skillset:
The Wikipedia article on blockchain has this sentence: "From the technical point of view a blockchain is a hashchain inside another hashchain", and that sums it up. The actual blockchain algorithm itself is as simple as that. Period. Full stop.
Of course, most actual APPLICATIONS of blockchain also ADD ON a lot of other concepts, like distributed ledger, distributed consensus, etc. Trust me, i'm not the guy in this conversation confusing algorithms with applications.
Merkel WAS a genuine innovation, and it DOES collapse into plain blockchain if all 'nodes' on a given tree have one child, because in this case the directed graph (tree) is a linked list. If the key innovation in both structures were not the same then your snarkyness would have been appropriate.
I'm no lawyer, but they really need to outlaw patents on 'general purpose' technologies. Adam Carolla famously got sued for owning a podcast company, when someone claimed to have a patent on the entire concept of "downloadable audio". I think there should be a one year jail term for anyone who files a suit about something that ends up being determined "general purpose" technology. Would end the nonsense overnight.
Very interesting, thanks. I had never heard of Merkle Tree. Since a linked list is merely a special case of a 'tree structure' (i.e. one where there is always only one child), we can consider Merkle to be the true 'inventor' of blockchain. However, really the concept is so simple and obvious that I wouldn't be surprised if Babbage/Lovelace era folks had written papers on it.
I'm sure there's at least one arse who'll tell me the DIFFERENCE between a tree and a linked list. lol. Gotta love social media.
Back in 2008 I invented an algorithm for tree structures where the definition of the hash of any node, was "the hash of hashes of all its immediate children". I had invented a way to do 'tree node comparisons' where any time two tree nodes on a tree had the same 'hash' i knew the content (recursively deep into the tree) of those nodes was identical. I never went forward on that algorithm, because i knew it meant each time a tree node was modified, the hash of all it's parents (i.e. path to root), had to be recalculate. But I had explained it to several developers who were all amazed by it. It now realize I had invented blockchain. I am pretty sure i'm not the first one to realize hashing actual hashes (in a recursive or chained way) is a powerful concept. I may add this to my current project SubNode (sbnode.com), and I could pivot that app into a blockchain technology!
I would be afraid to have my garage able to be gotten into by anyone who happens to know where I live and has a screwdriver. But from a technical standpoint, I'm impressed with what you did, and as a mechanical engineer would love to have a 3D printer of my own! Nice work!
Yeah, when there is something interesting (like a wreck) on the side of the road don't take your foot off the gas and slow down slightly to look. If each person only slows down 1/100th of a MPH to look, then in a few minutes the traffic will be at a stand still, just because everyone went just slightly slower than the person in front of them to take a peek. No one seems to understand this or want to change it and as a result we have massive slow-downs in traffic just because of this stupidity. Just don't alter your speed. Sure, take a peek when you go by, but please don't take your foot off the gas you blithering idiots.