3 ms·
These ideas, and how they combine, is natural and elegant, even inevitable. For example, the prototypical idea of swapping out Git's disk-trie content-addresse
by taliesinb 12y ago
These ideas, and how they combine, is natural and elegant, even inevitable.
For example, the prototypical idea of swapping out Git's disk-trie content-addressed object store for an actual DHT to get immutable distributed file system must have occurred to a lot of people when they first learned about Git's internals.
I don't know about @jbenet's particular journey to these ideas, but I suspect Rich Hickey deserves a lot of credit for using Clojure (and his fun, smart talks) to popularize immutability and name/value separation for a new generation of programmers. Even just ambiently.
That's certainly how I started realizing the power of that paradigm, even though I was already using it for my day job! Especially when I then saw it used building Datomic, which of course leverages immutability to totally refactor the traditional database architecture from client/server into self-serve-client/server/transactor in a really interesting way.
Also, with Clojure's HAMTs, you've got hash trees and cheap immutable update, and that again primes you to read about (or reinvent) Merkle trees. So I doubt nearly as many people would know about such neat CS things without Clojure.
Actually, Bitcoin is also a really obvious way these ideas would become more widespread, though I don't know how many people really go through the trouble of understanding the blockchain mechanism.
And Linus, of course, for Git. Git internal design is really nice and everyone should dip in at some point in their career!
We should give Ralph Merkle a Turing award -- that single idea unlocks so much. Except we shouldn't because he patented Merkle Trees, apparently.
- _prometheus 12y ago> I don't know about @jbenet's particular journey to these ideas Git is the single largest influence on me. After that, various other papers (all the CAN literature, bitcoin/bittorrent, CRDTs, etc), and conversations with people. in particular, two close friends (jzim, davidad). > We should give Ralph Merkle a Turing award I agree! Zooko recently told me that a long while ago they dubbed themselves "Merkle Tree Huggers". I am too! > Except we shouldn't because he patented Merkle Trees, apparently. Sigh. patents... :(
- taliesinb 12y ago> Git is the single largest influence on me. After that, various other papers (all the CAN literature, bitcoin/bittorrent, CRDTs, etc), and conversations with people. in particular, two close friends (jzim, davidad). Oh, interesting. Funny coincidence: I actually met davidad once, when I first starting out at my job. I think because of his asynchronous logic automata. We somehow ended up discussing busy beaver Turing machines over ice cream†. † Toscanini's near MIT, fantastic ice cream.
- _prometheus 12y agodavidad is one of my favorite people in the world :) > Toscanini's near MIT, fantastic ice cream. Much agreed.
- KMag 12y agoPlease never ever ever implement a Merkle tree as you did in https://github.com/jbenet/random-ideas/issues/20 https://github.com/jbenet/random-ideas/issues/20 . This is vulnerable to the same trivial collision attack as the original Gnutella THEX proposal. EDIT: also, please implement non-power-of-2 leaf node Merkle trees as power-of-2 lead node trees with the rightmost leaves containing the hashes of the zero length array, that way the final block along with its hash chain to the root provides a cryptographic proof of file length. This prevents denial-of-service mischief where a malicious server claims a given resource is terabytes large and a poorly written client starts allocating TB of disk space on a filesystem that doesn't support sparse files.
- KMag 12y agoOr, more efficiently, at each level of the tree where there are an odd number of nodes, add another leaf node containing the empty byte array on the right side of the tree to make an even number of nodes.