Live data from Hacker News

AutoDapp: a proposal to decentralize existing web apps

raymondcheng.net

31–40 of 47 posts

Re: AutoDapp: a proposal to decentralize existing web apps

#31
post #6

"For the purposes of this blog, we will narrowly define blockchains as a Byzantine-fault tolerant consensus protocol" I don't think this is a useful definition. Blockchains are about trust and control, not Byzantine fault tolerance.

That's a great point. And it's definitely a tricky term to navigate because "blockchain" means so many different things to different people. (e.g. tokenization, governance, finance).

I'd say you identified the key aspect though, which I agree is not explicitly answered in this blog. "Who runs this" is a critical question and I think it will vary depending on the end application. I'm going to guess there will be settings where a permissioned deployment may be appropriate (think enterprise settings). There will be settings where a permissionless deployment will make more sense (think globally censorship-resistant Wikipedia). It all boils down to who wants to control it and how to convey trust. And for each of those, you probably have different access control policies too.

Re: AutoDapp: a proposal to decentralize existing web apps

#32
post #8

Hrm.. interesting idea! The tl:dr; appears to be "we built a blockchain based query logger" where essentially the consensus appears to just be that it is valid SQL, and defines an ordering of the statements. Then once everyone agrees to apply the change, then it is applied... With (AFAICT) no interaction with the DB during the consensus process? This seems to be a bit naive of features like locks and transactions tha…

great point! This was about as simple as it got in order to ship something quickly that was minimally intrusive. So the prototype as it is now buys you sequential consistency, but I want to detangle some great points you made.

1. Performance: The performance is probably going to be limited. In the sense that most databases have better performance than most blockchain implementations. So you're arbitrarily bottlenecking your writes. There are a ton of really great papers that show you can do WAY better if you are more careful with your distributed design. They usually involve getting into the weeds of redesigning the internals database. Just for fun, I really liked these papers: http://nms.csail.mit.edu/~stavros/pubs/hstore.pdf https://irenezhang.net/papers/tapir-tocs18.pdf https://www.usenix.org/system/files/conference/nsdi17/nsdi17...

So there is a ton of space to improve the performance here, I just wanted to build something quickly.

2. Authentication: Definitely an interesting technical challenge here. Most web apps are written assuming they are one-of-many servers accessing the database, but honest and has root authority. So how do we make sure that a validator has the authority to write to a particular table/row? Right now, this is still an open challenge and would love to engage the community on ideas here. There might be some way to tag/sign all tables/rows with creator, and do some write access control based on that? I'm not sure how many web apps would break though.

3. Write-conflicts: Even without good access control as specified above, most web apps are written assuming they are not the only web server to be accessing the database concurrently. So I would anticipate honest servers would have either good failover logic or be wrapping operations in SQL transactions if they really needed them to be atomic. Either way, I don't see any issues being serialized and appended to the log.

Re: AutoDapp: a proposal to decentralize existing web apps

#33
post #20

Earlier quoted context omitted.

I have yet to see this issue addressed in a meaningful way.

I am very curious about this ideology. The whole world seems to see indelibility of data as a problem in this context. Yet immutability is seen as a generally good thing for a lot of other software cases. Further we cannot manipulate past events and there even is something about repeating history when you don’t know it. So why would we really want to delete past data? From this standpoint wouldn’t deleting data be si…

well there was that new york time podcast on child abuse and how the internet made things exponentially worse... that was quite a big moment for me about being able to remove online data.

yes, we need to be able to erase stuff from the internet.

Re: AutoDapp: a proposal to decentralize existing web apps

#34

So, it's not even that the SQL state is distributed, it's that every change to the SQL state has to be "validated" and appended to a blockchain? At a 1M DAU traffic level? How often are blocks/writes written? Who pays for all that data storage? How "decentralized" would it really be, considering the incredibly onerous requirements to run a validator at the target scale?

Hi all! I just wanted to say thanks for the awesome questions. I can't say I have the answers to these questions, but I can lay out some of my intuition and would love to work together with anyone that also finds these questions interesting!

1. Will this scale? Blockchains vary from the order of ~10^0 tps (PoW) to ~10^4 tps (PoS). https://decentralizedthoughts.github.io/2019-06-23-what-is-t...

Wikipedia sees 50K HTTP requests/second and 80K SQL queries/second. https://www.datacenterknowledge.com/uptime/data-center-provi...

But it is also read-heavy. Let's say if 10% of the workload includes writes (probably too conservative), we barely squeak by... I'm willing to guess the number is way lower than that. They saw 10M page edits for the entire month of Dec 2018. https://stats.wikimedia.org/EN/TablesDatabaseEdits.htm

My guess is, this might be doable :-D

2. Who runs this? and who pays? Great question. The blog completely skips the question about incentives which in my opinion will vary depending on the app. For creating an censorship-resistant Wikipedia, it'll be different than a communications app. Some apps might be better off permissioned (e.g. enterprise settings)

Wikipedia is 43GB of text and 23TB of rich media (images and video). https://en.wikipedia.org/wiki/Wikipedia:Size_of_Wikipedia

If we limit ourselves to just Wikipedia text, it might be reasonable to do this permissionless!

Hoping to write a blog post about that soon after we get more built to show.

Re: AutoDapp: a proposal to decentralize existing web apps

#35
post #21
post #20

Earlier quoted context omitted.

I am very curious about this ideology. The whole world seems to see indelibility of data as a problem in this context. Yet immutability is seen as a generally good thing for a lot of other software cases. Further we cannot manipulate past events and there even is something about repeating history when you don’t know it. So why would we really want to delete past data? From this standpoint wouldn’t deleting data be si…

> So why would we really want to delete past data? From this standpoint wouldn’t deleting data be similar to trying to cover up the past? This assumes that data is always true and accurate, which is not always the case. Say Bob was convicted for pedophilia but a couple months after the charge was retracted because it was an error. Now Bob can’t find a job because “the data” says he’s a pedophile, even if he’s not.

and why can't bob find a job even if he was a pedophile or a murderer or whatever?

why is extrajudicial punishment allowed?

Re: AutoDapp: a proposal to decentralize existing web apps

#37
post #21

Earlier quoted context omitted.

> So why would we really want to delete past data? From this standpoint wouldn’t deleting data be similar to trying to cover up the past? This assumes that data is always true and accurate, which is not always the case. Say Bob was convicted for pedophilia but a couple months after the charge was retracted because it was an error. Now Bob can’t find a job because “the data” says he’s a pedophile, even if he’s not.

and why can't bob find a job even if he was a pedophile or a murderer or whatever? why is extrajudicial punishment allowed?

> why is extrajudicial punishment allowed?

In some cases it is common sense. For instance: a pedophile shouldn't be allowed to be a school teacher.

Re: AutoDapp: a proposal to decentralize existing web apps

#38

Write actions that can take seconds to minutes to validate. This doesn't seem like a trade off any application I can think of would make.

Let's say you implement a Facebook-like social network (think something like Elgg). If you really need the benefits of decentralization, is waiting a few minutes for your post, profile update, file upload, etc. to go through that big of a deal?

Re: AutoDapp: a proposal to decentralize existing web apps

#39

Earlier quoted context omitted.

and why can't bob find a job even if he was a pedophile or a murderer or whatever? why is extrajudicial punishment allowed?

> why is extrajudicial punishment allowed? In some cases it is common sense. For instance: a pedophile shouldn't be allowed to be a school teacher.

in that case, there should be a court order that prevents them from exercising such occupations.

Re: AutoDapp: a proposal to decentralize existing web apps

#40

One thing I was trying to find. Is it possible to completely erase things from history? Because if not, the first time someone uploads something illegal to your decentralized wikipedia and it gets into the block chain, you are in trouble.

This is difficult to handle without some centralized authority. One example I can think of is Aether [1], which has a non-decentralized blacklist for illegal content [2] that they can use to handle these instances. It could also be possible to broadcast some kind of signed take-down message that could be propagated through all of the nodes. If I remember right, Aether said that the centrally hosted json file was need…

Decentralized systems that use append-only logs (which includes but is not limited to blockchain stuff) need the equivalent of a 'git rebase' to purge history.

Like lwalton says, this is very difficult to do without centralizing authority, as a rebase is a fork, and so you need the whole community to rebase/fork simultaneously. This is a big deal if all data is in the same place.

One approach is to break these logs apart, e.g. per-user, like Cabal does it. Instead of replicating one giant log, you replicate many small logs. As a user, you can choose which logs you want to store, replicate, and which contribute to your materialized view. Or, you can delegate this work to a moderator you trust, who in turn may subscribe to other moderators or blacklists to inform their moderation.

In this way, there's no centralized authority - everyone is their own authority. Writing the user-facing moderation tools is important work, but is a relatively well-understood problem.

Post reply on HN