Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The algorithm needed for Multi-Master (decentralized) data is a CRDT (Conflict-free Replicated Data Type).

Specifically, this solves the problem of data consistency across different node/peers without needing a central (ie, Facebook's servers) master.

The way it works, is like so: http://gun.js.org/distributed/matters.html

However, a blockchain is still actually useful for a P2P Facebook. A blockchain that uses a consensus algorithm (PoW, PoS, etc.) is not scalable enough, though. But that is okay, as we do not need to solve the Double Spending problem for tweets/photos (see the previous link as to why).

So what does a "blockchain" mean then? A blockchain is a cryptographically signed linked list, often a DAG (Directed Acyclic Graph). But these graphs would more likely be social networking data, which is naturally a graph - and they would be signed with user's public/private key pair.

Solving for that is pretty easy, we already have it working:

http://hackernoon.com/so-you-want-to-build-a-p2p-twitter-wit...

And our goal is to build a social network that has distinctly different properties than Facebook, one that is based on psychological research and emotional intelligence:

https://hackernoon.com/a-new-kind-of-social-network-emotiona...

Finally, the hardest factor is to remove the complexity of cryptography. There turns out to be a good security standard that lets user emulate username/password combos (see the middle link for more details), in summary:

You use PBKDF2 to extend a user's password with a salt, this creates a Proof of Work which is used as an AES symmetric cypher key to decrypt their private key. Fully P2P, but with a traditional UI that users understand, yet PBKDF2 makes it impractical for a cracker to guess (or even a dictionary attack) against the user's account.



Hi Mark. I really like GunDB but i see your comments on hacker news so often that i almost started to think that you are a bot. I mean it is great to market your database but GUNDB can't be answer to everything.

I would understand if you were pushing some alternative social network like Scuttlebutt/Patchwork but pushing database on every hacker news post with social media theme is strange.

Do you propose to replace facebook with gundb app that is possible to make in two minute tutorial: https://hackernoon.com/so-you-want-to-build-a-p2p-twitter-wi... since you share it everywhere?

Don't get me wrong. I think GunDB is wonderful project that i actually want to use for things but maybe this is not best way to get new users.

If i didn't know about GunDB and saw your frequent similar comments on Hacker news i would be pretty suspicious.


Thanks for your comment, I appreciate it. Here is my reasoning process.

Ultimately, I have to choose one of two philosophies:

(A) Be ashamed of the free (MIT/ZLIB/Apache2 Open Source) code that I have spent tens of thousands of hours donating for others to use.

(B) Or strongly believe in why I've devoted so much of my life to, fixing these problems, and be proud to share and evangelize it with the world.

Obviously, I don't want to come off as a bot, but ever since the first day I started working on GUN I've gotten haters saying things. As a result, it forced me to grow a thick skin. Even if you try to do nice things, people try to hate you, be skeptical, or be suspicious (this is a natural human tendency).

So, do I be (A) fearful to not post or comment, simply because I know some will not like it or get tired of it? Honestly, the thought crosses my mind every time I basically do anything in life, but I've decided "No, that is an easy trap of depression and pessimism to get stuck in."

Instead, I've decided to be proactively do (B), that even if only 1 person gets value out of my post, and they discover "Aha! This is a free MIT/ZLIB/Apache2 system that does EXACTLY what I need!" then my belief is that the world is better off. Better off for them, better off for me, and hopefully better off for the users who use the app they create.

If I forced you to pay me $$$ to read my articles or $$$ to use my code, then there would be a strong argument that my behavior is unethical.

Or even if I tried to show you ads or mine your data, then that would be unethical.

The problem is, I'm building tools that fight that type of unethical behavior. But that immediately puts us at a disadvantage compared to those who do exploit/manipulate people/the-masses into doing things.

Now, what is the relevance of the week-long HackerNews-obsessed Facebook debacle?

Well, I hope my comments have pointed out clearly, that nobody would be in this situation if they used P2P/decentralized end-to-end encrypted systems. And that is exactly one of the reasons why I've built the tool, and donated it for anybody to use. However (perhaps this is my pessimism coming through), it seems like people get more glee complaining/griping about how evil Facebook is for hosting all their pet/child photos for free, while still playing the victim card, AND doing nothing to change their behavior or spend time/energy/work to build alternatives. (To clarify: We shouldn't pity Facebook, they profit a lot off of people, but building solutions is a better win for the world than complaining about it. Although I'm afraid comments like that will cue the haters.)

I do occasionally mention SSB, Mastodon, etc. but they also have their problems (Mastodon is federated, will lead to the same thing as with email, everybody will use gmail), SSB is way way way better.

So, there you go. Thoughts?


Whew, finally a comment with some actual details on how this might all work and be useful.

How do I delete data in this scheme? Maybe by signing each data "node" with a separate key, which can then be shredded if I want? Where would those keys be stored?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: